Sprint 1 · 5–16 Oct 2026 (run early, on 1 Oct)
Sprint 1 board
What was planned, what is done, what is blocked and on whom, and whether the checks are green.
Sample values. Synthetic study, not real patients.
Demo role: Viewer: reads only. Switch. Roles are a demo switch, not sign-in.
Sprint 1 · Sprint 2
Sprint goal
Close the three privacy gaps that block real data, measure extraction on surrogate Vietnamese documents, and reach a go or no-go on real data by 16 October.
28.5 of 35.5 engineer-days done · gate: Go or no-go on real data due 2026-10-16, open Not an engineering task: needs the study inventory and permission check.
Engineering items
| ID | Item | Owner | Estimate | Status | Evidence |
|---|---|---|---|---|---|
| E-T1 | Git, first commit, CI (tests, 30-seed calibration, golden path) | DE | 1d | done | scripts/ci.py writes runs/ci.json; .github/workflows/ci.yml ready for a remote. No remote repository yet. |
| E-T2 | Sign the export and its approval; the platform verifies | DE | 3d | done | shared/signing.py; tests: an edit with a recomputed hash, a changed approver, unsigned and unknown-key bundles are all refused. |
| E-T3 | Coarsened cumulative series and the differencing check in the gate | ML2 | 3d | done | The review's probe, now a test, finds 0 recoverable counts below 10 (was 24). The gate refuses any series with a small step. |
| E-T4 | Single-site rule and per-site consent flag | ML2 | 3d | done | Site types under 3 sites are internal only; pooled all-site estimates added; the sponsor report uses them and says why. |
| 0.4 | Extraction spike on at least 5 surrogate Vietnamese protocols | ML1 | 3d | blocked | Waiting for surrogate documents from PL. The Word reader it needs is built and tested on the synthetic protocol. |
| 0.5 | Map a raw dataset to the clinical schema, 50 variables, time recorded | DE | 2d | blocked | The mapping mechanism exists (hospital_zone/intake/mapping.json). Waiting for a de-identified surrogate dataset. |
| FW | Front-end framework chosen; app skeleton with the four roles | FS | 5d | done | FastAPI, server-rendered HTML, plain forms. demo_app/: role switch (no sign-in yet), every screen, review queue, sign-off, this board. |
| DOC-1 | Word and PDF text with page and paragraph anchors (first half) | ML1 | 5d | done | Word paragraphs anchored as para-N with their heading; fields identical to the Markdown export. PDF is refused with a reason until sprint 2. |
| E-T9 | NFC normalisation at intake | DE | 1d | done | Tables and documents normalised; a decomposed Vietnamese protocol extracts the same fields. |
| ELIC | Elicitation form for between-study spread and gap fills | ML2 | 2d | in review | shared/schema/elicitation.schema.json drafted and tested; waiting for the biostatistician's review. |
| D-T4 | DESIGN.md: scales and component inventory | FS | 2d | done | DESIGN.md: tokens, type, space, shape, components, layout rules. |
| E-T12 | ClinicalStore.close(); job queue dropped from the stack | FS | 0.5d | done | close() used by calibration; CLAUDE.md stack updated. |
| E-T5 | Stretch: allow-list de-identification with the regression test | DE | 5d | done | Pulled in from sprint 2. Every estimate identical to the pre-change fixture; a name in a coded field stops intake. |
Pulled forward from later sprints
| From | Item | Status |
|---|---|---|
| design #1 | Rail grouped by the five acts | done |
| S4 (thin) | Clinician review queue: confirm, correct, reject, with a named reviewer | done |
| D-T9 (thin) | Sign-off step: export unlocks only after a named signature | done |
Checks
No CI run yet.
Decisions taken this sprint
| Decision | Taken | Why |
|---|---|---|
| Web app stack | FastAPI, server-rendered HTML, plain forms, no JavaScript framework | Python team, works offline in a hospital, the static pages port directly |
| Sign the export (A1) | Yes: Ed25519, hospital-held key, platform trust store | A self-hash can be recomputed by anyone |
| Stop differencing (A2) | Yes: coarsened series plus a gate check | 24 small counts were recoverable |
| Single-site values (A3) | Yes: under 3 sites without consent, internal only; reports use all-site values | PRD §5.9, sites are not exposed |
| Allow-list de-identification (C1) | Yes, pulled into sprint 1 | Blocks real data |
| Git and CI (C6) | Yes | Code version names a commit |
| Hosted model provider | Not yet: decided in sprint 2 when it is wired | No model call is needed until extraction v1 |
Not engineering, still on this sprint
| Item | Owner | Status |
|---|---|---|
| Study inventory and permission check (backlog 0.7) | PL, RA | not started |
| Hospital server request filed (backlog 0.8) | PL | not started |
| Ten price interviews started (PRD §8) | PL | not started |
| Replay quantities and calibration seeds pre-registered | BS | in review Fixed in code: dropouts and interim visits in the last third; months to full enrolment from half the target. BS to confirm. |
Documents
PRD · CEO review · Engineering review · Design review · Sprint plan · Build plan · Design system · Backlog