docs(524): triage #237's 111 comments — no decision retrofit is owed #534

Merged
timothy merged 1 commits from docs/524-237-retrofit into main 2026-07-21 17:35:40 +02:00
Owner

Answers #524. The issue's premise was falsified, and that is the deliverable.

#524 assumed that excluding the closed tracker #237 from MemPalace ingestion (server-management#642, 111 comments over the per-file cap) plus dropping it from startup (#520) would orphan facts living only in its comments, which should then be curated into lifecycle records.

Exhaustive triage of all 111 comments — every one read, none sampled — found zero decision-shaped orphans. Every durable decision-shaped fact is already held either by the decision corpus or by the individual issue the comment narrates, and those issues are ingested. The tracker was structurally the lossy copy: the session protocol required the fuller closing record on the worked issue first.

What's here

  • docs/decisions.md — new active record docs.tracker-comment-retrofit. Leads with the reusable rule (check the worked issue before the decision corpus) and the consequence for #642's benchmark row; the zero-count is demoted to evidence.
  • docs/tracker-retrofit-triage-237.md — the audit trail: method, per-comment classification of all 111 (one row each), item-level and comment-level totals, and the single candidate that was raised and disproved (#497's Guids/Directors scope exclusion — stated more fully on its own issue, so category 2).
  • docs/handoffs/chicorytv-issue-queue.md — sweeps the two genuinely orphaned lore facts the triage surfaced: the e2e-local.sh readiness probe hanging on a reused config dir (now #533), and the troubleshooting playback API being unable to exercise channel branding.
  • docs/README.md — indexes the new doc. docs/decisions/migration-map.md deliberately untouched.

The claim is deliberately narrow

No decision-shaped orphans. The 33 lore-class items were classified but not coverage-checked, and that bucket was not empty — hence the sweep above. The record says so explicitly rather than claiming a stronger result than the method supports.

Review

Two independent cold adversarial passes. The first returned BLOCKED on six findings, including a real error: an earlier draft cited docs/player-owned-playback-poc.md as independent verification when that file does not exist on main (it lives only on an unmerged branch), and it overclaimed by asserting "no orphans" while never coverage-checking the lore bucket. Both fixed. The re-review of the fix commit returned MERGEABLE WITH NITS with all six verified FIXED against real sources; all three nits are addressed in this branch (#533 filed, the misleading "watch for either line" advice corrected, re-derivation instructions added, and the resolution recorded on server-management#642).

Docs-only; decisions_validate.py OK and the generated catalog is in sync.

fixes #524

Answers #524. **The issue's premise was falsified, and that is the deliverable.** #524 assumed that excluding the closed tracker #237 from MemPalace ingestion (server-management#642, 111 comments over the per-file cap) plus dropping it from startup (#520) would orphan facts living only in its comments, which should then be curated into lifecycle records. Exhaustive triage of **all 111 comments** — every one read, none sampled — found **zero decision-shaped orphans**. Every durable decision-shaped fact is already held either by the decision corpus or by the individual issue the comment narrates, and those issues *are* ingested. The tracker was structurally the lossy copy: the session protocol required the fuller closing record on the worked issue first. ## What's here - **`docs/decisions.md`** — new active record `docs.tracker-comment-retrofit`. Leads with the reusable rule (**check the worked issue before the decision corpus**) and the consequence for #642's benchmark row; the zero-count is demoted to evidence. - **`docs/tracker-retrofit-triage-237.md`** — the audit trail: method, per-comment classification of all 111 (one row each), item-level and comment-level totals, and the single candidate that was raised and disproved (#497's Guids/Directors scope exclusion — stated more fully on its own issue, so category 2). - **`docs/handoffs/chicorytv-issue-queue.md`** — sweeps the two genuinely orphaned **lore** facts the triage surfaced: the `e2e-local.sh` readiness probe hanging on a reused config dir (now #533), and the troubleshooting playback API being unable to exercise channel branding. - **`docs/README.md`** — indexes the new doc. `docs/decisions/migration-map.md` deliberately untouched. ## The claim is deliberately narrow No ***decision-shaped*** orphans. The 33 lore-class items were classified but **not** coverage-checked, and that bucket was **not** empty — hence the sweep above. The record says so explicitly rather than claiming a stronger result than the method supports. ## Review Two independent cold adversarial passes. The first returned **BLOCKED** on six findings, including a real error: an earlier draft cited `docs/player-owned-playback-poc.md` as independent verification when that file does not exist on `main` (it lives only on an unmerged branch), and it overclaimed by asserting "no orphans" while never coverage-checking the lore bucket. Both fixed. The re-review of the fix commit returned **MERGEABLE WITH NITS** with all six verified FIXED against real sources; all three nits are addressed in this branch (#533 filed, the misleading "watch for either line" advice corrected, re-derivation instructions added, and the resolution recorded on server-management#642). Docs-only; `decisions_validate.py` OK and the generated catalog is in sync. fixes #524
timothy added 1 commit 2026-07-21 17:32:19 +02:00
docs(524): triage #237's 111 comments — no decision retrofit is owed
Build ErsatzTV Image / Docs update reminder (pull_request) Successful in 11s
Build ErsatzTV Image / CI image pin matches docker/ci (pull_request) Successful in 10s
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (pull_request) Successful in 10s
Build ErsatzTV Image / decisions lifecycle (pull_request) Successful in 19s
Build ErsatzTV Image / Build & test (.NET) (pull_request) Successful in 37s
Build ErsatzTV Image / Functional E2E (curl contracts) (pull_request) Successful in 37s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (pull_request) Successful in 36s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (pull_request) Successful in 38s
Build ErsatzTV Image / Build & push image (amd64) (pull_request) Has been skipped
f355a4a96b
Exhaustive triage of the closed tracker ersatztv#237, whose 111 comments
server-management#642 excludes from MemPalace ingestion (over the per-file
cap) and #520 removes from startup. #524's premise was that facts living only
in those comments would be orphaned and need curating into lifecycle records.

Result: zero decision-shaped orphans. Every durable decision-shaped fact is
already held by the decision corpus or by the individual issue the comment
narrates -- which the exporter does ingest. The tracker was always the lossy
copy, because the session protocol required the fuller closing record on the
worked issue first.

- docs/decisions.md: new active record docs.tracker-comment-retrofit, leading
  with the reusable rule (check the worked issue BEFORE the decision corpus)
  and the consequence for #642's benchmark row, which has no valid subject.
- docs/tracker-retrofit-triage-237.md: the audit trail -- method, per-comment
  classification of all 111, totals, and the one candidate raised and
  disproved (#497's Guids/Directors scope, stated more fully on its own issue).
- docs/handoffs/chicorytv-issue-queue.md: sweeps the two genuinely orphaned
  LORE facts the triage surfaced (e2e-local.sh readiness probe hanging on a
  reused config dir; troubleshooting playback cannot exercise channel branding).
- docs/README.md: index the new doc.

The claim is deliberately narrow: no *decision-shaped* orphans. The lore bucket
was classified but not coverage-checked, and it was not empty -- hence the sweep.

fixes #524
Author
Owner

Independent review complete

Two cold adversarial passes plus a delta pass on the current head.

Pass Target Verdict
1 initial draft BLOCKED — 6 findings (2 High)
2 fix commit d1678428 MERGEABLE WITH NITS — all 6 verified FIXED against real sources, 3 nits raised
3 delta d1678428..f355a4a9 MERGEABLE — all 3 nits FIXED

The first pass earned its keep twice over. It falsified a citation I had labelled "verified independently" (docs/player-owned-playback-poc.md does not exist on main — it lives only on an unmerged branch), and it caught the record claiming "no orphans" when the 33 lore-class items had never been coverage-checked — a bucket that turned out to contain two real orphans. The claim is now narrowed to decision-shaped orphans, the gap is stated in the record itself, and the two orphans are swept into the handoff lore.

Nits from pass 2, all addressed here: #533 filed for the e2e-local.sh grep widening (with priority: low), the misleading "watch for either line" advice corrected against what the script actually does, re-derivation instructions added so the audit trail doesn't depend on a session scratchpad, and the resolution recorded on server-management#642.

Review-verdict: MERGEABLE @ f355a4a9

## Independent review complete Two cold adversarial passes plus a delta pass on the current head. | Pass | Target | Verdict | |---|---|---| | 1 | initial draft | **BLOCKED** — 6 findings (2 High) | | 2 | fix commit `d1678428` | **MERGEABLE WITH NITS** — all 6 verified FIXED against real sources, 3 nits raised | | 3 | delta `d1678428..f355a4a9` | **MERGEABLE** — all 3 nits FIXED | The first pass earned its keep twice over. It falsified a citation I had labelled "verified independently" (`docs/player-owned-playback-poc.md` does not exist on `main` — it lives only on an unmerged branch), and it caught the record claiming "no orphans" when the 33 lore-class items had never been coverage-checked — a bucket that turned out to contain two real orphans. The claim is now narrowed to *decision-shaped* orphans, the gap is stated in the record itself, and the two orphans are swept into the handoff lore. Nits from pass 2, all addressed here: #533 filed for the `e2e-local.sh` grep widening (with `priority: low`), the misleading "watch for either line" advice corrected against what the script actually does, re-derivation instructions added so the audit trail doesn't depend on a session scratchpad, and the resolution recorded on server-management#642. Review-verdict: MERGEABLE @ f355a4a9
timothy merged commit b432892d35 into main 2026-07-21 17:35:40 +02:00
timothy deleted branch docs/524-237-retrofit 2026-07-21 17:35:40 +02:00
Sign in to join this conversation.