Skip to content

Support explicit Policy contract candidate alongside prototype - #296

Merged
kikashy merged 6 commits into
mainfrom
codex/policy-companion-format
Oct 18, 2026
Merged

kikashy merged 6 commits into
mainfrom
codex/policy-companion-format

Conversation

@kikashy

@kikashy kikashy commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Runtime now checks the proposed Policy companion formatVersion: "1.0.0" through the existing shared CLI/MCP tools while preserving prototype 0.0.2 clients. Candidate discovery is explicit; default contract responses and prototype reports retain the shape required by Desk's strict decoder.

The candidate is pinned to Spec 0852c5fa7726e51b36e574a5b110e7f5e012e03d, merged with an identical tree by Judgment-Pack/judgment-pack-spec#217 following #216. RFC 0023 remains Review: this is experimental support, not standard adoption. Candidate schemas and retained consuming Packs use RFC 3986 URI assertions without normalizing raw bytes. Ordered material registration preserves the first portable refusal; Git attributes preserve vendored bytes on Windows. Existing transport ceilings and default Core/prototype validation remain unchanged.

Related: #293. Accepted-contract tooling and live governance admission remain outside this candidate PR.

Validation:

  • All 124 portable vectors match; 124 additional URI role probes have zero disagreements with the exact Spec reader.
  • Policy/MCP and relevant validation tests, focused CLI tests and vet pass.
  • Both unchanged Desk native exact-material/refusal and shared-material archive/restore tests pass against final commit 55a23b8.
  • All 170 vendored files and provenance retain exact bytes under active CRLF conversion.
  • Required full platform checks run in CI; a broader local CLI run hit sandbox restrictions on unrelated loopback-server tests.

Material-decision impact: public-surface, documented-claim, dependency, security; review: #296 (comment).

Clean-room Codex review found and resolved three P2 findings. The final reviewed head is 55a23b884f0ce67fe6a9141b04e081a518fd5d61; no material findings remain. This is same-vendor review under the maintainer's temporary waiver, not different-vendor review or independent implementation evidence. ADR-0060 records the implementation decision without adopting the proposed standard.

Runtime v0.35.0 remains unpublished at its existing source/tag. This PR does not approve that release's gate, change Desk's held Runtime pin, or restart Desk.

kikashy and others added 4 commits October 18, 2026 16:35
Serve the pinned, unadopted 1.0.0 review candidate through the shared offline
Policy engine, preserving prototype bytes, provenance and default reports. Add
explicit contract discovery, candidate-only portable check results, ordered
material registration, retained-format isolation and 104 portable vectors.

Document the proposed ADR, source pin and unchanged private transport ceilings.
Focused Policy CLI/MCP tests and package vet pass; full Policy and MCP package
tests pass. The broader CLI run requires loopback sockets unavailable in the
local sandbox.

Co-authored-by: Codex (gpt-6.1-sol) <noreply@openai.com>
Signed-off-by: kikashy <kikashy@hotmail.com>
Use an explicit candidate-only RFC 3986 URI assertion for every URI field,
including editing-schema compilation and init. Keep Core and prototype URI
validation unchanged. Check material count before entry shape and validate
private-wire entries in registration order, preserving earlier refusals.

Add 62 URI probes, candidate schema/init/reference parity, Core/prototype
compatibility checks and native private-wire ordering regressions. These
implement the two accepted same-vendor review findings on 558df43.

Co-authored-by: Codex (gpt-6.1-sol) <noreply@openai.com>
Signed-off-by: kikashy <kikashy@hotmail.com>
Select candidate URI format assertions explicitly for Core structural checks
inside candidate adoption. Validate original Pack bytes against the same bundled
schema while leaving default Core and prototype engine behavior unchanged.

Extend the accepted URI review correction with 62 full-adoption URI probes,
raw numeric-literal identity checks and default-engine isolation coverage.

Co-authored-by: Codex (gpt-6.1-sol) <noreply@openai.com>
Signed-off-by: kikashy <kikashy@hotmail.com>
Apply the existing immutable-artifact -text policy to the separately vendored
Policy candidate tree. This prevents autocrlf checkout conversion from changing
provenance, schemas, examples and portable vector inputs.

Verified core.autocrlf=true checkout with all143 current upstream file digests,
lengths and the independent provenance pin unchanged; a control file converted
to CRLF. Runtime inputs and identity checks are unchanged.

Co-authored-by: Codex (gpt-6.1-sol) <noreply@openai.com>
Signed-off-by: kikashy <kikashy@hotmail.com>
@kikashy

kikashy commented Oct 18, 2026

Copy link
Copy Markdown
Contributor Author

Runtime Policy candidate: clean-room material review

  • Reviewed Runtime commit: 558df435bbc50fc872b14aceecae1d482b45898d.
  • Baseline: 515724946fe83e7db800b4281e74d5daf06524fa.
  • Clean read-only checkout: /tmp/jps-policy-runtime-contract-review (HEAD verified; clean at review start).
  • Spec source inspected: 4406cec9714ab9bc8e8971237cc79d58682cc904 in /tmp/jps-policy-contract-review-base. The coordinating agent reports that merged Spec commit 30b0b30a… has the identical tree. RFC review remains Review, not Accepted.
  • Reviewer: OpenAI/Codex implementation-review worker, explicitly selected as gpt-6.1-sol with xhigh reasoning by the coordinator. Same-vendor review, under the user's temporary waiver for this current Policy work. This is neither different-vendor review nor independently authored interoperability evidence. It does not alter the standing review rule.
  • No repository edits, commits, pushes, tags, releases, release gates, Desk restarts or pin changes were performed. Runtime v0.35.0 remains held unpublished.

Result

Two P2 findings. No P1 finding. The finite candidate result is correct on the checked baseline cases, but the new contract has acceptance and refusal-order gaps beyond its 104 vectors. Each finding requires a written maintainer disposition on the PR; any fix is covered only to the extent it implements that disposition. This record reviews the exact commit above, not a subsequent fix.

P2-1: Use the candidate's RFC 3986 URI grammar, rather than the legacy URI approximation

Location: internal/policy/candidate_schema.go:41 (candidate compilation via validation.CompileSchemas), and internal/policy/candidate_schema.go:55 (init URI validation). The reused predicate is internal/validation/validator.go:119-132.

The new candidate schemas reuse the existing global URI predicate, which allows RFC 3986 reserved characters in positions where they are forbidden and then relies on Go net/url.Parse, whose grammar is also narrower than RFC 3986 in some valid cases. As a result, the candidate full check can report valid for an invalid candidate artifact ID, or refuse a valid candidate artifact ID. This also affects candidate init/local validation and any candidate artifact reference URI.

Reproduce against the exact reviewed binary /tmp/jps-policy-runtime-contract-jpack by taking the vendored refunds policy.json, replacing only its root id, and supplying the original fixture materials through the private wire carrier. Root ID is not pinned by this standalone Policy's material references, so no other edit is necessary.

Replacement ID Pinned Spec result Runtime candidate result / exit
urn:test:[x] refused / invalid-document valid / 0
https://example.invalid/[x] refused / invalid-document valid / 0
https://example.invalid/a?b=[c] refused / invalid-document valid / 0
https://example.invalid/#a[b] refused / invalid-document valid / 0
https://%65xample.invalid/a valid refused / invalid-document / 1
foo://[v1.a]/ valid refused / invalid-document / 1

Controls agreed: percent-encoded brackets, urn:test:%C3%A9, percent-encoded userinfo, and an IPv6 authority are valid; raw Unicode in a URI is refused. A fix must preserve these positive cases; simply banning all brackets or retaining net/url.Parse as the final gate is insufficient.

Saved reproduction inputs:

/tmp/jps-policy-runtime-contract-jpack experimental policy check /tmp/jps-policy-runtime-contract-invalid-uri.json --materials /tmp/jps-policy-runtime-contract-probe-wire.json --format json
/tmp/jps-policy-runtime-contract-jpack experimental policy check /tmp/jps-policy-runtime-contract-valid-uri.json --materials /tmp/jps-policy-runtime-contract-probe-wire.json --format json

The expected objects were obtained from the exact pinned verify.verify_input(raw, registrations) API with the same raw Policy bytes and fixture registrations. Source requirement: candidate README sections 1 and 5 (id is an absolute URI; schema failure is invalid-document), and common.schema.json $defs/uri.

Suggested correction: provide a candidate-specific RFC 3986 URI assertion for candidate schema compilation and init. Keep the frozen prototype/Core path's behavior unchanged unless a separately dispositioned compatibility decision authorizes changing it. Add focused positive and negative URI cases outside the self-authored vector corpus.

Disposition at record creation: coordinator acknowledged the finding and reported a candidate-only fix in progress; formal maintainer disposition and verification of the eventual fix remain pending.

P2-2: Check count and each registration in order before later entry-shape refusals

Location: internal/policy/materials.go:55-63, before the registration-count check at line 65 and the ordered registration loop at line 117.

The candidate private carrier scans the shape/type of every entry before checking the number of registrations or attempting the first registration. A malformed later entry can therefore replace the earlier portable refusal in candidateResult. This occurs with small, already-parsed wire envelopes and does not involve the intentionally separate 24 MiB wire or 16 MiB MCP ceiling.

Use an otherwise valid refunds candidate Policy. Let the first entry be:

{"content":{"bytesDigest":"sha256:0000000000000000000000000000000000000000000000000000000000000000","byteLength":1,"mediaType":"text/plain"},"dataBase64":"eA=="}

Its decoded x bytes fail the declared digest. A second entry { "content": null, "dataBase64": "eA==" } currently causes Runtime to return refused/invalid-carrier, instead of the first registration's refused/reference-mismatch. Making the later dataBase64 null has the same override. Pinned verify_input on the equivalent ordered raw registrations refuses at the first digest mismatch.

With 17 entries and the last content:null, Runtime returns refused/invalid-carrier, exit 1, instead of registration-count refused/input-over-bound, exit 2. The pinned raw-registration API checks count before any registration and returns input-over-bound.

Saved reproduction inputs:

/tmp/jps-policy-runtime-contract-jpack experimental policy check /tmp/jps-policy-runtime-contract-review/internal/policy/candidate/examples/refunds/policy.json --materials /tmp/jps-policy-runtime-contract-earlier-digest-mismatch-later-null-content.json --format json
/tmp/jps-policy-runtime-contract-jpack experimental policy check /tmp/jps-policy-runtime-contract-review/internal/policy/candidate/examples/refunds/policy.json --materials /tmp/jps-policy-runtime-contract-count17-later-null-content.json --format json

The base64 carrier is Runtime-private, while the Spec API consumes raw registrations. The issue is that the new full-check report promises the portable refusal order after adaptation, and ADR-0060 plus the architecture/MCP documentation state root dispatch, then count, then ordered material registration, then root schema/semantics. A global later-entry shape scan introduces an unrecorded phase. The portable vector harness bypasses this adapter, so its 104 passing cases cannot detect the gap.

Suggested correction: once the envelope object and materials array are parsed, check registration count first. Validate each entry's closed shape and types immediately before decoding/registering that entry, preserving declaration order and stopping at the first refusal. Preserve prototype preflight ordering. Add focused compound-defect CLI/MCP or shared carrier checks.

Disposition at record creation: finding sent to coordinator; formal maintainer disposition pending.

Scope and evidence

Read CONTRIBUTING, ADR process/review rules, ADR-0060, all handwritten changed Policy engine files, CLI/MCP adapter changes and discovery schemas, candidate tests and portable harness, and the changed README/architecture/MCP/NOTICE claims. Compared the candidate's semantic and refusal phases against the exact pinned Spec Python checker and its prose/schemas. No external service or network access was used.

Independently checked all 143 vendored source files against the pinned Spec checkout, each manifest hash/byte count, manifest coverage, and manifest digest sha256:eb2644703944bd550f954dac3d51124d611867b54465ed1b0f6541018bdfba21: no mismatch, omission or extra file. Confirmed no diff to the prototype vendor tree, old prototype tests, Core/carrier/validation code, or Go module dependencies between reviewed commits.

The new reports omit candidate-only fields on prototype paths; default contract discovery retains the legacy entry, explicit registry discovery is separate, and discovery selectors are mutually exclusive. Candidate retained Policies are selected explicitly and cannot fall back to prototype grammar. Raw bytes reach identity checks and Core structural validation; no normalization into prototype documents was found. Material aliasing/media registration, distinct-byte accounting, role bounds, anchors and typed coverage checks are shared. Candidate diagnostics use finite static text, and MCP calls take supplied strings and invoke no file/network acquisition. Candidate capabilities and documentation consistently preserve proposed-draft/unadopted/no-authority status; no premature adoption or independent implementation claim was found.

The coordinating agent supplied successful full candidate-vector, Policy/MCP package, focused CLI Policy and vet results; these were not rerun by this reviewer. Broader CLI testing was reported blocked by sandbox loopback restrictions. Desk exact-material/refusal/archive checks were reported run on a precommit development binary, with the final probe binary rebuilt at the reviewed SHA; this review does not relabel that earlier Desk evidence as an exact-final-binary check. Reviewer execution was limited to targeted URI and compound-defect probes plus the independent vendored-byte comparison described above.

Coordinator dispositions under the maintainer-authorized workflow

  • P2-1 accepted. Candidate schemas/init and the candidate-consuming Pack check use RFC 3986 component grammar. The latter compiles the same bundled Core schema with an explicit per-call URI assertion and checks original Pack bytes; default Core/prototype compilation and cached schemas retain their behavior. Corrections are in 6dd003e29cccf7808227b98157e55cebce4b231b and 2e158c5105046594749139c955839a041331a106. Additional Spec dependency defects are corrected in Spec PR Refuse public keys that permit forgery, and state the record-signature reading rules a second implementation needs (#216) #217; the final immutable source pin will be recorded before merge.
  • P2-2 accepted. After the private envelope is parsed, candidate count is checked before entries, then each entry's closed shape/type, decoding and registration are processed in declaration order. Prototype ordering and transport byte ceilings stay unchanged. The correction is in 6dd003e29cccf7808227b98157e55cebce4b231b.

The final correction review and final-head CI are still required. Windows CI also exposed checkout-time line-ending conversion in the new vendored candidate tree; an exact-byte attributes correction is in progress and will be included in that final review. This record authorizes no release publication or Desk pin/install change.

@kikashy

kikashy commented Oct 18, 2026

Copy link
Copy Markdown
Contributor Author

Runtime Policy candidate: correction review

  • Reviewed handwritten Runtime corrections: 2e158c5105046594749139c955839a041331a106. Separately reviewed exact attribute-only follow-up: 38b06043283d2ae294653ca8f25c8c5db415dd9e.
  • Correction baseline: 558df435bbc50fc872b14aceecae1d482b45898d; correction commits are 6dd003e and 2e158c5.
  • Source repository: /tmp/jps-policy-runtime-contract. Its only worktree change at review start was ADR-0060; that uncommitted text is excluded from this review. Source inspection and execution used an exact git archive snapshot at /tmp/jps-policy-runtime-contract-correction-review-2e158c5.
  • Reviewer: OpenAI/Codex worker selected as gpt-6.1-sol / xhigh. Same-vendor review under the existing temporary waiver, not different-vendor review or independently authored interoperability evidence.
  • No source-repository edits, commits, pushes, releases, tags, gates, Desk restarts or pins were performed. Runtime v0.35.0 remains held unpublished.

Result

Both accepted P2 findings from the initial exact-558 review are corrected at 2e158c5. No new material defect was found in the handwritten correction code. One additional cross-platform P2 issue was confirmed in the existing candidate vendoring boundary at that SHA and is corrected by the separately reviewed attribute-only commit 38b0604. All three findings are closed through 38b0604; no material finding remains within these corrections.

Closed P2-1: Candidate URI grammar

The new candidate_uri.go validates RFC 3986 URI components rather than reusing the legacy net/url approximation. Candidate schema compilation and init use this assertion. A consuming candidate Pack also receives it through an explicit per-call validation.Options.FormatOverrides; validation parses and checks the original retained Pack bytes, without canonicalizing or serializing them.

The compiler registers overrides in a newly allocated compiler's local format map. The override path does not assign to the engine's cached schemas, and default Core/prototype calls supply no override. Static inspection found no external schema loading, input-derived diagnostics, state leakage or new acquisition path. IPvFuture permits the ABNF's case-insensitive v/V, percent-encoded reg-name hosts are accepted, and unescaped brackets outside IP literals are refused.

The exact correction tests cover 62 URI cases across standalone candidate full checks, init, assembled editing schemas and consuming Packs; candidate references; raw noncanonical Core numbers; and unchanged legacy URI behavior. The original saved CLI probes now return:

  • urn:test:[x]: refused / invalid-document, exit 1.
  • https://%65xample.invalid/a: valid proposed-draft candidate, exit 0.

The coordinating agent reports that the Spec follow-up is being amended to cover uppercase V for consuming Packs and that a final source-pin/documentation update will follow. That pending Spec/pin work is not reviewed or asserted complete here. The Runtime remains pinned to 4406cec… at this exact commit.

Closed P2-2: Ordered private carrier registration

The global later-entry shape scan was removed from the candidate branch. The decoded envelope and materials-array shape are checked, then registration count, then each entry's shape/type, content schema, base64, byte identity and registration in declaration order. Prototype preflight ordering remains in its existing branch.

The exact focused correction tests pass, including reached-invalid-entry controls. The saved CLI repros now return:

  • Earlier stale digest plus later content:null: refused / reference-mismatch, exit 1.
  • 17 entries with later content:null: refused / input-over-bound, exit 2.

Closed P2-3: Pin candidate checkout bytes with Git attributes

Location: .gitattributes:18, beside the existing internal/policy/prototype/** -text rule. The candidate directory has no corresponding byte-preservation rule.

The candidate is embedded from worktree files and hashes/pins exact upstream bytes. With core.autocrlf=true, Git converts candidate text files to CRLF on checkout. This corrupts vendored identity/provenance and makes candidate fixture/vector references stale. The coordinating agent reported the Windows CI provenance and widespread reference-mismatch failures; this reviewer independently confirmed the byte conversion without mutating any checkout:

git -c core.autocrlf=true cat-file --filters 2e158c5105046594749139c955839a041331a106:internal/policy/candidate/provenance.json
File Exact committed bytes Filtered bytes
candidate/provenance.json 38,794; SHA-256 eb2644703944bd550f954dac3d51124d611867b54465ed1b0f6541018bdfba21 39,661; SHA-256 70bd9a73bcba0ae0d41cc32e3393fc79890d86d7d470c1c5c4c38366f7342d3c
candidate/examples/refunds/policy.json 2,375; SHA-256 8e3a487de4b15a1bc6c824e6dedd2e1b4fe16f4b3c4430a76b46e943ef2565ff 2,466; SHA-256 a2f94de5e2f9ad29075c5bd2225bfceb86f56601bd2451f052cb915129eba951

The same filter leaves the prototype README unchanged because its directory already has -text. git check-attr reports candidate text/eol as unspecified. This is a cross-platform vendoring defect, not a need to rewrite or renormalize upstream content.

Suggested correction: add internal/policy/candidate/** -text, retaining committed blobs unchanged, and verify candidate checkout filters preserve all manifest bytes.

Closure at 38b06043283d2ae294653ca8f25c8c5db415dd9e: the entire follow-up diff is three added lines in .gitattributes, containing that exact directory rule and its comment. With GIT_ATTR_SOURCE set to the reviewed commit and core.autocrlf=true, the reviewer compared filtered checkout bytes against committed blobs and manifest hashes/lengths for all 143 vendored files plus the provenance manifest. All remained exact, with the provenance digest still sha256:eb2644703944bd550f954dac3d51124d611867b54465ed1b0f6541018bdfba21. The unprotected .gitattributes control acquired 24 CRLF line endings, proving conversion was active. No upstream/vendor blob changed. The coordinating agent reports accepted initial dispositions in Runtime PR #296; this review supplies technical closure evidence, not maintainer authority.

Verification and limits

Passed on the exact archive snapshot, using the existing writable Go cache:

env GO111MODULE=on GOCACHE=/tmp/jps-policy-runtime-contract-go-cache go test ./internal/policy -run '^(TestCandidateURIFormatAgreementAndInitSchemaParity|TestCandidateURIAssertionsCoverArtifactReferences|TestCandidateConsumerURIUsesSameAssertionAndPreservesRawBytes|TestCandidatePrivateWireRegistrationPhaseOrdering)$' -count=1

Built /tmp/jps-policy-runtime-contract-correction-2e158c5-jpack from that snapshot with -buildvcs=false and ran the four saved CLI repros above; exact nested candidate objects, exits and empty stderr matched expectations. -buildvcs=false is necessary because the archive snapshot is not a Git worktree; the source SHA is recorded explicitly here. git diff --check for the correction commits also passed.

The first test attempt could not use the read-only default Go cache; rerunning with the existing /tmp cache succeeded. No broad suite, vector sweep, Desk suite or release check was repeated. This review does not extend to the pending Spec amendment, final candidate pin/docs or uncommitted ADR edits. The attribute-only follow-up was reviewed and verified separately as recorded above.

Coordinator disposition: P2-3 accepted and resolved by the exact-byte Git attribute rule at 38b06043283d2ae294653ca8f25c8c5db415dd9e. The reviewer verified all 143 vendored files plus provenance under active CRLF conversion. P2-1/P2-2 are closed at 2e158c5105046594749139c955839a041331a106. Final Spec pin/docs and final-head CI still follow; no release publication or Desk install is authorized by this review record.

kikashy and others added 2 commits October 18, 2026 16:49
Pin the URI-corrected proposed-draft candidate at Spec 0852c5fa7726, preserving
all 170 vendored source files with exact provenance and byte checks. Expand
portable agreement to 124 vectors and record the accepted same-vendor review
findings, their corrections and the temporary maintainer-authorized waiver.

Accept ADR 0060 as the authorized merge-ready procedural transition without
adopting a normative Policy format. Keep Core/prototype URI behavior and all
release/Desk state unchanged. Verify companion URI bounds do not leak into
Core structural assertions, and validate autocrlf checkout byte preservation.

Co-authored-by: Codex (gpt-6.1-sol) <noreply@openai.com>
Signed-off-by: kikashy <kikashy@hotmail.com>
Record the three resolved Runtime P2 findings and the completed review of the
exact URI-corrected Spec source. The source remains pinned to reviewed 0852c5f,
with RFC Review status and no normative adoption or independent-vendor claim.

This documentation-only follow-up preserves the production and vendored bytes
of 65ff571 for the already-started CI and final delta review.

Co-authored-by: Codex (gpt-6.1-sol) <noreply@openai.com>
Signed-off-by: kikashy <kikashy@hotmail.com>
@kikashy

kikashy commented Oct 18, 2026

Copy link
Copy Markdown
Contributor Author

Runtime Policy candidate: final bounded delta review

  • Source-pin/documentation delta reviewed: 65ff571ec5380049b38a52aa55c6795c9e6b2a53 against 38b06043283d2ae294653ca8f25c8c5db415dd9e.
  • Final documentation-only follow-up reviewed separately: 55a23b884f0ce67fe6a9141b04e081a518fd5d61 against 65ff571ec5380049b38a52aa55c6795c9e6b2a53.
  • Runtime repository: /tmp/jps-policy-runtime-contract; exact reviewed Git objects were used for vendored/source comparisons. Both inspected Runtime heads were clean when checked.
  • Immutable Spec source: 0852c5fa7726e51b36e574a5b110e7f5e012e03d, tree f31d5cfef5269cc85fb481de4b9dcc02864458d5, in /tmp/jps-policy-contract. The coordinator reports API confirmation that merged Spec commit a74a440cfc31d0e135cdc8035f3474b17f27f320 has this identical tree. This reviewer did not fetch the merge object, which was absent locally.
  • Reviewer: OpenAI/Codex worker explicitly selected as gpt-6.1-sol / xhigh, same-vendor under the user's current Policy review waiver. This is not different-vendor review, independent interoperability evidence, RFC acceptance or release authority.

Result

No material findings in these final deltas. The previous three P2 findings remain closed through 38b0604, as recorded in the initial review/dispositions and correction review.

There is no remaining material-review blocker at 55a23b884f0ce67fe6a9141b04e081a518fd5d61. Required repository CI and the coordinating agent's final-binary integration checks remain separate evidence; this review does not assert those checks complete or authorize publishing Runtime v0.35.0.

Exact vendoring and vector evidence

Independently compared all 170 vendored source files with their exact Git-object contents at Spec 0852c5f, their recorded SHA-256 hashes and byte lengths, and the Runtime candidate tree's manifest coverage. No mismatch, extra file or missing file was found. Candidate provenance identifies format 1.0.0, maturity proposed-draft, and the exact source revision. Its complete manifest digest is:

sha256:f21466b49e2eb95c33f6e97bef74203a2e2255737476be27e72e3c43fc01f971

All 170 files also remain byte-exact through git cat-file --filters with GIT_ATTR_SOURCE set to 65ff571 and core.autocrlf=true; the previously reviewed -text protection remains effective. The provenance test's hardcoded digest agrees with the independently computed manifest digest.

The final portable manifest has 124 cases: the original 104 case objects remain identical, followed by exactly 20 URI cases. The appended cases cover the corrected whole-string RFC 3986 assertion, percent encoding, Unicode, component-specific brackets, IPv6/IPvFuture, and registered names. Every expected result remains one of the candidate's finite valid/refusal objects.

Seven additions are complete adoptions. Independently checked their retained Pack ID/version against the consumer reference, raw digest and byte length. Each new Pack differs from the original data-access consumer Pack only in the root ID string token; all other bytes remain identical. These cases include positive consuming-Pack percent-encoded host and lowercase/uppercase IPvFuture coverage.

Implementation and claim boundaries

The only production Go change after the reviewed corrections is CandidateRevision, advancing the immutable source pin. The remaining Go delta updates the vector count, provenance digest test and a focused URI-bound regression test. The vendored common-schema change adds an explanatory URI description; its validation keywords are unchanged. The new regression test correctly distinguishes the companion schema's 2,048-character ID bound from the existing Core schema's URI field bounds.

There is no delta to the reviewed URI parser, ordered material-registration logic, per-call Core format override, CLI/MCP adapters, frozen prototype vendor files, default Core validator, module dependencies or byte-preserving Git attributes. No new acquisition, exposure, normalization, authority or compatibility gap was found.

README, architecture and MCP documentation consistently use the exact new source pin and 124-vector count. Candidate status remains proposed-draft, unadopted and unreleased; passing tests establishes no current authority or independent implementation agreement. ADR-0060's accepted status records the user-authorized merge-ready procedural disposition and explicitly leaves RFC Review status and normative adoption unchanged.

Documentation-only closure at 55a23b8

The entire follow-up is eight added and three removed lines in ADR-0060. It adds the correction-review link, identifies the third P2 byte-preservation correction and links the exact Spec correction review/merge evidence. No implementation, vendor, pin, schema or test artifact changes occur in this commit.

Read the local Spec review record /tmp/jps-policy-uri-spec-review.md. It explicitly records exact source 0852c5f, no P1/P2 findings, 13 focused tests including all 124 vectors, and 99 additional reviewer URI probes. The ADR's precise evidence counts are supported by that record and clearly attributed as same-vendor work. The merge tree equality is coordinator-confirmed API evidence, not a newly executed test by this reviewer.

Both final diffs pass git diff --check. No broad tests, vector sweep, Desk suite, release checks or upstream review were repeated. No source-repository edits, pushes, releases, tags, gates, Desk restarts or pins were performed by this reviewer. Runtime v0.35.0 remains held unpublished.

Coordinator final verification and disposition

Accept the final reviewed delta at 55a23b884f0ce67fe6a9141b04e081a518fd5d61 under the maintainer's current temporary review waiver, subject to final-head CI. No material findings remain.

The exact final native binary reports vcs.revision=55a23b884f0ce67fe6a9141b04e081a518fd5d61, vcs.modified=false, version 0.35.0-policy-contract-dev; SHA-256 02be6da7305740a3813f9476ba9310480f232dc038c8a37b6c275ece8302dd2d. Against that binary, unchanged Desk TestPolicyCoverageRealRuntimeExactMaterialAndRefusal and TestPolicyCoverageSharedMaterialArchiveAndRestore both passed (1.688s), including controlled/real-runtime and manual/implemented subcases. These isolated tests use temporary data and test loopback servers, not the live Desk.

The post-pin comparison of 62 standalone URI cases and 62 consuming-Pack cases also reports zero Runtime expectation failures and zero disagreements with exact Spec 0852c5f. These 124 probes are separate from the 124 portable vectors and are not independent authorship evidence. No broad local suite was repeated after the documentation-only final commit. Full required platform checks are owned by CI.

Runtime v0.35.0 remains the existing unpublished draft at 5157249; this PR neither changes that release/tag nor authorizes publication, OCI/MCP distribution, Desk pin adoption or restarting the live Desk.

@kikashy
kikashy marked this pull request as ready for review October 18, 2026 20:53
@kikashy
kikashy merged commit 0554c43 into main Oct 18, 2026
6 checks passed
@kikashy
kikashy deleted the codex/policy-companion-format branch October 18, 2026 20:53
@github-actions

Copy link
Copy Markdown

🎉 Thank you for your contribution to Judgment Pack!

If you’d like another task, choose a path that interests you:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant