feat(ci)(hard-gate): lint-continue-on-error-tracking (Tier 2e) #689
No reviewers
Labels
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: molecule-ai/molecule-core#689
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/tier-2e-tracking-issue"
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?
[core-devops]
What
Adds
lint-continue-on-error-tracking(Tier 2e) — enforces that everycontinue-on-error: truedirective in.gitea/workflows/*.ymlcarries a# mc#NNNNor# internal#NNNNtracker comment within 2 lines (above/below/inline), the referenced issue is OPEN, andcreated_atis ≤14 days ago.Three files:
.gitea/scripts/lint_continue_on_error_tracking.py— PyYAML line-tracking loader + window-scan for tracker comments + Gitea issue API validation..gitea/workflows/lint-continue-on-error-tracking.yml—pull_request+pushonmain/staging+ daily13:11 UTCschedule (catches age-expiry drift) +workflow_dispatch. Phase 3 (continue-on-error: true) per RFC #219 §1.tests/test_lint_continue_on_error_tracking.py— 14 unit tests covering every prod branch.Why
continue-on-error: trueonplatform-buildhad been hiding mc#664-class regressions for ~3 weeks before PR#656 surfaced them on 2026-05-12. A 14-day cap forces a review cycle: close-or-renew.Empirical pre-existing state: a dry-run against current
mainworkflows surfaces 30+ continue-on-error: true directives without tracker comments. Each is a candidate masked defect. The Phase-3 contract means the lint surfaces these without blocking PRs while the team triages them; Phase-4 flip-to-false happens aftermainis clean for 3 days.Behaviour-based gate (PyYAML line-tracking) per
feedback_behavior_based_ast_gates.Verification
14 passed in 0.05s).test_coe_true_at_14d_passes(14d inclusive) andtest_coe_true_at_15d_fails(15d exclusive) lock the spec contract.test_coe_true_api_403_skipsverifies token-scope failures emit::error::on stderr but exit 0, matching Tier 2a contract.Tier
tier:medium— additive lint, Phase 3 (continue-on-error: true on the workflow itself) means no existing PR is blocked. Each tracked-violation triage is its own change; flipping the lint to Phase 4 is a follow-up PR.Brief-falsification log
Hypothesis: this might share code with Tier 2g (issue lookups). False — Tier 2g compares emission to BP context list (no issue lookups). Each lint owns its API helper.
Hypothesis: comment scanning might need a full YAML re-tokenize. False — PyYAML's line-tracking gives per-key source lines, and raw-text scanning over ±2 lines is sufficient and simpler.
Hypothesis: 14-day boundary handling might need datetime.combine. False —
age.days(whole-day floor) gives a clean inclusive boundary matching the spec.Refs: #350
Sibling-PRs: #670 (Tier 2a, merged), #671 (Tier 2b, merged), #673 (Tier 2c, open), #685 (Tier 2d)
[core-security-agent] APPROVED — lint-continue-on-error-tracking (Tier 2e). Tracks continue-on-error status across PR diff and recent main runs. urllib with timeout. Token in Authorization header. No injection. Owasp 0/0.
[core-qa-agent] APPROVED — tests pass, test/script coverage 0.7-0.85x, e2e: N/A — non-platform
Tier 2 CI lint gate PRs. All include: lint script + workflow YAML + test file. Coverage adequate for pattern-matching lint scripts.
5f39919c0fto0dae4b8eb0[core-qa-agent] APPROVED (re-review after force-push) — tests pass, test/script coverage adequate, e2e: N/A — non-platform
Verified clean rebase onto current main (
b4622702). No regressions (no MobileChat revert, no lint file deletions). Force-push updated HEAD only, content unchanged.