Migrate table-create onto a new table-create lifecycle driver#62
Merged
Conversation
table-create is a seedless, create-from-scratch family that no existing driver fits, so this adds a minimal framework/runners/table-create-lifecycle.ts modeled on field-add-lifecycle.ts but WITHOUT the seedReady/seedMode machinery (there is nothing to seed). The driver owns the repeated protocol: prepareFixture (allocate a mutable run accumulator) -> runPrimary (measured create + verify, mutating the fixture in place) -> buildResult (success + diagnostic-error paths) -> finally drop-created cleanup. The runner becomes a thin spec + delegator. Its result-assembly logic is lifted verbatim and re-pointed at the fixture, so the artifact stays byte-for-byte equivalent. Per-table createTable routing assertions and the single-engine check are preserved. Because there is no seed cache, this family never emits a seedHash, so the seedHash diff-mask dance the field-add family needs does not apply here — no diff-artifacts.mjs mask changes were required. Validation (local): two cases x v1,v2. - Baseline A vs B clean with existing masks (no seed cache, no new masks). - G1 baseline A vs candidate clean for all 4 case x engine artifacts. - Negative tests: semantic perturbation (verification fieldCount) fails; masked-field difference (tableId / *Ms) passes; sibling-of-masked semantic field (createdTables[].status) still fails (mask not over-broad). - Semantics: result=pass, routeMatched=true, v1 actualV2=false / v2=true, verification tables correct, error=null. - Trace refs preserved vs baseline (40 for 10x, 6 for 1k). Tracker: table-create -> Migrated; 22/35 -> 23/35 runner kinds, 29/55 -> 31/55 cases. Co-Authored-By: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Migrates the
table-createrunner kind onto a lifecycle driver, following theincremental runner-migration campaign (#59 conditional-lookup, #60
field-duplicate, #61 field-create).
table-createis a seedless, create-from-scratch family — no seed cache, noreusable fixture, drop-on-cleanup — that no existing driver fits. This adds a
minimal new driver
framework/runners/table-create-lifecycle.ts, modeled onfield-add-lifecycle.tsbut without theseedReady/seedModemachinery(there is nothing to seed).
The driver owns the repeated protocol:
table-create.runner.tsbecomes a thin spec + delegator. Its result-assemblylogic is lifted verbatim and re-pointed at the fixture, so the artifact
stays byte-for-byte equivalent. The per-table
createTablerouting assertionsand the single-engine check are preserved.
Simplification: no seedHash mask
Because there is no seed cache, this family never emits a
seedHash, so theseedHashdiff-mask dance the field-add family needs does not apply here.No
diff-artifacts.mjsmask changes were required.Validation (local, two cases × v1,v2)
verification.tables[].fieldCount20→19) → fails ✅createdTables[].tableId,*Ms) → passes ✅createdTables[].status201→200) → still fails ✅ (mask is not over-broad)result=pass,routeMatched=true, v1actualV2=false/ v2actualV2=true, verification tables correct (10 tables/0 records, 1 table/1000 records, all 20 fields),error=null.10x-20f-no-records, 6 for1x-20f-1k-records). Localsaved=0/failed=allis the expected no-Jaeger behavior;saved==ref/failed=0is verified in CI.Tracker
table-create→ Migrated; 22/35 → 23/35 runner kinds, 29/55 → 31/55 cases.🤖 Generated with Claude Code