I4207 — Only a trends series of the shape the publication writes decides a run link
scripts/ci/link-check adds the runs of site/data/trends.json to the runs it decides by provenance only when the file is the series `scripts/pages trends` writes, an object of schema trends/v1; a file of any other shape decides nothing and does not break the check.
READY wave 0 · p1 · implementation profile · parallel safe
Ready. Every dependency is done, so majordomus plan start I4207 will be accepted.
Objective
scripts/ci/link-check adds the runs of site/data/trends.json to the runs it decides by provenance only when the file is the series `scripts/pages trends` writes, an object of schema trends/v1; a file of any other shape decides nothing and does not break the check.
Why
I4220 admitted every runs[].run_id of site/data/trends.json without looking at what the file is. The trust rests on provenance: scripts/pages trends wrote it from the forge's answers at publish time, and its own output says schema trends/v1. A stale, hand-made or differently shaped file with a runs list would turn arbitrary run links into decided ones, and a top-level list made the check die with AttributeError instead of deciding.
Current state
link-check reads `.get('runs')` of whatever site/data/trends.json parses to: any object's runs are decided, and a JSON list raises AttributeError.
Desired state
Only an object whose schema is trends/v1 contributes runs; a series of another schema or none leaves those run links refused as undecidable offline (exit 10), and case 335 holds both.
Scope
- scripts/ci/link-check
- test/cases/335_every_link_resolves.sh
- .ai/repo/project/issues/I4207.yaml
Out of scope
- What scripts/pages trends writes, which already carries schema trends/v1
- Deciding any other forge path offline
Dependencies
None. This issue is a root of the graph.
Acceptance criteria
- A run a trends/v1 series names is still decided
- The same run named by a series of schema trends/v0 is refused as undecidable offline (exit 10)
- The same run named by a top-level JSON list is refused (exit 10), not a crash
Validation
- bash test/run.sh 335_every_link_resolves
Evidence required
- suite
Evidence
None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.
Risk
None: the only series the publication writes is trends/v1 (scripts/pages, `schema: \"trends/v1\"`), so a published site decides exactly what it did.
Timeline
- started
- —
- verified
- —
- completed
- —
Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.
Canonical record: .ai/repo/project/issues/I4207.yaml. Read it back with majordomus plan show I4207.