Repository navigation
Conversation
Read legacy formats and write schema-2 envelopes while preserving pending continuations, opaque replay and fail-closed driver skew handling. Co-authored-by: Mecatl <noreply@mecatl.dev>
Approved engine-first delivery planArchived: 2026-10-18. Applies to review stack #2404 → #2405 → #2406 → #2407; exact branch/head/baseline identities below. Local plan paths are provenance only, not remote links. This is the full selected split/qualification plan; verification tasks below describe intended checks, not implicit pass claims. Actual results and remaining gates are recorded separately in the PR bodies. Engine-first identity deliverySlug: 2117-engine-identity Immutable delivery baseline and branchesBase branch: main; recorded start commit f9a3297. Remote main observed at c4a043f (#2402, TUI/docs only); no automatic rebase. Host requires current-main merge qualification before merge.
These bases organize review, not new module dependencies: providers and adapters both depend directly on engine. The host source tree exactly equals the retained assembled qualification candidate (tree 3763ffe56e1ba21bab363d3ad416c5e4a50077d7). The root checkout remains on the engine review branch; assembled/preparation worktrees stay under .scratch/2117-engine-split/. Approved outcome and authorityJoe approved on 2026-10-18: prepare, commit, push and open four draft PRs: engine; changed providers; persistence adapters; host/contracts/required client integration. Humans alone merge. No tags/releases, deployment, invented dependency pins, CI bypasses or new TUI presentation work. Preserve the assembled candidate in a local worktree under .scratch and keep the engine review branch at the main checkout root. Source boundary and contracts
API compatibilityThis is the already-approved breaking pre-v1 Go API minor, not additive-only and not /v2 import migration. Engine APIs change invocation identity, provider-neutral DTOs and private replay ownership. The engine PR does not itself change protobuf fields/server major, but carries engine-originated observable semantics that the final host PR exposes as approved Harness API major 2. Public opaque archive reasoning fields are removed/reserved in that final coordinated host/client change; readable reasoning/text/media/phase remain. Snapshot/event writers advance to sessnap-json/2 and eventlog-json/2; upgraded readers accept /1 and /2. Drain old readers/writers, upgrade both decoding drivers, then harness/clients; no mixed writers or downgrade after new writes. Exact module release versions remain unselected and publication requires separate authority. Tasks and evidence
Merge/release readinessReviewable source is not merge/release-ready. Before the engine merge, dependent source must be reviewable, assembled behavior qualified and release/pin order explicit. Real engine publication precedes provider/adapter pins and independent releases, then final host/integration pins and standalone/publication qualification. Existing required checks are not waived: Joe accepted review drafts with accounted-for consumer failures; any intermediate merge still needs a separate explicit maintainer decision. Release latency cannot be eliminated. Browser/image qualification remains unclaimed unless actually completed; final host draft must disclose inherited limitations. Verification ownershipThe directing agent owns split, integration, PR publication and evidence. A focused writable worker adds provider composition tests only in the retained assembled worktree and runs narrow checks. New tests get independent incremental panel review. Full Go gates use 1800-second outer limits; other full gates 600 seconds. Heavy suites run serially. No HANDOFF update. |
Integrate the revised engine/provider stack without rewriting history. Exercise raw JSONL and Redis snapshot normalization, repeat loads and save/reload stability while preserving format rejection. Co-authored-by: Mecatl <noreply@mecatl.dev>
Scope
Review stack: #2404 engine → #2405 providers → #2406 adapters → #2407 host. Full approved delivery plan.
Third draft in the #2117 canonical-identity review stack. Base:
impl/2117-identity-providers; the diff contains onlyadapters/**(21 files). The review stack is linear for source review; the actual module dependency is engine → adapters, not providers → adapters.No new persistence service, sidecar replay store, general reconciliation, durability policy or host/client implementation.
API compatibility
Consumes the already-approved breaking pre-v1 engine minor, with adapter compatibility classified in
adapters/CHANGELOG.md. Real engine release/pin reconciliation is required before standalone/publication qualification; no invented future versions.Stored data/driver contract: write
sessnap-json/2andeventlog-json/2; upgraded readers accept/1and/2. Decoding drivers must understand the new identity schema; opaque drivers preserve payload+format bytes. Format rejection precedes backend mutation. Preserve valid old continuations/evidence; ambiguous pending identity remains inspectable but cannot grant execution/learning authority.Upgrade: drain old readers/writers and upgrade both independently configured snapshot and event decoding drivers before new harness/client writers. Upgraded readers may return new-format data. No mixed writers or downgrade after new-format writes; do not delete durable records/cursors as a workaround. Existing opaque driver service marker/proto routes do not need a new major merely for envelope-format values.
No Harness protobuf/HTTP/advertised-major change in this diff. The final host/client PR exposes approved Harness API major 2; driver envelope compatibility and Go source compatibility are separate assessments.
Verification
Fresh complete assembled qualification passed on 2026-10-18, Go 1.27.2, Linux/amd64, with no uncommitted source changes:
task --concurrency 3 test:workspace:race— all 12 modules (including grpcdriver/JSONL/Redis tests) plus offlinemicrovm_devproof.task lint— all module checks, 0 issues.task docs,task site:build, offlinego run ./cmd/mecademo(tool/result, ask/approval/result), andtask test:module-metadata; generated/tracked files unchanged.Workspace selection uses the assembled checkout's absolute
go.workand existing unchanged dependency metadata. The tested tree3763ffe56e1ba21bab363d3ad416c5e4a50077d7equals public host-stack headda27200c3, with the same adapter/engine source as this PR. Original implementation/rebase reviews apply to unchanged production code. The engine-only source also passed standalone build/test, engine race and API freshness.Workspace success is evidence for the assembled code, not public dependency closure. No live Redis/service, provider calls, release or deployment was used for qualification.
Publication and expected red CI
Existing engine pins are intentionally unchanged until an authorized engine release. New adapter source cannot pass its workspace-disabled declared-dependency checks against old engine APIs/codecs; root consumer compilation also remains broken before final host propagation. This is the documented dependency-publication gap, not a required-check waiver. Investigate unrelated failures normally.
Before merging/publishing: human-reviewed/main-reachable engine release (separate release authorization) → update adapters to the real engine tag and tidy the affected module → standalone build/test/race and external-consumer/publication qualification → independently publish adapters → final host/integration real pins. No PR-head pseudo-version, permanent replacement, skipped tests or changed CI rules.
Draft for source review, not merge/release-ready. Intermediate merging with red required checks still needs an explicit maintainer decision. No releases, deployments or merges performed.