docs(tasks): six days, all remaining code — no week 2, no after-launch list
Correcting my own plan: the surge is six calendar days (Mon 2 - Sat 7), Saturday included, and it finishes the coding side. Every open row is assigned to a day; the week-2 and after-launch sections are gone because there are no such sections. Days: licensing (entitlement, licence UI, greyed tiers, system messages), release blockers (visibility picker, output contract, webcam identity, Move transitions), resilience (TASK 32, bandwidth step-down), content and media (text layer, media wiring, profanity filter, scheduled streams), data and settings (reward persistence, YPP slice 2, defaults split, scene audio, settings round, disk hygiene), finish and prove (publish recording, undo, gold pass, full sweep). Target 6-8 units a day against a measured baseline of 3-5 — that gap is the surge. If a day overruns, the smallest item moves; a launch blocker never does. Day 6 is the only polish day.
This commit is contained in:
@@ -5,43 +5,40 @@
|
|||||||
> decisions are in [`docs/ai/decisions.md`](docs/ai/decisions.md).
|
> decisions are in [`docs/ai/decisions.md`](docs/ai/decisions.md).
|
||||||
> Markers: ☐ queued · 🔶 in progress · ⏳ blocked · ⏸ deferred · ❌ retired.
|
> Markers: ☐ queued · 🔶 in progress · ⏳ blocked · ⏸ deferred · ❌ retired.
|
||||||
|
|
||||||
## Surge week — coding only (starts 2026-11-02)
|
## The surge — six days, all remaining coding (2026-11-02 → 11-07)
|
||||||
|
|
||||||
**Non-coding is parked** (Steam identity verification, store page, depot upload, marketing) — it is
|
**Every open coding row is assigned below.** No later phase, no "after launch" list. Target is
|
||||||
waiting on Valve, not on us. The week is code, tests, debugging, polish. Sized at 3–5 units a day;
|
**6–8 units a day** (above the measured 3–5 baseline — that is the point of a surge). If a day
|
||||||
~50 units remain overall, so this plan is the five days, not the whole queue.
|
overruns, the smallest item moves to the next day; a launch blocker never moves.
|
||||||
|
|
||||||
**Definition of done for every unit:** clean build 0 warnings · per-class tests green ·
|
**Rules, every unit, no exceptions:** one Good Dog test · clean build 0 warnings · per-class tests
|
||||||
`./scripts/verify.sh` with the declared scope · commit with the doc fact it falsifies, corrected.
|
green · `./scripts/verify.sh` on the declared scope · commit with the doc fact it falsifies
|
||||||
|
corrected. No new scope mid-week; anything discovered goes on a list for day 6.
|
||||||
|
|
||||||
| Day | Unit | Done when |
|
| Day | Units | Done when |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| **1** | **Entitlement seam** — `IEntitlement` (`HasDlc`, `IsValid`), Steam DLC impl on `Steamworks.NET` behind the interface, fake for tests, `HasProOutput` consumes it; app starts without Steam → free | Fake proves the resolution; real impl compiles; Steam-less launch shows free |
|
| **1 · Mon** — licensing | `IEntitlement` seam + Steam DLC impl + fake · `HasProOutput` on the seam · greyed tier entries · licence UI four states + 7/1/0-day notices + "monthly is on the website, not Steam" · licence ID in About · system messages (`SystemMessage`/`MessageCenter` strip) · Debug-only `InternalsVisibleTo` | Fake drives all four states; Steam-less launch is the free profile; About shows the licence ID |
|
||||||
| **1–2** | **Licence UI** — four states, upgrade path per state, 7/1/0-day notices, "monthly is on the website, not Steam" line, licence ID in About | Each state renders from the fake; no modal, never blocks Start |
|
| **2 · Tue** — release blockers | Visibility picker + `UpdateBroadcast` · `StreamConfig` defaults · TASK 53 output contract (geometry test per tier, 9:16 e2e) · 9·5 webcam identity key · Move transitions (per-layer carry-across-scenes) | A public broadcast starts and changes while live; every tier pinned by a test |
|
||||||
| **2** | **Greyed tier entries** — dropdown marks the four Pro tiers, keeps them clickable, routes to the upgrade path | Free user sees 720p30 available and the rest annotated |
|
| **3 · Wed** — resilience | TASK 32: blip retry → measured grace → amber RECONNECTING → one-click Back on air → fragmented MP4 → ingest pre-flight · 33 bandwidth step-down | Killing the network mid-broadcast recovers without ending it |
|
||||||
| **3** | **Visibility picker + `UpdateBroadcast`** — replace the forced-Private lock, hide TEST | A public broadcast can be started and changed while live |
|
| **4 · Thu** — content & media | 3·17 Text layer · 21 media acquisition wiring + file picker + loop/volume UI · 49 chat profanity filter · 34 scheduled streams | Text layer renders/persists; media file plays, loops, has volume; scheduled stream created |
|
||||||
| **3–4** | **TASK 32 stream resilience** — blip retry → measured grace → amber RECONNECTING → one-click Back on air → fragmented MP4 → ingest pre-flight | A killed network recovers without ending the broadcast |
|
| **5 · Fri** — data & settings | 3·20 RewardEvent persistence + `superChatEvents.list` backfill · 39·2 YPP slice 2 · 37 defaults-vs-current split · 35 scene-linked audio · 40·A/C/D settings round · 55·2–3 disk hygiene | Session report reads persisted events; defaults can be reverted; temp clips cleaned |
|
||||||
| **4** | **TASK 53 output contract** — geometry test per tier, 9:16 end-to-end, recorded file matches output | Every tier pinned by a test; the cap cannot drift |
|
| **6 · Sat** — finish & prove | 50 publish recording · preview undo (Ctrl+Z) · 14 creator feedback batch · 36 gold pass · full sweep: clean build, whole per-class suite, `publish.sh` artifact, EULA/privacy/notices in the artifact · commit + push | Gold pass list empty; artifact stages; suite green; pushed |
|
||||||
| **5** | **TASK 36 gold pass** — screens/layers audit on real Windows, native verification, branding-flash decision | The audit list is empty |
|
|
||||||
|
|
||||||
**Week 2 candidates, in order:** 3·17 Text layer · 21 media wiring · 55 disk hygiene ·
|
**Day 6 is the only polish day.** No polish passes before it — a surge dies on cosmetic passes taken
|
||||||
40·A/C/D settings · preview undo · 9·5 webcam identity · `StreamConfig` defaults ·
|
in the middle.
|
||||||
3·20 reward persistence · 33 bandwidth step-down · 49 profanity filter · 50 publish recording.
|
|
||||||
|
|
||||||
**Explicitly after launch (complete-v1 ruling risks the date):** 34 scheduled streams · 35
|
|
||||||
scene audio · 37 defaults split · 39·2 YPP slice 2 · 14 feedback batch — each is a week-apiece item
|
|
||||||
and none blocks a public build.
|
|
||||||
|
|
||||||
## Next up (after the surge slice)
|
## Next up (after the surge slice)
|
||||||
|
|
||||||
**TASK 3·17 — the Text layer.** The `TextOverlay` source type exists as a placeholder and nothing
|
**TASK 3·17 — the Text layer** is scheduled in the surge (day 4). Placeholder detail retained for
|
||||||
else does: `AddSource` creates it 0×0, all four compositor paths `continue` past it, `FramePump`'s
|
the unit itself: `AddSource` creates it 0×0, all four compositor paths `continue` past it,
|
||||||
hash skips it, it is not draggable, and it has no text/font/colour properties or persistence.
|
`FramePump`'s hash skips it, it is not draggable, and it has no text/font/colour properties or
|
||||||
The unit: text content, font family/size/weight/style, colour, alignment, drag/resize, persisted;
|
persistence. Text content, font family/size/weight/style, colour, alignment, drag/resize,
|
||||||
renderer mirrors `Services/ChatBoxRenderer.cs`. One Good Dog test.
|
persisted; renderer mirrors `Services/ChatBoxRenderer.cs`.
|
||||||
|
|
||||||
## Queue
|
## Queue
|
||||||
|
|
||||||
|
> Every open coding row here is assigned to a surge day above. Rows still marked ☐ on
|
||||||
|
> 2026-11-07 are a failure of the plan, not a scheduling note.
|
||||||
| Task | Status | Scope | Detail |
|
| Task | Status | Scope | Detail |
|
||||||
|---|---|---|---|
|
|---|---|---|---|
|
||||||
| 3·17 | ☐ **NEXT** | **Text layer** — content, font family/size/weight/style, colour, alignment, drag/resize, persisted | [`task-03`](TASKS/task-03-capture-pipeline.md) |
|
| 3·17 | ☐ **NEXT** | **Text layer** — content, font family/size/weight/style, colour, alignment, drag/resize, persisted | [`task-03`](TASKS/task-03-capture-pipeline.md) |
|
||||||
|
|||||||
Reference in New Issue
Block a user