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
1 complete · 1 in progress
S28 – S32 · 5 slices
5 not started
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 | in progress | counter + document vault done and tested; no API, no screen, no carnet yet |
| Phase 7 — Reach | |||
| S28 | Notifications | pending | — |
| S29 | Artist portal | pending | — |
| S30 | Merch, releases and campaigns | pending | — |
| S31 | Ecosystem bridge | pending | re-measure sibling repos first |
| S32 | Reporting, import and offline | pending | — |
| 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 in progress and says so: the counter and document vault are tested, but there is no API, no screen and no carnet yet.
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