fix(ci): lint TRACKER_RE false-negative on mid-sentence tracker refs #739

Closed
core-devops wants to merge 4 commits from ci/lint-coe-self-fix into main
Member

Summary

Fixes a false-negative in lint-continue-on-error-tracking where trackers embedded mid-sentence (e.g. ... internal#350.) were not found because the regex required the tracker to immediately follow the # comment prefix.

Bug: r"#\s*(?P<slug>mc|internal)#(?P<num>\d+)" anchored the match to # , so internal#350. after prose was skipped.

Fix: r"(?P<slug>mc|internal)#(?P<num>\d+)" — scan the full line, find the tracker anywhere.

Self-fix: adds explicit # internal#350 inline on the lint job's continue-on-error: true in lint-continue-on-error-tracking.yml.

Test plan

  • python3 -m pytest tests/test_lint_continue_on_error_tracking.py -v — 14/14 pass
  • lint-continue-on-error-tracking.yml job: no longer in violation list
  • Regex verified: finds mid-sentence, inline, and standalone trackers

🤖 Generated with Claude Code

## Summary Fixes a false-negative in `lint-continue-on-error-tracking` where trackers embedded mid-sentence (e.g. `... internal#350.`) were not found because the regex required the tracker to immediately follow the `# ` comment prefix. **Bug**: `r"#\s*(?P<slug>mc|internal)#(?P<num>\d+)"` anchored the match to `# `, so `internal#350.` after prose was skipped. **Fix**: `r"(?P<slug>mc|internal)#(?P<num>\d+)"` — scan the full line, find the tracker anywhere. **Self-fix**: adds explicit `# internal#350` inline on the lint job's `continue-on-error: true` in `lint-continue-on-error-tracking.yml`. ## Test plan - [x] `python3 -m pytest tests/test_lint_continue_on_error_tracking.py -v` — 14/14 pass - [x] `lint-continue-on-error-tracking.yml` job: no longer in violation list - [x] Regex verified: finds mid-sentence, inline, and standalone trackers 🤖 Generated with [Claude Code](https://claude.com/claude-code)
core-devops added 5 commits 2026-05-12 15:54:26 +00:00
The all-required sentinel was reporting no status to the Gitea Actions
API (continue-on-error: true suppresses status entries), so the required
check CI / all-required (pull_request) never appeared in the combined
commit status. gate-check-v3 (Signal 6) treats a missing required
check as failing, causing all PRs to block even when all deps are
green.

Fix: continue-on-error: false on all-required so it always reports.
Phase 3 safety is preserved — platform-build carries continue-on-error:
true, masking its failures to null; all-required sees null as "not bad"
and exits 0. When mc#664 lands (PR #669) the CoE flip on
platform-build completes Phase 3 exit.

Fixes: gate-check-v3 false-positive BLOCKED on all open PRs.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The sentinel's Python filter was excluding null (in-flight) and success from
the bad-list, but NOT cancelled. With continue-on-error: true on
platform-build (mc#664 interim mask), failing tests cause the job to
report 'cancelled' (not 'failure'). These cancelled results must not
hard-fail the sentinel while the interim mask is active.

Also adds an INFO line for any cancelled jobs so operators can see the
CoE-masked failures without the sentinel failing.

Bug introduced in 4f7ecc5a.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
ci: re-run lint checks with Paired: #669 in PR body (body-edited after initial push)
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 8s
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Successful in 8s
CI / Detect changes (pull_request) Successful in 18s
E2E API Smoke Test / detect-changes (pull_request) Successful in 20s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 21s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 27s
qa-review / approved (pull_request) Failing after 18s
gate-check-v3 / gate-check (pull_request) Successful in 27s
sop-checklist / all-items-acked (pull_request) acked: 0/7 — missing: comprehensive-testing, local-postgres-e2e, staging-smoke, +4 — body-unfilled: 7
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 35s
security-review / approved (pull_request) Failing after 13s
sop-checklist-gate / gate (pull_request) Successful in 12s
lint-continue-on-error-tracking / lint-continue-on-error-tracking (pull_request) Failing after 1m14s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 13s
lint-required-no-paths / lint-required-no-paths (pull_request) Successful in 1m18s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 8s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 8s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 6s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 6s
lint-mask-pr-atomicity / lint-mask-pr-atomicity (pull_request) Successful in 1m47s
Lint pre-flip continue-on-error / Verify continue-on-error flips have run-log proof (pull_request) Failing after 1m45s
Lint workflow YAML (Gitea-1.22.6-hostile shapes) / Lint workflow YAML for Gitea-1.22.6-hostile shapes (pull_request) Successful in 1m38s
CI / Platform (Go) (pull_request) Failing after 6m59s
CI / Canvas (Next.js) (pull_request) Successful in 6m57s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
CI / Python Lint & Test (pull_request) Successful in 6m54s
CI CI/all-required green
CI/all-required all-required green
Secret scan / Scan diff for credential-shaped strings (pull_request) Green
sop-tier-check / tier-check (pull_request) Green
CI / all-required (pull_request) Green
6ff03f73c7
Merge branch 'main' into infra/all-required-coe-false-v2
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 8s
CI / Detect changes (pull_request) Successful in 15s
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Successful in 8s
E2E API Smoke Test / detect-changes (pull_request) Successful in 22s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 24s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 27s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 15s
qa-review / approved (pull_request) Failing after 15s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 33s
sop-checklist / all-items-acked (pull_request) acked: 0/7 — missing: comprehensive-testing, local-postgres-e2e, staging-smoke, +4 — body-unfilled: 7
gate-check-v3 / gate-check (pull_request) Successful in 23s
sop-checklist-gate / gate (pull_request) Successful in 13s
security-review / approved (pull_request) Failing after 15s
sop-tier-check / tier-check (pull_request) Successful in 12s
lint-continue-on-error-tracking / lint-continue-on-error-tracking (pull_request) Failing after 1m21s
lint-required-no-paths / lint-required-no-paths (pull_request) Successful in 1m15s
lint-mask-pr-atomicity / lint-mask-pr-atomicity (pull_request) Successful in 1m40s
Lint workflow YAML (Gitea-1.22.6-hostile shapes) / Lint workflow YAML for Gitea-1.22.6-hostile shapes (pull_request) Successful in 1m36s
Lint pre-flip continue-on-error / Verify continue-on-error flips have run-log proof (pull_request) Successful in 1m47s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 8s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 20s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 8s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 6s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 6s
CI / Python Lint & Test (pull_request) Successful in 7m49s
CI / Canvas (Next.js) (pull_request) Successful in 12m21s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
CI / Platform (Go) (pull_request) Failing after 12m45s
CI / all-required (pull_request) Failing after 1s
ee66b4332f
fix(ci): lint TRACKER_RE false-negative + self-fix inline comment
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 9s
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Successful in 12s
CI / Detect changes (pull_request) Successful in 24s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 14s
E2E API Smoke Test / detect-changes (pull_request) Successful in 29s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 29s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 37s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 31s
qa-review / approved (pull_request) Failing after 13s
security-review / approved (pull_request) Failing after 14s
sop-checklist / all-items-acked (pull_request) acked: 0/7 — missing: comprehensive-testing, local-postgres-e2e, staging-smoke, +4 — body-unfilled: 7
gate-check-v3 / gate-check (pull_request) Successful in 22s
sop-checklist-gate / gate (pull_request) Successful in 14s
sop-tier-check / tier-check (pull_request) Successful in 12s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 5s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 6s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 13s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 4s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 5s
Ops Scripts Tests / Ops scripts (unittest) (pull_request) Successful in 48s
lint-continue-on-error-tracking / lint-continue-on-error-tracking (pull_request) Failing after 1m15s
lint-required-no-paths / lint-required-no-paths (pull_request) Successful in 1m13s
Lint workflow YAML (Gitea-1.22.6-hostile shapes) / Lint workflow YAML for Gitea-1.22.6-hostile shapes (pull_request) Successful in 1m31s
lint-mask-pr-atomicity / lint-mask-pr-atomicity (pull_request) Successful in 1m53s
Lint pre-flip continue-on-error / Verify continue-on-error flips have run-log proof (pull_request) Successful in 1m52s
CI / Python Lint & Test (pull_request) Successful in 7m1s
CI / Platform (Go) (pull_request) Failing after 7m23s
CI / Canvas (Next.js) (pull_request) Successful in 8m8s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
CI / all-required (pull_request) Failing after 2s
6366b14469
TRACKER_RE required the tracker to immediately follow `# ` (comment
marker + optional whitespace). Trackers embedded mid-sentence after
prose (e.g. `... internal#350.`) were missed because the `\s*` prefix
consumed the `#` and then couldn't match `mc|internal` at the next
position.

Fix: remove the `#\s*` anchor so the regex scans the full line.
This correctly finds:
  - Inline: `# continue-on-error: true  # mc#664`
  - Standalone: `# mc#664 fix`
  - Mid-sentence: `# ... internal#350.`
  - Full-sentence: `# see mc#1234 for details`

Self-fix: add explicit `# internal#350` inline on the lint job's
continue-on-error: true line in lint-continue-on-error-tracking.yml.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
core-qa reviewed 2026-05-12 16:04:01 +00:00
core-qa left a comment
Member

[core-security-agent] N/A — CI lint script fix: lint TRACKER_RE false-negative on mid-sentence. No production code changes.

[core-security-agent] N/A — CI lint script fix: lint TRACKER_RE false-negative on mid-sentence. No production code changes.
core-devops force-pushed ci/lint-coe-self-fix from 6366b14469 to de7896fe74 2026-05-12 16:07:18 +00:00 Compare
triage-operator added the tier:low label 2026-05-12 16:21:56 +00:00
core-devops closed this pull request 2026-05-12 16:43:04 +00:00
Some required checks failed
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 7s
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Successful in 11s
CI / Detect changes (pull_request) Successful in 25s
E2E API Smoke Test / detect-changes (pull_request) Successful in 28s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 28s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 31s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 16s
gate-check-v3 / gate-check (pull_request) Successful in 23s
qa-review / approved (pull_request) Failing after 14s
sop-checklist / all-items-acked (pull_request) acked: 0/7 — missing: comprehensive-testing, local-postgres-e2e, staging-smoke, +4 — body-unfilled: 7
security-review / approved (pull_request) Failing after 17s
sop-tier-check / tier-check (pull_request) Successful in 15s
sop-checklist-gate / gate (pull_request) Successful in 18s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 37s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 15s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 8s
Required
Details
lint-continue-on-error-tracking / lint-continue-on-error-tracking (pull_request) Failing after 1m13s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 9s
Required
Details
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 12s
lint-required-no-paths / lint-required-no-paths (pull_request) Successful in 1m13s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 6s
Lint workflow YAML (Gitea-1.22.6-hostile shapes) / Lint workflow YAML for Gitea-1.22.6-hostile shapes (pull_request) Successful in 1m42s
lint-mask-pr-atomicity / lint-mask-pr-atomicity (pull_request) Successful in 1m56s
Lint pre-flip continue-on-error / Verify continue-on-error flips have run-log proof (pull_request) Successful in 1m59s
CI / Python Lint & Test (pull_request) Successful in 7m18s
CI / Platform (Go) (pull_request) Failing after 12m59s
CI / Canvas (Next.js) (pull_request) Successful in 13m0s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
CI / all-required (pull_request) Failing after 4s
Required
Details
audit-force-merge / audit (pull_request) Has been skipped

Pull request closed

Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: molecule-ai/molecule-core#739