Skip to content

Build Toward the Whole: davehomeassist.github.io - #3

Merged
DaveHomeAssist merged 4 commits into
mainfrom
law/build-toward-the-whole
Sep 10, 2026
Merged

DaveHomeAssist merged 4 commits into
mainfrom
law/build-toward-the-whole

Conversation

@DaveHomeAssist

Copy link
Copy Markdown
Owner

Applies the Build Toward the Whole patch series.

Commits

  • Restore manifest loader in private-hub.html
  • Sync public-hub.html fallback from the canonical manifest
  • Enforce the registry contract in CI and check referential integrity
  • Update CLAUDE.md issue tracker to match the repo

Gate

npm test (validate + sync-manifest --check) — passing locally on this branch.

Not for merge yet.

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
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

@DaveHomeAssist
DaveHomeAssist merged commit b0e1f3f into main Sep 10, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants