SSOT
This issue is the single source of truth for the ourocode terminal-native orchestration vision.
Issue #2 is closed as superseded because it framed the work too narrowly around one plugin-dispatch path and contained implementation-specific artifact assumptions. Future planning should start here, then split into focused implementation issues only after the product boundary and primitives are clear.
Vision
ourocode should become the terminal-native orchestration layer for Ouroboros work, not a thin command launcher and not a second implementation of Ouroboros internals.
The user should be able to stay in one focused TUI while ourocode:
- understands intent from natural language and direct
ooo ... prompts,
- routes work to the right Ouroboros capability, plugin, child session, or workflow,
- keeps trust and permission boundaries visible,
- captures generated artifacts, handoffs, evidence, and review outputs,
- shows progress, blocked states, and next actions in a durable session model,
- lets the user continue, replay, inspect, or cancel work without dropping to shell glue.
In short: Ouroboros owns execution semantics; ourocode owns the operator experience.
Product boundaries
ourocode should own:
- Prompt intake and intent routing for interactive terminal use.
- Child panes, progress surfaces, status, and recoverable session state.
- Human-readable continuation UX after tools produce Seeds, handoffs, evidence, or review artifacts.
- Safe bridges into Ouroboros MCP, CLI, plugin, and child-session APIs.
- Clear rendering of trust, permission, ambiguity, failure, and blocked states.
- A durable orchestration timeline that can be replayed or recovered.
ourocode should not own:
- Plugin trust policy or firewall semantics.
- Arbitrary shell execution assembled from model output.
- A duplicate plugin registry, marketplace, or package manager.
- Core Ouroboros workflow definitions that belong in Ouroboros itself.
- Hidden automatic permission grants.
- Plugin-internal storage conventions or implementation paths.
Why this matters
Without this product boundary, each new capability can become a one-off integration: core workflows, plugins, Superpowers handoffs, child sessions, review loops, release flows, and future agents all risk growing separate routing and rendering paths.
A clear vision lets us build fewer, stronger primitives:
- one intent routing model,
- one capability resolution and preflight model,
- one invocation/result envelope,
- one artifact and continuation model,
- one trust/permission presentation layer,
- one durable session timeline.
Core primitives
-
Intent routing
- Direct commands and natural-language prompts should resolve through the same routing boundary.
- Ambiguous intent should produce clarification or an explicit blocked state, not guessing.
-
Capability resolution
- Installed capabilities should be resolved through authoritative Ouroboros surfaces where possible.
- Resolution should expose identity, command metadata, trust state, expected inputs, expected outputs, and risk class.
- Discovery is read-only and must never install, trust, or execute by itself.
-
Preflight
- Before execution,
ourocode should show what capability will run, why it matched, what trust boundary applies, and what side effects are expected.
- Missing trust should be actionable but non-destructive.
-
Invocation/result envelope
- Core workflows, plugins, and child sessions should report through a shared envelope for status, output, artifacts, errors, and continuation hints.
- This should prevent each integration from inventing its own rendering and recovery path.
-
Artifacts and continuations
- Generated Seeds, handoffs, reports, logs, and evidence should become first-class session artifacts.
- Continuation into
ooo run or another workflow should be suggested, confirmed, or blocked according to explicit policy.
- Artifact handling should rely on stable runtime/plugin artifact contracts, not internal storage paths.
-
Durable session timeline
- User intent, routing decisions, trust blocks, invocations, artifacts, continuation choices, and verification signals should survive refresh and recovery where possible.
- The user should be able to inspect how a workflow got from prompt to outcome.
Suggested milestone breakdown
- Define and document the product boundary in
docs/.
- Extract or align code around the shared primitives above where the current implementation is already drifting.
- Add a capability resolution/preflight path for the first trusted workflow surface.
- Normalize invocation/result reporting across at least one core workflow and one plugin or child-session path.
- Surface generated artifacts and continuation choices as session objects.
- Add replay/recovery support for the orchestration timeline.
- Validate the direction through implementation PRs, not standalone vision text only.
Acceptance criteria
- A short vision document exists in
docs/ describing this product boundary and linking back to this issue as the SSOT.
- Future workflow/plugin integrations can point to the same routing, resolution, result, artifact, continuation, trust, and timeline concepts.
- Implementation issues reference this issue and stay scoped to one primitive or vertical slice.
- At least one implementation PR updates or validates the vision against real code rather than leaving it as standalone product text.
- No implementation issue depends on plugin-internal storage paths as a public contract.
Non-goals
- Rewriting the current TUI architecture in one large PR.
- Designing a marketplace or plugin catalog.
- Moving Ouroboros execution semantics into
ourocode.
- Auto-installing, auto-trusting, or silently escalating plugin permissions.
- Treating one plugin workflow as a hard-coded special case.
Supersedes
SSOT
This issue is the single source of truth for the
ourocodeterminal-native orchestration vision.Issue #2 is closed as superseded because it framed the work too narrowly around one plugin-dispatch path and contained implementation-specific artifact assumptions. Future planning should start here, then split into focused implementation issues only after the product boundary and primitives are clear.
Vision
ourocodeshould become the terminal-native orchestration layer for Ouroboros work, not a thin command launcher and not a second implementation of Ouroboros internals.The user should be able to stay in one focused TUI while
ourocode:ooo ...prompts,In short: Ouroboros owns execution semantics;
ourocodeowns the operator experience.Product boundaries
ourocodeshould own:ourocodeshould not own:Why this matters
Without this product boundary, each new capability can become a one-off integration: core workflows, plugins, Superpowers handoffs, child sessions, review loops, release flows, and future agents all risk growing separate routing and rendering paths.
A clear vision lets us build fewer, stronger primitives:
Core primitives
Intent routing
Capability resolution
Preflight
ourocodeshould show what capability will run, why it matched, what trust boundary applies, and what side effects are expected.Invocation/result envelope
Artifacts and continuations
ooo runor another workflow should be suggested, confirmed, or blocked according to explicit policy.Durable session timeline
Suggested milestone breakdown
docs/.Acceptance criteria
docs/describing this product boundary and linking back to this issue as the SSOT.Non-goals
ourocode.Supersedes