Skip to content

canon_integrity が clean な main で red——実在する10文書を missing と判定し、canon accept が台帳から静かに消す #47

Description

@yohey-w

現象(PR #44 の作業中に踏んだ既往。clean な origin/main で再現)

codd dag verify を codd-dev 自身に当てると、canon_integrityred で落ちる。理由は「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

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions