From Codex review on the archon-setup re-vendor PR (ArchonVII/archon-setup#324, thread on the vendored scripts/pr-contract.mjs):
When a PR body keeps common filler such as "placeholder summary goes here" or "placeholder verification notes go here", this new detector does not flag it because it only rejects lines made entirely of placeholder or exactly placeholder text. Since hasSubstantiveContent() only requires 20 characters, those unfilled sections can now pass the ready-for-review contract and wrappers despite still being placeholders.
Routed here because scripts/pr-contract.mjs is the single source of truth (repo-template vendors it with a hash-parity guard, archon-setup snapshots it; hand edits downstream are prohibited by the vendor manifest).
Design tension to weigh during triage: the substance-only contract (#99/#100) deliberately keeps the placeholder scan narrow because it also validates PR bodies about the parser itself — prose that mentions the word "placeholder" legitimately (like this issue) must not trip it. Any broadened phrase list needs test coverage for that self-referential case (see scripts/pr-contract.test.mjs).
Acceptance sketch:
- Filler phrases like "placeholder summary goes here" / " goes here" are rejected as placeholders in section bodies.
- Legitimate prose discussing the placeholder scan (inline code or otherwise) still passes.
- Consumers pick the change up via the normal @v1 retag + re-vendor chain.
From Codex review on the archon-setup re-vendor PR (ArchonVII/archon-setup#324, thread on the vendored
scripts/pr-contract.mjs):Routed here because
scripts/pr-contract.mjsis the single source of truth (repo-template vendors it with a hash-parity guard, archon-setup snapshots it; hand edits downstream are prohibited by the vendor manifest).Design tension to weigh during triage: the substance-only contract (#99/#100) deliberately keeps the placeholder scan narrow because it also validates PR bodies about the parser itself — prose that mentions the word "placeholder" legitimately (like this issue) must not trip it. Any broadened phrase list needs test coverage for that self-referential case (see
scripts/pr-contract.test.mjs).Acceptance sketch: