---
session_id: S-2026-0423-2110
timestamp: 2026-04-23T19:10:17Z
predecessor: S-2026-0423-2106
tasks_active: [T-1062, T-1063, T-1064, T-1065, T-1066, T-1084, T-1092, T-1107, T-1110, T-1111, T-1112, T-1115, T-1123, T-1126, T-1145, T-1200, T-1213, T-1214, T-1240, T-1241, T-1251, T-1252, T-1253, T-1255, T-1260, T-1261, T-1265, T-1271, T-1274, T-1275, T-1277, T-1278, T-1279, T-1282, T-1283, T-1284, T-1302, T-1303, T-1304, T-1305, T-1309, T-1311, T-1312, T-1313, T-1314, T-1315, T-1316, T-1319, T-1321, T-1322, T-1332, T-1333, T-1345, T-1346, T-1348, T-1349, T-1350, T-1351, T-1352, T-1353, T-1355, T-1357, T-1358, T-1372, T-1376, T-1388, T-332, T-334, T-436, T-446, T-448, T-449, T-460, T-464, T-470, T-481, T-505, T-511, T-518, T-530, T-544, T-550, T-558, T-594, T-612, T-613, T-663, T-678, T-682, T-704, T-705, T-706, T-707, T-708, T-710, T-772, T-782, T-799, T-800, T-801, T-802, T-803, T-816, T-817, T-837, T-844, T-880, T-967]
tasks_touched: [T-1275, T-550, T-1065, T-1107, T-1282, T-844, T-332, T-1355, T-704, T-1388, T-705, T-448, T-558, T-1062, T-1066, T-1271, T-436, T-1063, T-1404, T-1397, T-1270, T-1398, T-1396, T-1281, T-1389, T-1381, T-1289, T-1385, T-1384, T-1402, T-1394, T-1386, T-1390, T-1406, T-1401, T-1395, T-1407, T-1383, T-1400, T-1399, T-1393, T-1392, T-1405, T-1391, T-1387, T-1268, T-1382, T-1244, T-1403]
tasks_completed: []
uncommitted_changes: 8
token_usage: "5.0B tokens, 30309 turns"
token_input: "81.9K"
token_cache_read: "5.0B"
token_cache_create: "70.6M"
token_output: "13.3M"
commits_per_turn: "0.0371"
first_commit_turn: "42"
failed_tool_calls: "1131"
failed_tool_call_rate: "0.0583"
edit_bursts: "508"
productive_turns_ratio: "0.353"
session_turns: "1"
session_commits: "0"
session_commits_per_turn: "0.0"
session_failed_tool_calls: "0"
session_failed_tool_call_rate: "0"
session_edit_bursts: "0"
session_productive_turns_ratio: "0.0"
owner: claude-code
session_narrative: ""
---

# Session Handover: S-2026-0423-2110

## Where We Are

Session worked on: T-1281 (T-1244 T-1407: Housekeeping — closure artifacts + working state); T-1244 (T-1407: Move closed task files + episodics); T-1407 (T-1346-B3 — install.sh scans vendored consumer projects); T-1406 (Close — fix verification commands (grep alignment + SIGPIPE)); T-1404 (T-1405: Finalize closures + verification-sweep report). Plus 5 more commit(s).

## Work in Progress

<!-- horizon: now -->

### T-1062: "WezTerm task-aware terminal chrome via TermLink RPC"
- **Status:** started-work (horizon: now)
- **Last action:** T-1062: Add Recommendation block per T-679 rule
- **Next step:** See task file
- **Blockers:** None


### T-1063: "MCP-level governance — task-gate checks in TermLink MCP tools"
- **Status:** started-work (horizon: now)
- **Last action:** T-1062: Add Recommendation block per T-679 rule
- **Next step:** See task file
- **Blockers:** None


### T-1265: "Export docs section as PDF/DOCX/other formats"
- **Status:** captured (horizon: now)
- **Last action:** See git log
- **Next step:** See task file
- **Blockers:** None


### T-1274: "Memory writes (claude auto-memory) blocked by onboarding task gate — agent on consumer project couldn't save memory about wrong fw path because T-001-T-005 weren't complete. Memory is the exact mechanism that would prevent recurrence of the problem being observed. Memory should not be gated by task onboarding."
- **Status:** captured (horizon: now)
- **Last action:** T-012: Triage OBS-012 (dismissed), OBS-013 promoted to T-1274 (memory-gate-blocks)
- **Next step:** See task file
- **Blockers:** None


### T-1283: "Prompt register in Watchtower — reusable agent prompts (upgrade+test+fix, dispatch, audit, etc.)"
- **Status:** started-work (horizon: now)
- **Last action:** prompts: store 107/P-003 — full consumer upgrade+test+fix+report template
- **Next step:** See task file
- **Blockers:** None


### T-1284: "Watchtower port discovery regression — current _watchtower_url probes common ports and picks anything that answers (picked :8080 which was not Watchtower). Redesign against 4 directives (antifragility, reliability, usability, portability)."
- **Status:** started-work (horizon: now)
- **Last action:** T-1389: B2 template — allow re-decide after decision recorded (closes G-057)
- **Next step:** See task file
- **Blockers:** None


### T-1309: "Ship watchtower.service systemd template + make fw watchtower start systemd-aware"
- **Status:** captured (horizon: now)
- **Last action:** T-1311 T-1312 T-1313 T-1314: Triage 4 termlink pickup inceptions + research artifacts
- **Next step:** See task file
- **Blockers:** None


### T-1332: "G-045 structural remediation — cross-project pickup for fleet-rotation secret distribution UX"
- **Status:** captured (horizon: now)
- **Last action:** T-012: L-018 correction + T-1332/T-1333 inception frames
- **Next step:** See task file
- **Blockers:** None


### T-1333: "Meta-rule codification — a gap belongs in the register where the fix lives, not where it was hit"
- **Status:** captured (horizon: now)
- **Last action:** T-012: L-018 correction + T-1332/T-1333 inception frames
- **Next step:** See task file
- **Blockers:** None


### T-1346: "Global /root/.agentic-framework install — isolation leak risk, deprecation path"
- **Status:** started-work (horizon: now)
- **Last action:** T-1407: T-1346-B3 — install.sh scans vendored consumer projects
- **Next step:** See task file
- **Blockers:** None


### T-1388: "Watchtower /inception/T-XXX page is one-shot — no revoke/re-decide affordance after decision recorded"
- **Status:** started-work (horizon: now)
- **Last action:** T-1063 T-1388: Recover inception decision + Human AC tick
- **Next step:** See task file
- **Blockers:** None


### T-332: "Submit to awesome lists (awesome-ai-agents, awesome-agents, awesome-copilot)"
- **Status:** captured (horizon: now)
- **Last action:** T-012: Housekeeping — finalize completed-task moves from prior session
- **Next step:** See task file
- **Blockers:** None


### Awaiting Human Review (42 tasks)

Agent ACs done. Human ACs pending — see "Awaiting Your Action" below.

- **T-1107**: "Inception: task-ID collision defense-in-depth — globally unique IDs or URL namespacing"
- **T-1123**: "Pickup: Approvals page shows inception tasks without recommendations — creates noise, missing Go/No-Go criteria display (from 010-termlink)"
- **T-1145**: "Pickup: P-010: RCA on recurring assumption fabrication/retraction/correction-of-retraction cycle — 4 proposed structural remediations (R1 provenance schema, R2 negative-claim TTL, R3 post-compact quarantine, R4 cross-section consistency) (from ring20-dashboard)"
- **T-1200**: "RCA: Watchtower inception-decide writes duplicate decision blocks — double ## Decision sections"
- **T-1213**: "RCA: Inception decision cards on /approvals show bare radio buttons — no recommendation, no rationale, no context for human decision"
- **T-1214**: "Fix inception approvals card — show fallback context when recommendation missing (T-1213 GO)"
- **T-1240**: "Fix Watchtower tasks page string sort — T-1000+ tasks hidden between T-1xx"
- **T-1241**: "Fix Watchtower /cron page — last 5 files too narrow, infrequent jobs always show no data"
- **T-1251**: "RCA: Bugfix-learning coverage stuck at 0% despite T-1178 T-1192 remediation"
- **T-1252**: "Audit detection quality: bugfix-learning denominator counts dev-discovered bugs inflating FAIL threshold"
- **T-1253**: "Pre-push hook VERSION-stamping breaks version.json-based consumer projects (T-106 blocker, T-648 regression)"
- **T-1255**: "Release tagging + tag-push gap — GitHub stuck at v1.0.0"
- **T-1260**: "Human-owned inception tasks cannot complete — 5 layered root causes (sovereignty, dispatch, template drift, recommendation gate, tier0 hash)"
- **T-1261**: "Consumer cron-registry seeds empty — fw cron install wipes audit schedule on vendored installs"
- **T-1277**: "Fix unbounded git push in handover auto-trigger (4h stall RCA)"
- **T-1278**: "Fix bin/fw self-exec loop — shim was overwriting real CLI in framework repo"
- **T-1279**: "Fix fw work-on / task-create race condition on task-ID allocation"
- **T-1302**: "Pickup: Watchtower Flask secret_key auto-regenerates on every restart — breaks CSRF for existing browser sessions (from termlink)"
- **T-1303**: "Pickup: Watchtower shared.py PROJECT_ROOT fallback is wrong — falls to FRAMEWORK_ROOT, not discovered (from termlink)"
- **T-1304**: "Pickup: Watchtower ambient strip shows wrong task as focus — ignores focus.yaml (from termlink)"
- **T-1305**: "Pickup: Watchtower load_latest_audit picks upgrades.yaml instead of newest audit (from termlink)"
- **T-1311**: "Pickup: Codify RPC resilience-tier taxonomy + version skew enforcement (Tier-A opaque vs Tier-B typed) (from termlink)"
- **T-1312**: "Pickup: Ship watchtower.service systemd template — fixes restart races without WSGI-server swap (from termlink)"
- **T-1313**: "Pickup: Anti-pattern detected: umbrella inceptions bundling N independent decisions (T-1112 NO-GO) (from termlink)"
- **T-1314**: "Pickup: Watchtower /fabric crashes (KeyError: id) on subsystems.yaml without id key — loader should fall back to name (from termlink)"
- **T-1315**: "Pickup from email-archive: vendored-vs-repo mode blind spot RCA (sourced T-1043)"
- **T-1316**: "Pickup from email-archive: Watchtower verification CWD bug (sourced T-1044)"
- **T-1319**: "Pickup: fw fabric drift and scan miss recursive glob matches — bash ** needs shopt -s globstar (from termlink)"
- **T-1321**: "Pickup: Vendored .agentic-framework/ tracks Python __pycache__ files — Uncommitted changes present is the #1 audit trend (23×) for consumers (from termlink)"
- **T-1322**: "Pickup: fw inception decide doesnt tick the RUBBER-STAMP Record go/no-go decision Human AC — tasks stay in active/ forever (from termlink)"
- **T-1345**: "Pickup: Codify RPC resilience-tier taxonomy + version skew enforcement (Tier-A opaque vs Tier-B typed) (from termlink)"
- **T-1348**: "Pickup: fw fabric drift and scan miss recursive glob matches — bash ** needs shopt -s globstar (from termlink)"
- **T-1349**: "Pickup: Vendored .agentic-framework/ tracks Python __pycache__ files — Uncommitted changes present is the #1 audit trend (23×) for consumers (from termlink)"
- **T-1350**: "Pickup: Watchtower CSRF 403 after restart — auto-regenerated FW_SECRET_KEY + multi-process leak (from termlink)"
- **T-1351**: "Pickup: Watchtower /fabric crashes (KeyError: id) on subsystems.yaml without id key — loader should fall back to name (from termlink)"
- **T-1352**: "Pickup: Watchtower Flask secret_key auto-regenerates on every restart — breaks CSRF for existing browser sessions (from termlink)"
- **T-1353**: "Pickup: Watchtower load_latest_audit picks upgrades.yaml instead of newest audit (from termlink)"
- **T-1357**: "Pickup: CLAUDE.md template instructs Use bin/fw not fw — correct in framework repo, broken for consumer projects (from termlink)"
- **T-1358**: "Pickup: Pre-push hook stamps project VERSION into .agentic-framework/VERSION — overwrites vendored framework version on every push (from termlink)"
- **T-1372**: "G-054 diag: trace where update-task.sh aborts silently"
- **T-1376**: "Port parameter visibility — why agents keep defaulting to :3000 after T-1154 + T-1287 + T-885 + T-1284 landed, and the minimum fix"
- **T-837**: "Auto-detect context window from model — eliminate hardcoded CONTEXT_WINDOW default"

<!-- horizon: next -->

### T-1064: "Extend orchestrator.route with task-type routing and model-aware specialist selection"
- **Status:** captured (horizon: next)
- **Last action:** T-1062: Add Recommendation block per T-679 rule
- **Next step:** See task file
- **Blockers:** None


### T-1065: "Multi-LLM routing — task-aware model selection via TermLink dispatch"
- **Status:** captured (horizon: next)
- **Last action:** T-1404: Inception — evidence-based Human AC closure (extend T-954/T-1322)
- **Next step:** See task file
- **Blockers:** None


### T-1066: "Data plane governance subscriber — post-hoc pattern detection on PTY output"
- **Status:** captured (horizon: next)
- **Last action:** T-1404: Inception — evidence-based Human AC closure (extend T-954/T-1322)
- **Next step:** See task file
- **Blockers:** None


### T-1271: "Cross-agent peer learning — 15-min TermLink reflect cron (propagated from 050-email-archive)"
- **Status:** captured (horizon: next)
- **Last action:** T-1404: Inception — evidence-based Human AC closure (extend T-954/T-1322)
- **Next step:** See task file
- **Blockers:** None


### T-1275: "Watchdog script for framework services"
- **Status:** captured (horizon: next)
- **Last action:** T-1404: Inception — evidence-based Human AC closure (extend T-954/T-1322)
- **Next step:** See task file
- **Blockers:** None


### T-1282: "E2E test: inception decide on vendored consumer project via Watchtower"
- **Status:** captured (horizon: next)
- **Last action:** T-1404: Inception — evidence-based Human AC closure (extend T-954/T-1322)
- **Next step:** See task file
- **Blockers:** None


### T-1355: "CLAUDE.md size exceeds Claude Code 40K perf threshold — decompose vs. trim"
- **Status:** captured (horizon: next)
- **Last action:** T-1404: Inception — evidence-based Human AC closure (extend T-954/T-1322)
- **Next step:** See task file
- **Blockers:** None


### T-334: "Execute launch sequence: r/ClaudeAI soft launch → Show HN → amplification"
- **Status:** captured (horizon: next)
- **Last action:** T-334: Update launch draft stats — 500+ tasks, 98% traceability, 130+ checks
- **Next step:** See task file
- **Blockers:** None


### T-449: "Deep-dive articles 02-06: editing pass — strip fabricated stats, tighten voice"
- **Status:** captured (horizon: next)
- **Last action:** T-450: Article 16 — honest machines, real doubt, fabricated stats exposed
- **Next step:** See task file
- **Blockers:** None


### T-464: "PR #6: feat: /capture skill + C-002 Exploratory Conversation Guard"
- **Status:** captured (horizon: next)
- **Last action:** T-948: Fix T-464 invalid YAML frontmatter — truncated description to valid YAML
- **Next step:** See task file
- **Blockers:** None


### T-544: "Create TermLink Homebrew tap with GitHub Actions builds"
- **Status:** captured (horizon: next)
- **Last action:** See git log
- **Next step:** See task file
- **Blockers:** None


### T-550: "Composition-based adapter pattern — evaluate for agent provider and TermLink backend abstraction"
- **Status:** captured (horizon: next)
- **Last action:** T-1404: Inception — evidence-based Human AC closure (extend T-954/T-1322)
- **Next step:** See task file
- **Blockers:** None


### T-558: "Build task risk signal detection — PreToolUse gate requiring inception for high-impact builds"
- **Status:** captured (horizon: next)
- **Last action:** T-1404: Inception — evidence-based Human AC closure (extend T-954/T-1322)
- **Next step:** See task file
- **Blockers:** None


### T-682: "TermLink product feedback — --working-dir flag for spawn + MCP as default"
- **Status:** captured (horizon: next)
- **Last action:** T-012: Close CTL-027 audit FAILs — T-550, T-682, T-704 now have Recommendation sections (all DEFER with rationale)
- **Next step:** See task file
- **Blockers:** None


### T-704: "DAG federation for cross-machine knowledge graphs"
- **Status:** captured (horizon: next)
- **Last action:** T-1404: Inception — evidence-based Human AC closure (extend T-954/T-1322)
- **Next step:** See task file
- **Blockers:** None


### T-705: "KCP integration — knowledge.yaml generation from fabric/context + MCP bridge adoption"
- **Status:** captured (horizon: next)
- **Last action:** T-1404: Inception — evidence-based Human AC closure (extend T-954/T-1322)
- **Next step:** See task file
- **Blockers:** None


### T-801: "fw costs CLI — token usage tracking from JSONL transcripts"
- **Status:** captured (horizon: next)
- **Last action:** T-801: Add fw costs CLI — token usage tracking from JSONL transcripts
- **Next step:** See task file
- **Blockers:** None


### T-802: "Watchtower token dashboard — /costs page with session table and project summary"
- **Status:** captured (horizon: next)
- **Last action:** T-012: Fix curl pipe exit 23 in verification commands (L-002)
- **Next step:** See task file
- **Blockers:** None


### T-803: "Landing page token widget — show current session tokens on Watchtower dashboard"
- **Status:** captured (horizon: next)
- **Last action:** T-012: Fix curl pipe exit 23 in verification commands (L-002)
- **Next step:** See task file
- **Blockers:** None


### T-844: "SSD evaluation — Simple Self-Distillation for code generation (arxiv 2604.01193)"
- **Status:** captured (horizon: next)
- **Last action:** T-1404: Inception — evidence-based Human AC closure (extend T-954/T-1322)
- **Next step:** See task file
- **Blockers:** None


### T-967: "Session profiles + provider registry for orchestrator readiness (T-962 Phase 4)"
- **Status:** captured (horizon: next)
- **Last action:** T-1109: Inception + pre-investigation — fw upgrade silently skips web/ sync
- **Next step:** See task file
- **Blockers:** None


### Awaiting Human Review (33 tasks)

Agent ACs done. Human ACs pending — see "Awaiting Your Action" below.

- **T-1084**: "Gate bypass discoverability — every block message must name its bypass"
- **T-1092**: "Dispatch payload profiles — research path before architectural commitment"
- **T-1110**: "Collapse framework enums into single source of truth (L-006 structural sweep)"
- **T-1111**: "RCA: empty placeholder sections in inception task files reach human review unnoticed"
- **T-1112**: "RCA: cron registry vs /etc/cron.d/ divergence — pickup-process missing + consumer remediation"
- **T-1115**: "Pre-hook Anthropic built-in Task tool (TaskCreate/TaskUpdate) into framework T-XXX governance"
- **T-1126**: "Codify TermLink communication protocol: inject for interactive, push for async — structural enforcement"
- **T-436**: "Auto-compact YOLO mode: automatic compact → resume → autonomous proceed"
- **T-446**: "Rewrite README: sharp positioning, evidence-first, 5-min demo, honest gradient"
- **T-448**: "Cron registry v2: web UI controls, registry YAML, LLM docs (Option B)"
- **T-460**: "Create onboarding task template files for both init modes"
- **T-470**: "Deep-dive article 17: Why Bash, YAML and Files — the anti-enterprise stack"
- **T-481**: "Fix install.sh update path — handle dirty state and macOS filemode"
- **T-505**: "Deep-dive article: Blast Radius — structural impact analysis for agentic engineering"
- **T-511**: "Write governance.yaml — predictability x blast-radius operation class declarations"
- **T-518**: "Fix bash 3.2 compat — replace declare -A with POSIX-safe lookups (macOS)"
- **T-530**: "Port claude-fw --termlink flag from consumer project to upstream"
- **T-594**: "Port loop detector to TypeScript — first real TS hook component"
- **T-612**: "Agent approval pickup — hook/cron scanning Watchtower approval ledger"
- **T-613**: "Update Homebrew tap formula to v1.4.0 + fix consumer project hook errors"
- **T-663**: "Fix framework hooks — replace bare fw with bin/fw in settings.json"
- **T-678**: "vnx-orchestration deep-dive — ingest, build fabric, analyze architecture and patterns"
- **T-706**: "Write KCP deep-dive post — ingestion, evaluation, scoring, decision rationale"
- **T-707**: "Deep-dive: ntfy — Path C ingestion + framework notification enhancement"
- **T-708**: "lib/notify.sh — thin wrapper calling skills-manager alert dispatcher"
- **T-710**: "fw notify CLI — setup, test, enable, disable commands"
- **T-772**: "Cross-project pickup channel — MCP/TermLink-based push for learnings, bugfixes, feature proposals"
- **T-782**: "Deep-dive article: Fabric Explorer — from static DAG to interactive architecture browser"
- **T-799**: "Token cost tracking — count/calculate per-task and project-total token usage and costs"
- **T-800**: "Token efficiency strategies — reduce per-task and per-session cost through context management, output discipline, caching, and dispatch optimization"
- **T-816**: "Null object fallback for hooks — fail-open resilience pattern"
- **T-817**: "3-tier config resolution — env var configuration layer for framework settings"
- **T-880**: "Implement install pipeline auto-remediation — git hooks, identity, baseline, messaging (T-877)"

## Inception Phases

**67 inception task(s) pending decision** — run `fw inception status` for details.

## Awaiting Your Action (Human)

**60 task(s) with unchecked Human ACs.** These are waiting for you — not for agent cleanup.
Review each when ready. No urgency implied.

- **T-1107**: Inception: task-ID collision defense-in-depth — globally unique IDs or URL namespacing (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1123**: Pickup: Approvals page shows inception tasks without recommendations — creates noise, missing Go/No-Go criteria display (from 010-termlink) (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1145**: Pickup: P-010: RCA on recurring assumption fabrication/retraction/correction-of-retraction cycle — 4 proposed structural remediations (R1 provenance schema, R2 negative-claim TTL, R3 post-compact quarantine, R4 cross-section consistency) (from ring20-dashboard) (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1200**: RCA: Watchtower inception-decide writes duplicate decision blocks — double ## Decision sections (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1213**: RCA: Inception decision cards on /approvals show bare radio buttons — no recommendation, no rationale, no context for human decision (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1214**: Fix inception approvals card — show fallback context when recommendation missing (T-1213 GO) (1 unchecked)
  - e.g.: [REVIEW] Inception cards on /approvals show useful context f
- **T-1240**: Fix Watchtower tasks page string sort — T-1000+ tasks hidden between T-1xx (1 unchecked)
  - e.g.: [RUBBER-STAMP] Tasks page shows T-1000+ tasks at bottom when
- **T-1241**: Fix Watchtower /cron page — last 5 files too narrow, infrequent jobs always show no data (1 unchecked)
  - e.g.: [RUBBER-STAMP] /cron page shows last-run data for all 11 job
- **T-1251**: RCA: Bugfix-learning coverage stuck at 0% despite T-1178 T-1192 remediation (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1252**: Audit detection quality: bugfix-learning denominator counts dev-discovered bugs inflating FAIL threshold (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1253**: Pre-push hook VERSION-stamping breaks version.json-based consumer projects (T-106 blocker, T-648 regression) (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1255**: Release tagging + tag-push gap — GitHub stuck at v1.0.0 (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1260**: Human-owned inception tasks cannot complete — 5 layered root causes (sovereignty, dispatch, template drift, recommendation gate, tier0 hash) (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1261**: Consumer cron-registry seeds empty — fw cron install wipes audit schedule on vendored installs (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1277**: Fix unbounded git push in handover auto-trigger (4h stall RCA) (1 unchecked)
  - e.g.: [REVIEW] Verify on next real session that auto-handover at c
- **T-1278**: Fix bin/fw self-exec loop — shim was overwriting real CLI in framework repo (1 unchecked)
  - e.g.: [REVIEW] After fix, running `bin/fw version` from repo root 
- **T-1279**: Fix fw work-on / task-create race condition on task-ID allocation (1 unchecked)
  - e.g.: [REVIEW] After fix, spawn 10 parallel `fw work-on` with dist
- **T-1302**: Pickup: Watchtower Flask secret_key auto-regenerates on every restart — breaks CSRF for existing browser sessions (from termlink) (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1303**: Pickup: Watchtower shared.py PROJECT_ROOT fallback is wrong — falls to FRAMEWORK_ROOT, not discovered (from termlink) (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1304**: Pickup: Watchtower ambient strip shows wrong task as focus — ignores focus.yaml (from termlink) (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1305**: Pickup: Watchtower load_latest_audit picks upgrades.yaml instead of newest audit (from termlink) (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1311**: Pickup: Codify RPC resilience-tier taxonomy + version skew enforcement (Tier-A opaque vs Tier-B typed) (from termlink) (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1312**: Pickup: Ship watchtower.service systemd template — fixes restart races without WSGI-server swap (from termlink) (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1313**: Pickup: Anti-pattern detected: umbrella inceptions bundling N independent decisions (T-1112 NO-GO) (from termlink) (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1314**: Pickup: Watchtower /fabric crashes (KeyError: id) on subsystems.yaml without id key — loader should fall back to name (from termlink) (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1315**: Pickup from email-archive: vendored-vs-repo mode blind spot RCA (sourced T-1043) (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1316**: Pickup from email-archive: Watchtower verification CWD bug (sourced T-1044) (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1319**: Pickup: fw fabric drift and scan miss recursive glob matches — bash ** needs shopt -s globstar (from termlink) (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1321**: Pickup: Vendored .agentic-framework/ tracks Python __pycache__ files — Uncommitted changes present is the #1 audit trend (23×) for consumers (from termlink) (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1322**: Pickup: fw inception decide doesnt tick the RUBBER-STAMP Record go/no-go decision Human AC — tasks stay in active/ forever (from termlink) (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1345**: Pickup: Codify RPC resilience-tier taxonomy + version skew enforcement (Tier-A opaque vs Tier-B typed) (from termlink) (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1348**: Pickup: fw fabric drift and scan miss recursive glob matches — bash ** needs shopt -s globstar (from termlink) (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1349**: Pickup: Vendored .agentic-framework/ tracks Python __pycache__ files — Uncommitted changes present is the #1 audit trend (23×) for consumers (from termlink) (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1350**: Pickup: Watchtower CSRF 403 after restart — auto-regenerated FW_SECRET_KEY + multi-process leak (from termlink) (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1351**: Pickup: Watchtower /fabric crashes (KeyError: id) on subsystems.yaml without id key — loader should fall back to name (from termlink) (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1352**: Pickup: Watchtower Flask secret_key auto-regenerates on every restart — breaks CSRF for existing browser sessions (from termlink) (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1353**: Pickup: Watchtower load_latest_audit picks upgrades.yaml instead of newest audit (from termlink) (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1357**: Pickup: CLAUDE.md template instructs Use bin/fw not fw — correct in framework repo, broken for consumer projects (from termlink) (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1358**: Pickup: Pre-push hook stamps project VERSION into .agentic-framework/VERSION — overwrites vendored framework version on every push (from termlink) (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-1372**: G-054 diag: trace where update-task.sh aborts silently (1 unchecked)
  - e.g.: [REVIEW] Next real task close captures `.last-episodic-gen.l
- **T-1376**: Port parameter visibility — why agents keep defaulting to :3000 after T-1154 + T-1287 + T-885 + T-1284 landed, and the minimum fix (1 unchecked)
  - e.g.: [REVIEW] Review findings and approve go/no-go on FS2, FS3, F
- **T-446**: Rewrite README: sharp positioning, evidence-first, 5-min demo, honest gradient (1 unchecked)
  - e.g.: [REVIEW] Positioning reads as "governance layer" not "assist
- **T-448**: Cron registry v2: web UI controls, registry YAML, LLM docs (Option B) (2 unchecked)
  - e.g.: [REVIEW] Cron controls work correctly and feel safe
- **T-460**: Create onboarding task template files for both init modes (1 unchecked)
  - e.g.: [REVIEW] Onboarding task content is useful for new framework
- **T-470**: Deep-dive article 17: Why Bash, YAML and Files — the anti-enterprise stack (1 unchecked)
  - e.g.: [REVIEW] Voice and tone match Dimitri's writing style
- **T-481**: Fix install.sh update path — handle dirty state and macOS filemode (1 unchecked)
  - e.g.: [RUBBER-STAMP] Run installer twice on macOS — second run suc
- **T-505**: Deep-dive article: Blast Radius — structural impact analysis for agentic engineering (1 unchecked)
  - e.g.: [REVIEW] Voice/tone matches writing style
- **T-511**: Write governance.yaml — predictability x blast-radius operation class declarations (1 unchecked)
  - e.g.: [REVIEW] Operation classes accurately reflect governance mod
- **T-518**: Fix bash 3.2 compat — replace declare -A with POSIX-safe lookups (macOS) (1 unchecked)
  - e.g.: [RUBBER-STAMP] Verify on macOS bash 3.2
- **T-530**: Port claude-fw --termlink flag from consumer project to upstream (1 unchecked)
  - e.g.: [REVIEW] Run `claude-fw --termlink` and verify remote attach
- **T-594**: Port loop detector to TypeScript — first real TS hook component (1 unchecked)
  - e.g.: [RUBBER-STAMP] Verify loop detection fires by repeating the 
- **T-612**: Agent approval pickup — hook/cron scanning Watchtower approval ledger (1 unchecked)
  - e.g.: [RUBBER-STAMP] End-to-end flow works: agent blocked → approv
- **T-613**: Update Homebrew tap formula to v1.4.0 + fix consumer project hook errors (1 unchecked)
  - e.g.: [RUBBER-STAMP] Verify brew upgrade works on macOS
- **T-663**: Fix framework hooks — replace bare fw with bin/fw in settings.json (1 unchecked)
  - e.g.: [RUBBER-STAMP] Start a fresh Claude Code session and verify 
- **T-706**: Write KCP deep-dive post — ingestion, evaluation, scoring, decision rationale (1 unchecked)
  - e.g.: [REVIEW] Voice and tone match writing style
- **T-708**: lib/notify.sh — thin wrapper calling skills-manager alert dispatcher (1 unchecked)
  - e.g.: [RUBBER-STAMP] Receive test notification on phone
- **T-710**: fw notify CLI — setup, test, enable, disable commands (1 unchecked)
  - e.g.: [RUBBER-STAMP] Receive test notification on phone
- **T-782**: Deep-dive article: Fabric Explorer — from static DAG to interactive architecture browser (1 unchecked)
  - e.g.: [REVIEW] Voice and tone match writing style
- **T-837**: Auto-detect context window from model — eliminate hardcoded CONTEXT_WINDOW default (1 unchecked)
  - e.g.: [REVIEW] Review exploration findings and approve go/no-go de
- **T-880**: Implement install pipeline auto-remediation — git hooks, identity, baseline, messaging (T-877) (1 unchecked)
  - e.g.: [RUBBER-STAMP] Run installer on a test directory and verify 
## Gaps Register

**7 concern(s) being watched** — see `.context/project/concerns.yaml`

- **G-004** [low]: Multi-agent collaboration untested
- **G-011** [low]: PostToolUse hooks are advisory-only — cannot block actions
- **G-015** [medium]: Sub-agent results bypass task governance — no structural linking
- **G-017** [medium]: Execution gates do not cover proposal/suggestion layer
- **G-019** [high]: Agent treats symptom-level fixes as complete — no self-escalation to systemic root cause
- **G-045** [high]: TermLink fleet cert/secret co-rotation — both .121 (ring20-dashboard) and .122 (ring20-management) hubs rotating TLS certs AND shared secrets, breaking cross-host coordination
- **G-057** [medium]: Watchtower /inception/T-XXX is one-shot — no revoke/re-decide affordance after decision recorded

Run `fw audit` to check if any trigger conditions are met.

## Decisions Made This Session

None

## Things Tried That Failed

None

## Open Questions / Blockers

None

## Token Usage

- **Total:** 5.0B tokens
- **Turns:** 30309
- **Cache read:** 5.0B

Run `fw costs current` for detailed breakdown.

## Gotchas / Warnings for Next Session

See gaps register above.

## Suggested First Action

Continue T-1275: "Watchdog script for framework services"

## Files Changed This Session

 tests/web/test_approvals_cache.py                  |   69 +
 tests/web/test_inception_decide_e2e.py             |  235 ++
 web/blueprints/approvals.py                        |   48 +-
 web/shared.py                                      |    1 +
 20 files changed, 1237 insertions(+), 4225 deletions(-)

## Recent Commits

- 75b65e33 T-012: Session handover S-2026-0423-2106
- 0a6af330 T-1281 T-1244 T-1407: Housekeeping — closure artifacts + working state
- 0b1c4c35 T-1281: E2E inception decide via Watchtower → fw → task mutation
- 2410411b T-1244 T-1407: Move closed task files + episodics
- 0859137e T-1244: Watchtower /approvals uses shared task cache

---

## Handover Quality Feedback (for next session to complete)

- Did this handover help? [ ]
- What was missing?
- What was unnecessary?
