Skip to content

Advance v18 release-candidate evidence - #106

Merged
flyingrobots merged 45 commits into
mainfrom
v18-continuum-slices-66-75
May 25, 2026
Merged

Advance v18 release-candidate evidence#106
flyingrobots merged 45 commits into
mainfrom
v18-continuum-slices-66-75

Conversation

@flyingrobots

@flyingrobots flyingrobots commented May 25, 2026

Copy link
Copy Markdown
Member

Summary

  • Add v18 production-runtime scratch replay, v17 wet-run fixture harnessing, zero-mismatch public-read equivalence, and guarded CLI finalization evidence.
  • Add generated Continuum/WARP Optic contract fixture ingestion, graph-model conformance checks, and a warp-ttd generated-family smoke.
  • Retire one raw content/property boundary, tighten the closeout audit, cut the v18 release-candidate evidence packet, and reconcile the backlog ledger.

Release posture

This PR puts v18 in release-candidate evidence posture, not public-release posture. Public release still requires final release-prep gates, package/version/tag work, operator release notes, residual raw content/property risk review, and an explicit guard against claiming end-to-end graph streaming in v18.

Verification

Pre-push IRONCLAD M9 passed:

  • link check
  • lint
  • markdown lint
  • markdown code sample lint
  • typecheck:src
  • typecheck:test
  • typecheck:consumer
  • typecheck:policy
  • typecheck:surface
  • test:local: 521 files / 7120 tests passed

Summary by CodeRabbit

  • New Features

    • Release-candidate evidence packet, guarded CLI finalization via reviewed JSON, and zero‑mismatch wet‑run proof; production‑runtime scratch‑replay conformance, wet‑run harness, deterministic operator reports, and drift checking.
  • Documentation

    • Extensive v18 design/backlog updates: finalization replan, generated‑contract evidence, public‑release blockers, and evidence checklist.
  • Tests

    • New/expanded unit and integration tests covering replay, finalization adapters, wet‑run harness, drift/failure fixtures, and contract smoke checks.

Review Change Stack

@flyingrobots

Copy link
Copy Markdown
Member Author

@codex Review follow-up landed in fc8e38b1.

Finding Severity Outcome Commit
Finalization review compared only compact equivalence/runtime keys P2 Reviewed finalization artifacts now bind runtime witness and fatal notice evidence, with a regression that blocks mismatched runtime witness artifacts. fc8e38b1
Edge-property wet-run equivalence was unproven P2 Canonical v17 fixture now declares edge-property coverage; scratch replay writes edge properties through the runtime edge-property path; scratch public-read facts include visible edge properties; wet-run counts now prove eight legacy and eight migrated facts. fc8e38b1
Production-runtime replay docs overclaimed direct scratch-history opening P2 BEARING and design docs now state the proven claim: scratch operations replay through the production runtime write/materialization path. fc8e38b1
Legacy finalization flag error was stale P3 CLI now directs operators to --finalization-request <path> and has focused coverage. fc8e38b1
Finalization JSON semantic errors leaked domain validation errors P4 Adapter now wraps domain semantic validation failures as AdapterValidationError; contradictory runtime replay artifacts are covered. fc8e38b1

Verification run locally before push:

  • npm exec vitest run test/unit/infrastructure/adapters/GraphModelMigrationFinalizationRequestJsonAdapter.test.ts test/unit/scripts/v18-graph-model-migration-command-cli.test.ts
  • npm exec vitest run test/unit/scripts/v18-scratch-public-read-builder.test.ts test/unit/scripts/v18-production-runtime-scratch-replay-provider.test.ts test/unit/scripts/v18-v17-fixture-wet-run-harness.test.ts test/unit/domain/migrations/V17GoldenGraphFixtureGenesisReading.test.ts test/unit/scripts/v18-v17-public-read-legacy-reading-builder.test.ts
  • npm run lint
  • npm run lint:md
  • npm run typecheck:src
  • npm run typecheck:test
  • npm run test:local (521 files, 7122 tests)
  • git diff --check

Pre-push IRONCLAD M9 also passed and pushed fc8e38b1 to this PR branch.

@github-actions

Copy link
Copy Markdown

Release Preflight

  • package version: 17.0.1
  • prerelease: false
  • npm dist-tag on release: latest
  • npm pack dry-run: passed
  • jsr publish dry-run: passed

If you tag this commit as v17.0.1, release workflow will publish.

@flyingrobots

Copy link
Copy Markdown
Member Author

@codex Self-review follow-up findings after fc8e38b1. I found the following issues while auditing origin/main...HEAD.

Severity Type Evidence Issue Recommended mitigation prompt
P3 Minor Error taxonomy / regression gap scripts/v18.0.0/migrations/graph-model/GraphModelMigrationScratchRuntimeReplayer.ts:171-176, scripts/v18.0.0/migrations/graph-model/GraphModelMigrationProductionRuntimeReplayProvider.ts:72-79, test/unit/scripts/v18-production-runtime-scratch-replay-provider.test.ts:108-125 Malformed legacy edge-property owner targets can escape as a generic runtime replay failure. applyPropertyOperation checks the legacy edge-property sentinel and calls decodeLegacyEdgePropNode directly; if that decode throws, the provider maps it to E_RUNTIME_REPLAY_FAILED instead of the structured E_RUNTIME_REPLAY_INVALID_OPERATION_TARGET. Existing malformed-target coverage only exercises edge-record, not property-record with a malformed edge-property owner. Add a regression that writes a property-record scratch operation whose length-prefixed owner starts with the legacy edge-property sentinel but does not decode into from/to/label; assert production runtime replay reports E_RUNTIME_REPLAY_INVALID_OPERATION_TARGET; then catch/wrap decodeLegacyEdgePropNode failures in applyPropertyOperation with the existing invalid-target error path.
P3 Minor Repository style policy AGENTS.md:128, scripts/v18.0.0/migrations/graph-model/V17GoldenGraphFixtureWetRunHarness.ts:1, scripts/v18.0.0/migrations/graph-model/GraphModelMigrationCommand.ts:1, scripts/v18.0.0/migrations/graph-model/GraphModelMigrationScratchRuntimeReplayer.ts:1, scripts/v18.0.0/migrations/graph-model/GraphModelMigrationCommandCli.ts:1 Script files exceed the stated 300 LOC cap for bin/scripts: 618, 353, 321, and 315 LOC respectively. The harness in particular concentrates restore, scratch reading, boundary indexing, runtime dry-run, and drift comparison in one file, which makes the migration surface harder to audit. Split the oversized migration scripts into named collaborators with stable concepts, prioritizing V17GoldenGraphFixtureWetRunHarness.ts; preserve current public exports and tests; make no behavior changes beyond extraction.
P4 Nit Fixture robustness / shape inference scripts/v18.0.0/migrations/graph-model/V17GoldenGraphFixtureWetRunHarness.ts:241-281 propertyMappingFromFact infers edge-property ownership by parsing public owner text for -> and :. A future fixture node ID containing those delimiters would be misclassified as an edge owner even if the manifest never declared that edge. Build a declared edge-owner set from V17GoldenEdgeFact or manifest evidence and classify property owners by membership, not string shape alone. Add a fixture-level regression for a node ID containing -> and :.

Local evidence: pre-review worktree was clean, git fetch origin completed, git diff --check origin/main...HEAD is clean, and PR checks are green except CodeRabbit is still pending review.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 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
`@scripts/v18.0.0/migrations/graph-model/GraphModelMigrationScratchRuntimeReplayer.ts`:
- Around line 171-176: The decodeLegacyEdgePropNode call can throw a foreign
error; wrap the decodeLegacyEdgePropNode(property.ownerId) invocation in a
try/catch and, on any failure, throw/raise the standardized replayer error
E_RUNTIME_REPLAY_INVALID_OPERATION_TARGET (preserving/including the original
error message as context) so failures are classified consistently; keep the
existing behavior for non-legacy nodes (isLegacyEdgePropNode) and then call
patch.setEdgeProperty(edge.from, edge.to, edge.label, property.propertyKey,
value) when decode succeeds.

In
`@src/infrastructure/adapters/GraphModelMigrationFinalizationRequestJsonAdapter.ts`:
- Around line 59-64: The JSON parse error for confirmations uses the wrong
context text; update the parsing block inside parseDomainValue for
GraphModelMigrationFinalizationConfirmation so that when calling parseJson(raw)
(and any parse failure) it reports a context-specific message like
"finalizationConfirmation" or "finalization confirmation" instead of the generic
"finalization request JSON". Locate the parseDomainValue call that constructs a
GraphModelMigrationFinalizationConfirmation (which uses parseJson,
requireJsonObject, rejectUnknownKeys, CONFIRMATION_KEYS and readRequiredString
for 'finalizationConfirmation.confirmationToken') and change the error/context
string passed to parseJson or the surrounding parseDomainValue wrapper to
reflect confirmation parsing. Ensure rejectUnknownKeys and error messages
consistently reference 'finalizationConfirmation'.
🪄 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: defaults

Review profile: CHILL

Plan: Pro

Run ID: 2466f1cf-5a7f-4561-8829-ffb12c210272

📥 Commits

Reviewing files that changed from the base of the PR and between 60d4be6 and fc8e38b.

📒 Files selected for processing (21)
  • CHANGELOG.md
  • docs/BEARING.md
  • docs/design/0214-v18-production-runtime-scratch-replay-conformance/v18-production-runtime-scratch-replay-conformance.md
  • docs/design/0228-v18-fixture-lifecycle-and-writer-coverage/v18-fixture-lifecycle-and-writer-coverage.md
  • docs/design/0230-v18-finalization-replan-after-zero-mismatch/v18-finalization-replan-after-zero-mismatch.md
  • fixtures/v17/graph-model-golden/README.md
  • fixtures/v17/graph-model-golden/manifest.json
  • scripts/v18.0.0/migrations/graph-model/GraphModelMigrationCommand.ts
  • scripts/v18.0.0/migrations/graph-model/GraphModelMigrationCommandCli.ts
  • scripts/v18.0.0/migrations/graph-model/GraphModelMigrationScratchPublicReadBuilder.ts
  • scripts/v18.0.0/migrations/graph-model/GraphModelMigrationScratchRuntimeReplayer.ts
  • scripts/v18.0.0/migrations/graph-model/V17GoldenGraphFixtureWetRunHarness.ts
  • src/domain/migrations/GraphModelMigrationRuntimeReplayResult.ts
  • src/infrastructure/adapters/GraphModelMigrationFinalizationRequestJsonAdapter.ts
  • test/unit/domain/migrations/V17GoldenGraphFixtureGenesisReading.test.ts
  • test/unit/infrastructure/adapters/GraphModelMigrationFinalizationRequestJsonAdapter.test.ts
  • test/unit/scripts/v18-graph-model-migration-command-cli.test.ts
  • test/unit/scripts/v18-production-runtime-scratch-replay-provider.test.ts
  • test/unit/scripts/v18-scratch-public-read-builder.test.ts
  • test/unit/scripts/v18-v17-fixture-wet-run-harness.test.ts
  • test/unit/scripts/v18-v17-public-read-legacy-reading-builder.test.ts
✅ Files skipped from review due to trivial changes (6)
  • fixtures/v17/graph-model-golden/README.md
  • fixtures/v17/graph-model-golden/manifest.json
  • docs/design/0228-v18-fixture-lifecycle-and-writer-coverage/v18-fixture-lifecycle-and-writer-coverage.md
  • docs/design/0230-v18-finalization-replan-after-zero-mismatch/v18-finalization-replan-after-zero-mismatch.md
  • docs/design/0214-v18-production-runtime-scratch-replay-conformance/v18-production-runtime-scratch-replay-conformance.md
  • CHANGELOG.md

@flyingrobots

Copy link
Copy Markdown
Member Author

Resolution summary for the self-review findings posted in #106 (comment).

Issue Severity Commit Outcome
Malformed edge-property scratch owner produced generic replay failure evidence P3 35f92128 Added a malformed edge-property owner regression and now preserves E_RUNTIME_REPLAY_INVALID_OPERATION_TARGET.
Fixture property-owner classification used delimiter shape instead of declared edge facts P4 223ff4ed Added a declared-edge mapping seam and regression; delimiter-shaped node owners now remain node owners unless an edge fact declares that owner.
Migration scripts exceeded the 300 LOC script cap P3 1f1bb0f8 Split command finalization review, CLI args, runtime replay validation/errors, fixture property mapping, and fixture scratch fact/reading collaborators; largest migration script is now 296 LOC.

Verification completed locally and in pre-push:

  • npm run lint
  • npm run lint:md
  • npm run typecheck:src
  • npm run typecheck:test
  • npm run test:local -- test/unit/scripts/v18-production-runtime-scratch-replay-provider.test.ts test/unit/scripts/v18-v17-fixture-wet-run-harness.test.ts test/unit/scripts/v18-graph-model-migration-command-cli.test.ts test/unit/scripts/v18-migration-command.test.ts (521 files, 7124 tests)
  • pre-push IRONCLAD M9 (521 files, 7124 tests)
  • git diff --check

✅ Addressed in commits 35f92128, 223ff4ed, and 1f1bb0f8.

@github-actions

Copy link
Copy Markdown

Release Preflight

  • package version: 17.0.1
  • prerelease: false
  • npm dist-tag on release: latest
  • npm pack dry-run: passed
  • jsr publish dry-run: passed

If you tag this commit as v17.0.1, release workflow will publish.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
scripts/v18.0.0/migrations/graph-model/GraphModelMigrationScratchRuntimeReplayer.ts (1)

94-104: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Validate runtimeRepositoryPath before using it as the runtime repo cwd.

If a caller passes '', this branch skips temp-dir creation and initializes the replay repo in the current working directory instead of an isolated location. That turns a verification path into a write against an unintended repo.

Suggested fix
 export async function replayGraphModelMigrationScratchIntoRuntime(
   options: GraphModelMigrationScratchRuntimeReplayOptions,
 ): Promise<GraphModelMigrationScratchRuntimeReplayOutput> {
   const sourceRepositoryPath = requireGraphModelMigrationRuntimeReplayString(
     options.sourceRepositoryPath,
     'sourceRepositoryPath',
   );
   const request = requireGraphModelMigrationRuntimeReplayRequest(options.request);
-  let runtimeRepositoryPath = options.runtimeRepositoryPath ?? null;
+  let runtimeRepositoryPath = options.runtimeRepositoryPath === null
+    || options.runtimeRepositoryPath === undefined
+    ? null
+    : requireGraphModelMigrationRuntimeReplayString(
+      options.runtimeRepositoryPath,
+      'runtimeRepositoryPath',
+    );
   let shouldCleanup = false;
   if (runtimeRepositoryPath === null) {
     runtimeRepositoryPath = await mkdtemp(join(tmpdir(), 'git-warp-v18-runtime-replay-'));
     shouldCleanup = true;
   }

As per coding guidelines, "Validate at boundaries and constructors; constructors establish invariants and must not perform I/O".

🤖 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
`@scripts/v18.0.0/migrations/graph-model/GraphModelMigrationScratchRuntimeReplayer.ts`
around lines 94 - 104, The code fails to validate runtimeRepositoryPath and
treats an empty string as a valid path, causing repo initialization to run in
CWD; update the initialization so runtimeRepositoryPath is normalized/validated
(e.g., call the same validator used for sourceRepositoryPath or explicitly treat
'' as null) before deciding to create a temp dir: change the
runtimeRepositoryPath assignment (currently using options.runtimeRepositoryPath
?? null) to validate/normalize options.runtimeRepositoryPath (reject empty
string) and only skip mkdtemp when a non-empty, validated path is provided;
refer to the runtimeRepositoryPath and shouldCleanup variables and the
mkdtemp(join(tmpdir(), 'git-warp-v18-runtime-replay-')) call when making the
fix.
🤖 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
`@scripts/v18.0.0/migrations/graph-model/V17GoldenFixtureScratchReadingProvider.ts`:
- Around line 87-99: The code uses repeated magic strings for scratch operation
kinds and fact keys (e.g., 'node-record', 'edge-record', 'property',
'content-attachment', 'visibility', 'value', 'payload.oid', 'coverage',
'removed'); replace these literals with named constants (or import existing
domain constants) and update the control flow and factKey calls accordingly —
locate the switch/if block around factKey(...) calls and the thrown
V17GoldenFixtureScratchReadingProviderError in
V17GoldenFixtureScratchReadingProvider.ts and define constants (e.g.,
SCRATCH_KIND_NODE_RECORD, FACT_KEY_VISIBILITY, FACT_KEY_VALUE,
FACT_KEY_PAYLOAD_OID, etc.) then use those constants in the if conditions and in
calls to factKey, publicPropertyFactKey, publicContentFactKey, and anywhere the
other literals (coverage, removed) appear (also apply the same change for the
similar block at lines ~142-157).

---

Outside diff comments:
In
`@scripts/v18.0.0/migrations/graph-model/GraphModelMigrationScratchRuntimeReplayer.ts`:
- Around line 94-104: The code fails to validate runtimeRepositoryPath and
treats an empty string as a valid path, causing repo initialization to run in
CWD; update the initialization so runtimeRepositoryPath is normalized/validated
(e.g., call the same validator used for sourceRepositoryPath or explicitly treat
'' as null) before deciding to create a temp dir: change the
runtimeRepositoryPath assignment (currently using options.runtimeRepositoryPath
?? null) to validate/normalize options.runtimeRepositoryPath (reject empty
string) and only skip mkdtemp when a non-empty, validated path is provided;
refer to the runtimeRepositoryPath and shouldCleanup variables and the
mkdtemp(join(tmpdir(), 'git-warp-v18-runtime-replay-')) call when making the
fix.
🪄 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: defaults

Review profile: CHILL

Plan: Pro

Run ID: fedb3144-a25d-4dd6-b40b-2c0abf8a8995

📥 Commits

Reviewing files that changed from the base of the PR and between fc8e38b and 1f1bb0f.

📒 Files selected for processing (14)
  • CHANGELOG.md
  • scripts/v18.0.0/migrations/graph-model/GraphModelMigrationCommand.ts
  • scripts/v18.0.0/migrations/graph-model/GraphModelMigrationCommandCli.ts
  • scripts/v18.0.0/migrations/graph-model/GraphModelMigrationCommandCliArgs.ts
  • scripts/v18.0.0/migrations/graph-model/GraphModelMigrationFinalizationReview.ts
  • scripts/v18.0.0/migrations/graph-model/GraphModelMigrationScratchRuntimeReplayErrors.ts
  • scripts/v18.0.0/migrations/graph-model/GraphModelMigrationScratchRuntimeReplayValidation.ts
  • scripts/v18.0.0/migrations/graph-model/GraphModelMigrationScratchRuntimeReplayer.ts
  • scripts/v18.0.0/migrations/graph-model/V17GoldenFixtureScratchFactKeyCodec.ts
  • scripts/v18.0.0/migrations/graph-model/V17GoldenFixtureScratchReadingProvider.ts
  • scripts/v18.0.0/migrations/graph-model/V17GoldenGraphFixturePropertyMappings.ts
  • scripts/v18.0.0/migrations/graph-model/V17GoldenGraphFixtureWetRunHarness.ts
  • test/unit/scripts/v18-production-runtime-scratch-replay-provider.test.ts
  • test/unit/scripts/v18-v17-fixture-wet-run-harness.test.ts
✅ Files skipped from review due to trivial changes (1)
  • CHANGELOG.md

Comment thread scripts/v18.0.0/migrations/graph-model/V17GoldenFixtureScratchReadingProvider.ts Outdated
@flyingrobots

Copy link
Copy Markdown
Member Author

@codex Self-audit findings discovered during the final verification pass before pushing the CodeRabbit fixes.

Severity Source Evidence Issue Recommended mitigation prompt
P3 Minor Self scripts/v18.0.0/migrations/graph-model/GraphModelMigrationScratchRuntimeReplayer.ts is now 313 LOC after the validation fixes; AGENTS.md caps bin/scripts at 300 LOC. The runtime replayer slipped back over the repository script-size cap. Extract scratch replay target parsing helpers from GraphModelMigrationScratchRuntimeReplayer.ts into a named collaborator, keep public exports unchanged, and rerun typecheck/tests.
P4 Nit Self docs/design/0240-v18-generated-contract-evidence-replan/v18-generated-contract-evidence-replan.md:25 and test/unit/infrastructure/adapters/ContinuumArtifactJsonFileAdapter.test.ts:351 still say runtime-boundary generated fixture. The compound adjective remains unhyphenated outside the two resolved CodeRabbit thread locations. Replace remaining prose/test-description occurrences with runtime-boundary-generated fixture, preserving behavior.

@flyingrobots

Copy link
Copy Markdown
Member Author

Code Lawyer Activity Summary

Resolved all currently known actionable feedback and the self-audit findings from this pass.

Source Severity File / Area Commit Outcome
CodeRabbit P4 docs/BEARING.md, docs/design/0237-v18-runtime-boundary-fixture-ingestion/... 537ef6b9 Normalized generated-graph and runtime-boundary-generated wording.
CodeRabbit P3 scripts/v18.0.0/migrations/graph-model/GraphModelMigrationScratchRuntimeReplayer.ts 940726c8 Added regression and validation for empty runtimeRepositoryPath; empty paths now fail closed before runtime initialization.
CodeRabbit P3 scripts/v18.0.0/migrations/graph-model/GraphModelMigrationScratchRuntimeReplayer.ts f8662e85 Added regressions and explicit invalid-target handling for empty property owner, property key, and content owner targets.
CodeRabbit P4 src/infrastructure/adapters/GraphModelMigrationFinalizationRequestJsonAdapter.ts 08d9008d Added regression and confirmation-specific invalid JSON parse context.
CodeRabbit P4 scripts/v18.0.0/migrations/graph-model/V17GoldenFixtureScratchReadingProvider.ts 4221947f Replaced repeated operation/fact literals with named constants.
Self-audit P3 scripts/v18.0.0/migrations/graph-model/GraphModelMigrationScratchRuntimeReplayer.ts 947be1e5 Extracted scratch replay target parsing; all migration scripts are now under the 300 LOC cap.
Self-audit P4 docs/design/0238-..., docs/design/0240-..., ContinuumArtifactJsonFileAdapter.test.ts cedf1f04 Removed remaining runtime-boundary generated fixture wording.
False positive P3 GraphModelMigrationCommandReport.ts archive-head evidence discussion reply Replied with evidence and resolved. archiveHead is intentionally rendered from previousLiveHead because the finalizer archives exactly that head; no separate archiveHead field exists.
Docs P4 CHANGELOG.md 8ca2693a Recorded externally visible validation and error-context fixes.

Verification before push:

  • npm run lint
  • npm run lint:md
  • npm run typecheck:src
  • npm run typecheck:test
  • npm run test:local (521 files, 7126 tests)
  • git diff --check
  • script line-cap audit: largest migration script is 281 LOC
  • phrase scan for stale generated graph contracts and runtime-boundary generated fixture: clean
  • pre-push IRONCLAD M9 passed, including full unit suite (521 files, 7126 tests)

All review threads are resolved as of this comment.

@github-actions

Copy link
Copy Markdown

Release Preflight

  • package version: 17.0.1
  • prerelease: false
  • npm dist-tag on release: latest
  • npm pack dry-run: passed
  • jsr publish dry-run: passed

If you tag this commit as v17.0.1, release workflow will publish.

@flyingrobots

Copy link
Copy Markdown
Member Author

Follow-up cleanup landed in c0f27ba8.

Issue Outcome Commit
Runtime replay request/result duplicated local non-empty string validators Added GraphModelMigrationRequiredString and routed both runtime replay domain types through the shared validator. c0f27ba8
V17 fixture property-key validation message implied exactly one colon Reworded the domain error and tightened the unit assertion to match the actual lastIndexOf behavior. c0f27ba8
Migration tests duplicated local gitOk helpers Added shared migrationTestEnvironment.ts and removed the duplicated success helpers from the affected migration tests. c0f27ba8
Public-read and wet-run fixture tests left temp directories behind Added tracked temp-directory cleanup via afterEach for the affected fixture migration tests. c0f27ba8

Verification:

  • npm exec vitest run test/unit/scripts/v18-graph-model-migration-command-cli.test.ts test/unit/scripts/v18-scratch-runtime-conformance-provider.test.ts test/unit/scripts/v18-scratch-public-read-builder.test.ts test/unit/scripts/v18-scratch-reading-builder.test.ts test/unit/scripts/v18-production-runtime-scratch-replay-provider.test.ts test/unit/scripts/v18-v17-public-read-legacy-reading-builder.test.ts test/unit/scripts/v18-v17-fixture-wet-run-harness.test.ts test/unit/domain/migrations/V17GoldenGraphFixtureGenesisReading.test.ts test/unit/domain/migrations/GraphModelMigrationRuntimeReplayResult.test.ts
  • npm run lint
  • npm run lint:md
  • npm run typecheck:src
  • npm run typecheck:test
  • npm run test:local (521 files, 7126 tests)
  • git diff --check
  • pre-push IRONCLAD M9 passed and pushed the branch.

All currently verified review-discovered cleanup items are addressed in this branch update.

@github-actions

Copy link
Copy Markdown

Release Preflight

  • package version: 17.0.1
  • prerelease: false
  • npm dist-tag on release: latest
  • npm pack dry-run: passed
  • jsr publish dry-run: passed

If you tag this commit as v17.0.1, release workflow will publish.

@flyingrobots
flyingrobots merged commit 023c7d7 into main May 25, 2026
16 checks passed
@flyingrobots
flyingrobots deleted the v18-continuum-slices-66-75 branch May 25, 2026 14:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant