Skip to content

[finding] The one-value-site promise for CONTRACT_REVIEW_TIER (SKILL.md 「模型升级只改一行一个文件」) is held only by a manual grep — no self-test pins it, so the next model refresh can re-open the drift silently #14616

Description

@os-litant

Filed unassigned by the os-dev flight on #14303 (session session_01LraLgQVGq8egUwfYZpbYt1), observation only — the fix is not in that PR by scope (the triage on #14303 queued exactly two limbs: bump the constant, make every other site name it).

Blocked-by: #14303

What was measured

Suggested shape (not a decision)

One self-test case in scripts/pm/dispatch-gates.mjs: read every file under .claude/skills/pm-dispatch/** and scripts/pm/**, count occurrences of CONTRACT_REVIEW_TIER's own VALUE (the exact string, read from the constant — never a family/prefix pattern, and never a second literal), and assert the count is exactly 1 at the definition line. Exact-value only: a prefix scan would be the family floor the human floor has not granted, and would also be a second spelling of the model family inside the tool.

Two things the implementer has to respect, both measured before on this file:

  • The tool's watch-hint extraction reads module-body strings and self-test fixture strings as hints (the [finding] dispatch-gates watch hints are read from self-test fixtures and comments, so gates are printed as MATCHED for paths they never read #8478 lineage; the file's inherited-population declaration and the check:watch-hint-literal gate guard that class). Directory names for the scan should be derived from an existing declared population or spelled in a way those guards accept, not added as fresh path literals.
  • Verbatim maintainer rulings in SKILL.md:586 and references/dispatch-runbook.md:17 mention the model family as prose (「Fable 5」, 「fable 5」); they are quotations, not values, and are not matched by the exact-value scan — the case must not be widened until it would touch them.

Refs: #14303 (the drift, and the PR that collapses 16 → 1).

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions