Canonical specification: SPEC-v2.md
OutcomeGraph is the Git-native artifact truth for replayable software. Steward is the sidecar loop that keeps artifacts current.
From repo root:
og initOptional always-on setup:
og autopilot initAfter meaningful code changes:
og sync --recover-stale-lock
og status --verbose
og verify --changed
og replay --changedStandalone verify and replay now refresh exported summaries automatically, so og drift
should remain clean after either command when policy and verification both pass.
Use og explain to inspect what changed, why, and evidence pointers.
You can also discover per-command contracts at any time:
og --help
og sync --help
og daemon --help
og daemon run --help
og schema
og describe syncHeadless defaults for CI/agents:
export OG_DEFAULT_OUTPUT=json
export OG_DEFAULT_PROFILE=analyze
export OG_DEFAULT_MODE=observeOptional path overrides:
export OG_CONFIG_PATH=.outcomegraph/config.yaml
export OG_POLICY_PATH=.outcomegraph/policy.yaml
export OG_CODEX_HOME="$HOME/.codex"Precedence is CLI flags > env vars > .outcomegraph/config.yaml.
og optimize prompts compares two prompt files using an evaluation dataset and writes an optimization result under .outcomegraph/datasets/.
Example:
og optimize prompts \
--dataset .outcomegraph/datasets/bugfix-llm-eval.json \
--baseline .outcomegraph/datasets/baseline.txt \
--candidate .outcomegraph/datasets/candidate.txt \
--metric contains \
--min-improvement 2Append --approve to write an active prompt pack at:
.outcomegraph/datasets/<dataset-id>-prompt-pack.json
--approve is required for activation.
The dataset format is:
{
"schema_version": 2,
"artifact_type": "eval_dataset",
"id": "bugfix-llm-eval",
"cases": [
{
"id": "q-001",
"input": "What is the failure mode here?",
"expected_contains": ["checks and retries"]
}
]
}When autopilot is enabled, Steward runs the local quality pass from pre-commit
and og sync from hooks/daemon/CI.
og status is the primary check for freshness, pending work, and verification state.
Default mode is safe-by-default (observe):
- updates
.outcomegraph/** - updates generated agent-facing exports
- does not edit product code unless explicitly opted into broader modes
Tracked in Git by default (curated control plane):
- constitutions
- config/policy defaults
- generated operator guidance contract (
.outcomegraph/export/AGENTS.md)
Generated locally and ignored by default:
- runtime churn:
work,cache,events,objects,traces - regenerated canon:
capsules,refs,decisions,claims,certificates,materials.lock, non-guidance exports
For details, contracts, schemas, and architecture, use SPEC-v2.md.
Run this sequence as a release-readiness gate:
uv run og status --json
uv run og sync --json
uv run og verify --changed --json
uv run og driftExpected outputs before rollout:
status: ok
sync: status: ok with steps [distill, apply, verify, export]
verify: status: ok with steps [verify, export] and verified_capsules present
drift: no blocking policy or certificate regressions
Observed rollout evidence (local examples):
.outcomegraph/events/sync-20260305T082953Z-8485041f63.json.outcomegraph/events/sync-20260305T092058Z-9008c47e88.json.outcomegraph/events/verify-20260305T092059Z-a1789787d4.json
Known migration blocker discovered during dogfood:
.outcomegraph/materials.lockmissingartifact_typecaused validation errors.- Fix per
MIGRATION_GUIDE.mdand rerun the full sequence.