[signet-ded9d4] docs(apas): separate each level's requirement from one vendor's implementation - #175
Draft
jamestexas wants to merge 2 commits into
Draft
[signet-ded9d4] docs(apas): separate each level's requirement from one vendor's implementation#175jamestexas wants to merge 2 commits into
jamestexas wants to merge 2 commits into
Conversation
Files signet-c07d12 (P1): signet-resign.yml has no successful run since 2026-05-18, and it is the only caller of gha-identity.yml, which is workflow_call-only. So the octo-sts exchange, the pinned notme action, and the bridge-cert exchange are dead code in practice. Surfaced while advancing the notme action pin (#173). That fix is correct by inspection of the bundle but cannot be correct by observation, because nothing exercises the path — which is the more interesting defect. It also means signet was not a live execution surface for the undici advisories, recorded on notme-28959a so the P0 framing rests on notme's own consumers. `signet authority setup-resign` is a documented command that configures this workflow, so we ship a configurator for a path we have never seen succeed. Also records the driftless demo bead (signet-96252e), the v0.4.0 dependency edge, and the Phase 1/2 release outcomes. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NbcVvbUMkJHvSXbz1MMw5n
…e vendor's implementation APAS 0.3.1-draft. Every level stated a portable Requirement, then listed bullets — previous_chain_hash, dispatch manifests, bridge certificates, a shared CMS/Ed25519 primitive, ACP request_permission — in the position readers take as conformance criteria. An implementer could not tell which lines they had to satisfy and which merely narrated how we built it. That made APAS unimplementable by anyone who had not built our stack, which is the actual obstacle to it being a standard rather than a design doc. Each level now carries mechanism-neutral core properties (L2.1-L2.5, L3.1-L3.4, L4.1-L4.5), each with a stated falsification, and the original bullets are retained verbatim as a named reference profile. §2.0 gives the reading rule and forbids core properties from naming an algorithm, envelope, protocol, namespace, predicateType, product, or path. Prompted by measuring a second, independently built implementation against L2-L4 (new §7.7). It satisfies L2 while failing most of L2's bullets, and by the property that matters — an externally certified signing identity rather than a key held by the same component that writes the attestations — it is STRONGER than the profile that defined the level. A scheme that scores that non-conformant is measuring the wrong thing. Two properties are new, and both were learned rather than designed: L3.3 generalizes ACP request_permission to "the capability set is bounded, declared, and default-deny". A runtime permission boundary and a declarative capability set are two encodings of one property. The declarative form is preferred: it is default-deny by construction, so there is no prompt to fatigue a human into accepting and no approval path to social-engineer. A runtime boundary that defaults to allow on timeout or missing policy does not satisfy it — the property is default-deny, not "a decision happens". Advisory annotations are explicitly not a boundary. L4.5 requires outcome be distinguishable from completion. Taken from the second implementation, which documents at the type that committing a result is no evidence work succeeded, because executors steer a stuck model into submitting a degraded one. An attestation recording only completion is correctly signed and materially misleading — the worst combination, since it survives verification. Also refreshes the version-disambiguation note, which pinned its example to 0.3.0 and to a superseded rc; APAS 0.3.1 alongside signet v0.3.0 is now the worked example of the two clocks diverging. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NbcVvbUMkJHvSXbz1MMw5n
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.
Draft — this is the start of the v0.4.0 restructuring, not the whole of it.
signet-ded9d4requires the split be validated against a working second implementation (signet-96252e), which hasn't been built yet. Opening now so the shape can be argued before that work starts.The defect
Every level stated a portable Requirement, then listed bullets —
previous_chain_hash, dispatch manifests, bridge certificates, a shared CMS/Ed25519 primitive, ACPrequest_permission— in the position readers take as the criteria.An implementer could not tell which lines they had to satisfy and which merely narrated how we did it. That is what makes APAS unimplementable by anyone who hasn't built our stack — not parochial properties, parochial prose.
The change
Each level now carries core properties (
L2.1–L2.5,L3.1–L3.4,L4.1–L4.5), each with a stated falsification, and the original bullets are retained verbatim as a named reference profile. §2.0 gives the reading rule and forbids a core property from naming an algorithm, envelope format, protocol, namespace,predicateType, product, or file path — if it can't be stated without one, it belongs in a profile.Why now: a second implementation exists (new §7.7)
An independently built agentic reconciler framework, whose unit of work is a key reconciled to convergence rather than a dispatch. It satisfies L2 while failing most of L2's bullets — and by the property that actually matters, an externally certified signing identity rather than a key held by the same component that writes the attestations, it is stronger than the profile that defined the level.
A conformance scheme that scores that as non-conformant is measuring the wrong thing.
Its other finding, which recurs at every level: it has the evidence and lacks the attestation. Run traces go to telemetry unsigned; input digests live in a resume-control record. Nearly everything L4 asks for is already captured and none of it is attested.
Two new properties, both learned rather than designed
L3.3— bounded, declared, default-deny capabilities. Generalizes ACPrequest_permission. A runtime permission boundary and a declarative capability set are two encodings of one property; the declarative form is preferred because it is default-deny by construction — a tool absent from the host's callback set doesn't exist in the model's tool list, so there's no prompt to fatigue a human into accepting and no approval path to social-engineer. A runtime boundary that defaults to allow on timeout or missing policy does not satisfy it: the property is default-deny, not "a decision happens". Advisory annotations are explicitly not a boundary.L4.5— outcome distinguishable from completion. Taken from that second implementation, which documents at the type that committing a result is no evidence work succeeded, because executors steer a stuck model into submitting a degraded one. An attestation recording only completion is correctly signed and materially misleading — the worst combination, because it survives verification. We did not have this property and should have.Deliberately not in scope
signet-ded9d4's original body) — needs the demo firstpredicateTypedecisionSection cross-references checked; §2.0 and §7.7 both resolve.
🤖 Generated with Claude Code
https://claude.ai/code/session_01NbcVvbUMkJHvSXbz1MMw5n