Build Toward the Whole: davehomeassist.github.io - #3
Merged
Merged
Conversation
Commit e21df48 (2026-06-21) dropped the definitions of manifestData, manifestError, validateManifest and loadManifest from private-hub.html while init() still awaited loadManifest(). Every load of Mission Control since then threw ReferenceError before rendering anything, so the page never read project-manifest.json and never showed its fallback either. The August privacy hardening edited the dead fallback without noticing. Reinstate the loader as it existed before e21df48: fetch the canonical manifest with cache no-store, run the lightweight shape validation that implementation_plan.txt Phase 4B records as completed, and fall back to the embedded copy with a visible error note when the fetch or validation fails. Replace the stale "in production: fetch" comment with the real contract for the fallback block. Verified with a jsdom load of the page: fetch success renders 63 cards with zero errors; simulated fetch failure renders the same catalog from the fallback and logs the fallback warning. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01656XvdqNAVojSPQBtLZAAt
public-hub.html fetches project-manifest.json and embeds its own FALLBACK_MANIFEST block, but scripts/sync-manifest.mjs only targeted index.html and private-hub.html. The public-hub copy froze at the 2026-04-12 manifest: 37 entries against 61, the pre rebuild category keys, six entries still marked visibility private, and repo URLs that have since been renamed (new-land-pages, ReadOut, shieldbox-event-quote). The page is indexable and listed in sitemap.xml, and the August privacy hardening that scrubbed the other two fallbacks never touched it. Add public-hub.html to the sync target list so there is one registry and three generated copies, regenerate its fallback from the current manifest, and add a --check mode that exits 1 on drift without writing so a gate can enforce the invariant. Update CLAUDE.md to name all three fallback carriers. Verified: node scripts/sync-manifest.mjs --check reported drift in public-hub.html only, the sync rewrote it, a second --check passed, and a jsdom load of public-hub.html renders 46 cards with zero errors both with the fetch succeeding and with the fetch failing. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01656XvdqNAVojSPQBtLZAAt
The privacy validator only ran as a prefix of npm run sync-manifest, so a hand edit to project-manifest.json committed without running sync reached GitHub Pages unchecked, and the CI workflow only tested that a few files exist. It also validated shape only, while README.md documents a status enum and the hubs dereference category, hosting, parentProject, dependencies and dependents against the manifest maps. Extend the validator to reject unknown status values, non boolean featured flags, categories and hosting keys not defined in the manifest, relationship ids that do not resolve, a missing meta.owner, and a malformed meta.lastUpdated. Add npm run check-manifest (validate plus sync-manifest --check) and npm test as its alias, and run it from the Pages Smoke workflow so a private visibility value, a stale embedded fallback, or a dangling reference fails the build instead of shipping. Verified: npm test passes on the current manifest; six mutated copies (private visibility, unknown status, undefined category, dangling dependency, localPath value, non org repo URL) each exit 1 with the matching message; the existing smoke shell checks still pass locally. The workflow itself could not be executed in this sandbox. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01656XvdqNAVojSPQBtLZAAt
Issue 005 (video engineer back link) has been fixed since 93ca6c6 on 2026-07-11 but was still listed as open. Record it as resolved and log the two defects fixed in this branch (private-hub loader regression and the unsynced public-hub fallback) so the tracker reflects the code. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01656XvdqNAVojSPQBtLZAAt
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
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.
Applies the Build Toward the Whole patch series.
Commits
Gate
npm test (validate + sync-manifest --check)— passing locally on this branch.Not for merge yet.