fix(mc#3147, mc#3089, mc#2408): consolidate continue-on-error tracker renewals #3174
Reference in New Issue
Block a user
Delete Branch "fix/3147-prune-stale-e2e-dns-tracker-renewal"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes mc#3147, mc#3089, mc#2408.
Consolidated PR (per PM e532d667): bundles the three stale-tracker renewals into one PR to green the repo-wide lint in a single merge rather than three.
Background
Per Tier 2e lint (internal#350), every
continue-on-error: truemust carry a fresh, openmc#NNNNtracker within 2 lines. When the prior tracker ages past 14 days, the renewal cadence kicks in: file a new SEPARATE tracker issue and update the comment.Three renewals bundled here:
mc#3147 (prune-stale-e2e-dns in
e2e-staging-saas.yml) — prior trackermc#3140closed when its PR merged. Renewed tomc#3173.mc#3089 (drift in
design-token-drift-gate.yml) — prior trackermc#3041closed. Renewed tomc#3175.mc#2408 (lifecycle-real in
local-provision-e2e.yml) — the existing reference is 16 days old, past the 14-day cap, would fail the lint. Renewed tomc#3177.Note: the many
mc#2654references elsewhere (e2e-chat, e2e-staging-*, etc.) point to a single master tracker (mc#2654, 11d old) and are NOT stale. This commit intentionally does NOT touch them; per the lint, a freshmc#2654covers all of them.Changes
.gitea/workflows/e2e-staging-saas.yml—prune-stale-e2e-dnstracker updatedmc#3147→mc#3173.gitea/workflows/design-token-drift-gate.yml—drifttracker updatedmc#3089→mc#3175.gitea/workflows/local-provision-e2e.yml—lifecycle-realtracker updatedmc#2408→mc#3177.gitea/scripts/tests/test_lint_continue_on_error_tracking.py— added 2 new e2e pin test classes (TestDesignTokenDriftGateWorkflow, TestLocalProvisionE2eWorkflow); the file also pins TestE2eStagingSaasWorkflow from the original mc#3147 fix. 18/18 tests pass locally.Supersedes
PR#3176 (the standalone mc#3089 design-token fix) is closed as superseded by this consolidation.
After this merges
Out of scope
continue-on-errortofalse(option 1 was rejected for all three: transient/auxiliary failures would block merge).mc#2654references (still valid; master tracker is 11d old).SOP
Gate (per PM)
97bb804fCI / all-requiredsuccess; lint-continue-on-error-tracking successThe previous tracker (mc#3140) closed when its PR merged, leaving the e2e-staging-saas.yml's prune-stale-e2e-dns job's continue-on-error mask without a fresh open reference. Per mc#3147, the decision is to KEEP the fail-soft behavior (option 2: renew the tracker) until a durable idempotent retry/backoff fix lands for scripts/ops/prune_cf_e2e_dns.sh. This commit: 1. .gitea/workflows/e2e-staging-saas.yml: update the prune-stale-e2e-dns job's tracker comment from mc#3147 (the decision issue) to mc#3173 (the new governance-tracker issue filed 2026-06-23). Per the lint rule, the tracker must be a SEPARATE open mc#NNNN that documents the renewal cycle, not the decision issue itself. The renewal date and rationale are recorded in the comment. 2. .gitea/scripts/tests/test_lint_continue_on_error_tracking.py: NEW file. Pins the pure-logic surface of .gitea/scripts/lint_continue_on_error_tracking.py — the Tier 2e governance rule that requires continue-on-error: true to carry a fresh open tracker within ±2 lines. 14 tests covering: - find_coe_truthies (AST-based detection; positive + negative) - find_tracker_in_window (comment-scan window; above, below, inline, out-of-window) - validate_tracker (closed-fail, too-old-fail, 404-fail, 403- graceful-degrade, error-fail-closed, open-fresh-pass) - End-to-end pin of the live e2e-staging-saas.yml workflow: the prune-stale-e2e-dns job must have continue-on-error: true AND a tracker comment within the window. This is the mc#3147 regression guard — if the next operator renews the tracker to a closed issue, the test fails. The mc#3147 decision issue can be closed once this PR merges; the ongoing governance is owned by mc#3173 (the renewal tracker, which itself expires 14 days after creation and forces another cycle). Tests: 14/14 pass locally. No other workflow file changes. Co-Authored-By: Claude <noreply@anthropic.com>APPROVE @45c5fcb8.
5-axis review:
prune-stale-e2e-dnsfail-soft mask now points at mc#3173, and the lint implementation requires every job-level truthycontinue-on-errorto have a nearbymc#NNNN/internal#NNNNtracker that is open and <=14 days old. This confirms the new tracker is lint-mandated renewal ceremony, not speculative issue fabrication.Specific verification requested: the live lint job log confirms
.gitea/workflows/e2e-staging-saas.ymljobprune-stale-e2e-dnsline 389 resolvesmc#3173 open, 0d old, <=14d. The added test suite is non-vacuous for closed trackers:test_closed_tracker_failsasserts a closed issue makesvalidate_trackerfail. I also ran the new test file locally in a mirrored layout: 14/14 passed.Residual gate note, not a code RC for this PR: the current
lint-continue-on-error-trackingcontext is red due an unrelated existing violation in.gitea/workflows/local-provision-e2e.ymlline 371, wherelifecycle-realreferencesmc#2408at 15 days old (>14d cap). mc#3173 itself is not the failing tracker.REQUEST_CHANGES @45c5fcb815dbfab8976df0da0af8fdac60c24a6a
I verified the rule shape:
.gitea/scripts/lint_continue_on_error_tracking.pygenuinely mandates a nearby# mc#NNNN/# internal#NNNNtracker for every job-level truthycontinue-on-error, and validates that the tracker is open and ≤14 days old. So renewing the prune-stale-e2e-dns tracker is mechanically required by the lint family and is not scope creep in principle.Blocker: the live head is still failing
lint-continue-on-error-tracking / lint-continue-on-error-tracking(target job 552208). My token cannot independently readmc#3173due missingread:issue, but the CI lint has the authoritative validation path and it is red. Please make the tracker validation pass on this head (or fix the referenced tracker/comment if invalid) and reroute.Code/test notes: the workflow comment keeps the fail-soft decision tied to mc#3147 and moves the current tracker to mc#3173; the new tests non-vacuously cover truthy detection, tracker window matching, open/closed/old/not-found validation, and the live workflow tracker presence.
New commits pushed, approval review dismissed automatically according to repository settings
fix(mc#3147): renew prune-stale-e2e-dns continue-on-error tracker to mc#3173to fix(mc#3147, mc#3089, mc#2408): consolidate continue-on-error tracker renewalsAPPROVE @97bb804f0dc491b178a1f8eded360a33d082be27
Re-review of the consolidated head: target is main and head is mergeable. The repo-wide
lint-continue-on-error-tracking / lint-continue-on-error-trackingcontext is now GREEN, which resolves my prior RC on the fragmented head.The three renewed references are mechanically lint-mandated, not speculative scope: each changed workflow has a job-level
continue-on-error: true, and.gitea/scripts/lint_continue_on_error_tracking.pyrequires a nearbymc#NNNN/internal#NNNNtracker that is open and <=14 days old. The changed masks now use mc#3173 for prune-stale-e2e-dns, mc#3175 for design-token drift, and mc#3177 for local-provision lifecycle-real while preserving the older decision issues as rationale.mc#2654 was correctly left untouched; it is not in this diff and the green repo-wide lint pass validates the remaining continue-on-error trackers. Tests are non-vacuous around truthy detection, tracker-window detection, closed/stale/not-found tracker validation, and the three live workflow pins. No correctness, security, performance, or readability blocker found.
APPROVE @97bb804f.
5-axis review:
e2e-staging-saas.ymlmc#3147 -> mc#3173,design-token-drift-gate.ymlmc#3089 -> mc#3175, andlocal-provision-e2e.ymlmc#2408 -> mc#3177. The livelint-continue-on-error-trackingcontext is now green on this head.mc#2654is correctly left untouched because it remains a still-valid 11-day master tracker, not a stale reference.continue-on-errormasks, not speculative issue creation. The lint requires a nearby open tracker <=14 days old for every such mask.Verification: local mirrored test run passed 18/18 for
.gitea/scripts/tests/test_lint_continue_on_error_tracking.py; CI reportslint-continue-on-error-trackingsuccess on97bb804f0dc491b178a1f8eded360a33d082be27. Remaining red security/SOP/gate automation is outside this code verdict and expected to be handled by the existing queue/gate process.