Artist management · build status
The sell side of the live deal: roster, offers, deal engine, settlement and commission. Generated from the build ledger.
S1 – S4 · 4 slices
4 complete
S5 – S9 · 5 slices
5 complete
S10 – S13 · 4 slices
4 complete
S14 – S17 · 4 slices
4 complete
S18 – S21 · 4 slices
4 complete
S22 – S25 · 4 slices
4 complete
S26 – S27 · 2 slices
2 complete
S28 – S32 · 5 slices
4 complete · 1 in progress
S9.5 · 1 slice
1 complete
| Slice | Name | Status | The ledger’s note |
|---|---|---|---|
| Phase 0 — Foundation | |||
| S1 | Repository scaffold and design tokens | complete | tokens.css, base.css, verify-tokens.sh, 7 site pages, 7 console screens |
| S2 | Database foundation, RLS harness, migration tooling | complete | 17 isolation assertions, 5 gates in verify-S2.sh |
| S3 | Identity, sessions, RBAC | complete | 29 identity assertions + a runtime R10 probe |
| S4 | Console shell and audit spine | complete | 9 atomicity assertions, 12 payload-guard tests, derived notification tray |
| Phase 1 — The roster | |||
| S5 | Artist record | complete | archive not delete; export in one call |
| S6 | The artist as a product | complete | 27 db assertions + 22 runtime; overlap refused by exclusion constraint |
| S7 | People, line-up and personnel | complete | 22 erasure assertions + 20 runtime; the Article 17 path works end to end |
| S8 | Management agreement | complete | 25 db + 21 runtime; permissions now enforced INSIDE policies |
| S9 | Roster dashboard and artist assignment | complete | R7 enforced; a CROSS-TENANT VIEW LEAK found and closed |
| Phase 2 — The Offer Desk | |||
| S10 | Calendar and availability 6b4cd42 · 2026-08-03 | complete | derived on read; a CROSS-TENANT WRITE found and closed in 0016 |
| S11 | Enquiry capture a5855d8 · 2026-08-03 | complete | the first anonymous write; the link token is the credential |
| S12 | ★Hold ladder and challenge protocol d4564bd · 2026-08-03 | complete | signature module. H1–H7 in constraints and triggers; the API cannot accept a timestamp |
| S13 | Offer builder and offer tracking ac151cf · 2026-08-03 | complete | accepted offers immutable; a counter is a new row |
| Phase 3 — The Deal Engine | |||
| S14 | ★Deal components and the calculator 937e887 · 2026-08-03 | complete | signature module. §2.3 reproduced exactly; two engines cross-checked |
| S15 | Deal memo 16c5f84 · 2026-08-03 | complete | append-only, snapshotted; found an 11-slice audit-payload defect |
| S16 | Show record and confirmation f93cc6a · 2026-08-03 | complete | one transaction or nothing; the radius clause names the show |
| S17 | Tours, routing and tour budget f4f46de · 2026-08-03 | complete | the P&L identity, over 20 generated tours. Phase 3 closed |
| Phase 4 — Production and the road | |||
| S18 | Riders, stage plot and input list 583df4d · 2026-08-03 | complete | superseding never repoints an advanced show; the plot is data |
| S19 | Advance pack, two-way e67edc4 · 2026-08-03 | complete | the token resolves to exactly one advance; differences derived on read |
| S20 | Itinerary, day sheet, run sheet 722b6c7 · 2026-08-03 | complete | a door time is a local time, not an instant — deliberately not timestamptz |
| S21 | ★Settlement capture and reconciliation f31e3f0 · 2026-08-03 | complete | the ten §2.4 checks derived on read; no findings table, asserted structurally |
| Phase 5 — Money | |||
| S22 | ★Ledger primitives fb23c3c · 2026-08-03 | complete | an event pins its own FX rate; the rate table is only a lookup |
| S23 | ★Commission engine dd135a6 · 2026-08-03 | complete | signature module. §3.2 worked example reproduced exactly, sunset tail included |
| S24 | Invoicing and receivables ac86832 · 2026-08-03 | complete | no total column at all; a totalMinor sent anyway is refused, not ignored |
| S25 | ★Artist statement and splits a0d9bee · 2026-08-03 | complete | D-021's three safety properties each enforced by test |
| Phase 6 — Clearance | |||
| S26 | ★Clearance rules and requirements a9dcb98 · 2026-08-03 | complete | signature module. a requirement is a row carrying its rule version |
| S27 | Visas, Schengen and carnets | complete | counter, vault, API and screen (2026-08-03); carnet + visa queue, 2026-08-13. C5.1 not met by decision (D-030) |
| Phase 7 — Reach | |||
| S28 | Notifications | complete | the tray is derived, the DELIVERY is recorded; exactly-once by unique dedupe key carrying the deadline |
| S29 | Artist portal | complete | scoping at the database (0055–0057) + portal API, screen and runtime probe. Read-only, GET-only, statement audience is a literal |
| S30 | Merch, releases and campaigns | complete | merch catalogue/register/settlement + release record, dependency-aware plan, checklist and album budget. Both roadmap gates hold |
| S31 | Ecosystem bridge 746164d · 2026-08-22 | in progress | lane 1 done (2026-08-15): the anonymous directory lane, restrictive policy, 22 assertions. Q-005 answered — event.clinic dev is the counterparty. Lane 2 done (2026-08-22, D-038): /public/production/:token, migration 0076, a supplier reads ONE show's TECHNICAL rider version and the stage plot drawn against it. 41 SQL + 52 runtime assertions; deployed to dev and asserted there. Rigfold records the same decision as its D-325. Still open, and still blocked on the far side rather than on effort: the WRITE into event.clinic (D-034 — the entity does not exist; docs/10-directory-entity-request.md is the request), 18.2/18.3 inbound, and E1.5's UI 2026-08-29: LANE 2 IS BUILT AND DEPLOYED — /public/production/:token, migration 0076, 41 SQL and 52 runtime assertions, a panel on the Advance screen, live on the dev Worker. Lane 1 remains blocked by D-034 and must never be built against a fixture. |
| S32 | Reporting, import and offline | complete | reports derived on read, no table; both idempotency guarantees are unique indexes. 39 SQL + 23 runtime assertions |
| Further slices | |||
| S9.5 | Console connection (inserted) | complete | password sign-in, HttpOnly cookie, live roster + artist |
scripts/verify-S<n>.sh
that exits 0 against the code as committed; a slice whose script has not
exited 0 in a single run is not complete here, whatever else was built.
S27 is complete as of 2026-08-13, carnet and visa queue included. One requirement, C5.1, is deliberately NOT met: the carnet’s equipment list is typed rather than derived, because ShowLedger24 holds no asset inventory and D-030 rejected inventing one. The product says so on the screen rather than quietly claiming otherwise.
for f in scripts/verify-S*.sh; do bash "$f" local || { echo "FAILED: $f"; break; }; done
# 1 · API worker cd ~/Documents/artist-management-site/api && npm run dev # :8792 # 2 · console cd ~/Documents/artist-management-site/web && npm run dev # :5273 # prove a slice on the committed tree cd ~/Documents/artist-management-site && bash scripts/verify-S23.sh local
The console holds its route in React state, so there are no deep links — open the root and use the left nav. Screens come in two kinds and the nav labels them: LIVE screens read the database, FIXTURE screens render a frozen sample.
time, not an instant — deliberately not timestamptztotalMinor sent anyway is refused, not ignored