feat(etl): replace cancellation on repaired conditional-status stack - #147
Conversation
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
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 |
|
Superseded by refreshed cancellation replacement #254 after preservation verification against the current stack boundary. Fresh state immediately before this disposition: this old Draft is unchanged at |
Stack repair purpose
This Draft replaces old-stack PR #133 with a non-destructive cancellation branch rooted at repaired conditional-status predecessor PR #146. The original #133 branch and its fail-first history remain preserved. Checks, reviews, approvals, statuses, comments, and base snapshots from #133 or any predecessor head do not transfer.
Exact current boundary
repair/durable-job-conditional-status-2e388ad;9e4d69e0bb33ab57627c697a5d028b5309eca2bb;repair/durable-job-cancellation-9e4d69e;0a07ca3ba447ba696da2777d7d51eca373b38b2c;9e4d69e0bb33ab57627c697a5d028b5309eca2bb;No force push,
-X ours,-X theirs, destructive history rewrite, temporary repair workflow, protection bypass, or cross-repository write was used.Stack-divergence replacement RCA
Old PR #133 targets superseded old conditional-status PR #131. PR #146 is the repaired conditional-status boundary, so continuing #133 would preserve obsolete ancestry. The feasible repair was a replacement branch from exact #146 with auditable TDD history. Destructive rebase/force-push, retargeting an unchanged obsolete head, and deepening replay before cancellation repair are rejected.
Cancellation boundary
The repaired slice provides authenticated owner-scoped idempotent cancellation, a database-owned
CANCELLEDterminal state, one owner-matched conditional transition, payload/lease clearing, stale-worker fencing, principal/job-domain-separated replay identity, stable RFC 9457 conflicts, conditional-status invalidation, transactional V6 migration, concurrency/race coverage, rollout/rollback guidance, and explicit limits for non-transactional external side effects.RED → RCA → GREEN
The branch preserves the original fail-first cancellation history. A later exact-head CI failure on
dc53a3a7de2ab1ad59421c183db000b1bdf22426isolated one documentation-contract mismatch:DurableJobCancellationDocumentationTestrequired the exact buyer-visible phraseOwner-scoped durable-job cancellation, whileCHANGELOG.mdhad drifted toAuthenticated owner-scoped durable-job cancellation. Production cancellation, migration, concurrency, controller, and service tests were otherwise green.Immediate cause: exact changelog/test phrase mismatch. Technical cause: the prior repair used file/blob-level Contents API compare-and-swap while another writer changed the test contract, so branch-tip state was not atomically bound. Systemic cause: the repository writer lease is branch-wide but the mutation primitive used in that attempt was file-wide.
Material remediation options:
Commit
0a07ca3ba447ba696da2777d7d51eca373b38b2cis one non-forced fast-forward commit overdc53a3a...; its delta is exactly oneCHANGELOG.mdline. The branch-wide publication path used exact parent binding andforce=falseref update rather than the Contents API for this source repair.Exact-current-head proof
Accepted for literal head
0a07ca3ba447ba696da2777d7d51eca373b38b2con unchanged exact predecessor9e4d69e0bb33ab57627c697a5d028b5309eca2bb:31302915344: success;etl-service: 429 tests, zero failures/errors/skips;DurableJobCancellationDocumentationTest4/4 green; all configured JaCoCo coverage checks met;cdc-service: 106 tests, zero failures/errors/skips;31302915311: success;31302915319: success;The conditional self-hosted job is skipped and is not counted as positive evidence.
Still not passing
APPROVEDreview exists on this exact head;Queued, pending, skipped-required, neutral-required, absent, cancelled, failed, stale-head, old-base, predecessor-head, author-only, status-only, and synthetic-merge-only evidence are not accepted.
Merge policy
Keep this PR Draft. Do not merge or deepen replay until the prerequisite chain is eligible. After every predecessor/base/head movement, regenerate affected exact-head/base CI, Dependency Review, SBOM, SAST, Security Scan, commit-status, review-thread, automated-review, and independent-approval evidence. Merge only in dependency order with expected-head semantics and without weakening branch protection, tests, security, coverage, review independence, or writer leases.