Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .specgit.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
version: 1
delivery: issue349
delivery: issue348
context:
kind: branch
branch: feat/349-issue349
branch: feat/348-issue348
issues:
- 349
pr: 372
- 348
pr: 373
5 changes: 4 additions & 1 deletion packages/opencode/src/dag/CONTEXT.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,15 @@ Workflow Orchestration turns one user objective into one durable DAG. Its model-

## Invariants

- One user objective has at most one live DAG; route expansion stays inside that DAG.
- Block composition is the recommended authoring path and is selected heuristically from the objective; custom Blocks/Nodes remain supported.
- Workflow Authoring Check is the only raw source-to-Prepared Workflow Graph authority used by tool actions, CLI, generation, and packaging.
- Parsing, file-only compatibility, strict action decoding, Block compilation, and profile diagnostics are not reimplemented by callers.
- `portable` validation does not load user environment catalogs. `environment` validation reads current catalogs and verifies actual model availability.
- No workflow event or durable mutation occurs before a valid Prepared Workflow Graph exists.

## Conventions

- One user objective has at most one live DAG; route expansion stays inside that DAG (issue #348: a modeling convention enforced by orchestrator guidance — workflow-routing and orchestration-policy — not by the engine; `dag.create` and the workflow tool's start accept a session with a live workflow. The runtime tolerates the violation with bounded consequences: the wake model aggregates across workflows and a goal is blocked by any DAG lease. When two live DAGs share one workspace, the plan block's disjoint-write-set discipline does NOT carry across workflows — authors must keep concurrent workflows on disjoint worktrees or serialize them).
- The model-facing schema contains fields the model owns. Session/Project identity, admission audit state, model assignment, and other runtime-derived fields remain hidden.
- Model-facing graph actions expose only `spec_path`; graph fields live in YAML so provider tool-call serialization cannot turn a nested graph into a string.
- Legacy YAML may be adapted at the file boundary without making legacy fields valid inline input.
Expand Down
Loading