change requests

Session: propose a structured PM amendment against the exact current repository-body revision without mutating intent.md. API key: record an agent PROPOSAL against a recorded implementation finding; it is stored as a change request the repository agent cannot consume or apply until a signed-in writer accepts it, and one origin=agent evidence row is written and anchored to the target claim.

Creation runs under the intent row lock and validates the expected value against the immutable base snapshot for both principals. It inserts only intent_change_requests (plus, for agent proposals, one evidence_items row, an additive evidence anchor and, when the finding is recorded inline, the finding itself, all in the same transaction); the repo-owned intent body is never edited. sourceUrl must be http(s). Consumable = status open AND (authorPrincipal session OR accepted). Plan: .claude/plans/agent-proposed-corrections.md.

post/api/v1/intents/{id}/change-requests

Path parameters

idstring required

id path parameter.

Request body

findingIdstring

Agent proposals only: id of the implementation finding this proposal answers (required unless finding is given).

findingobject

Agent proposals only: record the finding inline, { assumption, finding, target?, source? }.

sourceUrlstring

Agent proposals only: PR or commit link stored on the evidence row.

supersedesRequestIdstring

Session only (counter-proposal): the open request this one replaces; it becomes superseded in the same transaction.

baseRepoBodyRevisionstring required

Exact 64-character revision shown to the PM. A stale base returns 409; it is never silently rebased.

targetFieldstring required

Semantic field or collection: title, severity, objective, currentState, outcomes, scope.inScope, scope.outOfScope, constraints, healthMetrics, edgeCases, decisions, verification, or implementationContext.

targetItemIdstring

Stable item id for outcome/verification items when one exists. Index-only targeting is forbidden.

expectedOldValuestring

Required for replace/remove when no stable item id exists; compared to the immutable base snapshot.

operationstring required

replace, add, or remove. Scalar fields support replace only.

proposedValuestring

Required for add/replace; forbidden for remove.

reasonstring required

Why the product judgment requires this change (max 4000 chars).

Response

Request stored against the exact base revision

object required

Changes