Build step 7 of 7 — Work-section refresh (observatory-fed) (umbrella #22)
Build doc: documentation/portfolio-refresh-plan.md §7 Step M4 · Step type: operator
What to build
Operator loads the live site: checks all five Work blocks, both themes (OS toggle), the utility table on mobile width, the xmarks Live link, case-study pages under the new palette, and reads the new "How it all fits together" for story fit.
Existing context
- Astro 7 + content collections; Work grid =
ProjectGrid.astro reading getCollection('projects') (10 md files, hidden flag, order sort); EcosystemSection.astro holds the hardcoded LOOPS array; consts.ts shows the TS data-module import pattern.
- Deploy gates run before build in
.github/workflows/deploy.yml: astro check, prettier --check, no-TODO: grep (src/ only), astro build, linkinator (dead-link checker).
- Brand: the site owns
brand/{tokens.json,modes.dark.json}; onbrand build . + scripts/sync-brand.ps1 re-vendor src/assets/; forced light in BaseLayout.astro (to be removed).
- portfolio.json contract: companion plan §5d (
dev-observatory/plans/portfolio-pages-plan.md in aberson/coding-root); pinned counts flagship=3 / utility=13 / fun=6 / professional=3 / third-party=2.
Done when
operator signs off
Depends on
12 (#28)
Parallel-safe with
none — operator step
Produces
UAT verdict; redlines for wording/visuals
Operator workflow notes (autonomous + UI-bundle + parallel)
- Operator step:
/build-phase halts here intentionally; complete the checks above, then resume.
Synced from documentation/portfolio-refresh-plan.md by /repo-sync at c54a2cc
Build step 7 of 7 — Work-section refresh (observatory-fed) (umbrella #22)
Build doc: documentation/portfolio-refresh-plan.md §7 Step M4 · Step type: operator
What to build
Operator loads the live site: checks all five Work blocks, both themes (OS toggle), the utility table on mobile width, the xmarks Live link, case-study pages under the new palette, and reads the new "How it all fits together" for story fit.
Existing context
ProjectGrid.astroreadinggetCollection('projects')(10 md files,hiddenflag,ordersort);EcosystemSection.astroholds the hardcoded LOOPS array;consts.tsshows the TS data-module import pattern..github/workflows/deploy.yml: astro check, prettier --check, no-TODO: grep (src/ only), astro build, linkinator (dead-link checker).brand/{tokens.json,modes.dark.json};onbrand build .+scripts/sync-brand.ps1re-vendorsrc/assets/; forced light inBaseLayout.astro(to be removed).dev-observatory/plans/portfolio-pages-plan.mdin aberson/coding-root); pinned counts flagship=3 / utility=13 / fun=6 / professional=3 / third-party=2.Done when
operator signs off
Depends on
12 (#28)
Parallel-safe with
none — operator step
Produces
UAT verdict; redlines for wording/visuals
Operator workflow notes (autonomous + UI-bundle + parallel)
/build-phasehalts here intentionally; complete the checks above, then resume.Synced from documentation/portfolio-refresh-plan.md by /repo-sync at c54a2cc