refactor(nav): the footer promised what only the nav could keep - #122
Merged
Conversation
NAV_ITEMS says "only routes that actually exist belong here — a nav link to a 404 is a lie". The footer carried the same sentence about itself, and then restated six of those routes as its own literal <Link>s. Nothing tied the two lists together, so removing a page from the nav left the footer pointing at it with no way to notice. Both files promised the same thing and only one of them could keep it. FOOTER_SECTIONS now names hrefs instead of repeating them, and the footer renders from that. A rename in NAV_ITEMS reaches the footer for free. Where the footer deliberately says something shorter than the nav — "Voting", not "How voting works"; "API", not "Integration" — that is now an explicit `label` override rather than an independently typed second copy. The difference is recorded as a choice instead of looking like drift. The sibling pillars and the source-code link already came from their own SSOTs (ECOSYSTEM_PILLARS, SOLON_GITHUB_URL) and still do. Six tests, mutation-proven: deleting /security from NAV_ITEMS alone — exactly the regression this prevents — fails the suite and names the orphaned footer link. Verify green (lint, typecheck, design:check, 82 tests). Found by a fleet-wide navigation audit across 20 repos. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XeELB8b3N4JrT2asYL9WvE
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
NAV_ITEMScarries the comment "only routes that actually exist belong here — a nav link to a 404 is a lie". The footer carried the same sentence about itself — and then restated six of those routes as its own literal<Link>s.Nothing tied the two lists together. Removing a page from the nav left the footer pointing at it, with no way to notice. Both files promised the same thing and only one of them could keep it.
The fix
FOOTER_SECTIONSnames hrefs instead of repeating them, and the footer renders from that. A rename inNAV_ITEMSnow reaches the footer for free.Where the footer deliberately says something shorter than the nav — "Voting" not "How voting works", "API" not "Integration" — that's an explicit
labeloverride rather than an independently typed second copy. The difference is recorded as a choice instead of looking like drift.The sibling pillars and the source-code link already came from their own SSOTs (
ECOSYSTEM_PILLARS,SOLON_GITHUB_URL) and still do.Mutation-proven
Six tests. Deleting
/securityfromNAV_ITEMSalone — exactly the regression this prevents — fails the suite and names the orphaned footer link by path. That's the check actually discriminating, not just passing.npm run verifygreen: lint, typecheck, design:check, 82 tests.Found by a fleet-wide navigation audit across 20 repos.
🤖 Generated with Claude Code
https://claude.ai/code/session_01XeELB8b3N4JrT2asYL9WvE