merge: combine Pi plan and qualification baseline
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,357 @@
|
||||
# Task: Write Pi runtime hard-cutover implementation spec
|
||||
|
||||
## Identity
|
||||
|
||||
- Task ID: 20260822-pi-runtime-spec-b6e2c9a4
|
||||
- Mode: Feature
|
||||
- Branch: codex/20260822-pi-runtime-spec-b6e2c9a4-pi-runtime-spec
|
||||
- Worktree: D:\Datas\OthersProjects\makelore-pi-runtime-spec-b6e2c9a4
|
||||
- Base commit: fba68e86d93c66d2c50f53d215de76a7c69c97a7
|
||||
- Owner: codex
|
||||
- Status: Ready for integration
|
||||
|
||||
## Scope
|
||||
|
||||
- Convert the approved OpenCode-to-Pi hard-cutover design into a normative,
|
||||
implementation-ready specification.
|
||||
- Define product behavior, architecture and ownership boundaries, runtime and
|
||||
process contracts, data schemas, Host API and Renderer protocols, migration,
|
||||
packaging, performance, observability, verification, and Definition of Done.
|
||||
- Produce an associated dependency ticket graph with explicit ready frontiers,
|
||||
ownership areas, outputs, and acceptance criteria suitable for a later
|
||||
implementation run.
|
||||
- Track task-scoped qualification results against that graph without promoting
|
||||
partial platform evidence into a `PI-000` Go decision.
|
||||
- Apply the user's 2026-08-22 scope amendment: Phase-0 platform qualification is
|
||||
Windows x64 + Linux x64; macOS x64/arm64 is Explicitly Waived / Deferred for
|
||||
`PI-000` only and moves to mandatory `PI-150` release validation.
|
||||
- Apply the user's later 2026-08-22 Provider-risk decision: real external
|
||||
Provider Account/protocol and real-provider two-worker qualification are
|
||||
Explicitly Waived / Accepted Risk, never Pass; retain packaged loopback/
|
||||
provider-shaped evidence with `realTurnVerified=false`.
|
||||
- Documentation only: do not change product code, dependencies, canonical
|
||||
memory, runtime behavior, or external issue/PR state.
|
||||
|
||||
## Intent And Constraints
|
||||
|
||||
- Pi is the sole target coding runtime. Do not retain an OpenCode fallback,
|
||||
feature flag, compatibility Adapter, old Host API facade, or dual runtime.
|
||||
- Preserve `.niancode/project.json`, stable Agent IDs, existing app/protocol/
|
||||
storage compatibility identifiers, and Main ownership of runtime, provider,
|
||||
secret, file, and system access.
|
||||
- Keep Pi wire types and session paths out of Renderer; specify a Makelore-owned
|
||||
Snapshot/Patch contract and deep Main-owned runtime Module.
|
||||
- Treat packaged runtime qualification, packaged provider-shaped compatibility/
|
||||
concurrency/abort, and resource budgets as a blocking Phase-0 gate rather
|
||||
than assumed facts.
|
||||
- Treat `QG-004`/`QG-005` as explicit human waivers, not Pass: the user accepts
|
||||
the unverified real Provider Account protocol compatibility and real
|
||||
two-worker provider overlap/isolation risks, so external credentials are no
|
||||
longer a `PI-000`, `PI-150`, or release blocker.
|
||||
- Make first-Conversation Composer readiness independent of runtime and metadata
|
||||
readiness; distinguish local runtime overhead from Provider latency.
|
||||
- Specify old OpenCode Session handling as backup plus non-continuation, not as
|
||||
compatibility behavior.
|
||||
- The named `implement-spec` skill assumes an existing spec and tickets. For
|
||||
this request, use its execution-graph discipline to create the missing spec
|
||||
and tickets, but do not start implementation, create a PR, or create
|
||||
subagents. The user explicitly prohibited subagents.
|
||||
|
||||
## Project Context Loaded
|
||||
|
||||
- The `maintain-project-docs` Concurrent Task Gate and Planning Gate passed in
|
||||
the isolated worktree above at base `fba68e8`.
|
||||
- The main worktree remains owned by a blocked OpenCode model-switch integration
|
||||
task and contains a separately owned untracked task record; neither is
|
||||
modified here.
|
||||
- Required canonical positioning/current-state/decision/architecture/domain/
|
||||
evidence/reflection/commitment records and the relevant Pi/OpenCode peer task
|
||||
records were read before writing.
|
||||
- No accepted ADR conflicts with the hard-cutover proposal. Current OpenCode
|
||||
behavior is integrated state that a future Pi implementation will supersede.
|
||||
- The canonical project-positioning document remains a placeholder, so product
|
||||
scope is taken only from repository guidance and confirmed current state.
|
||||
- Gate result: Passed.
|
||||
- Human scope decision: on 2026-08-22 the user explicitly accepted deferring
|
||||
macOS x64/arm64 qualification from `PI-000` to `PI-150`. This does not create
|
||||
macOS Pass evidence and does not waive the final cross-platform release gate.
|
||||
- Human Provider-risk decision: on 2026-08-22 the user explicitly accepted the
|
||||
missing real external Provider compatibility, concurrency and isolation
|
||||
evidence. `QG-004`/`QG-005` are Explicitly Waived / Accepted Risk, not Pass;
|
||||
`QG-007` remains Pending / not triggered because a waiver is not a failure.
|
||||
|
||||
## Plan
|
||||
|
||||
1. Translate the detailed design into normative requirements and stable product
|
||||
contracts without copying vendor wire types into public interfaces.
|
||||
2. Define schemas, lifecycle/state rules, event mapping, migration, packaging,
|
||||
performance budgets, failure behavior, and traceable acceptance criteria.
|
||||
3. Build a dependency ticket graph whose initial ready frontier begins with the
|
||||
packaged Pi qualification gate and whose terminal ticket proves zero
|
||||
OpenCode runtime residue.
|
||||
4. Validate cross-references, dependency closure, Markdown structure, task
|
||||
ownership, and project-documentation gates.
|
||||
|
||||
## Outcome
|
||||
|
||||
- Added the normative implementation specification
|
||||
`.project-docs/10-decisions/proposals/20260822-pi-runtime-spec-b6e2c9a4__pi-runtime-cutover-spec.md`.
|
||||
- Added the associated execution graph
|
||||
`.project-docs/10-decisions/proposals/20260822-pi-runtime-spec-b6e2c9a4__pi-runtime-cutover-tickets.md`.
|
||||
- The Spec defines 134 unique normative requirements across 19 groups for the
|
||||
hard cutover, product behavior, Main/Renderer boundary, schema v2, Provider
|
||||
and managed resources, Pi process/RPC/worker pool, extensions, Snapshot/Patch
|
||||
event projection, Host API, changes/browser, migration, packaging,
|
||||
observability, performance, recovery, verification, and Definition of Done.
|
||||
- The ticket document defines 18 bounded tickets and 31 dependency edges. The
|
||||
graph is acyclic, its initial ready frontier is only `PI-000`, and every
|
||||
ticket includes dependencies, ownership, required work, acceptance, and
|
||||
verification.
|
||||
- Packaged Pi qualification is a blocking gate. If RPC, packaged provider-shaped
|
||||
contract/concurrency/abort, resource use, or cold/warm budgets fail, the
|
||||
implementation must stop and amend the architecture before product migration;
|
||||
it cannot add an OpenCode fallback or dual RPC/SDK production path. Missing
|
||||
explicitly waived real external Provider evidence is not a confirmed failure.
|
||||
- The first-Conversation correction is a hard UX requirement: project/partner/
|
||||
Conversation creation is local-only, Composer editability is independent of
|
||||
runtime/metadata readiness, and local preparation has bounded, observable
|
||||
failure instead of minute-long disabled state.
|
||||
- No product code, dependencies, external tickets, PR, canonical project memory,
|
||||
or runtime behavior changed. No subagents were created.
|
||||
- Synchronized the first `PI-000` implementation result from task
|
||||
`20260822-pi-runtime-qualification-c52e8a14` into the ticket graph. The
|
||||
final planning state is Done with explicit waivers: the exact Pi 0.84.2 identity,
|
||||
Windows x64 and WSL2 Linux x64 workspace/staged/controlled packaged RPC/
|
||||
session/process/closure behavior, four-protocol packaged loopback,
|
||||
provider-shaped overlap/abort and local budgets have evidence. Real external
|
||||
turns for all four protocols remain missing and are Accepted Risk, not Pass.
|
||||
- Synchronized the controlled Electron Builder `app.asar` and four-protocol
|
||||
loopback results. The packaged seam resolves all 130 Windows-applicable
|
||||
production packages and six runtime assets, passes cold/warm budgets and
|
||||
leaves no process residue. The loopback matrix proves request/SSE/image/
|
||||
header/model/environment-credential plumbing plus provider-shaped overlap
|
||||
and abort isolation, but is explicitly not real Provider Account evidence.
|
||||
- Synchronized the WSL2 Ubuntu 24.04 Linux x64 evidence. Workspace, staged
|
||||
closure, and controlled Electron Builder `dir/app.asar` all meet the local
|
||||
cold/warm budgets; the controlled artifact resolves 131 applicable packages,
|
||||
six runtime assets and unpacked native assets, and leaves no Pi process
|
||||
residue. Linux packaged loopback overlap was 292/290/277/288 ms for the four
|
||||
protocols, with exactly four POSTs per protocol and abort isolation passing.
|
||||
- Interpreted the accepted `QG-002` wording narrowly and explicitly: it requires
|
||||
a Linux packaged app seam but does not state a non-WSL kernel, compositor,
|
||||
AppImage, or deb requirement. The WSL2 controlled artifact therefore counts
|
||||
as PI-000 Linux seam evidence with a recorded limitation; final Linux release
|
||||
formats remain `PI-150` evidence and are not claimed here.
|
||||
- Synchronized the macOS packaged-resource preflight defect and fix. The old
|
||||
artifact-side derivation would resolve
|
||||
`<app>/Contents/MacOS/resources/app.asar`; the actual location is
|
||||
`<app>/Contents/Resources/app.asar`. The outer platform-aware
|
||||
`packagedResourcesDirectory()` now computes the directory once and passes it
|
||||
through `PI_PROBE_RESOURCES_DIRECTORY`, so the closure inspector no longer
|
||||
derives it independently.
|
||||
- Kept macOS explicitly unqualified. A darwin path test and a Windows actual
|
||||
controlled-packaged regression establish the fix and absence of a Windows
|
||||
regression, but neither is a macOS x64/arm64 execution sample.
|
||||
- Applied the user's 2026-08-22 amendment: macOS x64/arm64 is now Explicitly
|
||||
Waived / Deferred for `PI-000`, not Pass. Workspace/staged/controlled
|
||||
packaged/loopback/metrics move to `PI-150`, where both architectures remain
|
||||
mandatory. The user accepted the risk of later packaging/native/resource/
|
||||
performance defects and release-stage rework; the risk was not eliminated.
|
||||
- Clarified the pre-existing artifact wording: `PI-000` proves the controlled
|
||||
packaged qualification artifact on Windows/Linux, while `PI-150` owns final
|
||||
product artifacts. The controlled probe is not the final bundler.
|
||||
- After the later Provider waiver and a full PI-000/DAG audit, marked `PI-000`
|
||||
Done with explicit waivers and advanced the exact Ready Frontier to `PI-010`,
|
||||
`PI-020`, and `PI-030`. The published shrinkwrap/devDependencies mismatch
|
||||
remains an explicit `PI-030` permanent-staging constraint rather than final
|
||||
packaging proof; it is work owned by the now-ready ticket, not an unresolved
|
||||
PI-000 gate.
|
||||
- Bound the final planning documents to the verified PI-000 implementation
|
||||
baseline `2bc423ebc58589307442ebdaf1c81d83ec9dc2d5` (`feat: qualify Pi
|
||||
runtime cutover foundation`). The implementation task is
|
||||
`ready_for_integration`, its worktree is clean, and the PI-010 task
|
||||
`20260822-pi-conversation-contracts-a61d9c42` has been created from that exact
|
||||
commit with status `planning`.
|
||||
- Corrected two stale planning statements before final commit: the Spec now
|
||||
records the user's implementation authorization instead of saying it awaits
|
||||
acceptance, and PI-040 now verifies Provider catalog behavior with packaged
|
||||
provider-shaped fixtures rather than making waived real-account prompts a
|
||||
hard acceptance requirement.
|
||||
|
||||
## Verification
|
||||
|
||||
- Read the complete source design and the relevant Pi evaluation, concurrency,
|
||||
message-mapping, first-session diagnosis, and current OpenCode integration
|
||||
task records after passing the planning gate.
|
||||
- Requirement audit: 134 definitions, 134 unique IDs, no duplicate definitions;
|
||||
all 19 requirement groups appear in the ticket traceability section.
|
||||
- Ticket graph audit: 18 declared nodes, 31 edges, all graph nodes have matching
|
||||
detail sections, no missing dependencies, and a complete acyclic topological
|
||||
order from `PI-000` through `PI-160`.
|
||||
- Ticket shape audit: every ticket contains Objective, Dependencies, Owns,
|
||||
Required work, Acceptance, and Verification.
|
||||
- Markdown code fences are balanced: 34 in the Spec and 4 in the ticket graph.
|
||||
- Placeholder scan found no unfinished TODO/TBD/template markers; the literal
|
||||
`todo/todos` occurrences only describe intentional removal of the old API.
|
||||
- Trailing-whitespace/final-newline check passed for all three owned files.
|
||||
- Task-scoped `git diff --no-index --check` produced only expected LF-to-CRLF
|
||||
notices and no whitespace errors.
|
||||
- `check_project_docs.py`: passed.
|
||||
- `check_doc_drift.py --task-id 20260822-pi-runtime-spec-b6e2c9a4`: passed and
|
||||
reported only the two task-scoped proposal files and this task record.
|
||||
- Product tests were intentionally not run because this task changes only
|
||||
task-scoped documentation and no product behavior.
|
||||
- Read the complete source task record and task-scoped evidence for
|
||||
`20260822-pi-runtime-qualification-c52e8a14`. Its Markdown status is
|
||||
`Completed — Done with explicit waivers`, the ownership registry reports
|
||||
`ready_for_integration`, and its clean worktree is at verified commit
|
||||
`2bc423ebc58589307442ebdaf1c81d83ec9dc2d5`.
|
||||
- Rechecked the qualification result against `PI-000` Acceptance and Stop
|
||||
condition: every non-waived requirement is satisfied by Windows/WSL2-Linux
|
||||
controlled packaged evidence. Real Provider Accounts/turn concurrency remain
|
||||
unverified Accepted Risk; macOS remains unqualified and mandatory at
|
||||
`PI-150`.
|
||||
- Reviewed the controlled packaged evidence: 5 cold samples reported
|
||||
p50/p95/max 668/682/682 ms, 5 warm samples 660/663/663 ms, 10 RSS samples
|
||||
138404/141320/141320 KiB, and exit 16/18/18 ms. Session/reopen/failure/local
|
||||
overlap/abort/stdin-close passed with no controlled artifact or Pi RPC
|
||||
process residue.
|
||||
- Reviewed all four packaged loopback protocol contracts: each made exactly
|
||||
four POSTs
|
||||
and passed base URL/path, protocol credential header, custom header, model,
|
||||
PNG image, two-worker settled overlap, one-worker abort isolation, and clean
|
||||
stdin close. The final tightened rerun reported overlap of
|
||||
304/309/290/297 ms. No external Provider request or cost occurred, so the
|
||||
normative `QG-004` and `QG-005` are Explicitly Waived / Accepted Risk, not
|
||||
Pass. Under the user-amended Phase-0 platform scope, `QG-002`, `QG-003`, and
|
||||
`QG-006` are Pass for Windows x64 + Linux x64; macOS remains Explicitly
|
||||
Waived / Deferred, not Pass.
|
||||
- Verified that the implementation report fields now match this amended
|
||||
planning contract. `buildMissingEvidence()` reports Phase-0 aggregation as
|
||||
Windows x64 + Linux x64, labels macOS x64/arm64 as user-deferred to `PI-150`,
|
||||
and retains the four missing real-provider protocol samples. The focused test
|
||||
asserts that exact wording; the final implementation task records 9 focused tests,
|
||||
scoped ESLint, typecheck, and a 1-sample actual probe as passing. The retained
|
||||
missing samples and `realTurnVerified=false` now document Accepted Risk rather
|
||||
than a blocker. The 18-node/31-edge DAG is unchanged; `PI-000` Done unlocks
|
||||
`PI-010`, `PI-020`, and `PI-030`.
|
||||
- Recorded the Provider URL rule discovered by the fixture: Anthropic receives
|
||||
the Provider root and appends `/v1/messages`; OpenAI-style protocols receive
|
||||
a `/v1` base and append `chat/completions` or `responses`.
|
||||
- Reviewed the Linux 5+5 samples: workspace cold/warm p95 853/437 ms, staged
|
||||
428/440 ms, controlled packaged 545/569 ms; respective RSS p95 values were
|
||||
170388/175956/181928 KiB and exit p95 values 8/8/7 ms. All 131 applicable
|
||||
Linux packages and six runtime assets resolved, including unpacked native
|
||||
assets, with no residual artifact/Pi RPC process.
|
||||
- Reviewed the Linux packaged loopback matrix: exactly four POSTs per protocol,
|
||||
overlap 292/290/277/288 ms, correct path/auth/custom-header/model/image, abort
|
||||
isolation and clean exit. The accompanying 7 tests, scoped ESLint, typecheck,
|
||||
and 1-sample integration probe passed in the implementation task.
|
||||
- Corrected the planning QG status table to use the normative Spec numbering:
|
||||
`QG-003` is dependency closure, `QG-004` Provider Accounts, `QG-005` real
|
||||
provider concurrency, `QG-006` metrics, and `QG-007` the SDK-switch stop
|
||||
condition. The implementation evidence's task-local labels are retained only
|
||||
as source context and do not redefine the Spec.
|
||||
- Reviewed the portability-fix verification: 8 focused tests passed, including
|
||||
darwin executable → `Contents/Resources`; scoped ESLint and typecheck passed.
|
||||
The post-fix Windows 1-sample controlled packaged regression reported cold/
|
||||
warm ready 650/641 ms, with all 130 applicable packages, six runtime assets,
|
||||
and unpacked native assets present.
|
||||
- Reviewed the execution-environment inventory: there is no repository CI
|
||||
definition, macOS runner/SSH host, GitLab runner CLI, or Provider credential
|
||||
environment variable. The missing Provider environment is now Accepted Risk
|
||||
and non-blocking; the missing macOS environment remains a deferred `PI-150`
|
||||
release gap.
|
||||
- Post-sync graph audit still reports 18 nodes, 31 edges, only `PI-000` at
|
||||
indegree zero, and a complete acyclic topology; no dependency edge changed.
|
||||
- Scope-amendment audit preserved all 18 nodes and 31 edges. The Ready Frontier
|
||||
after `PI-000` Done is exactly `PI-010`, `PI-020`, `PI-030`; all other nodes
|
||||
retain at least one unfinished dependency.
|
||||
- Post-amendment requirement audit still reports 134 definitions, 134 unique
|
||||
IDs, and no duplicates. The ticket audit reports 18 Mermaid nodes, 18 detail
|
||||
sections, 31 edges, only `PI-000` at indegree zero, and all 18 nodes visited
|
||||
by the acyclic topology check.
|
||||
- Post-amendment contradiction scan found no remaining statement that treats
|
||||
missing macOS evidence as a `PI-000` blocker or Pass. The Spec and tickets
|
||||
consistently make the waiver Phase-0-only and `PI-150` release-blocking.
|
||||
- Provider-waiver audit found no remaining proposal statement requiring a real
|
||||
external Provider Account/credential to close `PI-000` or release. The exact
|
||||
accepted risks are auth/endpoint/proxy/rate-limit/response variance; real
|
||||
base URL/header/environment credential/model/image compatibility; real
|
||||
provider concurrency/serialization/limiting; and cross-worker abort/event/
|
||||
session/model/credential isolation. `QG-004`/`QG-005` are never labeled Pass,
|
||||
and `QG-007` remains Pending / not triggered.
|
||||
- PI-000 closure audit covered all eight Required work items plus Acceptance and
|
||||
Stop condition. Items 1/2/3/4/7/8 pass on the revised Windows/Linux scope;
|
||||
items 5/6 retain passing packaged loopback/provider-shaped substitute smoke
|
||||
and explicit real-Provider Accepted Risk. No third incomplete item or
|
||||
confirmed failure remains, so Done with explicit waivers is consistent with
|
||||
the ticket contract.
|
||||
- Post-sync `check_project_docs.py` and
|
||||
`check_doc_drift.py --task-id 20260822-pi-runtime-spec-b6e2c9a4` passed;
|
||||
trailing-whitespace inspection reported zero findings.
|
||||
- Re-ran both project-documentation gates after the user-authorized scope
|
||||
amendment; both passed against only the two task-scoped proposal files and
|
||||
this task record. Markdown fences remained balanced and trailing-whitespace
|
||||
inspection reported zero findings.
|
||||
- Final Provider-waiver audit preserved 134 unique requirements across all 19
|
||||
traced groups and the unchanged 18-node/31-edge acyclic DAG. Recomputing
|
||||
readiness with only `PI-000` Done yields exactly `PI-010`, `PI-020`,
|
||||
`PI-030`; every other ticket retains an unfinished predecessor. Ticket-shape,
|
||||
QG-state, explicit-risk, macOS-release-gate, hard-cutover, cross-reference,
|
||||
stale-blocker and formatting assertions all passed.
|
||||
- Verified the PI-000 implementation commit metadata, parent and changed-file
|
||||
set. Commit `2bc423e` is based on the planning baseline `fba68e8` and contains
|
||||
only the PI-000 dependency/lockfile, probe/test, task-record and evidence
|
||||
changes expected from the qualification ticket.
|
||||
- Verified the PI-010 ownership handoff through the task registry and worktree:
|
||||
task `20260822-pi-conversation-contracts-a61d9c42` is based exactly on
|
||||
`2bc423e`, remains in `planning`, and its only untracked file is its own task
|
||||
record. The planner's three-document write set does not overlap PI-010's
|
||||
product-code ownership.
|
||||
|
||||
## Follow-ups
|
||||
|
||||
- Continue `PI-010`, which has entered planning from the verified PI-000
|
||||
baseline; `PI-020` and `PI-030` remain the other eligible Ready Frontier
|
||||
tickets. The dependency-qualified frontier remains exactly `PI-010`,
|
||||
`PI-020`, `PI-030` until a later status update recomputes it.
|
||||
Real external Provider fixtures for `openai-completions`, `openai-responses`,
|
||||
`anthropic-messages`, and `openrouter` are optional non-blocking risk-reduction
|
||||
work; if collected, retain `realTurnVerified=false` until actual evidence
|
||||
exists and never retroactively relabel the waiver as Pass.
|
||||
- At `PI-150`, obtain the deferred macOS x64 and macOS arm64 evidence. For each
|
||||
architecture, use an independent checkout and frozen install; run workspace
|
||||
5+5, staged 5+5, controlled packaged 5+5, packaged loopback, closure/native/
|
||||
resource checks, metrics, and final target artifact verifier/smoke. Do not
|
||||
reuse x64/arm64 `node_modules`, Electron downloads, or artifacts. Missing
|
||||
either architecture blocks cross-platform release-ready status.
|
||||
- Treat non-WSL Linux, compositor, AppImage/deb, and the final product packaging
|
||||
wiring as `PI-150` release evidence unless the accepted PI-000 Spec is amended
|
||||
to require them earlier; do not imply the controlled WSL2 artifact proves
|
||||
those release boundaries.
|
||||
- If a non-waived packaging, packaged provider-shaped contract/concurrency/
|
||||
abort-isolation, image-serialization, or budget gate fails, return to the
|
||||
planner for the specified SDK-in-Electron-utility-process amendment; do not
|
||||
add an OpenCode fallback or RPC/SDK dual production path. If deferred macOS
|
||||
validation fails at `PI-150`,
|
||||
block release and perform the required packaging/runtime/architecture rework;
|
||||
the Phase-0 waiver cannot be reused as a release waiver.
|
||||
- If old OpenCode chat history must remain readable, create a separate exporter
|
||||
in the last OpenCode-containing release; do not add an OpenCode reader/runtime
|
||||
to the Pi release.
|
||||
|
||||
## Promotion Candidates
|
||||
|
||||
- Accepted ADR: Pi is Makelore Code's sole runtime and no OpenCode fallback is
|
||||
shipped.
|
||||
- Canonical architecture: one Main-owned worker per active/warm Conversation,
|
||||
a product-only `CodingConversationRuntime` Interface, and Renderer-only
|
||||
Snapshot/Patch state.
|
||||
- Domain rules: product Conversation IDs, structured model selections, explicit
|
||||
unresolved migration state, same-project mutation lease, and old OpenCode
|
||||
Session backup/non-continuation policy.
|
||||
- Success criteria: first-Conversation Composer readiness, cold/warm runtime and
|
||||
prompt acceptance budgets, independent two-Conversation workers with packaged
|
||||
provider-shaped overlap/abort, explicit real-Provider Accepted Risk,
|
||||
subagent caps, and zero residual OpenCode runtime in source/package/artifact.
|
||||
Reference in New Issue
Block a user