I3008 — A homepage link with a fragment resolves to an element its page carries
Hold the homepage navigation rule (site-check 13d) on a fixture: a hero or navigation link with a #fragment resolves when its page exists and carries that id, fails naming the element when the page lacks it, and a link to an absent page fails as unresolved. The rule becomes one function, run by the full site-check and alone through `site-check --nav PUBLIC_DIR CONFIG_TOML`.
DONE wave 0 · p1 · implementation profile · parallel safe
Objective
Hold the homepage navigation rule (site-check 13d) on a fixture: a hero or navigation link with a #fragment resolves when its page exists and carries that id, fails naming the element when the page lacks it, and a link to an absent page fails as unresolved. The rule becomes one function, run by the full site-check and alone through `site-check --nav PUBLIC_DIR CONFIG_TOML`.
Why
On 2026-10-18 the 0.30.0 top's site job and suite shards 1 and 3 failed on /roadmap/#delivery: the rule looked for the file site/public/roadmap/#delivery/index.html although /roadmap/ carried id=\"delivery\". The fix that split the fragment off landed with the top, without a test.
Current state
Rule 13d splits the fragment and requires the id, inline in the full site-check, held by no case.
Desired state
The rule is a function a case runs on a fixture, and case 3401 fails if the fragment split or the id check is removed.
Scope
- scripts/site-check
- test/cases/3401_a_hero_link_with_a_fragment_resolves_to_its_id.sh
- .ai/repo/project
- docs
- site
Out of scope
- Any other site-check rule
Dependencies
None. This issue is a root of the graph.
Acceptance criteria
- A hero link to /roadmap/#delivery passes when /roadmap/ carries id=\"delivery\", and fails naming the element when it does not
- A hero link to an absent page fails as unresolved
- Removing the fragment split or the id check each turns case 3401 red
Validation
- majordomus plan validate
- bash test/run.sh 3401_a_hero_link_with_a_fragment_resolves_to_its_id
Evidence
None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.
Timeline
- started
- 2026-10-20T16:17:02Z
- verified
- —
- completed
- 2026-10-20T16:31:39Z
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/I3008.yaml. Read it back with majordomus plan show I3008.