Skip to content

T 111


uid: T-111 title: Task board renders I-NNN tickets (board build indexed tasks only) status: done area: infra, docs created: 2026-06-24 updated: 2026-06-24 related: T-103


Why (owner, 2026-06-24)

The owner went to the task board (tasks.theestablishers.com) to read the coaching-invoice diagnosis ticket I-012 and found no I-xxx tickets anywhere on the site.

Owner, 2026-06-24 (verbatim): "I'm a bit confused as the Tasks page isn't showing any I-xxx threads at all and there's no way for me to see them… Could you give me some more contexts in regards?" … "then fix the board"

Root cause (not data loss): the board build (scripts/build-docs-site.py, which runs on the orphan taskboard branch via docs-deploy.yml) generated the Task Board page from T-*.md files only β€” load_tasks() globbed T-*.md, and the wikilink rewriter resolved [[T-NNN]] only. So the 12 tickets (I-001…I-012) were copied into the site as standalone pages but never surfaced in any index, and [[I-NNN]] cross-links rendered as dead text. All ticket data was intact the whole time β€” purely a rendering gap.

What changed

Edited scripts/build-docs-site.py on the taskboard branch (that's the copy docs-deploy.yml actually runs; the main copy is vestigial β€” see "Follow-up" below):

  • load_tickets() β€” globs tickets/I-*.md, reads frontmatter. Uses the filename stem as the ticket id (not the tid: frontmatter) so the known I-006/I-007 tid collision (both files carry tid: I-006) can't mislink β€” the link always matches the published page URL.
  • build_ticket_board() β€” renders a ## 🎫 Tickets section grouped by ticket status (open / investigating / escalated / fixed / closed / wontfix), appended to the Task Board page and the homepage. Escalated + fixed rows link their task: T-NNN in a Task column.
  • render_table() β€” new tid (β†’ /eop-tasks/tickets/<id>/) and task (β†’ /eop-tasks/tasks/<T-NNN>/) link-column handling.
  • rewrite_wikilinks() β€” regex widened T- β†’ [TI]-, so [[I-NNN]] resolves to the ticket page.

Verification

Ran the modified script against the real taskboard data (109 tasks, 12 tickets) in a scratch rig (python-frontmatter installed, PIL stubbed to skip PWA-icon generation): board generated cleanly, the Tickets section rendered with correct status grouping, and I-012 showed under Escalated linked to T-079. python -m py_compile clean. Could not run full mkdocs build in-sandbox (no mkdocs), but the pre-process step is the only part this change touches; a build failure would leave the prior Cloudflare Pages deploy serving, so blast radius is bounded.

Decision log

2026-06-24 β€” opened + landed (board now renders tickets)

  • βœ… Attestation (Accounting (Infrastructure)): read AGENTS.md; scope-scanned β€” no existing task covers "board doesn't render tickets" (T-103 created the orphan taskboard branch + build but didn't index tickets). Owner directed the fix this session. Branch signal main 🟒 Β· nightly πŸ”΄ β†’ this task doc goes to main only; the build-script change is on taskboard (where it deploys).
  • Source: Accounting (Infrastructure) Β· https://claude.ai/code/session_015P6KzVYsQCLgEmUjR9bMwM
  • Proposed by: the owner. Approved by: the owner (same prompt β€” "then fix the board").
  • What landed: the scripts/build-docs-site.py changes above, committed to the taskboard branch (which triggers docs-deploy.yml β†’ Cloudflare Pages rebuild).
  • Blast radius: the published board now shows a Tickets section + working [[I-NNN]] links. No web-app code touched; no task/ticket content changed (only how the board renders it). The main-side docs/eop-tasks/ canonical data is unchanged.
  • Follow-up (flagged, not fixed here): scripts/build-docs-site.py + mkdocs.yml also exist on main, but main has no docs-deploy.yml (removed in T-103) so that copy is never run β€” it's a footgun (a future edit to main's copy would silently do nothing). Whoever owns the taskboard infra (T-103 = EOP Local Assistance) may want to either delete main's copy or add a one-line "vestigial β€” the live copy is on taskboard" header. Left for them rather than deleting another agent's file unprompted.

Commit index (backfilled 2026-07-01, best-effort Β· Coaching (Diagnostic))

Candidate related commits, auto-backfilled from git on main: commits whose message references this task's UID or a PR number it cites. Not verified β€” this squash-merged history can't yield a precise per-task list, so rows tagged (mentions only) name the task in passing (may be tangential) and untagged work commits may be missing. Treat as a starting point: verify, prune tangential rows, and append any real ones per the AGENTS.md "record every related SHA" policy.

  • ab59c65 2026-06-24 β€” docs(board): T-110 (WOPC list fix + drop All tab) + I-011/I-012 symptom tickets (mentions only)
  • b8eed7d 2026-06-24 β€” docs(t-111): record the board-renders-tickets fix (done) (mentions only)
  • 303e110 2026-06-25 β€” chore(t-103): remove dead scripts/build-docs-site.py from main (never run; flagged via T-111)
  • a84c6e0 2026-06-25 β€” docs(T-112): restore coachingInvoiceNumber.ts provenance comment (mentions only)
  • a56f444 2026-06-29 β€” docs: refresh Accounting (Infrastructure) session ledger + T-130 review note (mentions only)