chore(P07): audit fixes — tag re-point v0.2.1/v0.2.2, phase-status + doc-reality drift

---ci---
phase: 7
milestone: v0.3
status: audit
lessons:
  - P0 reconstruction: tags v0.2.1/v0.2.2 pointed at the pre-migration first attempt (818d8c3/32af0fb) orphaned at the 2026-09-12 forge cutover — NOT ancestors of HEAD; re-pointed to the shipped phase commits (45b2162 / f0df185) matching the v0.2.3..v0.2.7 series convention; all v0.2.x tags now ancestors of HEAD
  - P1 roadmap: phase 0 status stuck at in-progress after the P0 ship; phase 7 pending despite the P07 review commit; both corrected (complete / in-progress)
  - P1 requirements: 27 v0.1 requirement rows (REQ-002..028) still said pending — contradicting the traceability matrix in the same file, PROJECT.md, and ROADMAP (v0.1 shipped as v0.1.0); all set complete
  - P1 grill consistency: GRILL CUT-2 (no xterm in v0.3) never propagated to PERSONAS.md (frontend frameworks listed @xterm/xterm) and ARCHITECTURE.md build order (xterm.js build/run); PROJECT.md A-103 still claimed a WebSocket xterm terminal on a bwrap sandbox; all aligned to the shipped read-only exec-output panel (CUT-2/G-8, D-024 unshare)
  - P1 architecture drift: api/ row missing the five v0.3 routers (sandboxes/telemetry/variants/defense + grade endpoint); voice/ row missing factory.py + defense_store.py; agents/ row missing examiner.py; main.py row missing engine-store lifespan wiring; ui/types rows missing the v0.3 primitives and engine type modules; data-flow section still described the v0.2 mock-agent flow as current
  - P2 docstring: IngestSession still documented the pre-P7 len(get_trace) O(n²) flood-cap count that the P07 fix replaced with TraceStore.count()
---/ci---
This commit is contained in:
CIAgent
2026-09-12 21:42:10 +00:00
parent 12b2300f6f
commit 1d03f0c8f5
7 changed files with 92 additions and 63 deletions
@@ -143,11 +143,9 @@ class IngestSession:
- `telemetry_max_events_per_task` is consulted at connect and re-checked
per append against the DURABLE row count (cap compares against stored
events, so a skipped-ahead seq cannot burn budget that was never sent).
Durable count via `len(get_trace(...))` reads the trace per append —
O(trace) per event; v0.3 pilot sizing caps traces at 50k rows, WAL keeps
the writer unblocked (a-3), and the capture agent's emission rate is
human-scale. If profiling shows the count query hot, swap to COUNT(*)
without changing the contract.
Durable count via `TraceStore.count()` (COUNT(*)) — a single aggregate
per append, never materializing trace rows (the pre-P7 code read
`len(get_trace(...))` which was O(trace) per event / O(n²) per session).
"""
def __init__(