Implementation Notes: Operate through one domain-first Effect v4 architecture
Implementation Notes: Operate through one domain-first Effect v4 architecture
Execution mode
Parallel breadth-first waves with disjoint workspace ownership and parent-owned readonly convergence gates.
2026-07-18 Execution-graph correction
T2's six focused public-root contracts and the 15-test/133-assertion repository contract were green, but the original T2 gate also required full workspace typechecks and builds. Those commands exercise beta.98 migration work explicitly owned by T3-T8, so they made T3 depend on work that T3 and later waves could not start. No product decision or task scope changed.
The corrected breadth-first graph uses focused owned gates for T2-T4. T5-CONTRACT is the first isolated full-package gate. T6 owns full CLI tests/typecheck/build; T7 owns full API/auth/db gates; T8 owns full backoffice/scaffold gates; T9 remains the repository-wide convergence gate. T2 and every T2 slice are therefore complete from their recorded focused proof, and T3 is the next planned wave. The previous full-check failures remain useful evidence of intentionally unfinished later-wave migration, not blockers on the already-proven T2 architecture level.
Independent plan review then tightened execution readiness without changing scope: T3 and T4 now have concrete slice-level TDD targets and expected failures; T5 consumer slices and T7 auth/database slices override their family TDD target; T6 owns only its CLI-local full gate; and the explicit readonly T6-8-GATE reruns cross-repository architecture contracts before T9-CLOSEOUT-TEST. The final dependency chain is T6/T7/T8, then T6-8-GATE, then T9-CLOSEOUT-TEST, then readonly T9. Live tracker wording now records IP-332 and IP-333 In Progress and IP-334 through IP-336 Backlog.
The second independent rereview made every intermediate gate a concrete readonly task id, ordered T4-ENV before its five consumers, and corrected backend completion to the real package chain: T7-DB, then T7-AUTH, then T7-API. T6 remains CLI-local; T6-8-GATE alone reruns the cross-repository domain/config/error/version contracts. No implementation scope, product decision, or PR topology changed.
Final plan review aligned each T6-T8 atomic GREEN with its owning surface's full test suite plus the declared type/build gate. T6-8-GATE now depends on the terminal executable slice ids T6-CLI, T7-API, T8-BACKOFFICE, and T8-SCAFFOLD rather than family headings.
T1: Exact dependency generation
The root catalog is the version authority for the selected Effect v4 generation. Participating
workspace manifests continue to use catalog:; packages/env joins that authority for its later
configuration-primitive migration. T1 changes manifests and lock resolution only. Production source
migration, removal of Effect v3 imports, and IP-333 closure remain deferred to T9.
RED evidence
bun test ./scripts/effect-v4/dependency-manifest.contract.test.ts failed against the pre-change
state with effect resolving from the root catalog as ^3.21.2 instead of 4.0.0-beta.98. The same
run reported the ranged/v3 lock catalog and the missing packages/env catalog participation.
Peer and selected-source matrix
Registry metadata and the matching local source checkout agree on version 4.0.0-beta.98 and the
Effect-TS/effect-smol repository.
| Package | Published Effect peer | Selected source directory |
|---|---|---|
effect | none | packages/effect |
@effect/platform-bun | effect: ^4.0.0-beta.98 | packages/platform-bun |
@effect/sql-pg | effect: ^4.0.0-beta.98 | packages/sql/pg |
@effect/vitest | effect: ^4.0.0-beta.98 | packages/vitest |
The additional @effect/vitest peer is vitest: ^3.0.0 || ^4.0.0, which accepts the repository's
cataloged Vitest 3 generation.
Selected source: ~/.opensrc/repos/github.com/Effect-TS/effect-smol/4.0.0-beta.98.
GREEN evidence
bun test ./scripts/effect-v4/dependency-manifest.contract.test.ts: 5 tests and 73 assertions passed.bun install --frozen-lockfile: checked 981 installs across 1225 packages with no changes.
Scope boundary
- No production imports or runtime composition changed.
- No compatibility shim or dual path was added.
- Existing v3-era companion packages remain for later breadth-first source migration.
- IP-333 remains open until T9 proves production-source convergence and zero-v3 closure.
Review correction
The sibling meta.json now orders the routed T1 artifacts as SPEC, PLAN, IMPLEMENTATION-NOTES, then
PHASE-HANDOFF. This makes both new pages discoverable in the existing Fumadocs page tree without
adding a second documentation surface or changing public documentation.
Validation parsed the metadata, confirmed each listed Markdown file exists in that order, and ran
bun run --cwd apps/wiki postinstall successfully. The wiki index now records IP-320 as in progress,
and the wiki log records this bounded T1 ingest. No flow, concept, root-doc, or public-doc update was
required.
T2-CLI: Deliberate repository-analysis root
The CLI now exposes one explicit repository-analysis feature root. Its action accepts a scanner
port and owns the existing scan, repo-shape override, and pack-resolution workflow. A Node scanner
adapter reuses the existing detection mechanics, platform composition wires the adapter to the
action, and the current scaffold workflow calls that platform operation. No sub-root Effect runtime,
new error family, configuration service, protocol runtime, compatibility alias, or changed public
output was introduced.
The deletion test is satisfied: removing the action would spread scan, shape policy, and pack
resolution back into the caller. Legacy core mechanics remain until T6, but detection-only helpers
that were needlessly exported across the generic boundary are private to their remaining owners.
RED evidence
bun run --cwd apps/cli test -- src/features/public-domain-root-contract.test.ts failed before
production edits because the repository-analysis root was absent. Vitest reported one failed suite,
zero collected tests, and Cannot find module './repository-analysis'.
Focused GREEN evidence
The same focused test passed one test in one file. It proves an injected scanner can supply repository evidence through the public root, the root applies the requested monorepo policy, and it returns the classified language, technology, surface, and preselected packs.
The complete stable-slice GREEN command is blocked by the coordinated same-epic migration at
apps/cli check-types. The T1 manifest-only pin intentionally left broad v3 source migration
incomplete, so the compiler currently reports unavailable v4 APIs and incompatible schemas across
CLI plus the sibling contract and scaffold workspaces. Representative failures include
Schema.TaggedError, Effect.either, Effect.catchAll, BunContext, and shared schema literal
narrowing.
The additional bun run --cwd apps/cli build gate also fails before compiling this slice: retained v3
@effect/cli, @effect/platform, printer packages import removed Effect v3 modules, and the beta.98
platform-bun package exposes a Bun-only Redis import to the current Node bundle. Resolving those
failures would advance into the later dependency, typed-error, protocol, runtime, and completion
slices, so T2-CLI records the blocker without broadening scope.
Focused oxfmt --check passed on all T2-CLI and evidence files, and git diff --check passed. The
configured Oxlint invocation could not load @effect/eslint-plugin because its
@typescript-eslint/utils dependency is absent in the coordinated install; no lint findings were
produced. The required autoreview helper was attempted twice, but the installed Codex client rejected
its configured gpt-5.6-sol reviewer as requiring a newer client, so no structured review result was
available from this worker.
T2-API: Deliberate report-submission root
The API now exposes one explicit report-submission feature root around the existing CLI report
caller workflow. Its action owns the meaningful policy that was previously embedded in the HTTP
handler: authenticated submissions carry the operator identifier and enable AI metadata generation;
anonymous submissions omit the operator and disable AI metadata generation; GitHub issue creation
remains enabled in both cases. Persistence stays behind an injected submitter port. An integration
boundary is unnecessary because the existing report store already satisfies that port. Platform
composition passes the store directly to the action, and the HTTP handler resolves request
authentication before calling the platform operation.
The deletion test is satisfied: removing the action would spread caller classification and submission options back into the transport. The slice adds no runtime below the application root and does not advance typed errors, configuration, shared protocol runtime, or the later complete API migration.
RED evidence
bun run --cwd apps/api test -- src/features/public-domain-root-contract.test.ts failed before
production edits because the features public root did not exist. Vitest reported one failed suite,
zero collected tests, and Cannot find module './index'.
Focused GREEN evidence
The same focused test passed one test in one file. It proves both anonymous and authenticated API
caller policy through the public root with an injected submitter. bun run --cwd apps/api build
independently completed successfully and emitted 16 output files.
The complete stable-slice GREEN command is blocked at apps/api check-types by the coordinated
same-epic migration after T1's beta.98 manifest-only pin. Existing v3-era API and sibling contract/db
sources still use removed or changed Context.Tag, Effect.either, Effect.catchAll, Effect.async,
Schema.TaggedError, multi-argument Schema.Literal, and old Layer/platform surfaces. The new
feature test consequently receives the narrowed pre-migration HarnessReportInput type, while the
platform operation consumes the pre-migration HarnessReportStore tag. Those failures belong to
later T3/T5/T7/T9 source slices; broadening T2-API would violate the breadth-first plan.
Focused oxfmt --check and git diff --check passed. Scoped Oxlint could not load
@effect/eslint-plugin because @typescript-eslint/utils is absent from the coordinated install, so
no lint findings were produced. The required autoreview helper was attempted once, but the installed
Codex client rejected its configured gpt-5.6-sol reviewer as requiring a newer client, so no
structured review result was available from this worker.
Review correction
Review identified integrations/harness-report-submitter.ts as an empty identity adapter. A focused
contract assertion first failed with expected true to be false while that alias existed. The alias
was deleted, platform composition now passes the compatible report store directly, and the focused
suite passes two tests while guarding both caller policy and the absence of the shallow adapter.
T2-AUTH: Deliberate operator-authentication root
The auth package now exposes one explicit operator-authentication feature root around the existing
verification-code email workflow. Its action owns the Harness Backoffice subject/body policy and
depends on a narrow sender port. The Resend integration adapter owns provider-specific delivery, and
Better Auth composition calls the action through the feature root. Removing the action would spread
message policy back into provider composition, so the root passes the deletion test.
Existing environment reads, database construction, auth singleton lifetime, and disposal behavior remain unchanged for the later T4 and T7 slices. T2-AUTH adds no Effect runtime, typed error family, configuration service, compatibility alias, or new authentication behavior.
RED evidence
bun run --cwd packages/auth test -- src/public-domain-root-contract.test.ts failed before
production edits because ./features/operator-authentication did not exist. Vitest reported one
failed suite, zero collected tests, and the missing-module error.
Focused GREEN evidence
The same focused test passed one test in one file. It proves the public action selects the existing sign-in versus verification subject policy, preserves the OTP body, and delegates the complete email through an injected sender. The focused package regression command passed four tests across the new contract and existing auth-options suite.
Accepted P2 test correction
The pre-correction focused/index baseline remained green with four tests, so the missing coverage was
not a behavioral RED and no failure was fabricated. Review found that the public-root test exercised
only sign-in and email-verification, never called the real Resend adapter, and only checked that the
Better Auth plugin existed rather than invoking the callback built by createAuthOptions.
The public-root contract is now table-driven across sign-in, email-verification, forget-password, and
change-email. A fake Resend boundary proves the real adapter forwards from, to, subject, and
text exactly. The index regression captures the actual Better Auth plugin callback, invokes it, and
proves createAuthOptions composes policy plus adapter and forwards the complete payload through the
existing injected Resend dependency. The focused/index command now passes eight tests across both
files without any production change or later Effect/config/error-layer work.
The complete stable-slice GREEN command remains blocked at packages/auth check-types by the
coordinated same-epic migration after T1's beta.98 manifest-only pin. The pre-existing auth behavior
contract still uses removed v3 Schema.TaggedError, Effect.async, and changed acquire/release APIs;
sibling database runtime sources still use removed Effect.Service, Layer.unwrapEffect, and v3
service access. No changed T2-AUTH file remains in the compiler errors. Resolving these failures
belongs to T3/T7/T9 rather than this public-root slice.
Focused oxfmt --check and git diff --check passed. Scoped Oxlint could not load
@effect/eslint-plugin, so no lint findings were produced. The required autoreview helper was
attempted, but the installed Codex client rejected its configured gpt-5.6-sol reviewer as requiring
a newer client, so no structured review result was available.
T2-CONTRACT: Deliberate protocol-area roots
The shared contract now has separate baseline, telemetry, reports, and backoffice public
roots. Each area owns its existing cross-process schemas, accepted public errors, and typed HttpApi
group. api.ts only composes health plus those four areas. The former generic schemas.ts and
errors.ts buckets were deleted rather than retained as compatibility aliases.
The common surface contains only values used by at least two protocol areas: baseline channel,
report status, operator/repository identity, ISO datetime validation, and the API-wide forbidden
error. Area dependencies point only to common; no protocol area imports another. This establishes
the IP-332 dependency direction while preserving the current typed API definition. T3 still owns
the beta.98 typed-error API migration, and T5 still owns package subpath exports, broad-root removal,
consumer-runtime extraction, and app import rewiring.
RED evidence
The first pre-production focused run was intercepted before test collection because retained
@effect/platform@0.96.1 imports effect/dist/Either.js, which beta.98 removed. The test was refined,
still before production edits, into the architecture contract required by this slice. The exact
command then failed one test with ENOENT for the absent src/baseline.ts root.
Focused GREEN evidence
bun run --cwd packages/contract test -- src/public-domain-root-contract.test.ts passed one test in
one file. It proves the four roots exist, HarnessApi composes each root, dependencies do not cross
between protocol areas, and composition no longer imports generic schema/error buckets. A read-only
export parity check found no lost public schema/error symbols, and the OpenAPI fixture retained the
exact Git object 92f817385a2bcc9ebec91032fb8f0dab7a0684c4.
The complete GREEN command is blocked at packages/contract check-types by the coordinated
same-epic beta.98 migration. The behavior-preserved contract definitions still use removed or
changed v3 APIs: Schema.TaggedError, multi-argument Schema.Literal, Schema.optionalWith,
Schema.filter, HttpApi NoContent annotations, and typed-client path inference. Resolving those
failures belongs to T3/T5/T9 and would violate the breadth-first T2 scope.
The full package suite passed the new architecture test but could not collect api.test.ts or the
byte-locked public-protocol suite because retained @effect/platform@0.96.1 imports beta.98-removed
effect/dist/Either.js. Structured autoreview was attempted, but the installed Codex client rejected
the configured gpt-5.6-sol reviewer as requiring a newer client, so no structured findings were
available.
Focused oxfmt --check and git diff --check passed. Package lint could not load the missing
@effect/eslint-plugin, so no lint findings were produced. No configuration read, request runtime,
endpoint behavior, OpenAPI fixture, compatibility alias, or consumer workspace changed.
T2-DB: Deliberate persistence and runtime roots
The database package now separates its caller-facing persistence construction from the package root.
persistence/index.ts owns Drizzle client construction and schema binding. The existing runtime modules
remain direct package-root exports because a pass-through runtime/index.ts would add no meaningful
composition. The public contract proves persistence/schema importability, explicit runtime exports, and
recursively checks every runtime module for runtime-to-persistence dependency inversion while allowing
the required runtime-to-schema binding. Runtime module execution remains
blocked by the coordinated beta.98 migration. Existing schema files and package subpaths remain
behavior-preserving for the later consumer rewiring slices.
RED evidence
The pre-slice package root constructed Drizzle directly in src/index.ts and had no focused contract
proving that package-root exports matched their owning modules or that the runtime subtree avoided
runtime-to-persistence dependency inversion.
Focused GREEN evidence
bun run --cwd packages/db test -- src/public-domain-root-contract.test.ts passed one test in one file.
It proves persistence/schema roots are importable, package-root runtime exports are explicit, keeps
Drizzle construction out of the package root, and recursively prevents runtime-to-persistence inversion
while allowing runtime schema binding. Runtime module execution and the complete GREEN command are
blocked at packages/db check-types by the coordinated same-epic beta.98 migration: unchanged
postgres-contract.test.ts and runtime sources still use removed v3 Schema.TaggedError, Context.Tag,
Effect.Service, Layer.unwrapEffect, and related service/layer APIs. Resolving those failures belongs
to T3/T7/T9 rather than this breadth-first root slice.
A follow-up type-only repair made the recursive runtime-source scan explicit as Promise<string[]>
and typed its intermediate nested results and recursive map callback. The focused contract remains
green, and the package typecheck no longer reports the task-owned TS7023, TS7022, or TS7024
errors. Its 23 remaining errors are confined to unchanged postgres-contract.test.ts and
runtime/*: beta.98 schema/context/test-contract migration remains T3/T9 work, while service and
Layer migration remains T7/T9 work. No production or runtime source changed in this repair.
Focused oxfmt --check and git diff --check passed. No schema migration, configuration contract,
typed-error family, or consumer import rewiring was introduced.
T2-SCAFFOLD: Deliberate baseline and catalog roots
The scaffold package now exposes two behavior-free, caller-resolvable schema domains:
@punks/scaffold/baseline owns baseline publication, provenance, artifacts, and managed-file summaries;
@punks/scaffold/catalog owns packs, example repositories, catalog entries, and required-tool
contracts. The package index.ts only composes those roots. Its flattened . exports remain as
compatibility because current CLI callers still import them; the new public subpaths let a later
consumer-rewiring slice remove that compatibility without another schema move.
The roots are independent: neither imports the other, reads configuration, accesses the filesystem, or creates a runtime. This keeps scaffold as a deep shared schema model.
RED evidence
bun run --cwd packages/scaffold test -- src/public-domain-root-contract.test.ts failed before
production edits because ./baseline did not exist. Vitest reported one failed suite and no collected
tests.
The review-correction TDD loop then changed the contract to use the intended consumer imports. The same
exact command failed before collection with Missing "./baseline" specifier in "@punks/scaffold" package, proving the source roots were not yet caller-visible.
Focused GREEN evidence
The exact chained GREEN passed: the focused contract passed one test in one file, then
packages/scaffold check-types exited cleanly. It proves both domains resolve through public package
subpaths, the package root preserves the existing combined exports, the domains avoid cross-imports,
and both remain free of configuration and integration ownership.
The task-owned beta.98 blockers were minimal and local: multi-value schemas now use
Schema.Literals([...]), and the unchanged IP-319 behavior assertions use beta.98 Schema.Codec,
Schema.ConstraintDecoder, and encodeUnknownSync types/APIs. The full package suite passed all 10
tests across 3 files.
Focused formatting and git diff --check passed. No configuration contract, runtime, fixture, or
consumer workspace changed. The broader package check could not start Oxlint because the repository
configuration cannot load missing @effect/eslint-plugin; no lint findings were produced.
docs/README.md now records both caller-visible schema subpaths and the temporary combined-root
compatibility, keeping durable repository guidance aligned with the shared scaffold contract.
T2-CONTRACT-TEST: Public-root convergence contract
The post-wave root contract covers the six T2 workspace slices without editing production code. It verifies all deliberate public roots and focused contracts exist, scans every app and shared-package consumer including backoffice for private feature deep imports, enforces one-way protocol/scaffold/database dependencies, rejects removed compatibility aliases and recursive generic feature roots, and prevents Effect runtime execution inside T2-owned boundary sources.
Review repair replaced regex import matching with Bun.Transpiler.scanImports, so comments and string
literals cannot invent module edges. Canonical resolution handles relative imports, app @/* aliases,
@punks/* package and private subpaths, self-package references, extensions, explicit index, and
nested normalized paths while preserving explicit public roots. Runner analysis tokenizes transpiled
executable code and follows namespace/direct import aliases for runPromise, runSync, fork/main,
callback/exit, *With variants, namespace imports from effect/ManagedRuntime, and runners used as
values/callbacks without comment/string false positives.
Governed contract, scaffold, and database subdomains additionally reject their own package/composition
root, whether imported through @punks/* or a relative index. This closes barrel-mediated sibling
inversion while preserving composition-root imports for legitimate outside consumers.
The runtime scan stays limited to the files and roots introduced or composed by T2. Existing legacy CLI/API runtime execution belongs to the accepted T6/T7 migration slices and is not silently promoted into a T2 prerequisite.
Validation-only evidence
This slice has no product-behavior RED by design. Its accepted tdd_status remains not_applicable
because each workspace slice owns concrete public-root RED/GREEN; this test is the post-wave
convergence validator. The review repair did test-drive the validator itself with mutation sentinels.
The sentinel RED reported 5 failures while all 5 original convergence tests passed: parser decoys,
incorrect @/* resolution, nested generic-root escape, runner-decoy false positive, and aliased
callback/exit runner false negative. A final runtime follow-up RED reported 2 sentinel failures while
the prior 10 tests passed: import * as MR from "effect/ManagedRuntime"; MR.make(layer) and runners
passed as callback values. The ownership follow-up RED reported 3 sentinel failures while the prior 12
tests passed: contract, scaffold, and database subdomains each bypassed one-way direction through their
own package/composition root. After repair,
bun test ./scripts/effect-v4/domain-boundaries.contract.test.ts passed all 15 tests with 133
assertions. No workspace production file, behavior fixture, package manifest, runtime, configuration
surface, or consumer implementation changed.
2026-07-18 Stack Checkpoint After T2-SCAFFOLD Publication
- Published #79 head: local and remote
0cda02207268d20e7bf11cb9550e1f82b5db8790; #78 was simultaneously current at local and remote2210c45db2b5412db3fceb42d13fb50766f4322e. - Live PR topology before sync: #76 remained draft/open/unmerged against
main; #77-#83 remained draft/open/unmerged sibling children againstteam/stefan/refactor-cli-architecture. stack statusinferred that exact fan-out withoutstack track.stack sync --dry-runpreserved the fan-out and previewed rebases for #76-#83.- Required
stack syncstopped while replaying parent commit0e800522ontomain, createdbackup/stack-sync-2026-07-18T180139989Z-team/stefan/refactor-cli-architecture, aborted the failed cherry-pick, restored the original parent, deleted the temporary replay branch, and left every child unchanged. - Post-attempt
stack status, clean-worktree checks, and live GitHub verification confirmed the same topology and SHAs. No PR was retargeted, linearized, merged, or moved out of draft state; no branch was force-pushed.
T3: Typed expected failures
T3 completed the five disjoint workspace/package failure seams, then added one repository-owned validation contract. Each domain retains its own accepted error meaning. Integration adapters preserve the failing operation and diagnostic cause before feature policy observes the failure; HTTP, Promise, or presentation translation remains at the owning outer boundary. No catch-all error owner or cross-workspace error bucket was introduced.
T3-CLI
The exact focused command first failed because retained v3 construction reached runtime as
TaggedError is not a function. The CLI now owns RepositoryScanError as a
Schema.TaggedErrorClass; the Node repository scanner normalizes detection failures, and feature and
scaffold callers intentionally propagate the typed result. Necessary detector-path beta.98 repairs use
TaggedErrorClass, positional records, and fromJsonString without extending into later CLI runtime
migration. The focused contract passed 1 test and 12 adjacent detection/repository/scaffold regressions
passed. Formatting, diff check, and structured review finished with zero findings.
T3-API
The focused RED reported that makeHarnessReportSubmitter was not a function. The API now owns typed
network, GitHub, OpenRouter, database, report-store, and store-initialization failures with operation
and cause. Payload decoding is schema-backed; report policy no longer swallows expected failures; only
the HTTP adapter translates the typed failure to 503. The focused contract passed 1 test and the
adjacent failure-path regressions passed 3 tests. Structured review repairs removed premature
translation and finished with zero findings. Retained package-wide v3 collection/type errors remain
assigned to the later contract and complete API migration slices.
T3-AUTH
The first RED exposed a Promise sender whose rejection escaped the Effect channel. Review then added a
production-wiring RED for the missing Better Auth and persistence wrappers. Auth now owns
AuthPersistenceFailure, BetterAuthOperationFailure, and VerificationEmailDeliveryFailure;
Drizzle, Better Auth, and Resend boundaries normalize into those errors, while the required Promise
translation stays at Better Auth's external callback. The focused contract passed 4 tests and 8
adjacent auth regressions passed. Final structured review reported zero auth findings.
T3-CONTRACT
Initial collection was intercepted by retained v3 platform imports. The pre-production source
contract then failed because accepted public failures still used the v3 tagged-error API. Ten accepted
errors across common, baseline, telemetry, reports, and backoffice now use
Schema.TaggedErrorClass, preserving public tags, fields, status/title annotations, and endpoint
registrations. The focused contract passed 1 test. Final structured review reported zero findings;
the isolated full contract migration remains T5-CONTRACT.
T3-DB
The package-root path was initially intercepted by retained legacy SQL APIs; the source-level RED then
proved the connection, query, and transaction normalization helpers were absent. The persistence root
now owns schema-backed DatabaseConnectionFailure, DatabaseQueryFailure, and
DatabaseTransactionFailure plus focused tryDatabase* adapters that preserve operation and cause.
The focused contract passed 3 tests and the public-root regression passed 1 test. Changed-file strict
compilation, formatting, diff check, and final structured review passed with zero findings. Full
runtime wiring remains T7-DB.
T3-CONTRACT-TEST and T3-GATE
The post-wave repository contract changed only
scripts/effect-v4/typed-failures.contract.test.ts. It validates domain ownership, schema-backed
accepted errors, diagnostic context, adapter normalization, and boundary-only translation without
creating a shared error owner. Its final reviewed state passed 8 tests with 168 assertions; this
supersedes the earlier 155-assertion run before final review repairs.
The readonly aggregate command then passed every focused seam in order: CLI 1 test, API 1 test, auth 4 tests, contract 1 test, database 3 tests, and repository 8 tests / 168 assertions. T3 is complete. T4-ENV is the next unblocked task; its reusable configuration primitives must pass before T4 consumer slices fan out.
2026-07-19 Parent Build and Required Stack Checkpoint
- Parent branch local and remote SHA:
c12b5f8371d225cb6b24766d49bd261af65e484cafterfix(build): restore TypeScript runtime API. - Parent Vercel validation passed for API, backoffice, and wiki; the backoffice/wiki TypeScript worker crash was removed while retaining the native TypeScript 7 check path.
stack statusinferred the required fan-out withoutstack track: #76 is the parent againstmain; #77-#83 are siblings againstteam/stefan/refactor-cli-architecture.stack sync --dry-runpreserved that exact topology and previewed changes for #76-#83.- Required
stack syncattempted the preview, stopped safely while replaying parent commit0e800522(chore(scaffold): accept latest baseline), and createdbackup/stack-sync-2026-07-19T011315364Z-team/stefan/refactor-cli-architecture. The failed cherry-pick was aborted, the original parent was restored, the temporary replay branch was deleted, and every child was unchanged. - Post-attempt
stack statusretained the exact fan-out. Live PR verification confirmed every PR OPEN, draft, unmerged, and correctly based. - Verified heads before this T3 publication: #76
c12b5f8371d225cb6b24766d49bd261af65e484c; #77ab8363276e37d8785068aeb0230218ade1026df0; #78c297800266b9e7f1707a3f1c757798d3a6822e3b; #79da8e0bea688bc6f6dcfeb33effd36365985f11aa; #80efb92ec50ba4677f132d0c364e9e1218597d9dbd; #81cf5a0f852af20a17157861d1ac292186024af84d; #820f431c083ddb073472d2adf9084d7e7c2ce99a33; #8322fe8b1f16a0a5481c1690b1629ad4fc21a37350. - No PR was retargeted or linearized; no branch was rebased or force-pushed; nothing was merged. After #79 is published, the same required dry-run/apply-if-previewed/status/PR audit gate must run again.
Subsequent parent lint-dependency checkpoint
- Parent local and remote advanced to
84434c687e8cc02e7f1b91634190beb8631a5d53withfix(lint): declare Effect plugin runtime dependencies; every child head above remained unchanged. check:repoand the scaffold suite passed 16/16, isolated Effect plugin loading passed, and final structured review was clean. The full workspace check now reaches real lint and reports the existing repository backlog of 3,382 lint errors plus 11 wiki formatting files instead of failing to load the plugin.- The required post-push
stack sync --dry-runpreserved the exact #76 parent / #77-#83 sibling fan-out and previewed changes for #76-#83. - Required apply again failed safely on replay commit
0e800522, createdbackup/stack-sync-2026-07-19T012346997Z-team/stefan/refactor-cli-architecture, aborted the failed cherry-pick, restored the original parent, deleted the temporary branch, and left every child unchanged. - Post-attempt status and live PR verification retained the exact topology: all eight PRs remained OPEN, draft, unmerged, and correctly based. Current #76 head is
84434c687e8cc02e7f1b91634190beb8631a5d53; #77-#83 retain the heads listed above.
T4: Focused validated configuration
T4-ENV established packages/env/config as the reusable injected provider/decoder primitive without
owning an application configuration object. The final ENV proof passed 8 tests.
The five consumer slices then moved configuration to their application roots. Accepted review findings produced these final repairs:
- CLI configuration is root-only. Child processes receive a narrow allowlist of nonsecret OS,
proxy, path, terminal, npm, and Harness control values; test mode, Vitest, and
DP_NO_CLIPBOARD=1explicitly control clipboard behavior. Focused/adjacent proof passed 40 tests. - API configuration and persistence are root-owned. Typed configuration and auth-runtime failures remain distinguishable, failed auth initialization closes any database it opened, and application disposal closes the auth and persistence databases it owns. Focused proof passed 12 tests.
- Backoffice owns one configured auth/database runtime. Its shutdown handler disposes that runtime
before preserving
SIGINTorSIGTERMtermination. Combined proof passed 8 tests. - Auth is the sole Better Auth, database, and Resend configuration authority and accepts only
postgres:orpostgresql:database URLs. Typed secret-redacted failure proof passed 5 tests. - Database runtime composition requires one explicit validated PostgreSQL URL and keeps repositories configuration-free. Focused proof passed 4 tests.
T4-CONTRACT-TEST permits ambient reads only at declared application/runtime roots, rejects config
ownership in contract/scaffold, and protects its mutation sentinels. The final repository contract
passed 9 tests with 30 expectations. The frozen install gate (bun install --frozen-lockfile),
git diff --check, and the tracked-deletion audit were clean. Final independent spec review returned
PASS and final standards review returned PASS.
The lock convergence remains limited to the five declared workspace dependency edges; no Effect
generation changed in T4. The routed learning outcome remains keep, so no new learning route,
index, or log entry is needed.
T4 and repository implementation evidence for IP-335 are complete. T5-CONTRACT is next and owns the first isolated contract-package gate. T7 still owns full API/auth/database migration and T8 owns full backoffice/scaffold migration.
T4 publication and stack provenance
At the clean checkpoint, #76 parent local and remote were
84434c687e8cc02e7f1b91634190beb8631a5d53; #79 local and remote were the T4 implementation head
18cb48e7f39909c1df1835589ea2a15d6052e182, with live base
team/stefan/refactor-cli-architecture. Every affected worktree was clean. stack status inferred
the exact required fan-out: #76 is the parent against main, and #77-#83 are sibling children against
the parent. stack sync --dry-run preserved that topology and previewed updates for #76-#83.
The required apply created
backup/stack-sync-2026-07-19T050833525Z-team/stefan/refactor-cli-architecture and failed safely while
replaying parent commit 0e800522. It aborted the replay, restored the original parent, deleted the
temporary branch, and left every child unchanged. Post-attempt stack status retained the exact
fan-out. Live verification confirmed every PR open, draft, unmerged, and correctly based. No
stack track, retargeting, linearization, manual rebase/force-push, or merge occurred. An
evidence-only commit follows this checkpoint and must be followed by the final required
stack sync --dry-run gate; apply only if that preview preserves the fan-out and requires changes.
T5: Protocol ownership and consumer runtime
T5-CONTRACT removed the concrete Fetch client and runtime from packages/contract, narrowed the
public protocol areas, and kept shared ownership limited to exchanged schemas, errors, security, and
endpoints. Its full isolated gate passed 22/22 tests plus typecheck.
public-protocol-contract.openapi.json remained unchanged, and the committed OpenAPI semantics
snapshot covers the complete old-v3 protocol behavior.
The three disjoint consumer slices then completed app-local request ownership:
- CLI passed 2/2 focused client tests. Its remaining full runtime, typecheck, build, and classified public-behavior work stays in T6.
- API passed 3/3 focused adapter tests and 8/8 mapped protocol cases. Its remaining auth/database/API composition and full surface gates stay in the serial T7-DB -> T7-AUTH -> T7-API chain.
- Backoffice passed 52/52 app tests plus typecheck. It owns the local v4 client, request cookie/base URL forwarding, execution, plain-object boundary, and error classification. The observed database-owned build blocker remains for T7/T8 rather than expanding T5.
T5-GATE then passed the exact aggregate: contract 22, CLI 2, API 3, and backoffice 8 focused tests, with contract typecheck green. Independent review returned PASS for T5-CONTRACT and all three consumer slices. No compatibility re-export, shared request runtime, broad consumer root import, retry expansion, or T6-T8 implementation creep remains in this wave. T5 is complete; IP-336 stays In Progress because T8 and later convergence still belong to that story.
T5 committed file record
Commit f57b1efb (refactor(contract): isolate protocol surfaces) records:
bun.lock;packages/contract/package.jsonpackages/contract/src/{api.test.ts,api.ts,backoffice.ts,baseline.ts,common.ts};packages/contract/src/{client.ts,index.ts}(deleted)packages/contract/src/{openapi-semantics.test.support.ts,public-domain-root-contract.test.ts,public-protocol-contract.openapi-semantics.json,public-protocol-contract.test.ts,reports.ts,telemetry.ts,typed-failure-contract.test.ts}
Commit a14bea27 (refactor(apps): own protocol runtime) records:
- CLI:
apps/cli/src/baseline/resolve.ts;apps/cli/src/cli/report-command.ts;apps/cli/src/control-plane/{client.test.ts,client.ts};apps/cli/src/telemetry/product.ts - API:
apps/api/src/{backoffice-access.ts,backoffice.test.ts,backoffice.ts,baseline-registry.ts};apps/api/src/features/report-submission/{action.ts,adapter.ts,port.ts};apps/api/src/{http-adapter-contract.test.ts,http-adapters.ts,index.test.ts,index.ts,memory-state.ts};apps/api/src/platform/report-submission.ts;apps/api/src/public-api-contract.test.ts;apps/api/src/{reports.test.ts,reports.ts};apps/api/src/runtime/auth-lifecycle.ts;apps/api/src/{telemetry.test.ts,telemetry.ts} - Backoffice:
apps/backoffice/src/features/operator-shell/{shell.test.ts,shell.tsx};apps/backoffice/src/lib/{actions.test.ts,api.test.ts,api.ts};apps/backoffice/src/public-routes.test.tsx
The next breadth-first wave is T6-CLI in parallel with T8-BACKOFFICE and T8-SCAFFOLD, while T7 remains serial: T7-DB, then T7-AUTH, then T7-API. Existing stack evidence above remains authoritative; this documentation update does not run or alter stack state.
Post-T5 publication stack checkpoint
- Before and after the checkpoint, #76 local and remote were
84434c687e8cc02e7f1b91634190beb8631a5d53; #79 local and remote weredc9a17b0cfc0f7952dd8712b51e1ff188683472a. stack statusinferred the exact required fan-out: #76 is the parent againstmain, and #77-#83 are sibling children againstteam/stefan/refactor-cli-architecture.stack sync --dry-runpreserved that exact fan-out and previewed updates for #76-#83.- Required
stack synccreatedbackup/stack-sync-2026-07-19T063145451Z-team/stefan/refactor-cli-architecture, then failed safely while replaying0e800522(chore(scaffold): accept latest baseline). It aborted the replay, restored the original parent, deleted the temporary branch, and left every child unchanged. - Post-attempt
stack statusretained the exact fan-out. Live verification confirmed PRs #76-#83 remain OPEN, draft, and unmerged; #76 remains based onmain, while #77-#83 remain based on the parent branch. The previously recorded live heads remain exact except #79, nowdc9a17b0cfc0f7952dd8712b51e1ff188683472a. - No
stack track, retargeting, linearization, manual rebase/force-push, or merge occurred. The evidence commit for this checkpoint requires one finalstack sync --dry-rungate after push; apply only if that preview preserves the exact fan-out and requires changes.
T6-T8: Complete owning surfaces
T6 completed the CLI migration without changing classified public behavior. Commands now parse and present, feature actions own policy, integrations own filesystem/process/network mechanics, platform modules compose capabilities, and the executable entrypoint owns the Effect runtime. The full CLI gate passed 258/258 tests, typecheck, and a packaged build of 461 modules. Generated baseline and telemetry endpoints preserve declared protocol errors, report/pack/tool failures remain typed, and one repository-check capability port owns that integration.
T7 completed the real database -> auth -> API dependency chain. Database passed 15 tests plus
typecheck and removed the merged dual-pool DatabaseLive; auth passed 22 tests plus typecheck; API
passed 82/82 tests, typecheck, build, and its runtime-product validator. A real built start handles
SIGINT and SIGTERM with exactly-once disposal, importing the built entrypoint installs zero listeners,
and dead StoreLive adapters and callers are removed. Focused configuration enters through
application composition, typed expected failures retain operation context and causes, and root
disposal owns persistence and auth lifecycle. TypeScript validation has parent parity where inherited
diagnostics exist; no T7-owned changed surface adds a TypeScript regression.
T8 completed both disjoint consumer surfaces. Backoffice passed 53 tests, typecheck, build, and eight browser contract cases. It owns its request/session/config boundary and imports the operator shell directly from its feature root. Scaffold passed 10 tests plus typecheck, exposes deliberate baseline and catalog roots, remains configuration-free, and retained exact managed/public bytes.
After all four owning slices were green, the four-contract dependency/domain/error/config gate passed. The final five-contract aggregate, including migration closeout, passed 55/55 tests and 622 assertions.
T9: Static repository closeout
The migration-closeout contract passed 13 tests and 53 assertions. Review strengthened its source
analysis so it recognizes actual runtime calls rather than identifier spelling, handles aliases and
*With APIs, excludes support-only fixtures from production classification, and avoids shadowed
ambient-global false positives. The final scan rejects Effect v3 dependencies/imports/shims, runtime
construction below application roots, generic architecture buckets, broad protocol runtime, ambient
feature configuration, and compatibility aliases.
All 13 immutable IP-319 fixtures match the live parent branch byte for byte. The auth fixture was restored to its parent blob; the v4-only real-auth proof now lives under package testing support. Review also removed the backoffice shell pass-through alias and corrected the CLI command/feature dependency direction. These corrections preserve the public fixtures instead of updating expected output to accept the refactor.
The forced root behavior run passed 15 of 15 tasks. Root typecheck passed. Root build passed with
NEXT_PUBLIC_SERVER_URL=https://api.harness.localhost. Wiki checks require the direct safe route
described below because the normal package wrappers run sync-content.mjs in apply mode before
generation, typecheck, or build.
The convergence rerun confirmed that warning. Root check-types invoked the wiki wrapper and pruned
tracked routed content plus the active IP-320 plan and implementation notes. The exact pre-command
wiki state was restored mechanically: all unrelated routed content matches HEAD, while the five
IP-320 artifacts byte-match team/stefan/ip-320-effect-v4-boundaries; git diff --check is clean.
No root or wiki sync wrapper was rerun afterward. Direct web typecheck and build passed with
NEXT_PUBLIC_SERVER_URL=https://api.harness.localhost; direct wiki generation and native TypeScript
checking passed. The direct wiki build remains blocked by seven inherited stale generated spec
artifacts without required title frontmatter, which the apply-mode sync wrapper normally deletes.
Those unrelated generated artifacts were not mutated to manufacture a green build.
Repository check reporting stays exact:
check:repois green.- The full root
checkis not green because inherited lint/tooling debt remains. - Earlier exact lint counts were a pre-final-fix classification snapshot and are superseded by the final fixes and rereviews.
This is not an IP-320 acceptance waiver or a claim that the full root check passed.
T10: Supported runtime-product proof
API runtime-product validation passed against the supported public boundary. The authenticated backoffice runner passed all eight browser cases. The packaged CLI build produced 461 modules and a 2.16 MB artifact.
After Docker Desktop recovery, the convergence rerun passed the focused runtime-product contract
(1/1) and the full API suite (84/84). Cleanup left no container matching hi-ip319-runtime.
The first pre-debug repeat report,
.reports/behavior-contract/repeat-session-a3611091-42af-4b30-a147-9b403fc47f57.json, was
unsuccessful and non-identical because it began while active work had not reached a clean checkpoint.
Its cleanup remained valid. The instrumented rerun,
.reports/behavior-contract/repeat-session-84db6230-2f47-4e72-a3bf-56c9c473c8e6.json, then passed
two identical 15/15 runs and demonstrated a clean-checkpoint concurrency problem rather than product
nondeterminism. No debug instrumentation remains in production or validation code.
The final authoritative report is
.reports/behavior-contract/repeat-session-057e8ae7-6030-4b9c-af16-6b6183fc4012.json. It records
successful: true, identical: true, two 15/15 runs, and valid internal cleanup with no errors.
Standalone cleanup found no discovered, removed, remaining, unknown, or report-owned resources.
2026-07-20 Post-delivery architecture re-audit corrections
An independent architecture re-audit found seven concrete gaps after the original T1-T11 delivery. All seven were corrected without changing public CLI bytes, the immutable IP-319 fixtures, PR topology, or the accepted product scope.
- CLI child-process execution no longer clones ambient
process.env. The application root decodes a narrow command environment and injects it into projection, wiki, scaffold, and update scripts; undefined command overrides delete values only from that injected base. - Baseline resolution now maps Promise rejection into the schema-backed
BaselineResolutionFailure. Bundled fallback is limited to remote-access failure; corrupt, invalid, and unsafe baselines remain typed failures with their causes preserved. - Scaffold reconciliation still executes independent actions and persists successful ownership, but
any failures now leave through the Effect error channel as
ScaffoldApplicationFailurescarrying the partial result. The update boundary consumes that partial result to preserve the classified public outcome. - Command-facing feature ports expose feature-owned models and schema-backed operation failures. Platform composition owns baseline, repository, control-plane, scaffold, update, and tool mechanics and maps raw integration failures while preserving causes.
- Context planning, project settings, scaffold state, repository scaffolding, and scaffold update use explicit public exports. Runtime export-key assertions and compile-only consumer proofs pin those surfaces.
- Public report submission now treats operator identity as optional enrichment. Missing auth
configuration, absent durable access, and auth/session persistence outages continue through the
anonymous report path. Protected backoffice endpoints still return the declared 503
BackofficePersistenceUnavailableresponse. The typed-failure contract permits this recovery only in the named public-report identity boundary. ProjectSettingsLiveselection remains application-root-only and is protected by the configuration boundary contract. The public-root scanner now uses the TypeScript AST so type-only imports, type-only exports, and dynamic imports cannot bypass private-domain detection.- The exported feature-boundary scanner now includes
ImportTypeNodereferences and scans featureport,interaction,model, anderrorsurfaces. Repository scaffolding and scaffold update expose feature-owned DTOs/errors rather than private baseline, content, or scaffold types. - The ProjectSettings filesystem guard now permits composition only at the two explicit application roots. Renaming a composition module or importing the adapter through an alias no longer bypasses the contract.
- Update reconciliation evidence remains available to internal callers and tests, while the direct update and nested check JSON presenters remove that internal field at the public executable seam.
- The final semantic regression audit restored the accepted IP-318 lifecycle routes:
hi initis a root command,hi scaffolddirectly owns repository setup, and the stalescaffold init/setupsubtree is absent. Failed or partial write reconciliation now selects a nonzero status only at the command boundary; successful writes do not. - Read-only
check --jsonagain carries the typed settings-upgrade assessment. IP-317 context-plan, projection-receipt/script, and desired-state classification remains pinned at its semantic and fixture seams without exposing internal reconciliation in public JSON.
Re-audit RED and GREEN evidence
The command-boundary RED reported five leaking ports. The global type-only scanner then produced real REDs for cross-feature private type imports before those consumers were routed through public roots. The persistence-recovery mutation sentinel failed before its detector existed. The API behavior was already correct, so its stronger spy-based test was an honest characterization rather than a fabricated product RED.
Final focused evidence after repair:
- CLI feature and command regressions: 150/150 passed; the broader touched command/update rerun passed 166/166.
- CLI public-root and command-boundary contracts: 31/31 passed.
- CLI public-output executable contract: 4/4 passed.
- CLI update regression in isolation: 70/70 passed; the complete serial CLI suite passed 494/494 across 49 files.
- API public contract: 3/3 passed; typed-failure validator: 12/12 passed.
- Domain-boundary validator: 16/16 passed with 422 assertions.
- Five repository Effect v4 contracts: 91/91 passed with 1,106 assertions.
- The repository behavior-contract validator passed with
valid: trueand no errors; the scaffold workspace passed 48/48 tests and its typecheck with the full IP-317 public schema fixture restored. - Repository structure check, CLI and API typechecks, CLI build, scoped formatting, and
git diff --checkpassed.
The direct wiki validation constraint remains unchanged: do not run a root or wiki wrapper that
invokes sync-content.mjs in apply mode. Direct generation and native TypeScript checking are the
safe gates. The direct wiki build is still blocked by seven inherited stale generated spec artifacts
without title frontmatter; those unrelated artifacts remain untouched.
T11: Review and docs ingest
Independent final API/database and CLI rereviews returned PASS. Findings-first review corrections are
incorporated, T1-T10 evidence is complete, and private/internal docs ingest updates the existing
contract concept, validation flow, decision, runbooks, indexes, and bookkeeping. The scoped learning
scan chose update: the existing routed runbook is the canonical future-use hook, while one compact
note records the destructive wiki-wrapper validation gotcha.
The T11 docs/review slice is complete. Linear IP-320 and IP-332 through IP-336 are Done. Parent
closeout still owns this final docs commit/push and the last post-doc stack gate. The child must
remain open, draft, unmerged, and based on the parent branch; no branch in this slice targets or
merges to main.
Final clean stack checkpoint before the closing docs update
After child SHA 56311d8786ca40f8cabc975cfa5c00177e0fe726, every affected worktree was
clean and every branch had identical local and remote heads:
- #76:
84434c687e8cc02e7f1b91634190beb8631a5d53, based onmain - #77:
ab8363276e37d8785068aeb0230218ade1026df0 - #78:
cd35982f1f0029dc2940100463eed49fe7d8b147 - #79:
56311d8786ca40f8cabc975cfa5c00177e0fe726 - #80:
efb92ec50ba4677f132d0c364e9e1218597d9dbd - #81:
cf5a0f852af20a17157861d1ac292186024af84d - #82:
09fac3bf3775c65ade5da6b42014f769c8e792dd - #83:
ebb4e87002d4c57919419ae2bc3e4b4388ebe824
Live PR verification found #76-#83 open, draft, and unmerged. PRs #77-#83 remain sibling children
based on #76's branch; no child contains or depends on another sibling. stack status inferred that
exact fan-out. stack sync --dry-run preserved it and reported required updates. The subsequent
stack sync created backup
backup/stack-sync-2026-07-19T111449000Z-team/stefan/refactor-cli-architecture, then failed safely
while replaying parent commit 0e800522 (chore(scaffold): accept latest baseline). The replay was
aborted, the original parent restored, the temporary branch deleted, and every child left unchanged.
Post-attempt status, topology, live PR, and clean-worktree checks all passed.
No stack track, retargeting, linearization, manual rebase/force-push, or merge occurred. After this
docs-only evidence update is committed and pushed, run one last stack sync --dry-run; apply only if
the preview preserves the exact fan-out and requires changes, then repeat status, PR-base/state, SHA,
and clean-worktree verification.
2026-07-22 PR #76 review and bounded bug closeout
All nine supplied review comments were resolved. ClawPatch bounded run
20260722T123459-4ca977 inspected origin/main...HEAD; its ten accepted branch findings were fixed.
The recursive-gitignore finding was pre-existing, outside the diff, and closed as wont-fix. Four
older global open findings were not part of this bounded run.
Revalidation runs culminated in 20260722T162242-bf6be7, which confirmed the reopened apply-time
lifecycle finding was fixed. The final review commits are fc2a55d0, 45c259bf, and 6317ca8b.
Subsequent fixed-point reviews returned no findings.
Final validation evidence:
- Root
bun run testpassed: Effect 95/95, behavior 32/32, browser 8/8, CLI 771/771, API 144/144, backoffice 68/68, scaffold 49/49, and runtime-productvalid: true. - Root
checkpassed 12/12. - Clean-environment
check-typespassed 11/11 withNEXT_PUBLIC_SERVER_URL=https://harness-api.localhost. - Git diff/check hygiene was clean.
hi check still exits 1 with blank output because of verified pre-existing scaffold
receipt/control-plane divergence. No broad hi update was applied. PR #76 remains unpushed at this
exact checkpoint; the parent will push and verify CI, with no further implementation-note append
unless new evidence requires it.
2026-07-22 Codex review loop: comments 10-13
The follow-up review made package test resolution explicit for backoffice and wiki, synchronized the public auth behavior harness with the current configuration and database/auth constructors, and locked public/runtime harness parity into the auth contract. CLI publication now rechecks worktree cleanliness immediately after build because that build may regenerate the tracked bundled-baseline identity. An uncommitted refresh stops before npm publish, tag push, or GitHub release mutation; after committing the identity, rerun the release command. Recovery for a version already present on npm still skips package build/publish and reconciles the tag and GitHub release.
Focused evidence passed: backoffice 68/68, wiki 6/6, auth 22/22, CLI release tests 6/6, the immutable
fixture closeout 16/16, affected package checks and typechecks, and git diff --check. Bounded
mutations proved the release tests fail when either the post-build cleanliness gate or the
already-published-version branch is removed.
Docs ingest selected the private/internal path. The existing root and routed runbooks plus these implementation notes already own the workflow and evidence, so learning-artifact creation, flow and concept pages, route or navigation metadata, ingest frontmatter, index/log bookkeeping, and a public docs handoff were intentionally skipped.
2026-07-22 Codex review loop: explicit local baseline override
Baseline resolution again honors CliReleaseConfiguration.baselineUrl, including
DP_BASELINE_URL=file:///absolute/path, before requiring a control-plane URL for non-bundled
requests. The local directory receives a content digest and local-authority summary, validates its
declared CLI compatibility, preserves its metadata tag and commit, and must match an exact
selector's baseline.json version. Invalid explicit local input fails typed without remote or
bundled fallback. Non-file URLs retain verified control-plane authority semantics.
The public resolver test first failed with BaselineUnavailable because control-plane configuration
was absent, then passed after the local resolution seam was restored. Bounded mutations also proved
that compatibility, exact-version, malformed-metadata, missing-local, non-file authority, and exact
content-digest tests reject their intended regressions. Present compatibility metadata must contain
a nonblank string range; legacy metadata may omit compatibility and receives *. Final evidence
passed focused resolver/config tests 30/30, the full CLI suite 784/784, all five Effect v4 contracts
95/95, CLI check and typecheck, wiki check, and
git diff --check. The existing runbook and implementation notes own this operator override, so no
new learning, flow, concept, route, metadata, index, or log artifact was created.