Migrate record-update onto a lifecycle driver#53
Merged
Conversation
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>
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.
Migrate the
record-updaterunner kind onto a new family-shaped lifecycledriver, following
tasks/runner-framework.mdLifecycle Drivers rules.Scope
record-update(1 case)record-update/mixed-1k-20fields-bulk-updaterecord-update-attachment/record-update-linkare separate runner kinds and out of scope.Change
framework/runners/record-update-lifecycle.ts: owns the repeatedprotocol 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 difflogic — 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.scripts/diff-artifacts.mjs): baseline A↔B, A↔candidate,B↔candidate all pass for both engines (no mask changes needed).
phases[0].namemakes the diff fail.teable_ee_ref=develop): success; v1+v2 bothpass,routing matched (v1 x-teable-v2=false / v2=true, feature=updateRecords),
phases
[prepare, bulkUpdate1kMs, seedReady], operationbulk-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