hub / content /engineering /reference /delivery-plan.html
amirmh's picture
Audit pass: merge duplicate docs (57 total), fix ADR index links, header overflow, mobile tables, members button in header, WebP illustrations
612e777 verified
Raw
History Blame Contribute Delete
9.06 kB
<article class="doc" id="doc-reference-delivery-plan" aria-hidden="true"><div class="strip"><span class="path">reference/delivery-plan.md</span><span class="tag">Engineering, reference</span><span class="meta">~3 min read</span></div>
<h1>19. Delivery Plan</h1>
<div style="background:var(--forest-pale);border:1px solid var(--border-dark);border-radius:10px;padding:14px 18px;margin:0 0 22px;font-size:13.5px;line-height:1.55;"><strong>Which plan applies?</strong> This page is the <em>team-scale</em> delivery plan (5.75 FTE, 12 sprints) from the architecture spec, kept as the post-seed hiring blueprint and for its phase-gate criteria and partner-ratification items (&sect;21), which design partners review. The <em>operative schedule</em> for the current build is the <a href="#doc-engineering-start">14-phase development track</a>, which resequences these same gates for the founding team.</div>
<h2 id="doc-reference-delivery-plan--h1">19.1 Team</h2>
<div class="tbl-wrap"><table class="col-table compact"><colgroup><col class="col-auto"/><col class="col-xs"/><col class="col-md"/></colgroup>
<thead>
<tr>
<th>Role</th>
<th>FTE</th>
<th>Focus</th>
</tr>
</thead>
<tbody>
<tr>
<td data-label="Role">Tech lead / backend</td>
<td data-label="FTE">1</td>
<td data-label="Focus">Architecture holder; episode + identity modules</td>
</tr>
<tr>
<td data-label="Role">Backend engineers</td>
<td data-label="FTE">2</td>
<td data-label="Focus">Compiler+gates; agents+notifications</td>
</tr>
<tr>
<td data-label="Role">Full-stack engineer</td>
<td data-label="FTE">1</td>
<td data-label="Focus">PWA patient/caregiver + brief UI</td>
</tr>
<tr>
<td data-label="Role">Integration engineer</td>
<td data-label="FTE">1</td>
<td data-label="Focus">EHR adapter, ADT, Terraform, CI/CD</td>
</tr>
<tr>
<td data-label="Role">Founding physician (clinical)</td>
<td data-label="FTE">0.5</td>
<td data-label="Focus">Gate criteria, templates, review queue, golden labels</td>
</tr>
<tr>
<td data-label="Role">Security (fractional)</td>
<td data-label="FTE">0.25</td>
<td data-label="Focus">Β§15 controls, SOC 2 evidence, pen-test liaison</td>
</tr>
</tbody>
</table></div>
<h2 id="doc-reference-delivery-plan--h2">19.2 Phase Gates</h2>
<div class="tbl-wrap"><table class="col-table compact"><colgroup><col class="col-xs"/><col class="col-sm"/><col class="col-lg"/></colgroup>
<thead>
<tr>
<th>Phase</th>
<th>Window</th>
<th>Entry β†’ Exit Criteria</th>
</tr>
</thead>
<tbody>
<tr>
<td data-label="Phase">0 Foundations</td>
<td data-label="Window">Sprints 1–2</td>
<td data-label="Entry β†’ Exit Criteria">BAAs + accounts + CI/CD + skeleton deploy β†’ GATED ADRs ratified w/ partner; FakeEHR live; audit writer + identity core merged.</td>
</tr>
<tr>
<td data-label="Phase">1 Core loop</td>
<td data-label="Window">Sprints 3–5</td>
<td data-label="Entry β†’ Exit Criteria">β†’ Activationβ†’Todayβ†’task response E2E on synthetic data; state machines property-tested; outbox suppression proven ≀60 s.</td>
</tr>
<tr>
<td data-label="Phase">2 Compiler &amp; safety</td>
<td data-label="Window">Sprints 6–8</td>
<td data-label="Entry β†’ Exit Criteria">β†’ Seven gates live; extraction thresholds met on corpus v1; GS-01…GS-06 green; review queue UI.</td>
</tr>
<tr>
<td data-label="Phase">3 Agents, briefs, notifications</td>
<td data-label="Window">Sprints 9–10</td>
<td data-label="Entry β†’ Exit Criteria">β†’ Six agents in envelopes; kill switches drill; brief precompute+staleness; GS-07…GS-12 green; load test passed.</td>
</tr>
<tr>
<td data-label="Phase">4 Enterprise &amp; hardening</td>
<td data-label="Window">Sprint 11</td>
<td data-label="Entry β†’ Exit Criteria">β†’ Admin console, reports w/ denominators, pen-test criticals closed, DR drill, WCAG audit clean.</td>
</tr>
<tr>
<td data-label="Phase">5 Pilot readiness</td>
<td data-label="Window">Sprint 12</td>
<td data-label="Entry β†’ Exit Criteria">β†’ Stage soak on Epic sandbox; usability exits (Β§17.4); runbooks rehearsed; go/no-go review vs investor thresholds (β‰₯60% activation instrumentation live, ≀10 min/episode ops dashboard).</td>
</tr>
</tbody>
</table></div>
<h2 id="doc-reference-delivery-plan--h3">19.3 Definition of Done (MVP, release-blocking)</h2>
<ul>
<li>Every Section-20 requirement row has passing verification evidence linked in CI.</li>
<li>All 12 golden scenarios green on the pinned model registry row; extraction thresholds met field-by-field.</li>
<li>Security: threats 1–13 controls verified; zero critical/high pen-test findings open; break-glass drill logged.</li>
<li>Ops: dashboards + 12 runbooks live; on-call rota staffed; kill-switch + rollback drills ≀10 min each.</li>
<li>Partner: GATED ADR sign-offs recorded (or amendments implemented); Epic production interface approved by hospital IT.</li>
</ul>
<h2 id="doc-reference-delivery-plan--h4">19.4 Top Delivery Risks</h2>
<div class="tbl-wrap"><table class="col-table compact"><colgroup><col class="col-md"/><col class="col-xs"/><col class="col-lg"/></colgroup>
<thead>
<tr>
<th>Risk</th>
<th>Sev</th>
<th>Mitigation</th>
</tr>
</thead>
<tbody>
<tr>
<td data-label="Risk">Epic interface approval slips</td>
<td data-label="Sev"><span class="pill p-h">HIGH</span></td>
<td data-label="Mitigation">Start paperwork in Phase 0; ADR-007 poll fallback keeps build unblocked; FakeEHR for all dev.</td>
</tr>
<tr>
<td data-label="Risk">Extraction misses thresholds on real docs</td>
<td data-label="Sev"><span class="pill p-h">HIGH</span></td>
<td data-label="Mitigation">Corpus grows in stage with partner de-identified docs by Phase 2; uncertain-class bias is the safety valve; review queue absorbs tail.</td>
</tr>
<tr>
<td data-label="Risk">Elderly activation friction</td>
<td data-label="Sev"><span class="pill p-m">MEDIUM</span></td>
<td data-label="Mitigation">Β§17.4 usability gate; large-type QR handout; caregiver-assisted activation path.</td>
</tr>
<tr>
<td data-label="Risk">Notification fatigue β†’ disengagement</td>
<td data-label="Sev"><span class="pill p-m">MEDIUM</span></td>
<td data-label="Mitigation">Tier caps + least-burden ladder + adaptive timing; weekly engagement review in pilot.</td>
</tr>
<tr>
<td data-label="Risk">Scope creep from partner requests</td>
<td data-label="Sev"><span class="pill p-m">MEDIUM</span></td>
<td data-label="Mitigation">Change control: anything touching Β§1.2 exclusions requires CTO+clinical sign-off and a governance review.</td>
</tr>
</tbody>
</table></div>
<h1>21. Partner Ratification Items (Phase 0)</h1>
<p>The seven GATED defaults below are the <strong>only</strong> open governance items. Each is implemented behind the named boundary; ratification (or amendment) is a configuration/adapter change with the stated maximum blast radius. Owner convenes the design-partner review in Sprint 1; decisions recorded as ADR amendments.</p>
<div class="tbl-wrap"><table class="col-table compact"><colgroup><col class="col-auto"/><col class="col-auto"/><col class="col-auto"/><col class="col-md"/></colgroup>
<thead>
<tr>
<th>ADR</th>
<th>Item</th>
<th>Owner / Due</th>
<th>If Amended β†’ Blast Radius</th>
</tr>
</thead>
<tbody>
<tr>
<td data-label="ADR">007</td>
<td data-label="Item">Epic mode (ADT+FHIR vs poll-only)</td>
<td data-label="Owner / Due">Integration eng / Sprint 2</td>
<td data-label="If Amended β†’ Blast Radius"><code>ehr.trigger_mode</code> flag; trigger latency only</td>
</tr>
<tr>
<td data-label="ADR">008</td>
<td data-label="Item">Identity factors</td>
<td data-label="Owner / Due">Clinical + Security / Sprint 1</td>
<td data-label="If Amended β†’ Blast Radius"><code>identity.factors</code> config; activation UI copy</td>
</tr>
<tr>
<td data-label="ADR">009</td>
<td data-label="Item">Hierarchy levels 4–7 order</td>
<td data-label="Owner / Due">Clinical lead / Sprint 2</td>
<td data-label="If Amended β†’ Blast Radius"><code>provenance.hierarchy</code> config; reprocess rule</td>
</tr>
<tr>
<td data-label="ADR">010</td>
<td data-label="Item">Export artifact enablement &amp; fields</td>
<td data-label="Owner / Due">CMIO / pre-INT-008 only</td>
<td data-label="If Amended β†’ Blast Radius">Flag + CDA section map; no MVP impact</td>
</tr>
<tr>
<td data-label="ADR">011</td>
<td data-label="Item">Ops tier (1 vs 2) + queue endpoint</td>
<td data-label="Owner / Due">CMIO + CEO / Sprint 2</td>
<td data-label="If Amended β†’ Blast Radius"><code>ops.tier</code> + endpoint config; router targets</td>
</tr>
<tr>
<td data-label="ADR">013</td>
<td data-label="Item">Silent thresholds (48/72 h)</td>
<td data-label="Owner / Due">Clinical lead / Sprint 2</td>
<td data-label="If Amended β†’ Blast Radius">Two config keys; detector unchanged</td>
</tr>
<tr>
<td data-label="ADR">016</td>
<td data-label="Item">Coverage flag/suppress (80/50%)</td>
<td data-label="Owner / Due">CMIO + analytics / Sprint 3</td>
<td data-label="If Amended β†’ Blast Radius">Two config keys; report footers</td>
</tr>
</tbody>
</table></div>
<div class="pn"><a class="pn-prev" href="#"></a><a class="pn-next" href="#"></a></div></article>