Align CLI and MCP with v19 vocabulary - #798
Conversation
|
Warning Review limit reached
Next review available in: 3 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (16)
📝 WalkthroughWalkthroughThis PR aligns the CLI and MCP surfaces with the v19 Runtime/Lane model, adds canonical write/observe/settlement workflows, supports persisted strand reopening, and updates packaging, documentation, diagnostics, and tests. Changesv19 public surface alignment
Estimated code review effort: 5 (Critical) | ~180 minutes Sequence Diagram(s)sequenceDiagram
participant Client
participant CLI as git-warp
participant Runtime
participant Lane
Client->>CLI: write or observe request
CLI->>Runtime: open lane
Runtime->>Lane: write intent or observe
Lane-->>Runtime: Receipt or Reading stream
Runtime-->>CLI: canonical envelope
CLI-->>Client: JSON, JSONL, or human output
Possibly related issues
Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Release Preflight
If this PR is from a |
There was a problem hiding this comment.
Actionable comments posted: 17
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
test/unit/cli/doctor.test.ts (1)
70-78: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick winUpdate
CLI_OPTIONSto the currentCliOptionsshape.
test/unit/cli/doctor.test.tsstill passes legacygraph/ndjson/viewfields intohandleDoctor, butcreateDoctorContextresolves the lane viaoptions.lane; with these tests, that value isundefinedandresolveGraphNamefalls back to auto-detecting a single graph. Switch the fixture tolane/strand/jsonl/writerExplicitand type it asCliOptions.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@test/unit/cli/doctor.test.ts` around lines 70 - 78, Update the CLI_OPTIONS fixture used by the doctor tests to match the current CliOptions shape: replace legacy graph/ndjson/view fields with lane/strand/jsonl/writerExplicit, set values consistent with the test expectations, and type the fixture as CliOptions instead of using any. Ensure handleDoctor receives an explicit lane so createDoctorContext does not rely on graph auto-detection.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@bin/cli/commands/audit.ts`:
- Around line 24-28: Remove the `--writer` argument from the `args` passed to
`handleSubstrateAudit`; `options.writerExplicit` should not cause the CLI
runtime identity to become an audit filter. Preserve the existing audit
invocation and use only an audit-specific filter option when audit filtering is
explicitly requested.
In `@bin/cli/commands/doctor-v19.ts`:
- Around line 22-30: Prevent duplicate repository connections by passing the
already-open Runtime/persistence from withRuntime into handleSubstrateDoctor and
through createDoctorContext, preserving openRequiredLane validation; update
bin/cli/commands/doctor-v19.ts lines 22-30 accordingly. Apply the same change in
bin/cli/commands/audit.ts lines 21-34 by passing the withRuntime-opened
connection into handleSubstrateAudit instead of allowing createPersistence to
reopen it.
In `@bin/cli/commands/mcp/McpDomainTools.ts`:
- Around line 121-130: Update startObservation’s observation handling so it does
not fully materialize the async stream before returning observationId. Replace
the unbounded readings array accumulation with a bounded or lazy retained
transport, while preserving receipt retention and ensuring limit-based
pagination operates on the retained observation data.
In `@bin/cli/commands/observe.ts`:
- Line 82: Wrap the observerFromText call in the observe command with the CLI’s
established usage-error handling, matching the pattern used for write.ts’s
intentFromText parsing. Ensure JSON or zod parsing failures are converted into
the expected usage error instead of escaping unhandled.
In `@bin/cli/commands/receipt.ts`:
- Around line 26-27: Update receipt-file parsing around parseMcpJson and
JSON.parse(text) to catch filesystem and JSON parsing failures, then route them
through the CLI’s usageError convention. Preserve successful parsing behavior
and ensure the resulting usage error includes the underlying failure context.
- Around line 31-42: Replace the manual parsing in receiptInputPath with the
shared parseCommandArgs flow and the receipt command’s zod argument schema,
matching the implementations used by write, observe, fork, and settle. Ensure
both --input <path> and --input=<path> are accepted, while preserving validation
that the command is show and input is required; route invalid arguments through
the shared usage-error formatting.
In `@bin/cli/commands/settle.ts`:
- Around line 133-136: Wrap the plan-file read, JSON parsing, parseMcpJson call,
and reviewedSettlementFromValue processing in the existing usage-error handling
flow for the settle command. Convert filesystem, JSON, and schema validation
failures into usageError responses while preserving the successful reviewed
settlement path.
In `@bin/cli/commands/write.ts`:
- Line 41: Update the write command’s intent handling around intentFromText so
JSON parsing and validation failures are caught and converted to the command
family’s usageError convention before calling lane.write. Preserve successful
intent conversion and writing behavior, and follow the existing usageError
pattern used by related commands.
In `@bin/cli/v19/V19DomainInput.ts`:
- Around line 77-117: Wrap JSON.parse failures in intentFromText and
observerFromText with usageError, and wrap validation failures from
INTENT_SCHEMA.parse and READING_SCHEMA.parse in intentFromValue and
observerFromValue with usageError. Preserve the existing successful parsing and
descriptor dispatch behavior while ensuring malformed CLI input consistently
produces the established usageError failure path.
- Line 1: Normalize all user-input parsing failures to the CLI’s usageError
convention: update intentFromText, observerFromText, intentFromValue, and
observerFromValue to catch JSON.parse and schema-parse errors and rethrow
usageError with the underlying message; update reviewedSettlementFromValue and
receiptResult similarly, and wrap settle’s JSON.parse plus
reviewedSettlementFromValue call in usageError handling. Keep existing
successful parsing behavior unchanged; write and observe are covered through
their helper functions.
In `@bin/cli/v19/V19SettlementReview.ts`:
- Around line 69-77: Update reviewedSettlementFromValue to catch validation
failures from REVIEW_SCHEMA.parse and convert them through the CLI’s usageError
convention, while preserving the existing frozen selector and plan construction
for valid values.
- Around line 28-29: Align PLAN_SCHEMA with the fields enforced by
freezePlanFields and compared in planParts: either add invalidationRule to
SettlementPlanFields and ReviewedSettlement.plan so it is preserved and checked
during apply, or remove it from PLAN_SCHEMA so unsupported values are rejected.
In `@bin/presenters/V19Json.ts`:
- Around line 4-6: Update toMcpJson to pass value directly to parseMcpJson
instead of performing the JSON.stringify/JSON.parse round-trip, preserving
parseMcpJson’s validation and E_V19_JSON_VALUE errors for undefined, functions,
non-finite numbers, and other invalid values.
In `@src/domain/api/IntentRuntime.ts`:
- Around line 46-53: Update isCascadingNodeRemoval so the EdgeRemove operations
preceding the terminal NodeRemove are accepted only when each edge is connected
to the node being removed. Validate both edge endpoints against the terminal
removal’s node identity, and return false for unrelated edge removals so they
are preserved during reopening and join.
In `@src/domain/services/strand/StrandCoordinator.ts`:
- Line 120: Update the StrandCoordinator creation flow wherever
normalized.baseCheckpointSha is used to require a corresponding baseFrontier
whenever a checkpoint is supplied. Reject the input before capturing or
persisting the live frontier, ensuring checkpointSha and baseFrontier are always
provided together and preventing mismatched reopened strand coordinates.
In `@src/domain/WarpWorldline.ts`:
- Around line 49-56: Replace the structural WarpDraftPatchEntry type with a
frozen runtime-backed class that validates patch and sha inputs through its
constructor. Update getStrandOverlayPatches and the LoadDraftPatchEntries
hydration path to instantiate this class for every persisted entry, preserving
the existing public fields and readonly behavior.
In `@test/bats/helpers/setup.bash`:
- Around line 3-17: Update setup_test_repo in test/bats/helpers/setup.bash to
configure CLI with the compiled dist/bin/git-warp.js entrypoint instead of
bin/git-warp.ts. Also update the direct subprocess invocation in
test/bats/v19-cli.bats lines 197-231 to use the same compiled entrypoint; no
other behavior should change.
---
Outside diff comments:
In `@test/unit/cli/doctor.test.ts`:
- Around line 70-78: Update the CLI_OPTIONS fixture used by the doctor tests to
match the current CliOptions shape: replace legacy graph/ndjson/view fields with
lane/strand/jsonl/writerExplicit, set values consistent with the test
expectations, and type the fixture as CliOptions instead of using any. Ensure
handleDoctor receives an explicit lane so createDoctorContext does not rely on
graph auto-detection.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 89b9b0bd-06e4-4c37-b974-fb1c9ce5105a
⛔ Files ignored due to path filters (2)
bin/cli/capabilities/V19CapabilityContract.generated.tsis excluded by!**/*.generated.*package-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (171)
.github/workflows/ci.ymlREADME.mdbin/cli/capabilities/v19-capabilities.jsonbin/cli/commands/MaterializationRepair.tsbin/cli/commands/audit.tsbin/cli/commands/bisect.tsbin/cli/commands/check.tsbin/cli/commands/checkpoint.tsbin/cli/commands/debug.tsbin/cli/commands/debug/conflicts.tsbin/cli/commands/debug/coordinate.tsbin/cli/commands/debug/provenance.tsbin/cli/commands/debug/receipts.tsbin/cli/commands/debug/shared.tsbin/cli/commands/debug/timeline.tsbin/cli/commands/doctor-v19.tsbin/cli/commands/doctor/checks.tsbin/cli/commands/doctor/checksAux.tsbin/cli/commands/doctor/checksMaterializationCache.tsbin/cli/commands/doctor/codes.tsbin/cli/commands/doctor/index.tsbin/cli/commands/doctor/storageCapabilities.tsbin/cli/commands/fork.tsbin/cli/commands/gc.tsbin/cli/commands/history.tsbin/cli/commands/info.tsbin/cli/commands/install-hooks.tsbin/cli/commands/materialize.tsbin/cli/commands/mcp.tsbin/cli/commands/mcp/McpDiagnosticTools.tsbin/cli/commands/mcp/McpDomainTool.tsbin/cli/commands/mcp/McpDomainTools.tsbin/cli/commands/mcp/McpProtocol.tsbin/cli/commands/mcp/McpRuntimeSession.tsbin/cli/commands/mcp/McpToolCatalog.tsbin/cli/commands/mcp/McpToolInput.tsbin/cli/commands/observe.tsbin/cli/commands/optic.tsbin/cli/commands/patch.tsbin/cli/commands/path.tsbin/cli/commands/query.tsbin/cli/commands/receipt.tsbin/cli/commands/registry.tsbin/cli/commands/reindex.tsbin/cli/commands/repair.tsbin/cli/commands/seek.tsbin/cli/commands/seekCursorHelpers.tsbin/cli/commands/serve.tsbin/cli/commands/settle.tsbin/cli/commands/strand.tsbin/cli/commands/strand/braid.tsbin/cli/commands/strand/compare.tsbin/cli/commands/strand/create.tsbin/cli/commands/strand/drop.tsbin/cli/commands/strand/list.tsbin/cli/commands/strand/materialize.tsbin/cli/commands/strand/show.tsbin/cli/commands/strand/transfer-plan.tsbin/cli/commands/sync.tsbin/cli/commands/tree.tsbin/cli/commands/trust.tsbin/cli/commands/verify-audit.tsbin/cli/commands/verify-index.tsbin/cli/commands/watch.tsbin/cli/commands/write.tsbin/cli/infrastructure.tsbin/cli/schemas.tsbin/cli/shared.tsbin/cli/time-travel-shared.tsbin/cli/types.tsbin/cli/v19/V19DomainInput.tsbin/cli/v19/V19Runtime.tsbin/cli/v19/V19SettlementReview.tsbin/git-warpbin/git-warp.tsbin/presenters/V19Json.tsbin/presenters/V19ReadingReceipt.tsbin/presenters/json.tsdocker/Dockerfile.node20docker/Dockerfile.node22docker/Dockerfile.node22-slimdocs/TECHNICAL_TEARDOWN.mddocs/operations/README.mddocs/topics/api/README.mddocs/topics/cas-first-memoized-materialization.mddocs/topics/cli.mddocs/topics/getting-started.mddocs/topics/querying.mddocs/topics/reference.mddocs/topics/strands.mddocs/topics/sync.mddocs/topics/troubleshooting.mdeslint.config.tsindex.tspackage.jsonscripts/GenerateV19CapabilityContract.tsscripts/check-source-backed-reference.tsscripts/hooks/post-merge.shscripts/smoke-generated-sdk.shscripts/smoke-packed-artifact.shscripts/source-size-gate.tssrc/application/Runtime.tssrc/application/RuntimeLaneAdapter.tssrc/application/RuntimeStrandLaneBinding.tssrc/application/RuntimeStrandLaneOpening.tssrc/domain/RuntimeHost.tssrc/domain/WarpWorldline.tssrc/domain/WarpWorldlineDraftStorage.tssrc/domain/api/DraftTimelineRuntime.tssrc/domain/api/IntentRuntime.tssrc/domain/api/LaneRuntime.tssrc/domain/services/controllers/StrandController.tssrc/domain/services/strand/StrandCoordinator.tssrc/domain/services/strand/StrandDescriptorValidation.tssrc/domain/types/StrandDescriptor.tssrc/domain/utils/parseStrandBlob.tssrc/domain/warp/RuntimeHostProduct.tstest/bats/cli-check.batstest/bats/cli-doctor.batstest/bats/cli-errors.batstest/bats/cli-history.batstest/bats/cli-info.batstest/bats/cli-materialize.batstest/bats/cli-mcp.batstest/bats/cli-multiwriter.batstest/bats/cli-ndjson.batstest/bats/cli-path.batstest/bats/cli-query.batstest/bats/cli-seek.batstest/bats/cli-trust-sync.batstest/bats/cli-trust.batstest/bats/cli-verify-audit.batstest/bats/cli-view-modes.batstest/bats/helpers/append-patch.tstest/bats/helpers/inspect-seek-cursor-expiry.tstest/bats/helpers/seed-audit-graph.tstest/bats/helpers/seed-doctor-graph.tstest/bats/helpers/seed-graph.tstest/bats/helpers/seed-multiwriter.tstest/bats/helpers/seed-rich.tstest/bats/helpers/seed-setup.tstest/bats/helpers/seed-trust-sync.tstest/bats/helpers/seed-trust.tstest/bats/helpers/setup.bashtest/bats/v19-cli.batstest/bats/warp-graph-cli.batstest/helpers/SettlementHarness.tstest/integration/application/Runtime.fork.integration.test.tstest/unit/application/Runtime.test.tstest/unit/cli/commands/debug.test.tstest/unit/cli/commands/mcp-lifecycle.test.tstest/unit/cli/commands/mcp.test.tstest/unit/cli/commands/strand.test.tstest/unit/cli/doctor-materialization-cache.test.tstest/unit/cli/doctor.test.tstest/unit/cli/optic.test.tstest/unit/cli/parseArgs.test.tstest/unit/cli/schemas.test.tstest/unit/cli/trust.exitcode.test.tstest/unit/cli/trust.pin.test.tstest/unit/cli/verify-audit.test.tstest/unit/cli/verify-index.test.tstest/unit/domain/DraftTimelineRuntime.test.tstest/unit/domain/IntentRuntime.test.tstest/unit/domain/services/strand/StrandService.test.tstest/unit/scripts/cli-command-registry.test.tstest/unit/scripts/cli-help-shape.test.tstest/unit/scripts/release-artifact-command.test.tstest/unit/scripts/source-size-inventory-command.test.tstest/unit/scripts/v19-public-api-boundary.test.tstsconfig.src.json
💤 Files with no reviewable changes (78)
- test/bats/helpers/append-patch.ts
- test/bats/helpers/seed-doctor-graph.ts
- test/bats/cli-trust-sync.bats
- test/bats/cli-path.bats
- test/bats/helpers/seed-multiwriter.ts
- bin/cli/commands/strand/drop.ts
- test/bats/cli-multiwriter.bats
- bin/cli/commands/strand/show.ts
- test/unit/cli/optic.test.ts
- test/bats/cli-query.bats
- test/unit/cli/trust.exitcode.test.ts
- bin/cli/commands/gc.ts
- bin/cli/commands/materialize.ts
- bin/cli/commands/debug.ts
- test/bats/helpers/seed-audit-graph.ts
- test/bats/warp-graph-cli.bats
- bin/cli/commands/strand/materialize.ts
- bin/cli/commands/strand/braid.ts
- test/unit/cli/trust.pin.test.ts
- test/bats/cli-check.bats
- test/bats/cli-info.bats
- test/bats/helpers/inspect-seek-cursor-expiry.ts
- bin/cli/commands/seekCursorHelpers.ts
- test/bats/cli-verify-audit.bats
- test/unit/cli/commands/strand.test.ts
- test/bats/cli-errors.bats
- test/bats/cli-mcp.bats
- test/bats/helpers/seed-trust.ts
- test/bats/cli-seek.bats
- bin/cli/commands/path.ts
- test/unit/cli/commands/debug.test.ts
- bin/cli/commands/install-hooks.ts
- bin/cli/commands/reindex.ts
- test/unit/cli/schemas.test.ts
- test/bats/cli-materialize.bats
- test/bats/helpers/seed-rich.ts
- bin/cli/commands/debug/conflicts.ts
- bin/cli/commands/strand/list.ts
- test/bats/cli-doctor.bats
- bin/cli/commands/trust.ts
- test/bats/helpers/seed-setup.ts
- docs/TECHNICAL_TEARDOWN.md
- bin/cli/commands/bisect.ts
- bin/cli/commands/strand/create.ts
- bin/cli/commands/serve.ts
- bin/cli/commands/debug/timeline.ts
- bin/cli/commands/seek.ts
- bin/cli/commands/check.ts
- test/unit/cli/verify-index.test.ts
- bin/cli/time-travel-shared.ts
- bin/cli/commands/history.ts
- bin/cli/commands/strand.ts
- test/bats/cli-trust.bats
- bin/cli/commands/debug/coordinate.ts
- bin/cli/commands/patch.ts
- bin/cli/commands/debug/provenance.ts
- test/bats/helpers/seed-trust-sync.ts
- bin/cli/commands/checkpoint.ts
- test/bats/helpers/seed-graph.ts
- test/bats/cli-view-modes.bats
- test/bats/cli-history.bats
- bin/cli/commands/info.ts
- bin/cli/commands/strand/compare.ts
- test/bats/cli-ndjson.bats
- bin/cli/commands/strand/transfer-plan.ts
- bin/cli/commands/debug/receipts.ts
- bin/cli/commands/tree.ts
- bin/cli/commands/sync.ts
- scripts/source-size-gate.ts
- bin/cli/commands/query.ts
- bin/cli/commands/optic.ts
- bin/cli/commands/watch.ts
- bin/cli/commands/verify-index.ts
- test/unit/scripts/source-size-inventory-command.test.ts
- bin/cli/commands/debug/shared.ts
- bin/cli/commands/doctor/codes.ts
- test/unit/cli/doctor-materialization-cache.test.ts
- bin/cli/schemas.ts
📜 Review details
⏰ Context from checks skipped due to timeout. (4)
- GitHub Check: test-node (22)
- GitHub Check: coverage-threshold
- GitHub Check: v19 base/head performance
- GitHub Check: preflight
🧰 Additional context used
📓 Path-based instructions (4)
**/*.{ts,tsx,js,jsx}
📄 CodeRabbit inference engine (AGENTS.md)
**/*.{ts,tsx,js,jsx}: Do not use direct imports fromsrc/infrastructure/**insrc/domain/**orsrc/ports/**; depend on a port instead.
Do not use direct Node built-ins insrc/domain/**orsrc/ports/**; use a port instead.
Files:
bin/cli/commands/mcp/McpToolInput.tsbin/cli/commands/doctor-v19.tsbin/cli/commands/mcp/McpDomainTool.tsbin/cli/commands/repair.tsindex.tsbin/cli/commands/MaterializationRepair.tsbin/cli/commands/write.tssrc/domain/RuntimeHost.tstest/unit/scripts/v19-public-api-boundary.test.tsbin/presenters/json.tssrc/application/RuntimeStrandLaneBinding.tsbin/cli/commands/verify-audit.tstest/unit/domain/IntentRuntime.test.tssrc/domain/WarpWorldlineDraftStorage.tstest/integration/application/Runtime.fork.integration.test.tstest/unit/cli/commands/mcp-lifecycle.test.tstest/unit/scripts/cli-help-shape.test.tstest/unit/cli/verify-audit.test.tssrc/domain/api/LaneRuntime.tsbin/presenters/V19Json.tsbin/cli/commands/audit.tsbin/cli/commands/receipt.tsbin/cli/commands/observe.tsscripts/GenerateV19CapabilityContract.tsbin/cli/commands/mcp/McpDiagnosticTools.tstest/unit/scripts/release-artifact-command.test.tssrc/domain/services/strand/StrandDescriptorValidation.tssrc/domain/utils/parseStrandBlob.tsbin/cli/commands/doctor/checks.tssrc/application/RuntimeStrandLaneOpening.tsbin/cli/v19/V19Runtime.tsscripts/check-source-backed-reference.tstest/unit/domain/services/strand/StrandService.test.tseslint.config.tstest/helpers/SettlementHarness.tssrc/domain/types/StrandDescriptor.tsbin/cli/commands/mcp/McpDomainTools.tsbin/cli/v19/V19SettlementReview.tsbin/cli/commands/settle.tsbin/cli/v19/V19DomainInput.tssrc/domain/warp/RuntimeHostProduct.tsbin/cli/commands/mcp/McpToolCatalog.tssrc/domain/api/IntentRuntime.tssrc/application/Runtime.tstest/unit/domain/DraftTimelineRuntime.test.tstest/unit/scripts/cli-command-registry.test.tsbin/cli/commands/fork.tsbin/presenters/V19ReadingReceipt.tstest/unit/cli/commands/mcp.test.tssrc/domain/services/controllers/StrandController.tsbin/cli/commands/doctor/checksAux.tsbin/cli/commands/registry.tssrc/domain/services/strand/StrandCoordinator.tstest/unit/application/Runtime.test.tsbin/cli/commands/mcp/McpRuntimeSession.tsbin/cli/commands/doctor/index.tsbin/git-warp.tsbin/cli/commands/doctor/storageCapabilities.tssrc/domain/api/DraftTimelineRuntime.tstest/unit/cli/parseArgs.test.tsbin/cli/types.tstest/unit/cli/doctor.test.tssrc/application/RuntimeLaneAdapter.tsbin/cli/commands/doctor/checksMaterializationCache.tsbin/cli/commands/mcp/McpProtocol.tsbin/cli/shared.tsbin/cli/infrastructure.tssrc/domain/WarpWorldline.tsbin/cli/commands/mcp.ts
src/**/*.{ts,tsx,js,jsx}
📄 CodeRabbit inference engine (AGENTS.md)
src/**/*.{ts,tsx,js,jsx}: Do not introduceany,as any,as unknown as,unknown(outside adapters),Record<string, unknown>(outside adapters),*Likeplaceholder types,JSON.parse/JSON.stringify(outside adapters),fetch(outside adapters),process.env(outside adapters),@ts-ignore, orz.any()in core code; use validated boundary models and ports instead.
Use constructor-injected ports for external capabilities; do not rely on ambient dependencies for I/O, clocks, persistence, or entropy.
Do not createutils.ts,helpers.ts,misc.ts, orcommon.ts; name files after the actual concept they model.
Prefer one file per class, type, or object; if a file accumulates peer concepts, split it.
Keep helper corridors, fake shape trust, transitional duplication, and compile-time theater out of the codebase; runtime-honest TypeScript must reflect actual behavior.
No enum usage; prefer runtime-backed domain forms and unions.
Do not use boolean trap parameters; prefer named option objects or separate methods.
Avoid magic strings or numbers when a named constant should exist.
Keep domain bytes asUint8Array;Bufferbelongs in infrastructure adapters.
Files:
src/domain/RuntimeHost.tssrc/application/RuntimeStrandLaneBinding.tssrc/domain/WarpWorldlineDraftStorage.tssrc/domain/api/LaneRuntime.tssrc/domain/services/strand/StrandDescriptorValidation.tssrc/domain/utils/parseStrandBlob.tssrc/application/RuntimeStrandLaneOpening.tssrc/domain/types/StrandDescriptor.tssrc/domain/warp/RuntimeHostProduct.tssrc/domain/api/IntentRuntime.tssrc/application/Runtime.tssrc/domain/services/controllers/StrandController.tssrc/domain/services/strand/StrandCoordinator.tssrc/domain/api/DraftTimelineRuntime.tssrc/application/RuntimeLaneAdapter.tssrc/domain/WarpWorldline.ts
src/domain/**/*.{ts,tsx,js,jsx}
📄 CodeRabbit inference engine (AGENTS.md)
src/domain/**/*.{ts,tsx,js,jsx}: Insrc/domain/**, do not useDate.now(),new Date(),Date(),performance.now(),Math.random(),crypto.randomUUID(),crypto.getRandomValues(),setTimeout,setInterval, rawnew Error(...)/new TypeError(...), or direct imports from Node built-ins; time, entropy, and external capabilities must enter through ports or parameters, and domain errors should extendWarpError.
Construct domain objects only in core when doing so establishes validated runtime truth; do not build infrastructure adapters, host APIs, persistence implementations, wall clocks, or entropy sources inside core.
Prefer discriminated unions and explicit result types instead of boolean-flag bags, and model expected failures as return values rather than exceptions.
src/domain/must not import host APIs or Node-specific globals; hexagonal architecture boundaries are mandatory.
Domain code must not use the wall clock directly; time must enter through a port or parameter.
Files:
src/domain/RuntimeHost.tssrc/domain/WarpWorldlineDraftStorage.tssrc/domain/api/LaneRuntime.tssrc/domain/services/strand/StrandDescriptorValidation.tssrc/domain/utils/parseStrandBlob.tssrc/domain/types/StrandDescriptor.tssrc/domain/warp/RuntimeHostProduct.tssrc/domain/api/IntentRuntime.tssrc/domain/services/controllers/StrandController.tssrc/domain/services/strand/StrandCoordinator.tssrc/domain/api/DraftTimelineRuntime.tssrc/domain/WarpWorldline.ts
src/domain/**/!(*.test).{ts,tsx,js,jsx}
📄 CodeRabbit inference engine (AGENTS.md)
Use explicit domain concepts with validated constructors,
Object.freeze, andinstanceofdispatch; domain objects should be runtime-backed nouns, not ad hoc shape bags.
Files:
src/domain/RuntimeHost.tssrc/domain/WarpWorldlineDraftStorage.tssrc/domain/api/LaneRuntime.tssrc/domain/services/strand/StrandDescriptorValidation.tssrc/domain/utils/parseStrandBlob.tssrc/domain/types/StrandDescriptor.tssrc/domain/warp/RuntimeHostProduct.tssrc/domain/api/IntentRuntime.tssrc/domain/services/controllers/StrandController.tssrc/domain/services/strand/StrandCoordinator.tssrc/domain/api/DraftTimelineRuntime.tssrc/domain/WarpWorldline.ts
🧠 Learnings (1)
📚 Learning: 2026-03-04T12:08:30.347Z
Learnt from: flyingrobots
Repo: git-stunts/git-warp PR: 63
File: package.json:126-126
Timestamp: 2026-03-04T12:08:30.347Z
Learning: Vitest 4 removes vite-node as a dependency and rewrites its pool system. Do not flag the absence of vite-node in package.json or lockfiles as an error for Vitest 4 projects. Use this as a general guideline: if a project uses Vitest 4, missing vite-node is expected and correct; only flag issues if there is evidence the project is not using Vitest 4 or if vite-node is explicitly required by the project.
Applied to files:
package.json
🪛 ast-grep (0.44.1)
test/unit/scripts/release-artifact-command.test.ts
[warning] 4: Importing child_process exposes a command-execution surface; ensure any command/argument built from input is validated, and prefer execFile/spawn with an argument array over exec.
Context: import {
spawnSync,
type SpawnSyncOptionsWithStringEncoding,
type SpawnSyncReturns,
} from 'node:child_process';
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').
(detect-child-process-typescript)
test/unit/cli/commands/mcp.test.ts
[warning] Importing child_process exposes a command-execution surface; ensure any command/argument built from input is validated, and prefer execFile/spawn with an argument array over exec.
Context: import { execFileSync } from 'node:child_process';
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').
(detect-child-process-typescript)
[warning] Importing child_process exposes a command-execution surface; ensure any command/argument built from input is validated, and prefer execFile/spawn with an argument array over exec.
Context: import { execFileSync } from 'node:child_process';
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').
(detect-child-process-typescript)
🔇 Additional comments (94)
bin/cli/commands/mcp.ts (1)
5-161: LGTM!bin/cli/commands/mcp/McpDomainTools.ts (1)
1-120: LGTM!Also applies to: 138-224
bin/cli/commands/mcp/McpProtocol.ts (1)
5-126: LGTM!bin/cli/commands/mcp/McpRuntimeSession.ts (1)
1-168: LGTM!bin/cli/commands/mcp/McpToolCatalog.ts (1)
2-64: LGTM!src/domain/WarpWorldline.ts (1)
26-30: LGTM!Also applies to: 68-73, 87-94, 115-116, 137-138, 180-200
src/domain/WarpWorldlineDraftStorage.ts (1)
1-54: LGTM!index.ts (1)
18-18: LGTM!bin/cli/commands/mcp/McpDiagnosticTools.ts (1)
15-27: LGTM!Also applies to: 29-100
bin/cli/commands/mcp/McpDomainTool.ts (1)
1-9: LGTM!bin/cli/commands/mcp/McpToolInput.ts (1)
1-21: LGTM!src/application/Runtime.ts (1)
37-49: LGTM!Also applies to: 117-133, 167-183, 210-222
src/application/RuntimeLaneAdapter.ts (1)
3-7: LGTM!Also applies to: 26-31, 102-105
src/application/RuntimeStrandLaneBinding.ts (1)
34-34: LGTM!src/application/RuntimeStrandLaneOpening.ts (1)
1-107: LGTM!src/domain/api/LaneRuntime.ts (1)
9-9: LGTM!Also applies to: 23-23
src/domain/warp/RuntimeHostProduct.ts (1)
190-190: LGTM!src/domain/RuntimeHost.ts (1)
686-687: LGTM!src/domain/api/DraftTimelineRuntime.ts (1)
2-2: LGTM!Also applies to: 12-12, 52-58, 105-120, 298-305
src/domain/api/IntentRuntime.ts (1)
2-6: LGTM!Also applies to: 38-44, 55-112
src/domain/services/controllers/StrandController.ts (1)
22-22: LGTM!Also applies to: 39-41, 77-80
src/domain/services/strand/StrandCoordinator.ts (1)
42-42: LGTM!Also applies to: 355-358
src/domain/services/strand/StrandDescriptorValidation.ts (1)
98-119: LGTM!src/domain/types/StrandDescriptor.ts (1)
62-62: LGTM!Also applies to: 99-104
src/domain/utils/parseStrandBlob.ts (1)
111-117: LGTM!Also applies to: 310-310
bin/cli/commands/write.ts (1)
1-40: LGTM!Also applies to: 42-48
bin/cli/commands/observe.ts (2)
84-87: 🚀 Performance & ScalabilityConfirm observation streams are bounded before fully buffering.
All readings are collected into memory (
readings.push(...)) before any output is produced. Iflane.observe()can back a large/paged neighborhood query, consider streaming output as readings arrive rather than buffering the full set first.
1-81: LGTM!Also applies to: 88-118
bin/cli/v19/V19DomainInput.ts (1)
1-76: LGTM!Also applies to: 118-172
bin/presenters/V19Json.ts (1)
1-3: LGTM!Also applies to: 8-42
bin/presenters/V19ReadingReceipt.ts (2)
1-38: LGTM!Also applies to: 52-72, 88-169
39-51: 🎯 Functional CorrectnessNo change needed for write/settlement receipt evidence.
WriteReceipt.evidenceandSettlementReceipt.evidenceare required in their option types, so unconditionaltoMcpJson(receipt.evidence)is safe here; the optional guard is only for observation receipts.> Likely an incorrect or invalid review comment.bin/cli/commands/fork.ts (1)
1-67: LGTM!bin/cli/commands/settle.ts (1)
1-132: LGTM!Also applies to: 137-153
bin/cli/v19/V19SettlementReview.ts (2)
1-27: LGTM!Also applies to: 39-68, 78-104, 117-141
28-38: 🗄️ Data Integrity & IntegrationNo change needed.
freezeHandlestoressourceFrontier/targetFrontiernormalized to{ id }, whilesettle --outwrites JSON data viatoMcpJson, so preview output round-tripped throughsettle applymatches this schema.README.md (1)
140-143: LGTM!docs/operations/README.md (1)
3-85: LGTM!docs/topics/api/README.md (1)
148-158: LGTM!Also applies to: 599-611, 636-639
docs/topics/cas-first-memoized-materialization.md (1)
201-206: LGTM!docs/topics/cli.md (1)
3-146: LGTM!docs/topics/getting-started.md (1)
1-129: LGTM!docs/topics/querying.md (1)
16-16: LGTM!test/helpers/SettlementHarness.ts (1)
119-119: LGTM!Also applies to: 146-146
test/integration/application/Runtime.fork.integration.test.ts (1)
85-154: LGTM!test/unit/application/Runtime.test.ts (1)
32-32: LGTM!Also applies to: 43-51, 121-121, 136-170, 225-225, 243-243
test/unit/scripts/v19-public-api-boundary.test.ts (1)
32-32: LGTM!docs/topics/reference.md (1)
11-19: LGTM!Also applies to: 41-74, 205-219
docs/topics/strands.md (1)
3-83: LGTM!docs/topics/sync.md (1)
3-51: LGTM!docs/topics/troubleshooting.md (1)
3-102: LGTM!docker/Dockerfile.node20 (1)
20-29: LGTM!docker/Dockerfile.node22 (1)
27-29: LGTM!docker/Dockerfile.node22-slim (1)
22-23: LGTM!scripts/hooks/post-merge.sh (1)
39-41: LGTM!scripts/smoke-generated-sdk.sh (1)
50-55: LGTM!scripts/smoke-packed-artifact.sh (1)
42-46: LGTM!Also applies to: 59-62
test/bats/helpers/setup.bash (1)
37-53: LGTM!test/bats/v19-cli.bats (1)
1-196: LGTM!Also applies to: 261-266
test/unit/cli/commands/mcp-lifecycle.test.ts (1)
37-46: LGTM!test/unit/cli/commands/mcp.test.ts (2)
1-64: LGTM!
74-293: LGTM!test/unit/cli/parseArgs.test.ts (1)
1-85: LGTM!test/unit/cli/verify-audit.test.ts (1)
32-37: LGTM!test/unit/domain/DraftTimelineRuntime.test.ts (1)
54-54: LGTM!Also applies to: 82-95
test/unit/domain/IntentRuntime.test.ts (1)
1-117: LGTM!test/unit/domain/services/strand/StrandService.test.ts (1)
690-690: LGTM!Also applies to: 707-707, 716-717
test/unit/scripts/cli-command-registry.test.ts (1)
1-91: LGTM!test/unit/scripts/cli-help-shape.test.ts (1)
3-35: LGTM!test/unit/scripts/release-artifact-command.test.ts (1)
136-141: LGTM!.github/workflows/ci.yml (1)
127-128: LGTM!bin/cli/capabilities/v19-capabilities.json (1)
1-196: LGTM!bin/cli/commands/registry.ts (1)
3-33: LGTM!bin/git-warp (1)
10-21: LGTM!bin/cli/commands/doctor/index.ts (1)
38-53: LGTM!bin/cli/commands/doctor/storageCapabilities.ts (2)
27-27: LGTM!
56-57: 🩺 Stability & AvailabilityNo remaining
repairMaterializationCacheimports to address.scripts/GenerateV19CapabilityContract.ts (1)
84-94: 🗄️ Data Integrity & IntegrationNo change needed.
check:capabilitiesinvokes this script with--check, andbin/cli/capabilities/V19CapabilityContract.generated.tsis committed in the repository.bin/git-warp.ts (1)
134-161: 🩺 Stability & AvailabilityNo change needed.
mcpreturnspayload: undefined,close, andcompletion, soemitResultskips stdout and the result flows into the long-running command path.package.json (1)
75-76: LGTM!bin/cli/infrastructure.ts (1)
107-207: LGTM! TheextractBaseArgs/parseArgsrewrite correctly separates global flags from command tokens, handles--flag=valueand--, and deriveswriterExplicitfrom the raw args rather than the defaulted value.bin/cli/shared.ts (1)
101-135: LGTM! Lane resolution/existence validation logic is correct and doesn't duplicatelistGraphNamescalls across branches.bin/cli/types.ts (1)
7-16: LGTM!bin/cli/commands/doctor/checksAux.ts (1)
109-138: LGTM!bin/cli/commands/verify-audit.ts (1)
49-52: LGTM! Consistent rename tooptions.lane.bin/cli/v19/V19Runtime.ts (1)
10-37: LGTM!eslint.config.ts (1)
512-512: LGTM!tsconfig.src.json (1)
12-12: LGTM!scripts/check-source-backed-reference.ts (1)
240-240: LGTM!Also applies to: 278-281
bin/presenters/json.ts (1)
5-5: LGTM!bin/cli/commands/doctor/checks.ts (1)
155-155: LGTM!Also applies to: 166-166, 231-231, 256-256
bin/cli/commands/doctor/checksMaterializationCache.ts (1)
122-122: LGTM!Also applies to: 141-141, 157-157
bin/cli/commands/MaterializationRepair.ts (1)
1-24: LGTM!bin/cli/commands/repair.ts (1)
1-38: LGTM!
There was a problem hiding this comment.
Actionable comments posted: 3
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
src/application/Runtime.ts (1)
119-128: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick winUse strand-specific foreign-lane diagnostics.
Line 127 calls the fork-specific ownership guard, so
Runtime.strand()rejects a foreign parent withRuntime.fork requires…andE_RUNTIME_FORK_FOREIGN_LANE. Emit a strand-specific message/code (or parameterize the shared guard).🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/application/Runtime.ts` around lines 119 - 128, Update Runtime.strand() and its requireOwnedLaneRuntime ownership guard usage so foreign-parent failures report strand-specific diagnostics, using a strand message and E_RUNTIME_STRAND_FOREIGN_LANE (or an equivalent parameterized guard) instead of fork-specific values; leave Runtime.fork() diagnostics unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@bin/cli/commands/mcp/McpRuntimeSession.ts`:
- Around line 92-112: Update retainObservation to register the
ObservationTransport and return immediately without calling pullObservation,
always returning the new observationId with terminal false and receiptRef null;
leave the initial stream pull to readObservation.
In `@bin/cli/v19/V19Runtime.ts`:
- Around line 24-29: Update the runtime execution flow around the task call and
runtime.close so failures from both are captured; when task rejects and cleanup
also fails, throw an AggregateError containing both errors, while preserving the
existing single-error behavior when only one operation fails.
In `@bin/presenters/V19Json.ts`:
- Around line 4-5: Update toMcpJson and the related object-handling paths to
accept only objects whose prototype is Object.prototype or null. Reject Date,
Map, class instances, and other non-plain prototypes with E_V19_JSON_VALUE
instead of passing them to parseMcpJson or converting them to {}.
---
Outside diff comments:
In `@src/application/Runtime.ts`:
- Around line 119-128: Update Runtime.strand() and its requireOwnedLaneRuntime
ownership guard usage so foreign-parent failures report strand-specific
diagnostics, using a strand message and E_RUNTIME_STRAND_FOREIGN_LANE (or an
equivalent parameterized guard) instead of fork-specific values; leave
Runtime.fork() diagnostics unchanged.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: bfa08077-737f-4184-a823-eafd27b2dad7
📒 Files selected for processing (30)
bin/cli/commands/audit.tsbin/cli/commands/doctor-v19.tsbin/cli/commands/doctor/index.tsbin/cli/commands/doctor/storageCapabilities.tsbin/cli/commands/mcp/McpDomainTools.tsbin/cli/commands/mcp/McpRuntimeSession.tsbin/cli/commands/receipt.tsbin/cli/commands/settle.tsbin/cli/commands/verify-audit.tsbin/cli/infrastructure.tsbin/cli/shared.tsbin/cli/v19/V19DomainInput.tsbin/cli/v19/V19Runtime.tsbin/cli/v19/V19SettlementReview.tsbin/presenters/V19Json.tssrc/application/Runtime.tssrc/application/RuntimeStorageAccess.tssrc/domain/WarpDraftPatchEntry.tssrc/domain/WarpWorldline.tssrc/domain/api/IntentRuntime.tssrc/domain/services/strand/StrandCoordinator.tstest/bats/helpers/setup.bashtest/bats/v19-cli.batstest/unit/cli/commands/mcp.test.tstest/unit/cli/commands/v19-diagnostics.test.tstest/unit/cli/doctor.test.tstest/unit/cli/v19-input-errors.test.tstest/unit/domain/DraftTimelineRuntime.test.tstest/unit/domain/IntentRuntime.test.tstest/unit/domain/services/strand/StrandService.test.ts
📜 Review details
⏰ Context from checks skipped due to timeout. (5)
- GitHub Check: coverage-threshold
- GitHub Check: test-deno
- GitHub Check: test-node (22)
- GitHub Check: v19 base/head performance
- GitHub Check: preflight
🧰 Additional context used
📓 Path-based instructions (4)
src/**/*.{ts,tsx,js,jsx}
📄 CodeRabbit inference engine (AGENTS.md)
src/**/*.{ts,tsx,js,jsx}: Do not introduceany,as any,as unknown as,unknown(outside adapters),Record<string, unknown>(outside adapters),*Likeplaceholder types,JSON.parse/JSON.stringify(outside adapters),fetch(outside adapters),process.env(outside adapters),@ts-ignore, orz.any()in core code; use validated boundary models and ports instead.
Use constructor-injected ports for external capabilities; do not rely on ambient dependencies for I/O, clocks, persistence, or entropy.
Do not createutils.ts,helpers.ts,misc.ts, orcommon.ts; name files after the actual concept they model.
Prefer one file per class, type, or object; if a file accumulates peer concepts, split it.
Keep helper corridors, fake shape trust, transitional duplication, and compile-time theater out of the codebase; runtime-honest TypeScript must reflect actual behavior.
No enum usage; prefer runtime-backed domain forms and unions.
Do not use boolean trap parameters; prefer named option objects or separate methods.
Avoid magic strings or numbers when a named constant should exist.
Keep domain bytes asUint8Array;Bufferbelongs in infrastructure adapters.
Files:
src/application/RuntimeStorageAccess.tssrc/domain/WarpDraftPatchEntry.tssrc/application/Runtime.tssrc/domain/services/strand/StrandCoordinator.tssrc/domain/WarpWorldline.tssrc/domain/api/IntentRuntime.ts
**/*.{ts,tsx,js,jsx}
📄 CodeRabbit inference engine (AGENTS.md)
**/*.{ts,tsx,js,jsx}: Do not use direct imports fromsrc/infrastructure/**insrc/domain/**orsrc/ports/**; depend on a port instead.
Do not use direct Node built-ins insrc/domain/**orsrc/ports/**; use a port instead.
Files:
src/application/RuntimeStorageAccess.tsbin/cli/commands/doctor-v19.tstest/unit/cli/v19-input-errors.test.tssrc/domain/WarpDraftPatchEntry.tstest/unit/cli/commands/v19-diagnostics.test.tsbin/cli/v19/V19Runtime.tstest/unit/domain/DraftTimelineRuntime.test.tsbin/cli/commands/verify-audit.tstest/unit/domain/IntentRuntime.test.tsbin/presenters/V19Json.tssrc/application/Runtime.tsbin/cli/commands/doctor/storageCapabilities.tsbin/cli/commands/doctor/index.tsbin/cli/commands/audit.tstest/unit/domain/services/strand/StrandService.test.tsbin/cli/commands/receipt.tssrc/domain/services/strand/StrandCoordinator.tstest/unit/cli/commands/mcp.test.tssrc/domain/WarpWorldline.tsbin/cli/v19/V19DomainInput.tsbin/cli/commands/mcp/McpDomainTools.tstest/unit/cli/doctor.test.tsbin/cli/commands/settle.tssrc/domain/api/IntentRuntime.tsbin/cli/v19/V19SettlementReview.tsbin/cli/commands/mcp/McpRuntimeSession.tsbin/cli/infrastructure.tsbin/cli/shared.ts
src/domain/**/*.{ts,tsx,js,jsx}
📄 CodeRabbit inference engine (AGENTS.md)
src/domain/**/*.{ts,tsx,js,jsx}: Insrc/domain/**, do not useDate.now(),new Date(),Date(),performance.now(),Math.random(),crypto.randomUUID(),crypto.getRandomValues(),setTimeout,setInterval, rawnew Error(...)/new TypeError(...), or direct imports from Node built-ins; time, entropy, and external capabilities must enter through ports or parameters, and domain errors should extendWarpError.
Construct domain objects only in core when doing so establishes validated runtime truth; do not build infrastructure adapters, host APIs, persistence implementations, wall clocks, or entropy sources inside core.
Prefer discriminated unions and explicit result types instead of boolean-flag bags, and model expected failures as return values rather than exceptions.
src/domain/must not import host APIs or Node-specific globals; hexagonal architecture boundaries are mandatory.
Domain code must not use the wall clock directly; time must enter through a port or parameter.
Files:
src/domain/WarpDraftPatchEntry.tssrc/domain/services/strand/StrandCoordinator.tssrc/domain/WarpWorldline.tssrc/domain/api/IntentRuntime.ts
src/domain/**/!(*.test).{ts,tsx,js,jsx}
📄 CodeRabbit inference engine (AGENTS.md)
Use explicit domain concepts with validated constructors,
Object.freeze, andinstanceofdispatch; domain objects should be runtime-backed nouns, not ad hoc shape bags.
Files:
src/domain/WarpDraftPatchEntry.tssrc/domain/services/strand/StrandCoordinator.tssrc/domain/WarpWorldline.tssrc/domain/api/IntentRuntime.ts
🪛 ast-grep (0.44.1)
test/unit/cli/commands/mcp.test.ts
[warning] Importing child_process exposes a command-execution surface; ensure any command/argument built from input is validated, and prefer execFile/spawn with an argument array over exec.
Context: import { execFileSync } from 'node:child_process';
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').
(detect-child-process-typescript)
🔇 Additional comments (31)
bin/cli/infrastructure.ts (1)
3-44: LGTM!Also applies to: 45-96, 97-126, 127-173, 174-222, 223-267
test/bats/v19-cli.bats (1)
1-12: LGTM!Also applies to: 13-26, 27-46, 47-70, 72-93, 94-106, 107-196, 197-260, 261-265
bin/cli/commands/audit.ts (1)
1-43: LGTM!bin/cli/commands/doctor-v19.ts (1)
1-31: LGTM!bin/cli/commands/doctor/index.ts (1)
10-20: LGTM!Also applies to: 38-61
bin/cli/commands/doctor/storageCapabilities.ts (1)
10-19: LGTM!Also applies to: 29-33, 63-63
bin/cli/v19/V19DomainInput.ts (1)
10-27: LGTM!Also applies to: 29-76, 78-111, 113-146, 148-201
bin/cli/commands/settle.ts (1)
1-46: LGTM!Also applies to: 47-65, 67-89, 91-113, 115-124, 126-148, 150-162, 164-169
bin/cli/v19/V19Runtime.ts (1)
2-14: LGTM!Also applies to: 16-23, 32-44
bin/cli/commands/verify-audit.ts (1)
7-11: LGTM!Also applies to: 53-65
bin/cli/v19/V19SettlementReview.ts (1)
10-10: LGTM!Also applies to: 18-24, 33-43, 45-72, 74-86, 88-101, 111-130, 133-155
bin/cli/shared.ts (2)
110-121: 🎯 Functional CorrectnessEnsure explicit lanes are existence-checked for every caller.
resolveGraphNamenow returns any non-empty explicit lane without consulting persistence.openGraphadds a separate check, but direct callers such ashandleVerifyAuditand doctor context creation use this helper without that validation. If downstream storage services accept unknown timeline names, a typo in--lanecan inspect an empty or incorrect target instead of returning a not-found error. Move the check into this helper or add equivalent validation to every direct caller.
3-20: LGTM!Also applies to: 47-52, 66-80, 127-146, 187-187
bin/cli/commands/mcp/McpDomainTools.ts (1)
111-157: LGTM!bin/cli/commands/mcp/McpRuntimeSession.ts (1)
7-90: LGTM!Also applies to: 115-235
bin/cli/commands/receipt.ts (1)
2-59: LGTM!src/application/RuntimeStorageAccess.ts (1)
1-26: LGTM!src/application/Runtime.ts (1)
19-67: LGTM!src/domain/WarpDraftPatchEntry.ts (1)
1-26: LGTM!src/domain/WarpWorldline.ts (1)
26-33: LGTM!Also applies to: 112-146, 177-202, 391-401
src/domain/api/IntentRuntime.ts (1)
46-58: LGTM!src/domain/services/strand/StrandCoordinator.ts (1)
186-195: LGTM!Also applies to: 360-363, 422-438
test/unit/domain/services/strand/StrandService.test.ts (1)
681-735: LGTM!test/bats/helpers/setup.bash (1)
3-17: LGTM!Also applies to: 19-23, 25-31
test/unit/cli/commands/mcp.test.ts (1)
130-172: LGTM!test/unit/cli/commands/v19-diagnostics.test.ts (1)
1-84: LGTM!test/unit/cli/doctor.test.ts (2)
11-11: LGTM!Also applies to: 71-80, 130-130, 190-190, 222-222
203-203: 🚀 Performance & ScalabilityConfirm materialization-cache repair coverage isn't lost.
This removes the strict-mode warnings, memory-budget posture, and materialization-cache repair tests.
bin/cli/commands/doctor/checksMaterializationCache.tsstill exists in this PR's file set, so please confirm equivalent coverage exists in a dedicated test file (e.g., fordoctor/checksMaterializationCache.ts) rather than being dropped outright.test/unit/cli/v19-input-errors.test.ts (1)
1-131: LGTM!test/unit/domain/DraftTimelineRuntime.test.ts (1)
3-6: LGTM!Also applies to: 85-98, 129-146
test/unit/domain/IntentRuntime.test.ts (1)
90-100: LGTM!
Release Preflight
If this PR is from a |
|
Review follow-up: materialization-cache repair coverage remains in |
Release Preflight
If this PR is from a |
Release Preflight
If this PR is from a |
Replaces the graph-first command surface with the generated v19 CLI/MCP contract, persistent Runtime strand/settlement workflows, and canonical Reading/Receipt rendering. Removes the obsolete CLI implementation, tests, package alias, and current-doc vocabulary.
Validation: IRONCLAD pre-push firewall; 7,043 stable unit tests passed (2 skipped); 65 focused tests and 8 BATS tests passed; all aggregate timeout cases passed in serialized replay; packed and generated-SDK consumer smokes passed.
Closes #794.