Repository navigation
docs(design): retire the HOME contract and re-point GC entry points to the Progress tab - #1090
Conversation
…o the Progress tab HOME was deleted by #1020/#1038 and STATS became the Progress tab in #1051, but docs/screen-contracts.md and docs/navigation-flows.md still described the HOME-era entry points as current. The anchoring gate only checks that headings exist, so the stale prose passed. - screen-contracts.md `## HOME`: whole section replaced by a one-paragraph retired stub (heading kept so C-1 stays anchored and the section count stays 23). The resume-pill facts move into a "Today tab host" note in SUD-DAILY-HUB / MS-DAILY-HUB, which is where the pill lives as-built (GameAppKit/TodayTabHost.swift). - contracts.py: C-20 and C-34 re-anchored HOME -> SUD-DAILY-HUB (the Today tab root section, C-2); EXPECTED_SLUG_COUNT unchanged at 23. - GC-DASHBOARD / GC-SIGNED-OUT-ALERT entry points, S5 / M6 / N14: rewritten to the Progress tab's Leaderboards / Achievements rows + the SETTINGS GC row, matching C-15 / C-35 / C-36 / N-F / N-F2 / N-Q / N-AA. - Remaining "HOME resume pill" / "HOME/hub that pushed the board" / "HOME stays visible" cells in as-built sections say "Today tab" / "the tab root" now. - navigation-flows.md gains a "partially superseded by 3.0" banner naming the anchored BREAK rows (N-A / N-D / N-E / N-C) that own the remaining pre-3.0 HOME mentions (route enums, diagrams, S1-S3 / M1-M3, N4). Verified: python3 scripts/design/contracts.py -> RESULT: PASS, 23 sections. part of #1014 Closes #1081 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
T6 fresh-context acceptance (sonnet) — head b0dee32 總判定:ACCEPT 驗收範圍:PR #1090(head 逐條驗收A. HOME stub — PASS B. C-20 / C-34 anchor 與程式碼一致 — PASS C. EXPECTED_SLUG_COUNT / D. GC-DASHBOARD / S5 / N14 entry points 改 Progress,且與 contracts.py 一致 — PASS E. Gate 綠燈 + F. Session done-when #2 — PASS G. Additional constraints — PASS H. 抽查 6 列 rewritten cell 表 — PASS I. 引用 issue/PR 號存在且主題相符 — PASS J. 鏡像原則 — PASS(附一則 pre-existing 差異,非本 PR 造成) Findings無 blocker、無 should-fix。
我沒驗的部分 + 信心度
|
…ons retired (#1081 CR) PM CR on #1090: two SETTINGS passages ("same guard the Home leaderboard card uses"; "alongside the Home leaderboard card") and the N20 row ("Home card / Settings row") still treated the card as live, contradicting the rewritten GC-DASHBOARD / GC-SIGNED-OUT-ALERT text. They escaped the case-sensitive HOME grep. All three now say the card is the retired pre-3.0 one and name the PROGRESS GC rows as today's entry points. Also: the `## HOME` stub's "moved as follows" list gains the Practice card (-> Practice tab root, C-3 / C-3b) and is re-wrapped. Surviving-hit list re-run with `rg -n -i '\bhome\b'`; classification is in the PR body. `python3 scripts/design/contracts.py` -> RESULT: PASS. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
PM review record: CR (doc-vs-code) + fresh-context acceptance; merging at
|
Closes #1081
part of #1014
Docs-only. HOME was deleted by #1020 / #1038 and STATS became the Progress tab in #1051, but
docs/screen-contracts.mdanddocs/navigation-flows.mdstill described the HOME-era entry points as current.contracts.pyonly checks that headings exist, so the prose passed the gate.Commits: b0dee32 (the retirement) + 5f11a79 (PM CR follow-up: SETTINGS / N20 "Home leaderboard card" mentions marked retired, stub gains the Practice card, case-insensitive hit list below).
Decisions (per the PM scope on #1081)
## HOMEheading: kept as a one-paragraph retired stub.EXPECTED_SLUG_COUNTstays 23 and C-1 (HOME 整節刪除) keeps its anchor. No element inventory, interaction table or destination contract survives; the stub says where each former HOME element went (resume pill/banner →TodayTabHost, Leaderboard card → Progress rows, Practice card → Practice tab root, Settings card → per-tab gear, Statistics card → Progress tab) and points atgit show 6341999a:docs/screen-contracts.mdfor the pre-retirement text.C-20 / C-34 re-anchored
HOME→SUD-DAILY-HUB. Reasoning:GameAppKit/TodayTabHost.swift: it wraps each app's Today content, rendersResumePillwhilerootViewModel.resumeCandidateis non-nil, andresumeTapped()pushes onto the selected tab's stack.## TODAY/ ROOT-TABS section (C-16 is still unanchored); the Today tab root is contracted underSUD-DAILY-HUB/MS-DAILY-HUB(C-2 / C-2b).SUD-DAILY-HUB, with the MS side on thebtwin where one exists. C-20 / C-34 have no twin, so they anchor to the Sudoku reference section.GameRootViewModel.setPath(_:for:)callshandlePathShrinkon ANY tab's path shrinking, plusdismissGame()andbootstrap().SUD-DAILY-HUB;MS-DAILY-HUBcarries a pointer note plus the one MS-specific fact (.resumeBoardtier-1 loader), the same shape as its existing "seeSUD-DAILY-HUB's callout" banner.Every rewritten cell (section / old / new)
HOME,SETTINGS, …PROGRESS,SETTINGS, …## HOME(whole section)## SUD-DAILY-HUB## MS-DAILY-HUB.resumeBoardtier-1 fact## SUD-BOARDentry pointsHOME resume pillToday tab resume pill (TodayTabHost, seeSUD-DAILY-HUB)## MS-BOARDentry pointsHOME resume pill (→ .resumeBoard …)Today tab resume pill (→ .resumeBoard …)## SUD-BOARD-LOAD-FAILEDClose row, lands onHOME/hub that pushed the board — on iOS …the tab root / hub that pushed the board — on iOS …(pre-existing SUD/MS asymmetry: the MS twin describes only the resume caller)## MS-BOARD-LOAD-FAILEDentry points(HOME resume pill — tier 1, …)(Today tab resume pill — tier 1, …)## MS-BOARD-LOAD-FAILEDClose row, lands onHOME (resume pill's caller)Today tab root (resume pill's caller)## PAUSE-OVERLAYLeave row, lands onHOME (iOS: cover collapses) or the hub …the tab root (iOS: cover collapses) or the hub …## SUD-COMPLETION-OVERLAYClose row, lands onHOME/hub that pushed the board (never the solved board — #667 fix)the tab root / hub that pushed the board (never …)## MS-COMPLETION-OVERLAYClose row, lands onHOME/hub that pushed the boardthe tab root / hub that pushed the board(pre-existing asymmetry: the SUD twin carries the "(never the solved board — #667 fix)" parenthetical, which is Sudoku'sexitToHubfix and does not apply to MS's plaindismiss(); base 6341999 already differed)## SETTINGSGC row, destination (5f11a79)(same guard the Home leaderboard card uses)(the same guard the PROGRESS GC rows use — and the retired pre-3.0 HOME leaderboard card used)## SETTINGSAS-BUILT NOTE (5f11a79)alongside the Home leaderboard card (#685/#714; …alongside the retired pre-3.0 HOME leaderboard card — today's other entry points are the PROGRESS GC rows (#685/#714; …## GC-DASHBOARDentry pointsSETTINGSGC rowPROGRESSLeaderboardsrow (.leaderboards) andAchievementsrow (.achievements, C-26 / C-36);SETTINGSGC row; all throughpresentGameCenterOrAlert; HOME card retired (C-35)## GC-SIGNED-OUT-ALERTentry pointsSETTINGSGC rowPROGRESSAchievements/Leaderboardsrow tap (C-35 / N-AA), ORSETTINGSGC row; HOME card entry retired## GC-SIGNED-OUT-ALERTcoveringHOME stays visible but non-interactivethe origin screen (tab root or SETTINGS) stays visible but non-interactive## ATT-PRIMERContinue row, lands onHOME, banner now resolves …Today tab, banner now resolves …## ATT-PRIMERNot now row, lands onHOMEToday tab## ATT-PRIMERcoveringHOME stays mountedthe Today tab stays mountedHOME,SUD-BOARD, …)PROGRESS,SUD-BOARD, …)HOME(Leaderboard, authenticated) → GC-DASHBOARD/HOME(Leaderboard, signed out) → GC-SIGNED-OUT-ALERT → OK → HOMEPROGRESS(Leaderboards or Achievements row, authenticated) → GC-DASHBOARD(external)/PROGRESS(either row, signed out) → GC-SIGNED-OUT-ALERT → OK → PROGRESS; notes cite C-15 / C-36 / N-F and N14HOME(Leaderboard, authenticated) → GC-DASHBOARD/ signed-out → alertPROGRESS(Leaderboards or Achievements row, authenticated) → GC-DASHBOARD(external)/ signed-out → alert (N-F2)SETTINGSGC rowPROGRESStab'sLeaderboards/Achievementsrows — N-Q / N-AA — OR theSETTINGSGC rowthe surviving GC entry points (Home card / Settings row)the surviving GC entry points (PROGRESS GC rows / Settings row; the pre-3.0 Home card is retired, #1020)HOMESUD-DAILY-HUB(+ 2-line comment)HOMESUD-DAILY-HUBNot touched on purpose: S1–S3 / M1–M3, the §3 mermaid diagrams, the §1 route enums, §2 hub list and #679 refresh prose, N4 — they are owned by anchored BREAK rows N-A / N-D / N-E / N-C and are the 3.0 spec PR's rewrite; the new banner names them as the pre-3.0 record.
Surviving hits at head 5f11a79 —
rg -n -i '\bhome\b' docs/screen-contracts.md docs/navigation-flows.md(35 + 41 = 76 lines)Classes: stub (the
## HOMEsection itself) · historical (the passage itself says retired / superseded / pre-3.0) · banner-covered (pre-3.0 record named by the nav-flows banner, owned by an anchored BREAK row) · still-true ("Home" used as the generic landing-screen noun; the statement holds for the Today tab) · not-the-screen (English word).screen-contracts.md (35):
homeroute on 7)## HOMEstubHOMEcontract", "replaced HOME'sgame.home.root"GameHomeView's banner slot; HOME is retired"navigation-flows.md (41):
case home,.home,HOMEroot) — N-AAbsent at head (grep 0 hits, case-insensitive):
home resume pill,home/hub,home (resume,home stays,home leaderboard card (authenticated,home leaderboard card tap,home leaderboard card uses,alongside the home leaderboard card (,statistics card tap,## stats.Verification
python3 scripts/design/contracts.pyat 5f11a79 (exit 0):git diff --stat origin/main...HEAD: 3 files,docs/navigation-flows.md,docs/screen-contracts.md,scripts/design/contracts.pyonly. NoPackages/,App/,.github/changes. lychee: no links added or removed.Every
#NNNin the new prose was checked withgh issue view/gh pr view: #1014, #1020, #1038, #1051, #1064, #1075, #1081, #685, #714, #679, #667, #1058, #1021.🤖 Generated with Claude Code