現象(PR #44 の作業中に踏んだ既往。clean な origin/main で再現)
codd dag verify を codd-dev 自身に当てると、canon_integrity が red で落ちる。理由は「10 documents missing」。
FAIL canon_integrity [red]
message: canon changed outside the accept path: 10 missing document(s) vs .codd/canon.lock.
- {'type': 'canon_missing', 'path': 'docs/requirements/README.md'}
- {'type': 'canon_missing', 'path': 'docs/requirements/assembler-requirements.md'}
... 8 more
その10ファイルはディスク上に存在する(ls docs/requirements/ で確認)。.codd/canon.lock には11行あり、実在しないと言われているのは system-requirements.md 以外の10件。
再現手順(変更を一切入れない状態で):
git stash push -u # clean origin/main にする
python3 -m codd dag verify # → canon_integrity FAIL・canon_missing 10件
二次被害: codd canon accept が台帳から10件を静かに落とす
同じ食い違いのせいで、codd canon accept --for <ref> を1文書の更新のために実行すると:
Dropping 10 document(s) no longer present:
MISSING docs/requirements/README.md
...
Recorded 1 document(s) into .codd/canon.lock.
canon.lock が 11行 → 1行になる。 「もう存在しない」と判定された10件の digest が消えるので、以後その10文書は改変検出の対象から外れる——canon 機構そのものが無音化する。PR #44 では、この破壊を commit しないよう git checkout .codd/canon.lock で戻し、変更した1行の digest だけを手で差し替えた。
推測(未確認)
canon 文書の探索(canon.documents の解決/glob/パスの基準ディレクトリ)と、canon.lock に記録済みのパス表記が一致していないと思われる。.codd/ を codd ディレクトリとするプロジェクトなので、codd/ 前提の相対解決が混ざっている可能性がある——ただし未検証。
なぜ急ぐか
- main が恒常的に red なので、
codd dag verify の赤が「いつものやつ」になり、新しい赤が埋もれる。
- 直そうとして
codd canon accept を叩いた人が、気づかずに台帳の9割を削除する。しかも出力は "Dropping ... no longer present" とだけ言うので、削除された側が正しいように読める。
🤖 Generated with Claude Code
https://claude.ai/code/session_011xpq9A9SFvMUky6i6NLFz2
現象(PR #44 の作業中に踏んだ既往。clean な origin/main で再現)
codd dag verifyを codd-dev 自身に当てると、canon_integrityが red で落ちる。理由は「10 documents missing」。その10ファイルはディスク上に存在する(
ls docs/requirements/で確認)。.codd/canon.lockには11行あり、実在しないと言われているのはsystem-requirements.md以外の10件。再現手順(変更を一切入れない状態で):
二次被害:
codd canon acceptが台帳から10件を静かに落とす同じ食い違いのせいで、
codd canon accept --for <ref>を1文書の更新のために実行すると:canon.lock が 11行 → 1行になる。 「もう存在しない」と判定された10件の digest が消えるので、以後その10文書は改変検出の対象から外れる——canon 機構そのものが無音化する。PR #44 では、この破壊を commit しないよう
git checkout .codd/canon.lockで戻し、変更した1行の digest だけを手で差し替えた。推測(未確認)
canon 文書の探索(
canon.documentsの解決/glob/パスの基準ディレクトリ)と、canon.lockに記録済みのパス表記が一致していないと思われる。.codd/を codd ディレクトリとするプロジェクトなので、codd/前提の相対解決が混ざっている可能性がある——ただし未検証。なぜ急ぐか
codd dag verifyの赤が「いつものやつ」になり、新しい赤が埋もれる。codd canon acceptを叩いた人が、気づかずに台帳の9割を削除する。しかも出力は "Dropping ... no longer present" とだけ言うので、削除された側が正しいように読める。🤖 Generated with Claude Code
https://claude.ai/code/session_011xpq9A9SFvMUky6i6NLFz2