# Signal — Ship-Status Ledger

Canonical, git-tracked record of **what shipped, what didn't, and the reason or dependency** for anything outstanding. Both Pi and Claude read and maintain this; Kisa validates. Ship-status never lives only in private memory. Update this on every ship or blocker change. Pairs with `context/current-state.md` (this = the detailed ledger; current-state = the live ACTIVE/NEXT snapshot).

**Status legend:** SHIPPED · IN PROGRESS · BLOCKED · NOT STARTED · DEFERRED · PI-SIDE · PARKED

---

## Ledger (as of 2026-06-24)

| # | Item | Owner | Status | Reason / Dependency | Next action |
|---|------|-------|--------|---------------------|-------------|
| 1 | Claude-side delegation trigger (`dispatch-trigger.sh` + settings.json `UserPromptSubmit` hook + dispatch thresholds) | Claude | **SHIPPED** (verified live) | none | done |
| 2 | Audit Finding 1 — hook stdout injection works | Claude | **SHIPPED** | verified live (marker reached the model) | done |
| 3 | Audit Finding 2 — `$1` bug → read stdin JSON | Claude | **SHIPPED** | caught + fixed during build | done |
| 4 | Audit Finding 4 — old+new dispatch rules conflict | Claude | **SHIPPED** | added clarifying line (kept judgment fallback, marker = evaluate not auto-dispatch) | done |
| 5 | Convex-Signal spike **brief** | Claude | **SHIPPED** (committed this wrap) | — | Pi designs from it |
| 6 | Convex-Signal spike **design** | Pi | **SHIPPED** | docs/convex-signal-spike-design-2026-06-24.md. 40h/3-phase plan; Module map + Repository interface + Convex schema + Auth seam (Convex default, Clerk swappable) + Phase 1 (core readiness loop) = what Claude builds first. | Claude builds Phase 1 from it |
| 7 | `signal-convex` repo creation | Claude (GitHub) + Kisa/token (Forgejo) | **PENDING** | Dependency: Pi design + Kisa approval (create once, correctly). Claude can do GitHub via `gh`; Forgejo has no API token here. | after design approved |
| 8 | Convex BAA email (plan/cost/signing) | Kisa | **IN PROGRESS** | Kisa handling | Kisa sends |
| 9 | Readiness-model build (rename coverage→readiness, rules-to-config, grouping+verdict, device override, require-plan-type, frontend nesting) | Claude | **UNBLOCKED** | Dedup decision locked: (patient_id, device_type, DOS). Order_number is display-only. Scales to all DMEPOS categories. Design: `docs/dedup-design-2026-06-24.md`. | Claude builds from dedup design + readiness model brief |
| 10 | NocoDB leads / CRM cleanup | Claude + Kisa | **BLOCKED** | Reason: leads table has no primary key (Signal-base data source `bdmhi02nks1pg6g` is corrupted — a fresh table there also came up PK-less; content base is healthy). SQLite can't add a PK to a populated table (Route 1 failed). Interim: capture still works (inserts via n8n `signal-cgm-lead`); the 2 test rows can't be deleted. | resolved by the data-platform decision (item 11) |
| 11 | Data-platform decision (leads + future PHI backend) | Kisa (with Claude/Pi analysis) | **OPEN** | Options analyzed: repaired-NocoDB / Supabase Postgres / Neon / AWS (already set up, BAA+RDS+S3 parked) / Convex ($25/mo incl. BAA). Leads = non-PHI (stay outside PHI boundary). Decision informed by the Convex spike. | run spike → decide |
| 12 | Research-versioning Layer-1 (`research-autopush.sh` + Stop-hook entry) | Claude | **NOT STARTED** | Dependency: Pi design exists (`docs/research-versioning-design-2026-06-24.md`). Lower priority than product. | next infra slot |
| 13 | `signal/docs/` auto-versioning (Audit Finding 5) | Claude + Pi | **NOT BUILT** | Reason: research-versioning scope excludes `signal/docs/`. **This is why design docs need manual commits.** | add `signal/docs/` to scope |
| 14 | Pi research-versioning ext `tool_call`→`tool_result` (Finding 3) | Pi | **LIKELY DONE** | Pi state reports persist gap closed (8 file writes this session); confirm it is the tool_result fix | Pi confirm |
| 15 | Mid-session commit push on clean tree (Finding 6) | Claude | **DEFERRED** | optional, low risk, adds session-close latency | revisit if loss occurs |
| 16 | Chief-of-staff sequential-dependency capability (Finding 7) | Claude | **NOT TESTED** | Dependency: a discovery test with a sequential multi-specialist brief | run the test |
| 17 | Pi injected-message behavior (Finding 8) | Pi | **NOT TESTED** | Pi-side test | Pi test |
| 18 | Skills-as-git-repo (Finding 9) | Claude/Pi | **DEFERRED** | Phase 2 per workflow-consolidation plan | phase 2 |
| 19 | Website copy + agent-file fixes | lead-content / Claude | **STAGED, not deployed** | prose rewrites routed to lead-content; BAA wording attorney-gated | deploy when ready |
| 20 | Signal AIOS product | — | **PARKED** | Activate only on demand-pull + Signal self-sustaining + delegable capacity | hold |

---

## Timeline / critical path

1. **Next session:** (a) Kisa gives the dedup decision → Claude builds the readiness model (item 9). (b) In parallel, Pi designs the Convex-Signal spike from the committed brief (item 6).
2. **After Pi's Convex design:** Kisa validates → create `signal-convex` (item 7) → Claude builds the spike.
3. **Convex spike + BAA terms (item 8)** → inform the data-platform decision (item 11) → which resolves the NocoDB leads/CRM fix (item 10).
4. **Infra cleanup (batched in slack):** research-versioning Layer-1 + `signal/docs/` scope (items 12–13, the reason docs need manual commits), then low-priority Findings 6/7/9. Findings 3/8 are Pi-side.
5. **Fixed date:** labABLE `/pilot-prep` Fri 2026-06-26 1:30 PM.

## Dependencies summary

- Readiness build ⟸ Kisa dedup decision.
- Convex spike build ⟸ Pi design ⟸ committed brief (ready) ; and ⟸ Kisa approval + repo creation.
- NocoDB/leads fix ⟸ data-platform decision ⟸ Convex spike evidence + BAA terms.
- Design-doc durability ⟸ `signal/docs/` auto-versioning (until built, commit docs manually).

## Maintenance

Update this whenever an item ships or a blocker changes. Move shipped items to a `## Shipped (archive)` section when the table grows. Both agents reason from this; Kisa validates and redirects.

## Design Verification (2026-06-24, Claude)

Pi's dedup design (item 9) and Convex-spike design (item 6) were verified line-by-line. Both are build-ready; fixes applied directly to the design docs:

- **dedup-design-2026-06-24.md**: (1) added a separate client-mapped `plan_type` field, distinct from display `payer`, so CoverageLine keys on the mapped plan type, never the payer name — the original draft reintroduced the killed plan-type-guessing bug. (2) Fixed `merge_quantities` to sum across distinct component configs; the old blanket-max dropped quantity in mixed duplicate+split groups (e.g. two [sensor] + one [transmitter] returned 3 instead of 4).
- **convex-signal-spike-design-2026-06-24.md**: `shipments.orderNumber`/`hcpcs` changed to arrays (post-dedup multi-value); §11 dedup note de-staled to LOCKED; carry-forward note to grade on the mapped `planType`.
- Noted, not a blocker: "Convex auth -> Clerk = config-only swap" is optimistic; treat as low-but-nonzero effort (Convex Auth still maturing).
