Phase 04+05: service-agent gating, product coherence, release 0.2.8#1
Merged
Conversation
Checkpoint GSD phase 02 before execute-phase: six wave plans, locked context, premortem hardening (negative drift proof, CLI sell-test, audit_read priorities, ROADMAP note). Co-authored-by: Cursor <cursoragent@cursor.com>
Register A2A, hosted-admission, and service-workflow surfaces; cover new CLI handler paths; add manifest-coverage architecture tests with negative drift proofs. Closes Wave 1–2 of phase 02-address-concerns. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Add parallel Agent lane mapping (Standing Bounds through Outcome) with schema-native names and non-authority flags so operators learn admission ≠ gateway enforcement without renaming protocol exports. Acceptance: Agent lane vocabulary present in both docs with schema-native names and non-authority flags. Wave: 1, Plan: 04-01, Task: 1 Co-authored-by: Cursor <cursoragent@cursor.com>
Record the admission → kernel → run*Gateway request chain and D-12 external PEP glue note so docs forbid treating ingress middleware as Handshake. Acceptance: Dual enforcement chain recorded in decisions/protocol-notes without protocol-definition rewrites. Wave: 1, Plan: 04-01, Task: 2 Co-authored-by: Cursor <cursoragent@cursor.com>
Add doc-scanning posture test and claim-boundary matrix entries so CI fails on admission-only protection claims and missing gateway language. Acceptance: CI fails if docs regress to admission-only protection claims. Wave: 1, Plan: 04-01, Task: 3 Co-authored-by: Cursor <cursoragent@cursor.com>
Create primary operator TTHW with unified journey, step-3 custody fork, D-09 contrast table, proof-gap list, and failure table placeholder for plan 05. Acceptance: Golden path includes unified journey, service branch, host fork, D-09 contrast, proof-gap prose, failure table placeholder. Wave: 1, Plan: 04-02, Task: 1 Co-authored-by: Cursor <cursoragent@cursor.com>
Add single service-first operator entry with host commands deferred to fork section; integrator doc moved to Advanced. Acceptance: Devex index has one Start Here; service-first; integrator doc not in first session. Wave: 1, Plan: 04-02, Task: 2 Co-authored-by: Cursor <cursoragent@cursor.com>
Document demo as canonical Branch A runnable and anchor to product test; verified npm run demo:service-workflow-admission succeeds. Acceptance: Admission demo is canonical service-side runnable artifact in docs and scripts. Wave: 1, Plan: 04-02, Task: 3 Co-authored-by: Cursor <cursoragent@cursor.com>
- Host doctor, quickstart, and simulate maintenance guidance - Non-authority negations for host lane operators Co-authored-by: Cursor <cursoragent@cursor.com>
- Start Here table rows for service and host maintenance docs Co-authored-by: Cursor <cursoragent@cursor.com>
- Add intent_compilation and candidate_action to OperationReadbackStageSchema (D-57) - Implement projectOperationReadback and projectOperationCorrelationIndex - Add protocolStoreEvidenceProjectionReader for actionContractId-keyed reads Co-authored-by: Cursor <cursoragent@cursor.com>
- Wire getOperationReadbackProjection and getOperationCorrelationIndex handlers (D-58) - Expose /v0.2/evidence/operations/:actionContractId/readback and /correlation Co-authored-by: Cursor <cursoragent@cursor.com>
- Add operation-readback-view with compilation stage order and non-claims (D-57) - EvidenceClient.getOperationCorrelationIndex and MCP operationCorrelation URI (D-58) - readback-spine architecture tests for routes, flags, and ref alignment Co-authored-by: Cursor <cursoragent@cursor.com>
- Require A4 service/host operator runbooks in operator completion contract - Expect runbooks on disk in custody-matrix-parity (phase 05 follow-through) - Allowlist OperationCorrelationIndexSchema on package root exports (05-08) Co-authored-by: Cursor <cursoragent@cursor.com>
Store reader 404 uses a stable HandshakeProtocolError code; register it for reason-code registry parity with record_not_found. Co-authored-by: Cursor <cursoragent@cursor.com>
- Lead README and protocol-layman with reconstructable clearance before consequence - Remove Passport from headline workflow diagrams; retain negation in service-workflow-story - Add D-59 cross-ref in decisions.md; Diataxis headers on touched canonical docs Co-authored-by: Cursor <cursoragent@cursor.com>
- Add agent, service-operator, and auditor golden paths under docs/internal/golden-paths/ - Restructure developer-experience-index Start Here table with persona rows Co-authored-by: Cursor <cursoragent@cursor.com>
… claim-boundary guard - Rejoin README line wrap so "Certificate is terminal evidence, not permission." is contiguous (claim-boundary requiredPatterns regex needs single space) - Restore "protected actions for automated decision making" phrasing in category line (D-59) for category-boundary matrix entry Co-authored-by: Cursor <cursoragent@cursor.com>
- Windowed allowlist scan over README/CHANGELOG/STRUCTURE/QUALITY/docs/internal canon - Forbids passport-as-permission and category-leakage strings without a negation/evidence window (adjudication #5) - Excludes .planning; keeps service-workflow-story.md negation tables legal Co-authored-by: Cursor <cursoragent@cursor.com>
…m matrix (D-59, D-69) - Add claim-boundary matrix entry requiring "reconstructable clearance before consequence" in README + protocol-layman - Forbid approval-workflow / agent-permissions / "for everyone" category headlines (D-69 no silent softening) Co-authored-by: Cursor <cursoragent@cursor.com>
…d (D-60) - Windowed clearance-verb scan over src/cli .ts/.md copy surfaces - Drift-guard comment ties phrase lists to canonical-doc-forbidden-copy.test.ts - Negation window keeps LANE.md "never ... authorized" boundary legal Co-authored-by: Cursor <cursoragent@cursor.com>
…D-62) - Forbid macro-plan / concierge-demand-test-scaffold in package scripts, README, and src/test/docs imports - Quarantines promotion only; .planning/macro scratch may still exist on disk Co-authored-by: Cursor <cursoragent@cursor.com>
…-64, D-65) - Architecture test asserts signer refuses without a valid VerifiedGatewayCheck - Architecture test asserts gateway-resolved redacted evidence must bind the gate - Adapter pin: official signer currently signs a forged verified gate (RED) Co-authored-by: Cursor <cursoragent@cursor.com>
…-65) - assertGatewayHeldSigningCommand enforces VerifiedGatewayCheck + gate-bound, redacted used_by_gateway resolution evidence before any payment signature - wired into runX402WalletGateway and the official signing surface entry - gateway_held_redacted is now structurally enforced, not label-only - raw caller-supplied credential refs cannot reach signPayment - no X402PaymentSignatureCommand ABI change (R1: additive guard only) Co-authored-by: Cursor <cursoragent@cursor.com>
…(D-64) - new decisions.md section: signer structurally unreachable without passed VerifiedGatewayCheck + gate-bound redacted resolution evidence - cites assertGatewayHeldSigningCommand enforcement at both signer boundaries - documents raw-SDK bypass as proof gap, not enforcement (D-64) - D-65 architecture-promotion rationale for the custody pin - integrator migration note: X402PaymentSignatureCommand ABI unchanged (R1) Co-authored-by: Cursor <cursoragent@cursor.com>
…lations (D-66) - broaden requiresMissingGeneratedExecutionGraphRefusal: refuse when a generated graph/node binding is claimed with no runtimeExecutionId attached (closes the no-runtime hole per adjudication #4 / D5) - reuses existing generated_execution_graph_missing reason code (no new kernel transition semantics, D-50) - architecture pin: agent-origin node/graph claims without runtime are rejected; boundary control confirms non-agent-origin compilations are unaffected Co-authored-by: Cursor <cursoragent@cursor.com>
…romotion
- Add src/http/admission/transition-sequence-matrix.ts: declared prerequisite
matrix (Record<TransitionRouteId, …>) + construction-time coverage/integrity/
acyclicity guard. Admission-layer ordering contract + drift guard, not a
second policy engine (per-request ordering stays enforced by recordScope
resolvers + kernel transition guards). (D4)
- Wire assertTransitionSequenceMatrixCoverage() into app.ts alongside the
mutation-route manifest parity check.
- Promote to test/architecture/ (D-65, only after 05-13 custody landed):
- gateway-invariant-replay: one greenlight = one mutation attempt
- gateway-invariant-params-mismatch: params drift refused before mutation
- gateway-invariant-signer-custody: x402 signer refuses without a
VerifiedGatewayCheck (depends on 05-13 assertGatewayHeldSigningCommand;
cannot pass on a pre-05-13 tree)
- http-transition-sequence-matrix: coverage/integrity/acyclicity + canonical
consequence-path prerequisites
Co-authored-by: Cursor <cursoragent@cursor.com>
- Construction-time drift guards (mirrors assertMutationRouteManifestParity) must throw plain Error, not coded HandshakeProtocolError - Removes 4 unregistered transition reason codes that broke the reason-code-registry source-emitted-codes test - Drops now-unused HandshakeProtocolError import Co-authored-by: Cursor <cursoragent@cursor.com>
Table A row 2 mapped vague-intent-vs-envelope to the wrong line (39, generated_execution_graph_missing). Retarget to unknown_operating_envelope and deriveEnvelopeReasonCodes; row 3 stays the agent-origin graph site. Co-authored-by: Cursor <cursoragent@cursor.com>
Reconcile status to 13/13 after keel citation fix, append close-out health block (tsc 0, bun 846/3, tier gates 10/10 and 15/15), and note provisional status pending 05-REVIEW.md. Co-authored-by: Cursor <cursoragent@cursor.com>
Update STATE and ROADMAP for finished service-agent gating and product coherence; remote ship deferred until gh and npm tooling are available. Co-authored-by: Cursor <cursoragent@cursor.com>
Promote synthesis-pass doctrine into canonical decisions and align D-53 with the landed HTTP mutation-route manifest from plan 05-01. Co-authored-by: Cursor <cursoragent@cursor.com>
Remove hand-maintained MCP overrides that mislabeled refusal and transition_error codes as proof_gap. classifyFailureClassFromReasonCode now resolves registered codes via failureClassFromReasonCodeMetadata before unregistered prefix fallbacks. Add parity test asserting every registry refusal kind maps to protected_action_refusal. Co-authored-by: Cursor <cursoragent@cursor.com>
Mark HR-01 and MR-01 resolved at e60fc87, record three non-blocking MRs as deferred in CONCERNS.md, and retire provisional review caveat in 05-VERIFICATION.md close-out. Co-authored-by: Cursor <cursoragent@cursor.com>
…-out Refreshes STACK/INTEGRATIONS/ARCHITECTURE/STRUCTURE/CONVENTIONS/TESTING against HEAD after the Phase 04+05 close-out (failure-class registry derivation, mutation-route manifest, service-operator rename, x402 gateway-held custody). Gitignore runtime demo output for the service-operator-bootstrap example. Co-authored-by: Cursor <cursoragent@cursor.com>
…sh pending Co-authored-by: Cursor <cursoragent@cursor.com>
Bump package surface to 0.2.8 after service-agent gating and product coherence phases. Updates launch-gate evidence strings, adapter activation fixtures, and CHANGELOG. Co-authored-by: Cursor <cursoragent@cursor.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Lands Phase 04 (service-agent gating) and Phase 05 (product coherence) as a no-ff merge stack, then bumps the public package to
handshake-protocol-kernel@0.2.8.0.2.8patch bump with CHANGELOG, README, launch-gate evidence, and adapter activation fixtures aligned.Verification
.planning/phases/04-service-agent-gating/04-VERIFICATION.md— passed.planning/phases/05-product-coherence/05-VERIFICATION.md— passed.planning/phases/05-product-coherence/05-KEEL-AUDIT.md— 7 coherence invariants.planning/phases/05-product-coherence/05-REVIEW.md— SHIP-WITH-FIXES (HR-01 resolved).planning/phases/05-product-coherence/05-SECURITY.md— PASS-WITH-FINDINGS2f5e18a: tsc clean, operator 10/10, full 15/15, bun 849/3 (3 known residuals),pack:checkpassTest plan
npm run check:typesnpm run check:service-agent-gating-phasenpm run check:service-agent-gating-phase:fullnpm run pack:checknpm publishfor 0.2.8 + registry readback smokeMerge note
Merge with merge commit (preserve 144-commit audit trail per Handshake reconstruction doctrine).
Made with Cursor