---
session_id: S-2026-0503-0019
timestamp: 2026-05-02T22:19:14Z
predecessor: S-2026-0502-2248
tasks_active: [T-1062, T-1064, T-1065, T-1066, T-1265, T-1271, T-1274, T-1309, T-1542, T-1611, T-1624, T-1634, T-1635, T-1636, T-1637, T-1639, T-1659, T-1662, T-1677, T-1684, T-1685, T-1686, T-1687, T-1688, T-332, T-334, T-449, T-464, T-544, T-550, T-558, T-682, T-704, T-705, T-801, T-802, T-803, T-844]
tasks_touched: [T-1634, T-1688, T-1065, T-1064, T-1686, T-1542, T-1685, T-1635, T-1687, T-1677, T-1684, T-1062, T-1066, T-1672, T-1667, T-1674, T-1666, T-1680, T-1670, T-1681, T-1682, T-710, T-1669, T-1678, T-1683, T-1647, T-1676, T-530, T-1632, T-1679, T-1660, T-1257, T-1663, T-1671, T-1665, T-1643, T-708, T-1661, T-1673, T-1668, T-1664, T-1675]
tasks_completed: []
uncommitted_changes: 53
token_usage: "3.6B tokens, 20883 turns"
token_input: "31.2K"
token_cache_read: "3.6B"
token_cache_create: "61.8M"
token_output: "16.3M"
commits_per_turn: "0.029"
first_commit_turn: "26"
failed_tool_calls: "602"
failed_tool_call_rate: "0.0478"
edit_bursts: "366"
productive_turns_ratio: "0.381"
session_turns: "249"
session_commits: "13"
session_commits_per_turn: "0.0522"
session_failed_tool_calls: "9"
session_failed_tool_call_rate: "0.0692"
session_edit_bursts: "10"
session_productive_turns_ratio: "0.3454"
owner: claude-code
session_narrative: ""
---

# Session Handover: S-2026-0503-0019

## PICKUP POINT — grill-with-docs T-1687, deep grilling resolved most architecture

**A grilling session on the orchestrator-as-triage rethink resolved 13 questions this session, including a major architectural correction triggered by user research.** Read `CONTEXT.md` at repo root FIRST — it now contains the full resolved domain language and the v1 architecture for the Agent / Worker / Workflow / Delegation envelope model. The skill itself lives at `.claude/skills/grill-with-docs/`.

**Resolved this session (in order):**

- **Q1** Agent runs on a configured model, default `opus`, settable per-project (resolved earlier session, confirmed)
- **Q2** Agent IS the orchestrator (no separate entity) — resolved earlier session
- **Q3 / Q3.5** wrapper-only enforcement, warn-at-launch on `--model` override → **ADR-0001** (`docs/adr/0001-orchestration-model-pin-enforcement.md`)
- **Q4** Config key: `AGENT_MODEL` / `FW_AGENT_MODEL`, lives in `.framework.yaml` registry
- **Q5** Agent's three slices: (1) task lifecycle (create/ensure-updates/close-with-guards), (2) interactive work (inception, grilling, design dialogue — Workers can't ask questions efficiently), (3) dispatch everything else → **ADR-0002** (`docs/adr/0002-agent-role-three-slices.md`)
- **Q6 / Q6.5** Workflow-shaped envelope: 6-field schema (model, effort, prompt_template, allowed_tools, cost_cap_usd, cwd) + `inline:` flag + `worker_kind` + optional `env:` map. Overrides at dispatch time get one-line announce.
- **Q7** Multi-provider with ollama wired (then significantly revised by Q11)
- **Q8 / Q8.5** Cache (`route_cache.json`) + append-only log (`dispatches.jsonl`), monthly rotation. Telemetry feedback loop is v1-capable; SQLite graduation deferred to v2 when query complexity demands.
- **Q9** Workflows live one-file-per-entity in `.context/project/workflows/<task_type>.yaml` (corrected after user pushback on my single-file-registry recommendation)
- **Q11** **MAJOR CORRECTION** — three Worker flavours hybrid: `Task` (in-session), `TermLink` (claude -p with full Claude Code ecosystem; `ANTHROPIC_BASE_URL` env-var redirect for non-Anthropic-protocol endpoints via proxy), and `pi` (Pi mono coding-agent for subscription-backed inference / 23+ providers). Triggered by user research showing Claude Code DOES support `ANTHROPIC_BASE_URL` — binary-confirmed (52 occurrences in claude 2.1.126). Prior agent research was wrong; pi is now NOT the only multi-provider path.

**Open branches (Q-tree state):**
- **Q10**: `prompt_template` format — jinja2 vs `$VAR` substitution. My instinct: plain text + `$VAR`. Small.
- **Q12**: fallback when a task_type has no workflow file. Three options: default → inline (Agent does it), error out, or use a `default.yaml` fallback workflow. Medium importance.
- **Q13**: claude-fw bootstrap of pi — does the wrapper auto-install pi via npm if missing, or just `fw doctor` warns? Small.
- **Q14**: workflow validation — does `fw doctor` lint workflow files for schema correctness? Small.

**Operating mode for resume:** continue grilling per skill protocol — one question at a time, recommended answer included, update CONTEXT.md inline as terms resolve, offer ADRs sparingly per the three-criteria test in `.claude/skills/grill-with-docs/ADR-FORMAT.md`.

**Other deliverables this session (non-grilling):**
- T-1688 (G-064 candidate-consumer survey) — surveyed all 18 autonomous workloads; retrofit ruled out; recommendation GO option 1+4 (accept long-term + escalation-scan v0.5). Awaiting human GO/NO-GO via Watchtower `/inception/T-1688`.
- T-1685 (audit refactor) NO-GO + T-1686 (workflows page) GO recommendations written to task surface (D14 fix). Awaiting human stamps.
- T-1662 (Watchtower /arcs/<id> generic page) verification all green; awaiting human REVIEW.
- G-064 description in concerns.yaml updated with T-1688 findings (retrofit search exhausted; escalation-scan v0.5 named as preferred path).

**Pending Watchtower decisions (4):**
- T-1685 NO-GO (`/inception/T-1685`)
- T-1686 GO (`/inception/T-1686`) — note scope expanded by Q5 collapse
- T-1688 GO option 1+4 (`/inception/T-1688`)
- T-1662 REVIEW (`/tasks/T-1662`)

## Where We Are

Session worked on: T-1687 (CONTEXT.md — three Worker flavours hybrid (Q11 corrected by user)); T-1685 (/T-1686: write Recommendation sections — D14 fix); T-1688 (G-064 update — retrofit search exhausted, escalation-scan v0.5 named as preferred path); T-077 (Session handover S-2026-0502-2248); T-1684 (capture G-064 consumer #2 proposal — orchestrator daily health-check cron). Plus 1 more commit(s).

## Current Arc

**orchestrator-rethink** — Orchestrator routing rethink (in-progress, 29 task(s))

Run `fw arc show orchestrator-rethink` for detail; `fw arc focus --clear` to drop focus.
## Work in Progress

<!-- horizon: now -->

### T-1062: "WezTerm task-aware terminal chrome via TermLink RPC"
- **Status:** started-work (horizon: now)
- **Last action:** T-1679: AC classification compliance sweep — split T-1062/T-1064/T-1065/T-1066 Human ACs into Agent (mechanical) + Human (residual subjective)
- **Next step:** See task file
- **Blockers:** None


### T-1064: "Extend orchestrator.route with task-type routing and model-aware specialist selection"
- **Status:** started-work (horizon: now)
- **Last action:** T-1679: AC classification compliance sweep — split T-1062/T-1064/T-1065/T-1066 Human ACs into Agent (mechanical) + Human (residual subjective)
- **Next step:** See task file
- **Blockers:** None


### T-1065: "Multi-LLM routing — task-aware model selection via TermLink dispatch"
- **Status:** started-work (horizon: now)
- **Last action:** T-1679: AC classification compliance sweep — split T-1062/T-1064/T-1065/T-1066 Human ACs into Agent (mechanical) + Human (residual subjective)
- **Next step:** See task file
- **Blockers:** None


### T-1066: "Data plane governance subscriber — post-hoc pattern detection on PTY output"
- **Status:** started-work (horizon: now)
- **Last action:** T-1679: AC classification compliance sweep — split T-1062/T-1064/T-1065/T-1066 Human ACs into Agent (mechanical) + Human (residual subjective)
- **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:** started-work (horizon: now)
- **Last action:** T-1620: strip <!-- ... --> in inception.sh + verify-acs.sh AC counters
- **Next step:** See task file
- **Blockers:** None


### T-1542: "fw upgrade from inside a consumer crashes at step 4b/9 — detect bare-from-consumer case and route to upstream"
- **Status:** started-work (horizon: now)
- **Last action:** T-1676: shape-aware consumer-upgrade prompts — GitHub upstream + branching mitigation + structured failure envelope
- **Next step:** See task file
- **Blockers:** None


### T-1624: "Refresh ring20-dashboard hub.secret on this anchor — secret-mismatch after .143 migration (T-1054 heal)"
- **Status:** started-work (horizon: now)
- **Last action:** T-1623 resolved + T-1624 filed: TOFU clear was agent work, not human-gated
- **Next step:** See task file
- **Blockers:** None


### T-1662: "Phase 2: Watchtower /arcs/<id> generic arc surface page (generalize T-1647 /orchestrator)"
- **Status:** started-work (horizon: now)
- **Last action:** T-1662 / T-1643: /arcs/<id> surfaces arc-keyed reports
- **Next step:** See task file
- **Blockers:** None


### T-1685: "fw audit refactor — first real consumer of the orchestrator, route slow analytical checks through fw termlink dispatch"
- **Status:** started-work (horizon: now)
- **Last action:** T-1685/T-1686: write Recommendation sections — D14 fix
- **Next step:** See task file
- **Blockers:** None


### T-1686: "Watchtower /workflows management page — configurable workflow_type→(model,thinking_level,cost-cap) + per-workflow telemetry"
- **Status:** started-work (horizon: now)
- **Last action:** T-1687: CONTEXT.md — workflows live one-file-per-entity (Q9 corrected)
- **Next step:** See task file
- **Blockers:** None


### T-1687: "install + apply grill-with-docs skill — grilling session on orchestrator-as-triage architectural plan"
- **Status:** started-work (horizon: now)
- **Last action:** T-1687: CONTEXT.md — three Worker flavours hybrid (Q11 corrected by user)
- **Next step:** See task file
- **Blockers:** None


### T-1688: "G-064 candidate-consumer survey — classify every autonomous workload for orchestrator retrofit"
- **Status:** started-work (horizon: now)
- **Last action:** T-1688: G-064 update — retrofit search exhausted, escalation-scan v0.5 named as preferred path
- **Next step:** See task file
- **Blockers:** None


### T-332: "Submit to awesome lists (awesome-ai-agents, awesome-agents, awesome-copilot)"
- **Status:** started-work (horizon: now)
- **Last action:** T-332/L-320: promote captured-but-done T-332 + capture inception-decide drift learning
- **Next step:** See task file
- **Blockers:** None


### T-334: "Execute launch sequence: r/ClaudeAI soft launch → Show HN → amplification"
- **Status:** started-work (horizon: now)
- **Last action:** T-332/L-320: promote captured-but-done T-332 + capture inception-decide drift learning
- **Next step:** See task file
- **Blockers:** None


### T-464: "PR #6: feat: /capture skill + C-002 Exploratory Conversation Guard"
- **Status:** started-work (horizon: now)
- **Last action:** T-332/L-320: promote captured-but-done T-332 + capture inception-decide drift learning
- **Next step:** See task file
- **Blockers:** None


### T-544: "Create TermLink Homebrew tap with GitHub Actions builds"
- **Status:** started-work (horizon: now)
- **Last action:** T-332/L-320: promote captured-but-done T-332 + capture inception-decide drift learning
- **Next step:** See task file
- **Blockers:** None


### T-801: "fw costs CLI — token usage tracking from JSONL transcripts"
- **Status:** started-work (horizon: now)
- **Last action:** T-802 / T-803: Add Recommendation blocks (GO) — token-tracking arc closure
- **Next step:** See task file
- **Blockers:** None


### T-802: "Watchtower token dashboard — /costs page with session table and project summary"
- **Status:** started-work (horizon: now)
- **Last action:** T-802 / T-803: Add Recommendation blocks (GO) — token-tracking arc closure
- **Next step:** See task file
- **Blockers:** None


### T-803: "Landing page token widget — show current session tokens on Watchtower dashboard"
- **Status:** started-work (horizon: now)
- **Last action:** T-802 / T-803: Add Recommendation blocks (GO) — token-tracking arc closure
- **Next step:** See task file
- **Blockers:** None


<!-- horizon: next -->

### T-1634: "fw upgrade no-args: read upstream URL from .framework.yaml + git-fetch instead of local source"
- **Status:** captured (horizon: next)
- **Last action:** T-1675: file project-shape-resilience inception arc + G-063 umbrella
- **Next step:** See task file
- **Blockers:** None


### T-1635: "fw upgrade fresh-machine simulation guard — clean container test, blocking on framework release"
- **Status:** captured (horizon: next)
- **Last action:** T-1675: file project-shape-resilience inception arc + G-063 umbrella
- **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-332/T-334/T-464/T-544/T-967: Add Recommendation blocks (NO-REC sweep)
- **Next step:** See task file
- **Blockers:** None


<!-- horizon: later -->

### T-1636: "Orchestrator routing: refactor composite cache key to RoutingKey newtype before adding more dimensions"
- **Status:** captured (horizon: later)
- **Last action:** T-1679: AC classification compliance sweep — split T-1062/T-1064/T-1065/T-1066 Human ACs into Agent (mechanical) + Human (residual subjective)
- **Next step:** See task file
- **Blockers:** None


### T-1637: "Multi-LLM routing: cost-aware learning — weight RouteCache success rates by cost-per-call"
- **Status:** captured (horizon: later)
- **Last action:** T-1679: AC classification compliance sweep — split T-1062/T-1064/T-1065/T-1066 Human ACs into Agent (mechanical) + Human (residual subjective)
- **Next step:** See task file
- **Blockers:** None


### T-1639: "TermLink: throughput benchmark for governance subscriber — harden non-blocking claim"
- **Status:** captured (horizon: later)
- **Last action:** T-1642/T-1643/T-1644/T-1645/T-1641: orchestrator-arc reconsideration aggregation
- **Next step:** See task file
- **Blockers:** None


### T-1659: "fw fabric register accepts .agentic-framework/ vendored paths and creates malformed cards"
- **Status:** captured (horizon: later)
- **Last action:** T-1657: G-062 mechanism #3 — arc-parent gate in fw task review
- **Next step:** See task file
- **Blockers:** None


### T-1677: "tag-format drift: 21 legacy TermLink sessions carry task=/role= prefixes — cross-repo validator half"
- **Status:** captured (horizon: later)
- **Last action:** T-1677: capture tag-format drift follow-up + 2026-05-02 audit
- **Next step:** See task file
- **Blockers:** None


### T-1684: "G-064 consumer #2: orchestrator daily health-check cron — autonomous workload to keep route_cache learning"
- **Status:** captured (horizon: later)
- **Last action:** T-1688: G-064 update — retrofit search exhausted, escalation-scan v0.5 named as preferred path
- **Next step:** See task file
- **Blockers:** None


### Inception Phases — Awaiting Decision

- [T-1685](http://192.168.10.107:3000/inception/T-1685): "fw audit refactor — first real consumer of the orchestrator, route slow analytical checks through fw termlink dispatch"
- [T-1686](http://192.168.10.107:3000/inception/T-1686): "Watchtower /workflows management page — configurable workflow_type→(model,thinking_level,cost-cap) + per-workflow telemetry"
- [T-1688](http://192.168.10.107:3000/inception/T-1688): "G-064 candidate-consumer survey — classify every autonomous workload for orchestrator retrofit"

### Deferred Inceptions — Watching for Recurrence

These inceptions reached a DEFER decision and are parked. They are
NOT awaiting a first decision. They re-surface for promotion if the
promotion criteria in their Recommendation block are met.

- [T-1265](http://192.168.10.107:3000/inception/T-1265): "Export docs section as PDF/DOCX/other formats"
- [T-1309](http://192.168.10.107:3000/inception/T-1309): "Ship watchtower.service systemd template + make fw watchtower start systemd-aware"
- [T-1611](http://192.168.10.107:3000/inception/T-1611): "Swap local Watchtower Werkzeug dev server for gunicorn — saturation under browser auto-refresh"
- [T-682](http://192.168.10.107:3000/inception/T-682): "TermLink product feedback — --working-dir flag for spawn + MCP as default"
- [T-704](http://192.168.10.107:3000/inception/T-704): "DAG federation for cross-machine knowledge graphs"
- [T-1271](http://192.168.10.107:3000/inception/T-1271): "Cross-agent peer learning — 15-min TermLink reflect cron (propagated from 050-email-archive)"
- [T-550](http://192.168.10.107:3000/inception/T-550): "Composition-based adapter pattern — evaluate for agent provider and TermLink backend abstraction"
- [T-558](http://192.168.10.107:3000/inception/T-558): "Build task risk signal detection — PreToolUse gate requiring inception for high-impact builds"
- [T-705](http://192.168.10.107:3000/inception/T-705): "KCP integration — knowledge.yaml generation from fabric/context + MCP bridge adoption"
- [T-844](http://192.168.10.107:3000/inception/T-844): "SSD evaluation — Simple Self-Distillation for code generation (arxiv 2604.01193)"

## Inception Phases

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

## 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-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-062** [high]: Framework-blindness pattern — 'shipped' declared before fresh-substrate behavioral verification (mitigated 2026-05-01: all three mechanisms shipped — T-1655 text + T-1656 audit detective + T-1657 review-gate preventive)
- **G-063** [high]: Project-shape conflation — framework code assumes consumer shape, silently fails in framework-repo / fresh-init / vendored-skewed states
- **G-064** [high]: Orchestrator substrate has zero production consumers — arc shipped infrastructure, not behaviour change

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:** 3.6B tokens
- **Turns:** 20883
- **Cache read:** 3.6B

Run `fw costs current` for detailed breakdown.

## Gotchas / Warnings for Next Session

See gaps register above.

## Suggested First Action

Continue T-1611: "Swap local Watchtower Werkzeug dev server for gunicorn — saturation under browser auto-refresh"

## Files Changed This Session

 CONTEXT.md | 53 +++++++++++++++++++++++++++++++++++++++--------------
 1 file changed, 39 insertions(+), 14 deletions(-)

## Recent Commits

- 4168469a2 T-1687: CONTEXT.md — three Worker flavours hybrid (Q11 corrected by user)
- 5c2c63b5e T-1687: CONTEXT.md — workflows live one-file-per-entity (Q9 corrected)
- dbb768732 T-1687: CONTEXT.md — record dispatches.jsonl + route_cache split (Q8)
- e10b93a58 T-1687: CONTEXT.md — wire provider:ollama in v1 (Q7 amendment)
- 5e6c32e9c T-1687: CONTEXT.md — Worker definition flags envelope-fidelity asymmetry (Q7)

---

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

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