SDLC Status Dashboard

2026-06-24 07:21:54 +00:00

Current Phase
specification
Phases Done
0 / 8
Completion
0%
Re-enter At
requirements
0 completed8 remaining

Pipeline Progress ?
βšͺ not started not yet begun
✏️ draft initial version
πŸ” in review under review
🚧 in progress actively worked on
β›” blocked waiting on dependency
βœ… done completed
⏭️ skipped not applicable

Foundation
✏️Draft: initial version requirementsβšͺNot Started: not yet begun existing-solutionsβšͺNot Started: not yet begun feasibility✏️Draft: initial version specificationβšͺNot Started: not yet begun plan
Build
βšͺNot Started: not yet begun implementationβšͺNot Started: not yet begun testing
Ship
βšͺNot Started: not yet begun documentation
❓ Open QuestionsπŸ“– Vocabulary

Requirements: SessionA durable conversational unit tied to a project directory that preserves replayable history and runtime context. Runtime

Overview

The SessionA durable conversational unit tied to a project directory that preserves replayable history and runtime context. Runtime is the core engine of OpenCode. It preserves durable conversational history while assembling the system context an agent needs to act in its environment, and it executes provider turns with tool settlement and compaction. The V2 design separates durable prompt admission from process-local model execution so sessions survive restarts and can later be clustered.

Stakeholders

Stakeholder Interest
End users Sessions that survive crashes and restart with full history replay
Core team Clean separation of durable admission from execution; no legacy tool loops
Operators Introspectable, replayable sessions; interruption that targets the right process

Functional Requirements

Order rows by priority: Must first, then Should, then May.

ID Priority Requirement
FR-01MustThe system shall persist each user prompt as a durable `session_input` row before scheduling execution. Must The system shall persist each user prompt as a durable session_input row before scheduling execution.
FR-02MustThe system shall promote admitted prompts into session history only at a safe provider-turn boundary. Must The system shall promote admitted prompts into session history only at a safe provider-turn boundary.
FR-03MustThe system shall render a baseline system context at the start of each context epoch and reuse it across restarts. Must The system shall render a baseline system context at the start of each context epoch and reuse it across restarts.
FR-04MustThe system shall make exactly one `llm.stream(request)` call per provider turn and reload projected history before durable continuation. Must The system shall make exactly one llm.stream(request) call per provider turn and reload projected history before durable continuation.
FR-05MustThe system shall execute tool calls through the LocationThe filesystem/workspace scope that bounds sessions, tools, model resolution, and permissions.-scoped tool registry and persist bounded model tool output to history. Must The system shall execute tool calls through the LocationThe filesystem/workspace scope that bounds sessions, tools, model resolution, and permissions.-scoped tool registry and persist bounded model tool output to history.
FR-06MustThe system shall spill oversized tool output to managed tool-output files while retaining a bounded preview in history. Must The system shall spill oversized tool output to managed tool-output files while retaining a bounded preview in history.
FR-07MustThe system shall start a new context epoch with a fresh baseline on completed compaction. Must The system shall start a new context epoch with a fresh baseline on completed compaction.
FR-08MustThe system shall emit durable mid-conversation system messages when context sources change, admitted lazily at the next safe boundary. Must The system shall emit durable mid-conversation system messages when context sources change, admitted lazily at the next safe boundary.
FR-09MustThe system shall interrupt the active process-local ownership chain for a session and treat idle/missing interruption as a no-op. Must The system shall interrupt the active process-local ownership chain for a session and treat idle/missing interruption as a no-op.
FR-10ShouldThe system shall treat steering prompts and queued prompts with distinct promotion semantics at safe boundaries. Should The system shall treat steering prompts and queued prompts with distinct promotion semantics at safe boundaries.
FR-11ShouldThe system shall coalesce prompt wakeups and allow different sessions to run concurrently via the run coordinator. Should The system shall coalesce prompt wakeups and allow different sessions to run concurrently via the run coordinator.

Non-Functional Requirements

Order rows by priority: Must first, then Should, then May.

ID Priority Category Requirement
NFR-01MustSessionA durable conversational unit tied to a project directory that preserves replayable history and runtime context. drains shall be process-local and resumable from durable artifacts after a crash. Must Reliability SessionA durable conversational unit tied to a project directory that preserves replayable history and runtime context. drains shall be process-local and resumable from durable artifacts after a crash.
NFR-02MustContext source rendering shall be deterministic regardless of concurrent producer evaluation. Must Correctness Context source rendering shall be deterministic regardless of concurrent producer evaluation.
NFR-03ShouldProvider-turn allowance shall reset once per batch of promoted inputs, not per input. Should Performance Provider-turn allowance shall reset once per batch of promoted inputs, not per input.
NFR-04ShouldEach drain and compaction shall be traceable through EffectThe functional effect system used pervasively in the core runtime. telemetry. Should Observability Each drain and compaction shall be traceable through EffectThe functional effect system used pervasively in the core runtime. telemetry.

Constraints

  • Prompt admission and execution must remain separate; SessionV2.prompt(...) admits one durable row then schedules advisory SessionExecution.wake.
  • Reusing a session ID adopts the existing session; reusing a prompt message ID reconciles an exact retry only when session, prompt, and delivery mode match.
  • SessionExecution is process-global and session-ID based; no layer may take a session ID into execution plumbing.
  • Local session drains remain process-local until clustering is implemented.

Acceptance Criteria

Every FR and NFR shall have at least one acceptance criterion.

Order criteria by FRs first (sorted by ID), then NFRs (sorted by ID).

  • FR-01MustThe system shall persist each user prompt as a durable `session_input` row before scheduling execution.
    • Given a client posts a prompt to an existing session
    • When the server receives it
    • Then a durable session_input row exists before any provider call is scheduled
  • FR-02MustThe system shall promote admitted prompts into session history only at a safe provider-turn boundary.
    • Given an admitted prompt and an in-progress drain requiring continuation
    • When the runner reaches a safe provider-turn boundary
    • Then the prompt is promoted into session history exactly once
  • FR-04MustThe system shall make exactly one `llm.stream(request)` call per provider turn and reload projected history before durable continuation.
    • Given a provider turn is running
    • When it executes
    • Then exactly one llm.stream call occurs and projected history was reloaded beforehand
  • FR-07MustThe system shall start a new context epoch with a fresh baseline on completed compaction.
    • Given history exceeds compaction thresholds
    • When compaction completes
    • Then a new context epoch begins with a freshly rendered baseline and earlier mid-conversation system messages leave projected model history
  • FR-08MustThe system shall emit durable mid-conversation system messages when context sources change, admitted lazily at the next safe boundary.
    • Given a context source value changes during a drain
    • When the next safe provider-turn boundary is reached
    • Then one combined mid-conversation system message is admitted durably
  • FR-09MustThe system shall interrupt the active process-local ownership chain for a session and treat idle/missing interruption as a no-op.
    • Given an active ownership chain for a session
    • When an interruption is requested
    • Then the active chain is targeted and an idle session yields a no-op
  • NFR-02MustContext source rendering shall be deterministic regardless of concurrent producer evaluation.
    • Given multiple context sources registered with stable keys
    • When the system context is rendered
    • Then the output is identical regardless of producer evaluation order

Conflicts

None identified yet.

Open Questions

  1. How should post-crash continuation recovery retry provider work (explicitly deferred design)?
  2. When will clustered session execution move beyond process-local drains?