From 5813069fc7ce9b8c84f81d7fc59b978b50a79245 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 14 Oct 2026 08:46:38 +0000 Subject: [PATCH 1/5] =?UTF-8?q?docs(claude):=20record=20owner=20norms=20?= =?UTF-8?q?=E2=80=94=20selector=20questions,=20stacked=20PRs,=20KYAML=20/?= =?UTF-8?q?=20I-JSON+JCS=20/=20UUID=20v8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Owner norms of 2026-10-14 for agent sessions in this repo: decisions are asked with the selector tool, work lands as stacked PRs, and findings are fixed at source before any baseline/ledger entry. The format standards point at their normative source in hyperpolymath/standards: YAML-POLICY §3.4 (KYAML, .kyaml; 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). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3 --- .claude/CLAUDE.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md index ffd4d3b..a417c29 100644 --- a/.claude/CLAUDE.md +++ b/.claude/CLAUDE.md @@ -198,3 +198,31 @@ truth and update stragglers when you touch them. - PR strategy: open with `gh pr create`, then immediately `gh pr merge --auto --squash --delete-branch`. + +## Owner norms (2026-10-14) + +These come from the owner. The format rules point at their normative +source in `hyperpolymath/standards`; read that, not a paraphrase. + +### Asking the owner + +- Ask decisions with the selector tool (structured options, the + recommended one first, with what each option implies). Use prose only + for reports and explanations. +- Work lands as **stacked PRs**: small, each independently reviewable. +- Fix a finding at its source before reaching for a baseline or ledger. + The governance exemption ratchet rejects ledger growth. + +### Formats (standard, estate-wide) + +| Kind | Standard | Source | +|------|----------|--------| +| YAML | KYAML, formatted with standards `scripts/kyaml-format.sh` (mikefarah yq v4 with the KYAML encoder). Estate-owned config uses `.kyaml` unless a tool fixes the name. No Python YAML parser. | `3-practice/YAML-POLICY.adoc` §3.4 (D280, D307, D293) | +| Workflows | KYAML too, but only through the step 6 gate in `standards#1025` (Dependabot / `gh actions-lock` drift accepted in writing, lock coverage, `actionlint`, a run proof per workflow). Lockfiles such as `actions.lock` are tool-owned: never hand-edit or reformat them. | `YAML-POLICY.adoc` §5–§6 | +| JSON | I-JSON (RFC 7493) serialised as JCS (RFC 8785), plus exactly one final LF. Extensions do not change. JSONL is one JCS object per line. JSONC files (`devcontainer.json`, `.vscode/`) are exempt. | `3-practice/JSON-POLICY.adoc` (D306) | +| UUID | Version 8 for every identifier. Profile T (time-ordered: the v7 layout with the version nibble set to 8) for records and events. Profile C (bytes 0..15 of SHA-256(`domain:name`), registered `domain`, no `:`) for content ids. No v4/v7 minting in new code. This repo mints only through `src/ids.rs`. | `docs/decisions/ADR-008-uuid-v8-estate-standard.adoc` (D305, D305b, D320) | + +Keep another format only where a consumer the owner does not control +would break (for example a tool that rewrites the file). Record why +beside the file. Tools the owner controls are changed to handle the +standard instead of being exempted. From de3703c23a44b3774864ee34ad5522e3041f40c5 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 14 Oct 2026 08:56:51 +0000 Subject: [PATCH 2/5] docs(claude): the exemption ratchet admits declared ledger growth 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 Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3 --- .claude/CLAUDE.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md index a417c29..a0dc26c 100644 --- a/.claude/CLAUDE.md +++ b/.claude/CLAUDE.md @@ -211,7 +211,8 @@ source in `hyperpolymath/standards`; read that, not a paraphrase. for reports and explanations. - Work lands as **stacked PRs**: small, each independently reviewable. - Fix a finding at its source before reaching for a baseline or ledger. - The governance exemption ratchet rejects ledger growth. + The governance exemption ratchet rejects ledger growth unless a commit + or the PR body carries a `Ratchet-exception:` line naming that ledger. ### Formats (standard, estate-wide) From 9b24220e8f78d4493ae81842b0799146e67e30f5 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 14 Oct 2026 08:57:37 +0000 Subject: [PATCH 3/5] docs(claude): scope the UUID v8 rule until the ids.rs migration lands 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 Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3 --- .claude/CLAUDE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md index a0dc26c..9e22de1 100644 --- a/.claude/CLAUDE.md +++ b/.claude/CLAUDE.md @@ -221,7 +221,7 @@ source in `hyperpolymath/standards`; read that, not a paraphrase. | YAML | KYAML, formatted with standards `scripts/kyaml-format.sh` (mikefarah yq v4 with the KYAML encoder). Estate-owned config uses `.kyaml` unless a tool fixes the name. No Python YAML parser. | `3-practice/YAML-POLICY.adoc` §3.4 (D280, D307, D293) | | Workflows | KYAML too, but only through the step 6 gate in `standards#1025` (Dependabot / `gh actions-lock` drift accepted in writing, lock coverage, `actionlint`, a run proof per workflow). Lockfiles such as `actions.lock` are tool-owned: never hand-edit or reformat them. | `YAML-POLICY.adoc` §5–§6 | | JSON | I-JSON (RFC 7493) serialised as JCS (RFC 8785), plus exactly one final LF. Extensions do not change. JSONL is one JCS object per line. JSONC files (`devcontainer.json`, `.vscode/`) are exempt. | `3-practice/JSON-POLICY.adoc` (D306) | -| UUID | Version 8 for every identifier. Profile T (time-ordered: the v7 layout with the version nibble set to 8) for records and events. Profile C (bytes 0..15 of SHA-256(`domain:name`), registered `domain`, no `:`) for content ids. No v4/v7 minting in new code. This repo mints only through `src/ids.rs`. | `docs/decisions/ADR-008-uuid-v8-estate-standard.adoc` (D305, D305b, D320) | +| UUID | Current policy: UUIDv7 for records and events, and UUIDv8 over JCS content bytes for content IDs. Keep this split until the corresponding `ids.rs` migration lands. Apply the Profile T/C rule and prohibit new v4/v7 minting after that migration. This repo mints only through `src/ids.rs`. | `docs/decisions/ADR-008-uuid-v8-estate-standard.adoc` (D305, D305b, D320) | Keep another format only where a consumer the owner does not control would break (for example a tool that rewrites the file). Record why From c3ff2112f6c7ff90b1c52533f1bf8f1a403b70fb Mon Sep 17 00:00:00 2001 From: "coderabbitai[bot]" <136622811+coderabbitai[bot]@users.noreply.github.com> Date: Wed, 14 Oct 2026 08:59:43 +0000 Subject: [PATCH 4/5] docs(claude): clarify ledger growth allowance with declared Ratchet-exception --- .claude/CLAUDE.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md index a417c29..b564f72 100644 --- a/.claude/CLAUDE.md +++ b/.claude/CLAUDE.md @@ -211,7 +211,8 @@ source in `hyperpolymath/standards`; read that, not a paraphrase. for reports and explanations. - Work lands as **stacked PRs**: small, each independently reviewable. - Fix a finding at its source before reaching for a baseline or ledger. - The governance exemption ratchet rejects ledger growth. + The governance exemption ratchet rejects undeclared ledger growth; + growth with a declared `Ratchet-exception` is allowed. ### Formats (standard, estate-wide) From 1ad700c1079486e58fb6dd0fd9856f78bd594d17 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 14 Oct 2026 09:02:03 +0000 Subject: [PATCH 5/5] fix(ci): restore the echidna-core import in live_echidna; bump quinn-proto Rust CI has been red on main since #174 re-pointed the trust kernel from echidna-core-spark to echidna-core but left tests/live_echidna.rs importing `echidna_core_spark::axiom_tracker`. `cargo check --all-targets` fails on it. The type now lives at `echidna_core::trust::axiom_tracker::DangerLevel`, the path src/trust/axiom_tracker.rs already uses. Cargo audit fails on quinn-proto 0.11.16 (RUSTSEC-2026-0338..0342, fixed in >= 0.11.18). `cargo update -p quinn-proto --precise 0.11.19` changes only that entry in Cargo.lock. Locally: cargo check --locked --all-targets, cargo fmt --check, cargo clippy --locked --all-targets -- -D warnings, cargo audit (warnings only), and the CI test set (integration_tests, lifecycle, property_tests, seam_test, smoke) all pass. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3 --- Cargo.lock | 4 ++-- tests/live_echidna.rs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 17e128b..7cb6b72 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3079,9 +3079,9 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.16" +version = "0.11.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f4bfc015262b9df63c8845072ce59068853ff5872180c2ce2f13038b970e560" +checksum = "0e750cca55fe4f0439a15d0bb529da9651e79993e8e72c61a899a36d462befbe" dependencies = [ "bytes", "getrandom 0.4.2", diff --git a/tests/live_echidna.rs b/tests/live_echidna.rs index 70790a9..8533894 100644 --- a/tests/live_echidna.rs +++ b/tests/live_echidna.rs @@ -8,7 +8,7 @@ //! //! Run: `ECHIDNABOT_LIVE_ECHIDNA_URL=http://127.0.0.1:8081 cargo test --test live_echidna` -use echidna_core_spark::axiom_tracker::DangerLevel; +use echidna_core::trust::axiom_tracker::DangerLevel; use echidnabot::config::{EchidnaApiMode, EchidnaConfig}; use echidnabot::dispatcher::echidna_client::{EchidnaClient, MIN_ECHIDNA_VERSION}; use echidnabot::dispatcher::{ProofStatus, ProverKind};