Rendered from the repository — the file stays the source of truth.
Session C13 — Target-scope re-baseline (2026-08-19)
Branch: docs/target-scope-rebaseline · Spec: roadmap C13 (owner
review 2026-08-19 of the C12 pages)
Goal and outcome
Two documents, two clean roles. product/scope.md stops carrying
implementation truth entirely — status table, evidence column and all 37
per-item status blockquotes are gone, and it reads as what it is: a
description of Gemini Notebook’s functionality. product/target-scope.md
is now the single place status lives, re-baselined against the v1
target instead of against the research catalog. After the re-baseline
all 18 rows are ✅: every row’s target is what its roadmap session
committed to, and every one of those commitments shipped. The page reads
like a delivered v1 because it is one. Docs-only; no product code touched.
product/scope.md — removal, not redecoration
- Status table dropped entirely (not reduced to an id + title index). With Status and Evidence gone the remainder would have duplicated the section headings verbatim while preserving the visual shape of the removed machinery — an invitation to re-populate it. The headings and the docs page’s own structure already provide the id → item index.
- All 37 per-item status blockquotes removed, including the ❌/⏳ ones
and their “Deferral (2026-08-18)” lines. Adopted research text is
byte-identical: every removed line in
git diff product/scope.mdis a blockquote, a table row, or the status section’s own header/legend (verified by diffing with those patterns excluded — the residue is only the “## Implementation status” heading and its legend paragraph). - Kept: the header role/framing blockquotes (updated where they
described the now-removed machinery), the §8 annotation (the one place
the reading-order clustering is explained), and NF-15’s C12 pointer line
to
in-numbers.md(a cost-transparency pointer, not a status). - Added: a dated C13 addition to the role blockquote recording that this document no longer tracks status and where status now lives — future readers meet the removal as a decision, not a gap.
- The §7 non-functional blockquote was rewritten: it used to explain the badge-tracking exception for NF-15. It now just names where the non-functional record lives (security register, feasibility register, architecture views, plus target-scope for quotas and guards).
Badge-only facts, relocated before deletion
Everything else the badges said was already recorded in target-scope.md, the roadmap cut list, or a handover. These were the facts that lived only in a badge, and where each went:
| Fact | Relocated to |
|---|---|
| Auth: no SSO/OAuth, account deletion or plan association | SF-01 row’s target statement (stated as the target’s boundary) |
| Auth was built without an MVP marker, as the prerequisite for user-scoping | already in target-scope’s “What Marginalia v1 is”; not duplicated |
| Source viewer is dialog-only / not URL-addressable | CF-04 row’s known-limitation cell, linked to the A5 handover’s open items |
| SF-02: no “shared” notebooks in v1 | SF-02 row’s target statement |
| SF-10: audio output language is German/English | SF-10 row’s target statement |
| SF-11: the full guard + quota numbers (20 MB, 200k words, 50 sources, 20 artifacts, 1 concurrent; 20 notebooks, 50 messages/day, 10 overviews/day) | SF-11 row’s target statement — previously target-scope pointed at the SF-11 badge for these |
| NF-15’s open cost controls (token budgets, model routing, caching, storage quotas) | target-scope’s operational-envelope paragraph |
| SF-08: signed-URL artifact access, no share/public links | SF-08 row (target + limitation) |
| SF-09: in-process by decision, D-2 stage 1 | SF-09 row’s target statement |
Nothing was destroyed. Facts already on the cut list (CF-02 formats, CF-04 Source Guide, CF-08 server-side stop/regenerate, CF-09, CF-10 note→source, SF-09 queued jobs, two-speaker audio, sharing, analytics) stayed there; SF-14’s “never scheduled, conscious gap” verdict stays in the C10 handover.
product/target-scope.md — re-baselined against the target
- Semantics stated in the intro: status measures delivery against the v1 target defined in each row; the research catalog is descriptive and carries no status at all. Narrower-than-research scope is part of the target, stated in the target column, and does not degrade status.
- New “What v1 targets” column giving each commitment in the session record’s words, with the roadmap session named. The research id moved into the capability cell as an inline link — it is traceability, not a first-class column. All 16 anchors re-verified against the rebuilt scope page’s actual heading ids.
- Seven rows renamed so the name is the target’s, not the catalog’s: Notebook library / home screen → Notebook library · Source processing and knowledge indexing → Source processing and retrieval index · Source selection / context control → Source selection for retrieval · Conversation state → Chat history (persistent, multi-turn) · Notes → Notes, including saved chat answers · Artifact download and management → Audio artifact management · Usage limits and quotas → Usage guards and per-user quotas.
- Ten statuses changed 🔶 → ✅ (SF-01, CF-02, CF-04, CF-08, CF-10, CF-12, SF-08, SF-09, SF-10, SF-11 — every 🔶 C12 carried), each because the limitation that produced the 🔶 sits outside the target: it is either on the roadmap cut list or was never part of the session’s goal. Reasoning per row is in the PR body.
- Zero “badge” cells. Every known-limitation cell now states the limitation in a clause and links the real record (A3/A4/A5/A6/D2 handovers, SEC-7 in the security register).
- Operational envelope no longer points at the deleted SF-11 badge for the numbers; it points at the row above, plus in-numbers and SEC-7/-10.
Two ambiguous targets — readings and why
- Audio-transcript persistence (CF-12). Reading taken: outside D2’s target → ✅ with the gap stated. D2’s roadmap goal is “script generation from selected sources → TTS → artifact in Storage; Studio tile + async job status + player” — it never names persisting the script, and the D2 handover files the transcript under open questions / next sessions, calling it “a small follow-up”. The competing reading is that NF-11 lists transcript availability for audio, so an accessibility requirement implies it; rejected because NF sections are research requirements and v1 never committed to WCAG 2.2 AA. The gap is still visible: it is the row’s known limitation.
- Request-rate limiting (SF-11). Reading taken: outside A6’s target → ✅ with the qualification stated. A6’s goal is “simple per-user quotas (NF-15 minimum)”; rate limiting appears in the record only as SEC-7, an accepted risk whose hardening trigger is “before public exposure”, conditional on the closed signup circle. The competing reading — that abuse limits are one capability, so an unlimited request rate is a hole inside the target — is rejected on the session record’s wording, but SEC-7 is linked from the row.
A third judgement worth flagging to the reviewer: A6 documented that regenerations are not counted against the daily audio quota. That limitation does sit inside the target (the quota is the commitment), so it was the strongest 🔶 candidate on the page. It stays ✅ because the targeted quotas shipped and are enforced, and the uncounted path remains bounded by the 1-concurrent and 20-per-notebook caps, so the cost-control purpose holds. It is stated in the row’s limitation cell either way. If the foreman disagrees, SF-11 is the one row to flip.
Requirement-9 repoints
- Inside target-scope.md (the only live document that referenced the removed machinery): the operational envelope’s “concrete numbers live in the SF-11 status badge” link, the header’s “tracked with the same machinery … the research document’s badges” framing, and the exclusions section’s “with per-item status”.
- Swept, nothing to repoint:
product/in-numbers.md,product/security.md,product/faq.md,product/architecture/*.md. None of them links a status badge or the status table. security.md’s scope-doc anchors (NF-07…NF-17) and SEC-7’s SF-11 reference still resolve — headings are unchanged. architecture/index.md and logical.md citescope.mdas the ideal model, which is still true of a research catalog. - Flagged, not edited (apps/ is out of this session’s boundary):**
two docs-app strings now describe the research catalog wrongly.
apps/docs/src/pages/product/scope.astro:13— description says “with per-item implementation status”, which is now false. Andapps/docs/src/pages/index.astro:10— the Start-page card still says “sorted into build phases. Phase 1 — the grounded-chat core loop — is the current target”, which C12 already demoted. Both are one-line string swaps for whichever session may touchapps/docs.
Verified
apps/docsbun run buildfrom the worktree: 55 pages before this handover existed, 56 with it, exit 0 both times. Both rebuilt pages inspected as rendered HTML and as screenshots.- Greps over source and built HTML of both pages: zero bare-word “badge”/“badges”; zero ⏳ (and zero ✅/🔶/❌) in scope.md; zero implementation-status blockquotes in scope.md; zero “cluster n”; every remaining “§” sits inside link text.
- Link integrity on the rebuilt target page: all 16
scope.md#…anchors match real heading ids in the rebuilt scope page; all five handover links resolve to built/sessions/…pages;roadmap.md→/roadmap/andfeasibility.md→/decisions/resolve. - Repo root from the worktree:
bun test154 pass, 0 fail (the known local flake did not occur);bunx varlock run -- bun run buildexit 0. bun installin the fresh worktree leftbun.lockunchanged.
Hot files
None. No new dependencies. bun.lock, root package.json, root
AGENTS.md untouched — AGENTS.md’s product-docs block already describes
scope.md as “descriptive; its groupings carry no plan meaning”, which
stays true and now also matches the absence of status.
Open items / next sessions
- The two flagged
apps/docsstrings above (foreman call: a one-line pointer session, or fold into the next docs-app touch). - The C12 handover’s note that “the target table mirrors the research
table’s statuses by definition” is superseded by this session. Per
correct-the-record, a dated correction blockquote was appended to that
handover’s open-items entry (annotated, not rewritten); the update
discipline is now single-file —
target-scope.mdonly. - After merge: foreman dispatches
deploy-static-sites.