Skip to content

Migrate record-update onto a lifecycle driver#53

Merged
HynLcc merged 1 commit into
mainfrom
migrate-record-update-lifecycle
Jun 19, 2026
Merged

Migrate record-update onto a lifecycle driver#53
HynLcc merged 1 commit into
mainfrom
migrate-record-update-lifecycle

Conversation

@HynLcc

@HynLcc HynLcc commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

Migrate the record-update runner kind onto a new family-shaped lifecycle
driver, following tasks/runner-framework.md Lifecycle Drivers rules.

Scope

  • Runner kind: record-update (1 case)
  • Case: record-update/mixed-1k-20fields-bulk-update
  • record-update-attachment / record-update-link are separate runner kinds and out of scope.

Change

  • New framework/runners/record-update-lifecycle.ts: owns the repeated
    protocol only — prepare/seedReady measurement, the windowed measured
    operation, diagnostic-error construction, finally cleanup, result
    dispatch, and the seed variant.
  • framework/runners/record-update.runner.ts: keeps only case-specific diff
    logic — seed-cache fixture, sample verification, the bundled measured
    window (update + routing + verify), result assembly, and restore-or-delete
    cleanup. Wires into the driver via a spec.
  • tasks/runner-migration-tracker.md: record-update moved Not migrated →
    Migrated; counts 12→13 / 35 runner kinds · 14→15 / 55 cases.

Verification

  • pnpm check: green.
  • Local v1+v2 baseline A, baseline B, and candidate: all pass.
  • G1 artifact diff (scripts/diff-artifacts.mjs): baseline A↔B, A↔candidate,
    B↔candidate all pass for both engines (no mask changes needed).
  • Semantic negative test: perturbing phases[0].name makes the diff fail.
  • CI (run 27823956325, teable_ee_ref=develop): success; v1+v2 both pass,
    routing matched (v1 x-teable-v2=false / v2=true, feature=updateRecords),
    phases [prepare, bulkUpdate1kMs, seedReady], operation bulk-update,
    verified sample titles correct, traces saved=ref=1 / failed=0.

Protected surface (cases/**, registry.ts, framework/types.ts config,
framework/artifacts.ts schema, ../teable-ee) untouched.

🤖 Generated with Claude Code

Extract the repeated runner protocol (prepare/seedReady measurement,
windowed measured operation, diagnostic-error construction, finally
cleanup, and result dispatch) into a new family-shaped driver
record-update-lifecycle.ts. The legacy record-update.runner.ts now keeps
only its case-specific diff logic: seed-cache fixture, sample
verification, the bundled measured window (update + routing + verify),
result assembly, and restore-or-delete cleanup.

Behavior is unchanged: artifact semantics (phase names/order, metric
keys, threshold metric/max/unit, details.operation=bulk-update, routing,
verification evidence) are byte-identical under the G1 diff for both
engines. Covers runner kind record-update / case
record-update/mixed-1k-20fields-bulk-update.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@HynLcc HynLcc merged commit 2751f55 into main Jun 19, 2026
5 checks passed
@HynLcc HynLcc deleted the migrate-record-update-lifecycle branch June 19, 2026 11:55
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