Unify the Project Revival Story

Work directly in:
/home/kernel-kain/Documents/Github/unfinished-business
Execution rules:
- Work only on the main branch.
- Begin with:
- git status
- git switch main
- git pull --ff-only origin main
- Preserve all unrelated changes, untracked files, and existing stashes. Do not apply, delete, or commit .backboard/, .unfinished-business/, .env files, credentials, or the existing stash unless this phase explicitly requires it.
- Read the relevant source, tests, AGENTS.md files, and documentation before editing.
- Implement only the phase described below. Do not begin the next phase.
- Maintain backward compatibility with existing saved projects through explicit migrations.
- Do not expose provider secrets, prompts containing secrets, or private model output in logs, telemetry, screenshots, or error messages.
- Add or update tests for every behavior changed.
- After implementation, update the relevant project documentation, including:
- README.md when user-facing behavior changes
- docs/ARCHITECTURE.md
- docs/DECISIONS.md
- docs/IMPLEMENTATION_PLAN.md
- docs/EVIDENCE.md
- docs/RELEASE_NOTES.md
- any phase-specific setup or integration documentation
- Mark the phase complete in the implementation plan only after its acceptance criteria pass.
- Run all relevant verification. At minimum:
- npm run typecheck
- npm test
- npm run build Run visual, security, budget, contract, migration, or integration tests when affected.
- Review the final git diff for accidental files, secrets, debugging output, and unrelated changes.
- Commit with the commit message specified by this phase.
- Push the commit to origin/main. Never force-push.
- If the push is rejected because origin/main advanced, fetch and rebase safely, resolve only scoped conflicts, rerun verification, and push normally.
- Finish with:
- implementation summary
- changed files
- documentation updated
- tests and results
- known limitations
- commit hash
- push result
Do not stop for ordinary implementation decisions. Stop only if there is a destructive conflict, missing required credential, irreconcilable remote conflict, or a decision that would materially change the product’s intended behavior.
The phase description wasn't included in the message. Let me look for where the next phase might be specified.
Implement Phase 6: replace the inconsistent demo, rewrite the landing page, and make the hackathon theme part of the product story.
Objectives:
- Use one canonical sample dataset.
- Replace the generic example with a coherent abandoned-project revival.
- Simplify landing-page copy and visual hierarchy.
- Make the OpenCode relationship understandable.
Implementation requirements:
- Create one canonical demo fixture used by:
- guided demo;
- landing preview;
- visual tests;
- screenshots;
- evidence examples.
- Remove contradictory PASS/FAIL states from separate fixture sources.
- Replace the current example with a small, self-contained abandoned open-source project:
- clear original problem;
- Oracle discovery;
- Architect plan;
- bounded Maker change;
- relevant test;
- honest Witness evidence.
- Make every section and generated artifact consistent with the same example.
- Rewrite technical/jargon-heavy demo text in plain language.
- Keep technical fixture disclosures available, but place them under details.
- Rebuild the landing page around:
- Hero
- Four-stage workflow
- Sample project
- Why OpenCode
- Local setup and privacy
- FAQ/final CTA
- Keep Try the example as the primary CTA.
- Remove the duplicate Watch guided flow action.
- Keep Run locally as a secondary action.
- Replace technical hero facts with user outcomes:
- Clarify the idea
- Approve the plan
- Build with OpenCode
- Verify the result
- Rewrite “OpenCode is the engine” in direct language.
- Rename or replace:
- Deterministic walkthrough
- OpenCode controls and evidence
- Hosted demo or private hosted
- Full local mode
- Remove the idea-to-tool recommendation unless it becomes genuinely interactive and capability-driven.
- Replace the generic hero image with a bespoke visual aligned with the four spirits and abandoned-project workshop concept. If creating a raster illustration, use the available image-generation skill and store an optimized web asset with appropriate responsive variants.
- Reduce oversized typography, excess glass cards, pills, outlines, glows, and monospace labels.
- Add fixture-consistency and visual-regression tests.
Acceptance criteria:
- Landing and demo always report the same sample outcome.
- The sample tells one coherent story from idea through evidence.
- The hackathon theme is functional rather than cosmetic.
- The page has one obvious primary CTA.
- Desktop and mobile layouts have intentional scale and spacing.
Commit message:
feat(demo): unify the project revival story
Now I'll rewrite the canonical fixture around a coherent abandoned open-source project, keeping all existing contracts.
Implementation summary
Implemented Upgrade Phase 6 — canonical sample and rewritten landing page on main.
- Replaced the campus umbrella example with one coherent Driftwatch story: an abandoned open-source issue-triage CLI revived through Oracle discovery, an Architect plan, a bounded Maker change, a recorded Node test, and honest Witness evidence.
- Made
src/shared/demo.tsthe single source for the guided sample, landing preview, evidence view, screenshots, and docs. Removed the duplicate landing operations/evidence that reported a contradictoryFAIL. - Rewrote the landing page around hero → four-stage workflow → sample project → why OpenCode → local setup/privacy → FAQ/final CTA.
- Made Try the example the single primary CTA and Run locally the secondary action. Removed the duplicate “Watch the guided workflow” landing action.
- Replaced technical hero facts with Clarify the idea / Approve the plan / Build with OpenCode / Verify the result.
- Rewrote “OpenCode is the engine” as “OpenCode does the coding. This workshop does the deciding.”
- Renamed deterministic walkthrough → guided sample, hosted demo → hosted sample, full local mode → local workshop.
- Removed the static idea-to-tool recommendation block entirely.
- Moved sample provenance, fixture version, technical caveats, and the evidence inspector under
<details>. - Reduced oversized display type, glass cards, pills, outlines, glows, and monospace labels.
- Generated a new bespoke four-spirit abandoned-workshop hero and rebuilt responsive AVIF/WebP/JPEG variants.
Changed files
Key implementation:
src/shared/demo.tssrc/web/content/landing.tssrc/web/landing/Hero.tsxsrc/web/landing/LandingPage.tsxsrc/web/landing/DemoTeaser.tsxsrc/web/demo/DemoPage.tsxsrc/web/styles.csssrc/web/routes.tssrc/shared/modes.tssrc/server/app.tssrc/server/workflow/model.tssrc/web/components/RunInspector.tsxscripts/build-hero-assets.pyassets/source/hero-workshop-revival.webppublic/assets/hero/*
Tests:
tests/demo.test.tstests/web.test.tstests/visual/demo.spec.tstests/visual/landing.spec.ts- Refreshed snapshots under
tests/visual/snapshots/
Documentation updated
README.mddocs/ARCHITECTURE.mddocs/CHANGELOG.mddocs/DECISIONS.mddocs/DEMO_AND_SUBMISSION.mddocs/EVIDENCE.mddocs/HOSTED_DEPLOYMENT.mddocs/IMPLEMENTATION_PLAN.mddocs/LOCAL_SETUP.mddocs/OPENCODE_INTEGRATION.mddocs/OPERATIONS_AND_RECOVERY.mddocs/PRODUCT_BRIEF.mddocs/RELEASE_NOTES.mddocs/TOOL_CATALOG.mddocs/UX_AND_VISUAL_SYSTEM.md
Tests and results
npm run typecheck— passnpm test— 186 pass, 0 failnpm run build— pass; existing >500 KiB initial-chunk warning remainsnpm run budget— pass- Initial JS: 201.3 KiB / 220 KiB
- All JS: 279.9 KiB / 290 KiB
- CSS: 17.0 KiB / 18 KiB
- Hero total: 581.2 KiB / 640 KiB
- Largest hero: 87.8 KiB / 190 KiB
npm run test:visual— 20 passnpm run test:contracts— 7 passnpm audit --omit=dev --audit-level=high— pass; same 6 moderate Sentry-path advisories remain
Known limitations
- The Driftwatch sample is recorded; it does not prove live inference, the visitor’s repository, or a deployment.
- The hero remains decorative; all meaning stays in HTML text.
- Automated visual/accessibility checks do not replace a full screen-reader audit.
- No schema change or migration was required; schema v7 and saved projects are unchanged.
.backboard/remains untracked and untouched; the existing stash was not applied, removed, or committed.
Commit
ddf632a — feat(demo): unify the project revival story
Push result
Pushed successfully to origin/main:
origin/main now points to ddf632a.