Repository navigation
chore(ech05): regression fixture → JCS, stage 6 first target, #431 row, owner norms [stack 3/3] - #435
Conversation
|
@coderabbitai review (Stacked on #433, so its base isn't the default branch and auto-review skipped it. The review should cover only Generated by Claude Code |
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 23 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
… filed as #431 - tests/fixtures/arbitration_regression.json is now JCS (RFC 8785) I-JSON plus a final LF, the estate format standard. Re-serialised, not regenerated: all 327 numbers and the whole document compare equal to the 29b18ea fixture (only spellings like 0.0 -> 0 change). The regenerator writes JCS, and fixture_is_jcs_canonical fails on a pretty-printed fixture (negative control run). - ROADMAP stage 6 and the gap-analysis pair table: HOL4 <-> HOL Light through OpenTheory is the first target (owner decision 2026-10-14); Lean 4 <-> Rocq through Dedukti is the next candidate. - issues/README.md: ECH-05 is #431, closed as completed by #430, the arbiter-typing slice of #429 (open). Its four labels now exist on the repo (created by filing) but not yet in the estate label source. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
…YAML / I-JSON+JCS / UUID v8 Owner norms of 2026-10-14 for agent sessions in this repo: - decisions are asked with the selector tool, recommended option first; - work lands as stacked, independently reviewable PRs; - findings are fixed at source before any baseline/ledger entry. Format standards point at their normative source in hyperpolymath/standards rather than restating it: YAML-POLICY §3.4 (KYAML, .kyaml, no Python parser; D280/D307/D293), the workflow gate in standards#1025, JSON-POLICY (I-JSON as JCS + LF; D306) and ADR-008 (UUID v8 profiles T and C; D305/D305b/D320). A format is kept only where a consumer the owner does not control would break, with the reason recorded. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
scripts/check-exemption-ratchet.sh in standards rejects growth of a ledger unless a commit message or the PR body carries a `Ratchet-exception:` line naming that ledger. The norm said it rejects all growth. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
ids.rs still mints records as UUIDv7 and content ids as UUIDv8 over JCS bytes without a profile C domain. Stating profiles T and C as the active rule would have an agent mint ids that break the current contract. This matches the wording the owner accepted on proof-burrower#111. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
75288e7 to
d53c96b
Compare
…tes) (#436) ## Summary This is stack PR 4, on #435. It covers the prerequisites that let workflows move to KYAML (YAML-POLICY §3.4) without breaking the repo's own checks. It converts no workflow. The conversion waits on the standards#1025 gate. **History rebuilt, 2026-10-14 (owner decision: force-with-lease).** This PR is now one commit on #435's rebuilt branch, with no merge commits, so it rebase-merges cleanly. Its tree is byte-identical to the old head (bbdd4c2) merged with `main`. On that tip, which also has #437's linter change, the checks pass: `test-issue-regressions.sh`, the duplicate-key check (35 files clean) and the allow-fail check (14 units). ## Changes Three local scripts read workflows line by line. Each one was wrong on the KYAML that `yq -o kyaml` writes: | Script | Wrong on KYAML before | Now | |---|---|---| | `check-workflow-duplicate-keys.sh` | Flagged every KYAML workflow. Sequence items are `{` lines with no `- `, so sibling steps looked like duplicate keys. | A bare `{` opens a fresh scope. `}`/`]` lines name no key. A quoted scalar item (`"echo: hi",`) is not a key. | | `check-allow-fail-expiry.sh` | Counted `continue-on-error: false,` as an allow-fail unit because of the trailing comma. Missed `"continue-on-error":`. | Both handled. yq keeps the same-line `# allow-fail:` mark through the conversion. | | `test-issue-regressions.sh` | `^permissions:` cannot see a top-level key indented inside the root `{`. | Reads top-level `permissions` with yq. Refuses any yq but mikefarah v4, because the `yq` on PATH can be the Python jq wrapper (D293). | ## Verification - New KYAML fixtures in `test-issue-regressions.sh`: - a duplicate `with` (must fail); - a clean multi-step file with quoted `with:` scalar items (must pass); - allow-fail `false,` not counted while a quoted key is counted; - top-level permissions accepted; - job-level-only permissions rejected. - Negative controls: the suite fails with the old duplicate-key checker and with the old allow-fail checker. It passes with the new ones. - Each of the 35 real workflows passes both as committed and as rendered by `yq -o kyaml`, with 35 files clean and 14 allow-fail units each time. - The suite exits 1 when the only `yq` is the Python wrapper. ## Not here - **The governance-reusable pin bump.** The pinned `@571cc734` still tests `grep -q "^permissions:"`. It has to move to a standards ref that reads workflows with yq before any workflow is converted. That bump has to regenerate the tool-owned `actions.lock`. `gh actions-lock` writes GitHub owner and repo ids and needs an authenticated token, which this session doesn't have. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3 --- _Generated by [Claude Code](https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3)_ Co-authored-by: Claude <noreply@anthropic.com>
Summary
Stack 3 of 3. #432 and #433 have merged, so this PR now targets
main. It holds the ECH-05 follow-ups the owner decided after #430 merged, plus the owner's norms written down where agent sessions read them.History rebuilt, 2026-10-14 (owner decision: force-with-lease). The branch used to carry the pre-squash copies of #432 and #433. Rebase-merge replayed them onto
main, which already had the squash commits, and conflicted on.hypatia-baseline.json. The branch is now this PR's own four commits on currentmain(5583c70), so it rebase-merges cleanly. Its tree is byte-identical to the old head (75288e7) merged withmain.Changes
tests/fixtures/arbitration_regression.json→ JCS (RFC 8785) I-JSON plus a final LF.29b18ea; only spellings change (0.0→0). This is the source of the large deletion count.fixture_is_jcs_canonical, keeps it canonical. A pretty-printed fixture fails it; I ran that negative control.issues/README.md: ECH-05 is ECH-05: feat(arbitration): consume fidelity evidence, not N re-proofs — type the arbiter's input by alignment certificate and level its verdict #431, closed as completed by feat(arbitration): ECH-05 fidelity evidence and belief/epi/sound verdict levels #430, and is the arbiter-typing slice of Consume fidelity evidence, not re-proofs #429, which stays open..claude/CLAUDE.md, owner norms:Ratchet-exception:line naming the ledger.YAML-POLICY.adoc(KYAML,.kyaml; D280/D307/D293), the workflow gate in standards#1025,JSON-POLICY.adoc(I-JSON as JCS; D306) and ADR-008 (UUID v8; D305/D305b/D320).ids.rsmigration lands.ids.rsstill mints v7 records and v8 content ids without a domain. This is the wording the owner accepted on proof-burrower#111.RSR Quality Checklist
Required
cargo test --test arbitration_regression_test: 2 passed, 1 ignored)cargo fmt --all -- --check)unsafeblocks.envfiles includedAs Applicable
docs/ROADMAP.adocupdated (stage 6 first target)Testing
Stack
quinn-protolockfile bump (merged)🤖 Generated with Claude Code
https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3