This directory exists to make parallel implementation safe.
- one ADR can have one or more implementation workstreams
- one chat thread should usually work on one workstream
- one active workstream should usually have one dedicated branch and one dedicated git worktree
workstreams.yamlis the machine-readable registry- the files in this directory are the human-readable handoff documents
- protected release files are reconciled later on
main, not continuously on every branch - active workstreams must declare an
ownership_manifestinworkstreams.yaml
Workstream branches are expected to update:
- implementation code for their own scope
- their own ADR changes if needed
- their own runbook material
- their own workstream file
- their own
workstreams.yamlentry - surfaces declared in their
ownership_manifestasexclusiveorshared_contract - validation surfaces when their work changes the minimum merge gate
Workstream branches should avoid updating:
VERSIONchangelog.mdanddocs/release-notes/- canonical observed-state sections in
versions/stack.yaml - top-level integrated summaries in
README.md - any path that is outside the branch's declared ownership manifest
Those are integration surfaces and should normally be updated only when work is merged to main.
When a workstream should feed the integration-only canonical outputs, add a canonical_truth block to its workstreams.yaml entry.
changelog_entrysupplies one assembled## Unreleasedbulletrelease_bumpdeclares the minimum repo version bump for that workstreamincluded_in_repo_versionstaysnulluntil the release manager cuts the version that includes the workstreamlatest_receiptsmaps capability IDs to the live-apply receipt that should appear inversions/stack.yaml
Before a workstream is merged to main, the minimum repository validation command is:
make validateIf a workstream intentionally adds a new validation stage, update the validation script, CI workflow, and the validation runbook in the same change.
Each workstream document should record:
- ADR reference
- branch name
- worktree path
- status
- dependencies
- conflicting workstreams
- shared surfaces
- intended files to touch
- live surfaces to touch
- verification commands
- merge criteria
- the machine-readable manifest lives beside it in
workstreams.yaml
exclusive: only one active workstream may mutate the surfaceshared_contract: multiple workstreams may mutate the surface only through a declared contract idgenerated: the surface is reserved for generators or integration assembly, not branch-local editsread_only: the workstream may depend on the surface but may not modify it
ready: queued and available to pick upin_progress: actively being implemented in a branchblocked: cannot continue until a dependency or external input is resolvedimplemented: repository implementation is complete but not yet treated as merged canonready_for_merge: implementation is complete and waiting for integrationmerged: merged tomainlive_applied: merged and applied to the real platform
Preferred entry point:
make start-workstream WORKSTREAM=adr-0011-monitoringThis uses scripts/create-workstream.sh to:
- read the branch and worktree path from workstreams.yaml
- create the worktree if it does not exist
- attach it to the correct
codex/branch
Use TEMPLATE.md for new workstreams.