Skip to content

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

Part of measurements-are-tracked-over-time — Coverage and CI cost are kept, exported and drawn over time, from the one measurement each has.

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.

Searches the titles and descriptions of every page this site publishes.