plans/ held 58 documents and exactly one said whether it was open. The rest
mixed finished work, reviews of shipped work, parked specs and genuinely
pending ones, with nothing distinguishing them, so "how many plans are in
the queue" had no answer short of reading all 58.
Now `grep -H '^Status:' plans/*.md` is the answer:
50 done 3 in progress 2 planned 2 reference 1 parked
Statuses were derived rather than guessed: CLAUDE.md's own built list and
"What's NOT built yet" section, plus checking the subject exists in the
code. A review of work that shipped counts as done -- it records what was
found, it is not a request for anything. `reference` separates the two docs
that are conventions rather than work items (admin-design-standards,
admin-work-framework), which otherwise read as permanently-open plans.
The vocabulary is deliberately five words. A larger one invites "mostly
done" and "blocked-ish", which is how the directory became unreadable.
test_plans_declare_status.py keeps it from rotting: a new plan without a
marker fails, as does an unknown status, one buried below the eighth line,
or an open status with no reason -- "planned" alone is the state that rots,
since nobody can tell later whether it waits on a decision, a dependency,
or just nobody's turn.
Also updates the sweep plan with what landed and what did not, including
that #9 was not a defect.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VRQXz5SYZYVWscxS1QqF6U
66 lines
4.0 KiB
Markdown
66 lines
4.0 KiB
Markdown
# What's built and working — relocation mapping (T6 evidence for T13)
|
|
|
|
Status: done -- docs/ reference set
|
|
|
|
This file records where every module detail removed from `CLAUDE.md`'s
|
|
`## What's built and working` section now lives. It is the audit trail that
|
|
T13 checks: **no load-bearing claim was deleted, only relocated.**
|
|
|
|
Task: T6 (compact `## What's built and working`; relocate per-module detail to
|
|
`docs/`, leaving a compact inventory of one-liners + links).
|
|
|
|
Before: `CLAUDE.md` = 71,446 bytes. After: 57,017 bytes.
|
|
|
|
## Module → docs destination
|
|
|
|
| Module / detail removed from CLAUDE.md | Destination docs file |
|
|
|---|---|
|
|
| `config/schema.sql` (models, proficiency, energy_observations) | `docs/data-model.md` |
|
|
| `poller.py` (catalog fetch/normalize/upsert/stale) | `docs/data-model.md` (+ `docs/architecture.md` row) |
|
|
| `config/config.yaml` / `src/config.py` | `docs/architecture.md` |
|
|
| `scoring.py` (`normalize_inverted` + composite) | `docs/routing.md` |
|
|
| `seed_energy.py` (reference sweep → energy_observations) | `docs/architecture.md` |
|
|
| `tiering.py` / `tier.py` (tier resolver + DB pass) | `docs/routing.md#tiering` |
|
|
| `routing.py` (hard filters + ranking + capability gates) | `docs/routing.md` |
|
|
| `circuit_breaker.py` (passive availability skip) | `docs/routing.md#circuit-breaker--circuit_breakerpy` |
|
|
| `dispatcher.py` (FastAPI service + endpoints) | `docs/api.md` |
|
|
| `proficiency.py` / `proficiency_store.py` | `docs/architecture.md` |
|
|
| `events.py` (decision-event broker) | `docs/architecture.md` |
|
|
| `leaderboards.yaml` / `leaderboard.py` | `docs/architecture.md` |
|
|
| `evals/tasks.yaml` / `eval_proficiency.py` | `docs/evaluation.md` |
|
|
| `capabilities.py` (RequestCapabilities detection) | `docs/routing.md` + `docs/architecture.md` |
|
|
| `context_prune.py` (pinch) — **retained one-liner T6/T7** | `docs/pinch.md` |
|
|
| `logs.py` (trace id, logfmt, journald) | `docs/operations.md` |
|
|
| `metrics.py` / `GET /metrics` | `docs/api.md` |
|
|
| `tui.py` (Textual dashboard + tui_model) | `docs/architecture.md` |
|
|
| `router_cli.py` (one-shot /route probe) | `docs/api.md` |
|
|
| `admin.py` / `admin_schema.sql` / `admin/frontend/*.html` | `docs/admin-portal.md` |
|
|
| `tests/` (offline suite, 3.10/3.14) | `README.md` |
|
|
| Session-directory attribution — **retained one-liner T7**; full heuristic detail | `docs/clients.md#session-directory-attribution-opencode-plugin` (added) |
|
|
| Tiering deep-dive (reasoning_default_enabled, cheapness-not-ceiling, tier1_context_max, 4/6/9→1/9/9) | `docs/routing.md#tiering` (added) |
|
|
| Why tools/reasoning stay on their signals + fail-closed asymmetry | `docs/routing.md#why-tools-and-reasoning-stay-on-their-existing-signals` (added) |
|
|
|
|
## Rationale sub-sections relocated
|
|
|
|
| CLAUDE.md sub-section | Destination |
|
|
|---|---|
|
|
| Circuit breaker: passive availability skip, and why the eval harness stays outside it | `docs/routing.md#circuit-breaker--circuit_breakerpy` (isolation argument, lines 196-199) |
|
|
| Request-side capabilities: why fail-closed is asymmetric | `docs/routing.md` (filters 4-6 + fail-closed asymmetry, lines 12-38) |
|
|
| Monitoring: route_decisions persistence | `docs/data-model.md` (lines 209-218) |
|
|
| Local Ollama vision fallback | `docs/routing.md#local-vision-fallback` |
|
|
| Pass-through capability check | `docs/api.md` + `docs/pinch.md` |
|
|
| Serving class (one base model, many rows) | `docs/data-model.md` (lines 11-44) |
|
|
| Access gating is prose-only | `docs/data-model.md` (lines 30-44) |
|
|
| Tiering (full) | `docs/routing.md#tiering` (added) |
|
|
| Why tools and reasoning stay on their existing signals | `docs/routing.md#why-tools-and-reasoning-stay-on-their-existing-signals` (added) |
|
|
|
|
## Docs files created/extended
|
|
|
|
- `docs/routing.md` — added `### Tiering` and `### Why tools and reasoning stay on their existing signals`.
|
|
- `docs/clients.md` — added `## Session-directory attribution (opencode plugin)`.
|
|
|
|
## Retained one-liners (still in the compact inventory)
|
|
|
|
- Pinch bullet → links `docs/pinch.md` (count in CLAUDE.md ≥ 1).
|
|
- Session-directory attribution → links `docs/clients.md#session-directory-attribution-opencode-plugin`.
|