Skip to content

[shared/verify-cli] proof.exam.examId / variant が manifest と突き合わされず、CLI が自己申告値を Exam 行に表示する #273

Description

@shinyaoguri

2026-08-23 の全 open Issue トリアージ (#243) で #266 の棚卸し中に見つかった、独立した小さな設計ギャップ。

何が起きるか

proof.exam.examId / proof.exam.variantproof 側の自己申告値で、exam 束縛の検証では manifest 側の値と突き合わされない。

  • manifest 側の examId / problemId / variant は署名 core に含まれる (packages/shared/src/exam/examPackage.ts:629-631) ので packageHash に束縛される
  • しかし verifyExamBinding (examPackage.ts:499-) が proof 側から読むのは packageHash / startToken / problemContentHash / rootBinding と、v2 の問題 lookup に使う problemId (:575) だけ。proof.exam.examIdproof.exam.variant はどこでも参照されない
  • verify-cli は verify.ts:171-173 で proof 側の値をそのまま CLIExamResult に載せ、output.ts:122-123Exam: … 行に表示する (manifest 側の値ではない)

影響

修正案

  1. package が提供されているときは verifyExamBindingproof.exam.examId === manifest.examId (と variant) を検査し、不一致は binding.valid = false (または warning) にする
  2. 表示は manifest 側の値を優先し、package 未提供時は「自己申告」と明示する

どちらも小さい (shared ~10 行 + CLI 表示 ~5 行 + テスト)。#266 の PR-B (CLI 出力境界サニタイズ) と同時に扱える。

関連


🤖 Assisted by Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingcode-review2026-07 多角レビュー由来pkg:sharedpackages/sharedseverity:low軽微な問題 (実害は無いが放置コストがある)

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions