From Sandbox to Production: The Governed SDLC Landscape
New here? ValidKeep governs regulated software with linked atomic files in Git and deterministic npx validkeep verify (no LLM in the audit path). Optional ysbuild helps author specs; verify is the impartial gate either way.
Start with the ecosystem map for the platform stack (assurance profile, landscape profile, CLI, ValidKeep Hub). Then read the atomic model ($D_x$, $R_x$, $C_x$, $L_x$) if notation like $C_x$ is unfamiliar. Operational Qualification (OQ) and Performance Qualification (PQ) are explained in their own articles.
Multiple changes can be in flight without ad hoc promotion. The landscape profile declares branch topology, hosting classes, test cycle types, and ValidKeep Hub status gates. Promotion from sandbox to production is mechanical: each environment has rules; GitHub CI and ValidKeep Hub ledger state enforce them together.
Environment ladder
The High Assurance landscape defines a promotion ladder. Branches are not arbitrary folder names; they carry hosting and test-cycle semantics:
- sandbox and prototype: uncontrolled experimentation; headless test cycles on MiniHub
- localdev: developer machine rehearsal before CR formalization
- devcr/<CR#>: formal realization of an approved Change Request; CR-bound test cycles
- integration: long-lived online dry-run; PRs only from approved devcr branches when ValidKeep Hub status allows
- verifyrelease/<Release#>: single active verification release; release-bound PQ telemetry
- main: production truth; merge only from verifyrelease after implementation approval
Hosting classes
Each environment declares a hosting class in landscape YAML:
- none: local-only verification; no deployed runtime required
- container: Studio sandbox containers for prototype work
- online: GitHub Actions CI plus Cloudflare Workers (or equivalent) for integration and release environments
Test cycle types
Three cycle types tie to the ladder (see also Features: Governed SDLC):
- Headless (sandbox): run OQ drivers and PQ probes locally or on MiniHub without a formal CR
- CR-bound (devcr): formal module qualification attached to a Change Request ledger entry
- Release-bound (verifyrelease): aggregate PQ telemetry for release sign-off
CR-101 narrative (pediatric dose calculator)
Consider CR-101 adding a neonatal dose rule to a pediatric calculator module:
- Draft: developer scopes modules in ValidKeep Hub, prototypes in sandbox, pins a commit SHA
- Realization: branch
devcr/CR-101; atomic files updated (calc.rx.md, calc.cx.md, OQ cases); every push runsnpx validkeep verify+ scope check - Informal testing: developer attests CR-bound cycles pass on devcr
- Integration: PR to integration when ValidKeep Hub unlocks; online environment dry-run
- Release requested: CR assigned to active verifyrelease branch
- Production: merge verifyrelease to main after QA signatures on ValidKeep Hub evidence
Status gates bridge ValidKeep Hub and Git
Landscape status_gates map ValidKeep Hub CR statuses to permitted Git actions. Annotated excerpt from the High Assurance landscape profile:
status_gates:
- action: pr_to_integration
requires:
cr_status: Integration Testing
- action: merge_verifyrelease
requires:
release_status: Formal Testing Approval Pending
- action: pr_to_main
requires:
release_status: Approved for Implementation
The ledger is not decorative; it gates CI and PR workflows.
What landscape does not do
Landscape does not define obligation algebra ($O_x = C_x$, trace edges, OQ and PQ separation). That is the assurance profile job. Landscape does not author specs; humans or optional ysbuild agents do. Verify always reads assurance rules from validkeep.yaml.