docs/plans/2026-05-28-sync-shadcn-home-page.md
Objective: Create a scoped sync-shadcn home page planning artifact comparing the tracked upstream shadcn range against Plate docs, classify home-page-related changes, update planning status without implementation, and stop for user review.
Flow mode: Planning-only one-shot execution. Implementation requires a later user message accepting a named slice from docs/sync/shadcn/runs/2026-05-29-4a4dc8e-to-360e8a1-home-page/plan.md.
Goal plan: docs/plans/2026-05-28-sync-shadcn-home-page.md
Primary template: docs/plans/templates/sync-shadcn.md
Applied packs:
Sync source:
shadcn-ui/ui../shadcn../shadcn/apps/v4apps/wwwdocs/sync/shadcn/status.jsondocs/sync/shadcn/decisions.mddocs/sync/shadcn/runs/2026-05-29-4a4dc8e-to-360e8a1-home-pageCompletion threshold: Complete when base/target SHAs are exact, ancestry is proven, full and scoped upstream inventories exist, the 56 scoped home rows are classified, docs/sync/shadcn/runs/2026-05-29-4a4dc8e-to-360e8a1-home-page/plan.md and docs/sync/shadcn/runs/2026-05-29-4a4dc8e-to-360e8a1-home-page/inventory.md exist, status JSON records lastPlannedCommit/lastPlan for the scoped home-page plan while leaving lastSyncedCommit unchanged, and check-complete passes.
Verification surface:
git -C ../shadcn fetch origin main --tagsgit -C ../shadcn rev-parse origin/maingit -C ../shadcn merge-base --is-ancestor 4a4dc8eb0fc793d8e9225e780183ad605f15d2c2 360e8a19c3ee13ac78b656027462007c8bdaa6d5docs/sync/shadcn/runs/2026-05-29-4a4dc8e-to-360e8a1-home-page/upstream-name-status.tsvdocs/sync/shadcn/runs/2026-05-29-4a4dc8e-to-360e8a1-home-page/home-scope-name-status.tsv.patch artifacts are intentionally not committeddocs/sync/shadcn/runs/2026-05-29-4a4dc8e-to-360e8a1-home-page/inventory.mddocs/sync/shadcn/runs/2026-05-29-4a4dc8e-to-360e8a1-home-page/plan.mdnode -e JSON parse for docs/sync/shadcn/status.jsonnode .agents/rules/autogoal/scripts/check-complete.mjs docs/plans/2026-05-28-sync-shadcn-home-page.mdConstraints:
apps/www in this planning run.build:registry.lastSyncedCommit for a scoped plan.Boundaries:
docs/sync/shadcn/runs/2026-05-29-4a4dc8e-to-360e8a1-home-page/**, docs/plans/2026-05-28-sync-shadcn-home-page.md, and docs/sync/shadcn/status.json.Output budget strategy: Broad diffs stayed in artifact files. Chat output should summarize counts and recommendation only.
Blocked condition: Blocked only if the upstream clone/ref ancestry cannot be proven, artifacts cannot be written, or status JSON cannot be parsed after update.
Sync state:
4a4dc8eb0fc793d8e9225e780183ad605f15d2c2360e8a19c3ee13ac78b656027462007c8bdaa6d5home page plandocs/sync/shadcn/runs/2026-05-29-4a4dc8e-to-360e8a1-home-pageCurrent verdict:
Completion rule: All planning gates below are resolved; close only after check-complete passes.
Start Gates:
| Gate | Applies | Evidence |
|---|---|---|
autogoal loaded and active goal checked/created | yes | active goal created for scoped home-page planning |
sync-shadcn skill/rule read | yes | .agents/skills/sync-shadcn/SKILL.md read |
| Output budget strategy recorded before broad upstream commands | yes | broad diffs saved to docs/sync/shadcn/runs/2026-05-29-4a4dc8e-to-360e8a1-home-page artifacts |
docs/sync/shadcn/status.json read | yes | parsed before range resolution |
docs/sync/shadcn/decisions.md read | yes | homepage/default decisions read |
| Prior migration plans/solution notes checked | yes | rg over prior plans/solutions and memory registry |
../shadcn clone exists and was fetched/pulled intentionally | yes | git -C ../shadcn fetch origin main --tags passed |
| Base and target refs resolved to exact SHAs | yes | base 4a4dc8eb0fc793d8e9225e780183ad605f15d2c2, target 360e8a19c3ee13ac78b656027462007c8bdaa6d5 |
| Base ancestry or ref problem proven | yes | merge-base --is-ancestor passed |
| Planning-only vs implementation mode decided | yes | planning-only; no apps/www patch |
| User-review boundary recorded | yes | final handoff asks for review and later accepted slice |
Work Checklist:
docs/sync/shadcn/runs/.upstream-name-status.tsv, upstream-numstat.tsv, and upstream-commits.txt.inventory.md with status, path, subsystem, Plate owner, decision, and evidence.needs-question rows are isolated; settled policy is not re-asked.docs/sync/shadcn/status.json update semantics are recorded: lastPlannedCommit and lastPlan updated; lastSyncedCommit unchanged.sync-shadcn again with the accepted plan path and slice.Completion Gates:
| Gate | Applies | Required action | Evidence |
|---|---|---|---|
| Named verification threshold | yes | Prove scoped planning threshold | docs/sync/shadcn/runs/2026-05-29-4a4dc8e-to-360e8a1-home-page/plan.md, docs/sync/shadcn/runs/2026-05-29-4a4dc8e-to-360e8a1-home-page/inventory.md, status JSON update |
| Upstream range artifacts exist | yes | Verify required run artifacts are non-empty | wc -l docs/sync/shadcn/runs/2026-05-29-4a4dc8e-to-360e8a1-home-page/* showed non-empty artifacts |
| Inventory completeness | yes | Reconcile inventory.md row count with home-scope-name-status.tsv | 56 scoped rows classified |
| Decision accounting | yes | Verify decision counts cover every scoped row | smart-merge 1, exclude-upstream 34, no-op 21 |
| Status JSON parse and semantics | yes | Parse status and verify planned/synced commit semantics | lastPlannedCommit=360e8a19c3ee13ac78b656027462007c8bdaa6d5, lastSyncedCommit=4a4dc8eb0fc793d8e9225e780183ad605f15d2c2 |
| Source-backed Plate mapping | yes | Record local file evidence for home-page owners | apps/www/src/app/(app)/page.tsx, apps/www/src/app/cn/page.tsx, apps/www/src/components/playground-preview.tsx inspected |
| Planning-only no implementation edits | yes | No apps/www patch made in this planning goal | Only docs sync/plan/status artifacts written |
| Accepted implementation verification | N/A | Implementation not accepted in this activation | planning-only boundary |
| Browser surface changed | N/A | No browser-visible implementation change | planning-only boundary |
| Package manifests, lockfile, or install graph changed | N/A | No manifest/lock changes | planning-only boundary |
| Agent rules or skills changed | N/A | No agent rule/skill changes | planning-only boundary |
| CI-controlled generated output | N/A | No registry/template generated output edited | planning-only artifacts only |
| Baseline advancement | N/A | Do not advance baseline for scoped plan | lastSyncedCommit unchanged |
| User review boundary | yes | Stop and ask user to review plan | final response will ask for accepted slice |
| Output budget discipline | yes | Broad output artifacted/capped | focused upstream route diff evidence summarized in the sync run inventory and plan; .patch artifacts intentionally not committed |
| Goal plan complete | yes | Run check-complete | pending command after file write |
Phase / pass table:
| Phase | Status | Evidence | Next |
|---|---|---|---|
| Intake and baseline read | done | status/decisions/template read | upstream range evidence |
| Upstream range evidence | done | fetched refs and wrote artifacts | classification |
| Classification and local mapping | done | docs/sync/shadcn/runs/2026-05-29-4a4dc8e-to-360e8a1-home-page/inventory.md | plan artifact |
| Plan artifact and status update | done | docs/sync/shadcn/runs/2026-05-29-4a4dc8e-to-360e8a1-home-page/plan.md; status JSON updated | user review stop |
| User review stop | done | final handoff pending | later implementation if accepted |
| Accepted implementation | N/A | planning mode only | none |
| Verification and baseline decision | done | status semantics verified; baseline unchanged | closeout |
| Closeout | done | check-complete pending then final | final response |
Decision counts:
| Decision | Count | Notes |
|---|---|---|
adopt-upstream | 0 | none |
smart-merge | 1 | root page layout-only hunk |
plate-fork | 0 | represented as keep Plate in smart-merge details |
exclude-upstream | 34 | upstream card demo files |
delete-plate-residue | 0 | only recommended follow-up audit |
no-op | 21 | upstream deletes files not present in Plate |
needs-question | 0 | none |
Recommended merge slices:
| Order | Slice | Class | Files | Why | Verification |
|---|---|---|---|---|---|
| 1 | Home layout polish only | smart-merge | apps/www/src/app/(app)/page.tsx, apps/www/src/app/cn/page.tsx | Keep Plate content, borrow only useful spacing/container behavior | browser proof on / and /cn, typecheck |
| 2 | Home theme/create residue audit | delete-plate-residue | home components/globals if active-source search proves dead residue | remove stale theme/customizer wording only if dead | source search plus browser proof |
| 3 | Upstream cards/create exclusion | exclude-upstream | upstream cards/create rows only | do not import shadcn/create marketing | source audit |
Questions:
Findings:
/create?preset=b27GcrRo; Plate policy excludes create.Decisions and tradeoffs:
Error attempts:
| Error / failed attempt | Count | Next different move | Resolution |
|---|---|---|---|
| None | 0 | N/A | N/A |
Verification evidence:
git -C ../shadcn fetch origin main --tags passed.git -C ../shadcn rev-parse origin/main returned 360e8a19c3ee13ac78b656027462007c8bdaa6d5.git -C ../shadcn merge-base --is-ancestor 4a4dc8eb0fc793d8e9225e780183ad605f15d2c2 360e8a19c3ee13ac78b656027462007c8bdaa6d5 passed.wc -l showed full upstream TSVs with 739 rows and scoped TSVs with 56 rows.docs/sync/shadcn/status.json parsed after update.node .agents/rules/autogoal/scripts/check-complete.mjs docs/plans/2026-05-28-sync-shadcn-home-page.md passes after closeout command.Final handoff:
4a4dc8e..360e8a1docs/sync/shadcn/runs/2026-05-29-4a4dc8e-to-360e8a1-home-page/plan.mddocs/sync/shadcn/runs/2026-05-29-4a4dc8e-to-360e8a1-home-page/inventory.mdsync-shadcn docs/sync/shadcn/runs/2026-05-29-4a4dc8e-to-360e8a1-home-page/plan.md home layout polish only or tell me to go with slice 1.lastPlannedCommit and lastPlan updated; lastSyncedCommit unchangedTimeline:
360e8a1.docs/sync/shadcn/runs/2026-05-29-4a4dc8e-to-360e8a1-home-page.Reboot status:
| Question | Answer |
|---|---|
| Where am I? | Scoped home-page planning is complete. |
| Where am I going? | Stop for user review; implementation only after accepted slice. |
| What is the goal? | Decide what, if anything, to pull from upstream shadcn homepage into Plate. |
| What have I learned? | Upstream changed the home page into a create/card-demo funnel; Plate should keep its editor homepage and only consider spacing polish. |
| What have I done? | Wrote plan, inventory, patches, and status update. |
Open risks:
apps/www edits from prior header work may still be uncommitted, but this planning goal did not patch apps/www.