feat(runtime): enforce governed mutation boundaries
Assistant: codex Assistant-Model: gpt-5.6-sol Assistant-Session: 01a06ba0-10aa-7ea0-b20a-4f3fac39efe9
This commit is contained in:
parent
e3c6124e22
commit
20e6f381f6
28 changed files with 1068 additions and 154 deletions
|
|
@ -1,6 +1,7 @@
|
|||
# Repository grant contract
|
||||
|
||||
Status: **v1 parsed, validation-ready, not execution-enabled**.
|
||||
Status: **v1 enabled for local `TaskSpec` files; queued/profiled carriage is
|
||||
not yet available**.
|
||||
|
||||
`repository_grant` is the explicit authority envelope for a bounded local Git
|
||||
mutation. It is separate from task prose, labels, organizational attribution,
|
||||
|
|
@ -39,20 +40,28 @@ The repository acceptance validator converts the grant into the policy used to
|
|||
check descendant commits, changed paths, clean post-state, protected Git
|
||||
metadata, and local remote-tracking refs.
|
||||
|
||||
## Current fail-closed posture
|
||||
## Current execution posture
|
||||
|
||||
`TaskSpec.from_file` parses this contract, but `run_task` deliberately refuses
|
||||
any task that supplies it before adapter dispatch. The Activity Core and
|
||||
issue-core adapters do not currently populate it. Existing grant-absent direct
|
||||
and compatibility runs retain their prior behavior while the transaction path
|
||||
remains production-inert.
|
||||
`TaskSpec.from_file` parses this contract and `run_task` executes it under the
|
||||
canonical repository transaction. A successful adapter result is accepted only
|
||||
when the commit ancestry/count, changed paths, clean post-state, protected Git
|
||||
metadata, and remote-tracking refs satisfy the exact grant. The result carries
|
||||
bounded grant, baseline, policy, commit, and path evidence without raw grant
|
||||
paths, prompts, or provider output.
|
||||
|
||||
Execution may be enabled only after:
|
||||
Granted runs require durable external metrics and refuse `--no-metrics`. Their
|
||||
metrics are written outside the checkout only after acceptance, so a successful
|
||||
run remains clean. See [external-metrics.md](external-metrics.md).
|
||||
|
||||
Activity Core and issue-core adapters do not populate `repository_grant`.
|
||||
Queued/profiled runs therefore cannot claim repository acceptance under this
|
||||
contract. Existing grant-absent direct and compatibility runs retain their
|
||||
legacy `HEAD`-changed behavior during migration.
|
||||
|
||||
Queued/profiled execution may use this contract only after:
|
||||
|
||||
1. an authoritative Activity Core/profile field carries the reviewed grant;
|
||||
2. the lease-bound transaction wraps adapter dispatch and result close;
|
||||
3. the runner validates the accepted result against this exact grant; and
|
||||
4. required close evidence durably records the grant, transaction, and accepted
|
||||
2. required close evidence durably records the grant, transaction, and accepted
|
||||
result identities.
|
||||
|
||||
Task descriptions, labels, `execution_refs`, consuming-repo defaults, and
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue