feat(candidate): bind checks to immutable snapshots #175

Closed
triform-admin wants to merge 25 commits from agent/candidate-snapshot-manifest-final-20260824 into main

Implements CGLS-47 candidate snapshot manifests end to end: closed canonical manifest validation, exact Git/index/overlay identities, protected server materialization, candidate-addressed transport, sealed check authority, result-v2 evidence, explicit opt-in verdict flow, bounded producer allocation, and durable attempt-admission identity. Ordinary push, legacy verdict, and exact-Git behavior remain compatible.

Final exact head: d062053979.

Dedicated authoritative gate at d062053: build, 673 workspace tests, fmt, clippy, integration build, 440 integration-unit tests plus integration suites, and integration clippy all green. Two independent Phase 3.5 re-reviews approve the final producer and admission repairs with no remaining blocker.

Implements CGLS-47 candidate snapshot manifests end to end: closed canonical manifest validation, exact Git/index/overlay identities, protected server materialization, candidate-addressed transport, sealed check authority, result-v2 evidence, explicit opt-in verdict flow, bounded producer allocation, and durable attempt-admission identity. Ordinary push, legacy verdict, and exact-Git behavior remain compatible. Final exact head: d062053979e2318979a1bda088220a435d0a081b. Dedicated authoritative gate at d062053: build, 673 workspace tests, fmt, clippy, integration build, 440 integration-unit tests plus integration suites, and integration clippy all green. Two independent Phase 3.5 re-reviews approve the final producer and admission repairs with no remaining blocker.
Add the typed CandidateSnapshot wire model, exact Git and overlay validation, candidate-addressed transport, sealed execution authority, strict result-v2 evidence, durable attempt artifacts, and backward-compatible activation for explicit verdict checks.

Refs CGLS-47 and PYAML-65.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Add the direct serde derive dependency required by the new closed result and evidence types, replace Rust 1.88 let-chains with MSRV-safe control flow, and import the test-only check profile type.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The CLI owns closed result-v2 envelopes in verdict.rs, so it must declare serde derive directly instead of relying on another workspace crate's transitive dependency.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Preserve legacy base-attributed polling with the optional transport API, use current typed candidate accessors, and keep BatchProject cleanup paired through its Drop owner.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
test: assert sealed manifest values
All checks were successful
ci / build (pull_request) Successful in 1m7s
ci / test (pull_request) Successful in 1m9s
ci / fmt (pull_request) Successful in 36s
ci / clippy (pull_request) Successful in 1m4s
ci / rust-analyzer latency harness (S1 / AC#2) (pull_request) Has been skipped
ci / lane policy mutation proof (pull_request) Successful in 3m22s
1dac71eb16
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Pins candidate authority location, duplicate-container, pairing, round-trip, and pre-service-mutation contracts before the parser repair. The current global raw-key scanner cannot satisfy the location and container taxonomy cases.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds the RED contract that candidate-bearing option containers reject unknown authority fields while legacy non-candidate parsing remains tolerant.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replaces the global candidate key graft with a raw JSON container parser for candidate-bearing requests. Push accepts exactly one flat or nested authority; batch accepts nested options only. Duplicate, unknown, split, and decoy authority fails closed while no-candidate legacy requests retain best-effort parsing.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Defines the RED codec/default and outcome-v3 response contract for optional branchable service rejection codes, including the legacy submission.rejected fallback.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds optional reject_code to PushOverlayAck, preserves it across ack codecs, normalizes blank values to legacy absence, and emits it from POST /v3 rejections with submission.rejected as the backward-compatible fallback.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
fix(server): bind attempt identity before dispatch
Some checks are pending
ci / build (pull_request) Waiting to run
ci / test (pull_request) Waiting to run
ci / lane policy mutation proof (pull_request) Waiting to run
ci / fmt (pull_request) Waiting to run
ci / clippy (pull_request) Waiting to run
ci / rust-analyzer latency harness (S1 / AC#2) (pull_request) Waiting to run
4c4e65dd8b
Persist a versioned admission record for full semantic identity, serialize concurrent replay, retain typed rejection precedence, and fail closed across restart or storage corruption.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
fix(server): box large admission decision variant
Some checks are pending
ci / build (pull_request) Waiting to run
ci / test (pull_request) Waiting to run
ci / lane policy mutation proof (pull_request) Waiting to run
ci / fmt (pull_request) Waiting to run
ci / clippy (pull_request) Waiting to run
ci / rust-analyzer latency harness (S1 / AC#2) (pull_request) Waiting to run
0791a5c676
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Keep terminal and same-process replay idempotent, but require a successor attempt after restart when accepted pending work has no durable terminal evidence.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
fix: preflight candidate manifest metadata size
Some checks are pending
ci / build (pull_request) Waiting to run
ci / test (pull_request) Waiting to run
ci / lane policy mutation proof (pull_request) Waiting to run
ci / fmt (pull_request) Waiting to run
ci / clippy (pull_request) Waiting to run
ci / rust-analyzer latency harness (S1 / AC#2) (pull_request) Waiting to run
82709a66ec
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
refactor: group manifest serialization parameters
All checks were successful
ci / build (pull_request) Successful in 46s
ci / test (pull_request) Successful in 1m16s
ci / fmt (pull_request) Successful in 42s
ci / clippy (pull_request) Successful in 54s
ci / rust-analyzer latency harness (S1 / AC#2) (pull_request) Has been skipped
ci / lane policy mutation proof (pull_request) Successful in 3m20s
86b854d8d8
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
fix(server): never evict live pending outcomes
All checks were successful
ci / build (pull_request) Successful in 48s
ci / test (pull_request) Successful in 1m6s
ci / fmt (pull_request) Successful in 30s
ci / clippy (pull_request) Successful in 48s
ci / rust-analyzer latency harness (S1 / AC#2) (pull_request) Has been skipped
ci / lane policy mutation proof (pull_request) Successful in 3m11s
d062053979
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
triform-admin closed this pull request 2026-08-24 21:42:32 +00:00
All checks were successful
ci / build (pull_request) Successful in 48s
ci / test (pull_request) Successful in 1m6s
ci / fmt (pull_request) Successful in 30s
ci / clippy (pull_request) Successful in 48s
ci / rust-analyzer latency harness (S1 / AC#2) (pull_request) Has been skipped
ci / lane policy mutation proof (pull_request) Successful in 3m11s

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
triform/cargoless!175
No description provided.