Roadmap
Nothing is dated here. Order is what matters: each release has gates, and the status word of every product
changes only when they pass. Status words are the five of the catalog, and the product chips on this page are
read from the docs’ code mirror (docs/lib/content.ts), not typed by hand. The pilot is positioned as
“non-GxP decision support with a light validation package”. Every decision stays human and recorded. Timing
claims wait for measured data.
Where the products stand
| Product | Status |
|---|---|
| Evidence | preview |
| Plans | preview |
| Review | preview |
| Progress | designed |
The transition console, Evidence, Plans and Review designed -> preview happens in one commit across
forge.config.json, contract section 1, CLAUDE.md, the docs status page and CLAIMS-REGISTER.md once the
two phase-2 measurements (cold start, streaming ceiling; contract 10.12) are registered. Progress follows at
R3 exit under the same condition. Clinical and manufacturing objects stay designed throughout.
What exists after phase 2 and the site wave
| Surface | What exists | Status |
|---|---|---|
| API | 189 designed routes under /api/v1 (155 of phase 2, the two public site routes, the 32 twin routes of R3), migrations 0001 to 0005 (60 tables: 0004_chain adds the table-only audit_chain, 0005_twins the six twin tables) with the audit envelope and the role split, 87 permissions, 10 personas at version 3, worker with two lanes, console threads with server-sent events, the stateless tool server, run tokens, connectors for an ELN, a QMS and open literature; phase 2 released to the dev environment on 2026-09-14, the public routes on 2026-09-15 | console, Evidence, Plans and Review preview; Progress and the twin routes designed |
| Web app | the shell, every product section, Setup and Organization, the console with plan and approval cards, the run rail, the launch page, signatures with re-authentication; released to the dev environment on 2026-09-14 | preview |
| Agent runtime | container with bounded phases, streaming console_turn, resume_interrupt, per-role tool clients, redaction and attribution lint, contract tests; a live turn against the real model completed on the dev environment | preview |
| Docs | this site: two areas, the code mirror (87 permissions, personas v3, tone map 61), gates including the timing-word lint, phase-2 and phase-3 pages including the R3 twin guides | preview |
| Site and deck | static marketing export and the fragment deck, both reading the same vocabulary; the site redesign of the site wave below | designed |
| Infra | stacks applied to the dev account (see the deployment record); documents bucket, e-mail identity, database-role secret, worker lanes, the 0002 release rule | designed |
The site wave (phase 3, wave 1)
Records and the public site, built before any twin, released on 2026-09-15 (contract 11.6: the live audit was
green with one recorded warning). The status transition of console, Evidence, Plans and Review to
preview was made the same day after the two phase-2 measurements were
registered.
| Item | What it is |
|---|---|
| Public API | POST /api/v1/public/inquiries (first-party contact form, rate-limited, honeypot and time gate, rows retained 24 months, audit inquiry.create) and POST /api/v1/public/events (aggregate daily counts, no cookies, no identifiers, no IP persistence); routes 155 -> 157; tables public_inquiries, public_rate_events, site_event_counts |
| Site pages | /contact, /contact/sent, /company, /privacy, /terms; nav label “Security”; header CTA “Talk to us”; status words read from site/lib/content.ts and stamped with a date; per-stage status per product (stageStatus) |
| Site evidence | real console screenshots framed and labelled “Console build, illustrative data”; HTML mocks labelled “Illustrative”; metadata (Open Graph, canonical, JSON-LD, sitemap, robots, manifest); security headers and the www redirect; subset fonts; Lighthouse results kept as review evidence, never copy |
| Records | contract section 11; decisions 0021 to 0026; the two phase-2 measurements registered; docs pages for personas, twins and stage playbooks; two deck slides |
| How to reach us | How to request a private preview |
Gates: the site copy gate (status literals, illustrative labelling, placeholder guard, forbidden marketing words,
timing words), the metadata gate, zero-console-error screenshots at 1440 and 390, check_routes: 157 designed,
the public endpoint tests, and the live audit after deploy (www 301, real 404, robots.txt and
sitemap.xml, headers on every response).
R2: pilot go-live (unchanged)
| Item | Status word today |
|---|---|
Console, literature, ELN and QMS connectors, SOP-bound checks and impact runs, Plans drafting, promote, budgets: -> available for the pilot scope (discovery and preclinical) after the evaluation suite passes | designed |
Audit chain (0003_chain, audit_chain, worker chain_append) and chained exports; ships as table-only inside R3 if R2 has not shipped first | designed |
| Production QMS reads through a dedicated integration user after partner sign-off; private-network egress with an allow-list | designed |
Tenant offboarding job export_and_delete_org (runbook) | designed |
Gates: evaluation suite passes with register rows and context-of-use notes; light validation package v1; data-processing agreement with retention, purge and offboarding procedures; zero fixtures in the demo path.
R3: twins for program personas (built, awaiting its gates)
Wave 2 built R3 in the repositories on 2026-09-15 (contract 11.7). Every item keeps the status word
designed until the R3 gates below pass and the release is recorded; the
chips change in one commit with forge.config.json, the contract and CLAIMS-REGISTER.md.
| Item | Where it stands | Status word today |
|---|---|---|
Migrations 0004_chain (table-only audit_chain; chain_append stays disabled) and 0005_twins (six tables: twin_definitions, twin_triggers, twin_schedules, inbox_items, handoff_requests, delegations; tables 53 -> 54 -> 60); persona version 3 (the scientist loses evidence.hypotheses.approve and plans.plans.approve); keys 87, routes 189, tone map 61 | in code; HEAD = "0005", alembic check clean, round trip green; pins re-pinned in api, web, docs and the contract | designed |
Twins for the scientist, quality reviewer, program lead, program owner and manufacturing specialist with duty templates; standing plans approved by the bound person; detached file-and-finish filing; transactional event triggers from TRIGGERABLE_ACTIONS with the savepoint hook and the AUDIT_ACTIONS registry | records, models, audit registry, interrupt service and tools in code; the twin routers mount with the release | designed |
“Decisions waiting for you”: /me/inbox with POST /me/inbox/{item_id}/resolve, the daily brief, digests and quiet hours, batch_approval with explicit selection, hand-offs, delegations, the program board, decision metrics, the twin activity export, the persona home | routes designed (189), DTOs and copy fixed, guides written | designed |
Agent phases twin_cycle and twin_handoff, the detached and batch gate modes, resume_interrupt.items[] | agent surface delta of Part 7 section 7.7 | designed |
Phase-2 threads.schedule rows migrated into paused twins awaiting a standing plan | in 0005_twins, consent-preserving, tested | designed |
Status on exit: twins designed -> preview only when the R3 gates pass (the two phase-2 measurements are
already registered); otherwise twins stay designed. Progress designed -> preview at R3 exit under the same
condition. Gates: pins 87/189/60/61 green in api, web, docs, contract and register; the persona v3 bundle
test; the approval matrix generated from BUILTIN_ROLES; allowlist intersection per persona (viewer: zero
write tools); the bound-user test; detached interrupts leave the run status; per-item batch permission and
audit; stale_proposal on basis_hash; the audit-actions registry and the TRIGGERABLE_ACTIONS exclusion
test; savepoint-hook and coalescing tests; pause on role removal and deactivation; mentions never fire;
permission_exercised = program.twins.use on plan approval; delegation checks; metrics under a viewer
principal; the export carries no arguments; no “Requested by” footer; e-mail content; usage.cost_usd
contract test; agent make verify; check:mobile in check; a baseline registered for each partner program
before enable; twin scenarios in the evaluation suite; zero-console-error screenshots of home, inbox and board
at 1440 and 390 with illustrative chips.
R4: workbench roles, the evidence panel, skills, harnesses and memory tiers
Phase 4 (contract section 12, decisions 0027 to 0034, 2026-09-16) puts the workbench first and moves stage
gates to R5 (ADR 0032). Every count below
is an R4 target, re-derived on release by the owning test; every item is designed
until the gate list passes, then preview on the illustrative program and, under the partner condition, on
partner programs.
| Item | Where it stands | Status word today |
|---|---|---|
Migration 0006_workbench (evidence_pins, document_assets, memory_records plus columns on documents, chunks, runs and tool calls; tables 60 -> 63); routes 189 -> 206 (+17); harness keys 20; workbench roles 15; artifact kinds 12; run kinds 13, interrupt kinds 5, tone map 61, permissions 87 and persona version 3 unchanged | in code (HEAD = "0006", 206 rows in designed-routes.json, the six R4 routers mounted from ROUTERS in api/app/main.py); counts re-derived by api/tests/test_migrations.py, test_rbac_matrix.py, test_harness.py, test_workbench_roles.py and test_workbench_roles_sync.py on the day | designed |
Fifteen workbench roles with the role home, the inline picker, the lead’s assignment and the persona fallback; two harness prompts (medicinal_chemist, dmpk_tox_scientist), the other keys on the neutral persona harness | catalogue, JSON export, sync and coverage tests designed | designed |
| The evidence panel: open-access figures, tables and PDF pages with attribution lines, quote in context, metadata and link, notebook entries; assets captured on a successor copy; the third-party flag on uploads; the weekly retraction watch; pins and the evidence board; “Show me the source”, Gather and Find the source | rendering groups unchanged and pinned by the renderer-per-licence tests | designed |
Skills as server-side tools recorded in tool_calls: tox.pk_parameter_extraction, tox.exposure_margin_table, chem.sar_table_build, evidence.assertion_lint, qa.check_readiness; tox.fih_dose_projection (its three references verified 2026-09-16; 5 of 13 entries verified); the vocabulary layer and the reference gate; every skill served designed while R4_GATE_PASSED = False | in code, served designed | designed |
Harnesses: agent_runs.harness_key as the authority, the harness token claim, harness_denied, closed output schemas on structured reads, untrusted reads to the reader only | designed | designed |
| Memory tiers 1 and 2: “Remember this?”, read, forget, keep across programs, audited and shown oversight, the no-training statement | designed | designed |
| Inline interaction everywhere (ADR 0034): inline forms, docked panels, two-step controls; the signature step converted; a web lint against popups | designed | designed |
Status on exit: the console, Evidence, Plans and Review keep preview; workbench roles, the evidence panel,
skills and memory tiers designed -> preview only when the R4 gate list passes; Progress and the twin surfaces
follow their own conditions above. Gates: check and verify green on every repository; permissions in sync: 87; EXPECTED_TABLE_COUNT = 63; EXPECTED_ROUTE_COUNT = 206; EXPECTED_HARNESS_COUNT = 20; the
renderer-per-licence and abstract-withheld tests; the two-organisation and two-program memory tests; the
injection fixture through every provider handler and memory.propose_note; the container tests (flagged tools
absent, documents.list_assets present, harness_denied handled, refusal lines present); the skill golden tests
and skill-references-check (5/13 references verified); no-popups.lint.test.ts and the plumbing-word copy
test in the web app’s npm run check (recorded 2026-09-16; verified in web/package.json: check calls no
vitest yet, the two lints run under npm run test, which verify calls, so the web writer adds them to check
before the gate); the screenshot set taken by npm run shots:workbench (two role homes; one CC BY article with figure and attribution line, PMC10000000.1; one
no-derivatives source as quote in context; one publisher-copyright source as metadata and link; one notebook
entry; one rendered PDF page; zero console errors at 1440 and 390); a live twin cycle under a harness on the
illustrative program.
R5: lens reviews, role memory, stage gates and organisation twins
| Item | Status word today |
|---|---|
Migration 0007_lenses (lens_reviews, lens_scores; 63 -> 65): lens reviews on explicit request, up to four lenses, read-only plan, the disagreement view with no aggregate and no verdict word; “A lens is not a review. Only a <role> reviews.” | designed |
Migration 0008_stage_gates (stage_gates, review_audit_reviews; 65 -> 67; the rows reserved by 11.4 for R4): the gate as the only writer of current_stage_id (422 stage_via_gate); readiness briefs; frozen checklists and stage_gate.reopen; two signatures with a group-resolved persona check (reviewed by a quality reviewer over the checklist, approved by a different owner or lead; same_signer refused; stage-restricted ready for the manufacturing specialist); QA monthly oversight summary; the stage card on home; tone map 62 | designed |
| Tier 3 role memory with two-party curation (`org.role_memory.read | manage), propose-share, opt-in auto-keep; persona version 4 (keys 93); the remaining harness prompts and skills (except ip_analyst`); routes 206 -> 223 |
Organisation twins for org_owner and org_admin (org.twins.use): quarterly access-review preparation, information items only | designed |
| Rendition PDFs and page anchors for internal documents | designed |
| Cross-program hand-offs; configurable stage checklists per organisation | roadmap |
Message branching UI; organisation-level connections with per-program scoping rows; chat-platform notifications; row-level security on document_chunks; ELN v3 version ids; CAPA linkage on deviations; warehouse backfill | roadmap |
Status on exit: twins available for discovery and preclinical only if the event-anchored metrics are
registered from at least three partner programs and the evaluation suite holds; otherwise preview. Gates:
test_stage_change_only_via_gate; close advances current_stage_id in one transaction; reviewer_role_required
through a group assignment; gate_stage_restricted; same_signer; the scorecard tests (no aggregate, no verdict
word, no numeric column on export; a scorecard never a required record, check input or attachment); the lens
plan read-only test; two-party curation; auto-keep default off; the approval matrix at version 4; periodic review
minutes covering twin proposals; re-validation impact assessment; the tenant offboarding runbook covers the twin
and memory tables; register rows dated with cohort.
R6: patents, connector grants, simulation and organisation twins
| Item | Status word today |
|---|---|
Migration 0009_user_grants (connection_user_grants; 67 -> 68): per-user grants for delegated work-tracking connectors, so pm.* tools are interactive-only and absent from every duty template; routes -> 228 | designed |
ip_analyst tools and patent.mention_scan (“Compounds mentioned in patent documents; not claim coverage, not an opinion”) | designed |
| PK/PD simulation as a separate worker container; no qualification claimed | planned |
stats.send_conformance_report (dataset conformance engine as a worker job) | designed |
Not planned
Compliance claims of any kind, market or productivity figures, timing words before a registered measurement, model names in code, docs or copy, agents that approve, sign, notify or send, twins with their own persona or an agent-to-agent channel, writes into the ELN or the QMS, and any capability sentence that presents a designed product as live. Agents prepare, compare, propose and flag; a person decides.
Source: PRODUCT-PLAN.md Part 5, Part 6 (A1 to A8), Part 7 section 9, Part 8 and Part 9 section 8; PRODUCT-CONTRACT.md sections 10.11, 10.12, 11.6, 11.7, 12.1, 12.7 and 12.11; forge.config.json; api/scripts/designed-routes.json (206 rows); api/tests/test_migrations.py (HEAD = "0006", EXPECTED_TABLE_COUNT = 63); api/tests/test_harness.py; api/tests/test_workbench_roles.py; api/app/auth/permissions.py (87); api/app/auth/personas.py (PERSONA_VERSION = 3); web/lib/status.ts (61); docs/lib/content.ts (products, R4_TARGETS); decisions/0017-pilot-scope-validation-and-status-transitions.md; decisions/0021-persona-twins.md to decisions/0034-inline-interaction-no-popups.md