feat(workflows): watchdog test-mode dispatch, classifier fixes, v0.15.0 re-pin - #416
Conversation
… re-pin
Standards-sync audit Phase 1.2 (plan: docs/topics/standards-sync-audit/PLAN.md,
Phase 1 sections added on this branch):
- classify-alert-failure now matches the alert job by SUFFIX: the jobs API
returns reusable-workflow jobs prefixed with the caller job id ("alert /
Detect ..."), verified live — the exact-equality match had never hit, so
every deliberate post-filing failure would have misrouted to a false
"watchdog is dark" liveness alarm.
- workflow_dispatch gains test-mode + test-synthetic-candidates (string, so
the legal '0' close-path count survives the empty-string fallback); both
are passed to the reusable on every run with schedule-safe defaulted
expressions (with: keys cannot be conditionally omitted).
- concurrency group added: a dispatched proof run and the hourly poll must
not race the rolling issue — the reusable's lookup fails closed forever
on a duplicate-marker ambiguity.
- Caller re-pinned to v0.15.0 (the watchdog test-mode release); policy.json
gains the contract entry at the new SHA with the two new inputs
(same-PR lockstep rule); runner-policy README rollout paragraph appended.
- Stale rollout-window comment re-cut; Phase 1 plan + design addendum ride
this branch.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013NhxMDn7vZdbs7Cq32m56M
…ps endpoint exists
|
Claude finished @kyle-sexton's task in 3m 10s —— View job Claude finished reviewing this PR
SummaryThe three classifier fixes are correct and each is well-substantiated by the proof-run evidence in
The The new Finding (posted inline)One doc-drift issue in Not verifiedI don't have shell access to run |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7bd818ed7e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Claude has reviewed this PR 1 time. The lane skips further automatic reviews after 5; deleting this comment resets the count. |
## Summary Phase 1.4 of the standards-sync audit: the watchdog lifecycle proof passed (create/update/close/fail via dispatched test-mode runs — proof artifact in the plan, PR #416), so the `.github` canary arms. ## Fix `automerge: false` removed from the `melodic-software/.github` target (absent key = armed default, schema-optional — engine treats absent as true); the fleet-automerge header comment re-cut to the in-progress restore state. Design addendum type nit from #416's post-merge threads folded in. ## Verification `bash distribution/sync-manifest.sh validate` → 38 components, 8 targets; `yq`: `.github` has no automerge key, exactly 7 targets still carry the explicit opt-out. Merge-path safety (verified 2026-08-17, evidence in plan 1.4): four required contexts fire on every `.github` PR, `strict_required_status_checks_policy: false`, squash triple-aligned, arming mutation + Workflows grant proven live under the current pin. **Canary trigger note:** `.github` is byte-in-sync — this flip opens no PR by itself. The canary fires on the next organic canonical change to one of its 7 components (recent cadence ~5/week), time-boxed 7 days before Phase 1.5 proceeds on the proof alone. No manufactured canonical change (it would fan PRs fleet-wide). ## Related Closes #417. Related: #406 (audit umbrella), #416 (proof + caller). 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_013NhxMDn7vZdbs7Cq32m56M --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Summary
Phase 1.2+1.3 of the standards-sync audit: the watchdog caller gains the test-mode dispatch surface, three latent classifier defects are fixed, and the caller re-pins to v0.15.0 (the test-mode release). The full tracking-issue lifecycle proof ALREADY RAN against this branch — evidence below and in the plan.
Fix
classify-alert-failure: job-name match by suffix (the jobs API returns reusable jobs prefixedalert / …— the exact match had never hit); job-levelactions: read(the jobs API 404s under contents:read-only); step conclusions read from the jobs listing (the previously targeted/actions/jobs/<id>/stepsendpoint does not exist). Each was latent — this job had never executed before the proof dispatches.workflow_dispatchgainstest-mode+test-synthetic-candidates(string;'0'survives the explicit empty-string fallback), passed with schedule-safe defaulted expressions;concurrencygroup added so a dispatched proof and the hourly poll cannot race the rolling issue.v0.15.0(01c3295…); policy.json contract entry at the new SHA with the two new inputs (same-PR lockstep); runner-policy README rollout paragraph; stale rollout-window comment re-cut; Phase 1 plan + proof artifact ride this branch.Verification
Pre-merge proof (branch-ref dispatches; full detail in
docs/topics/standards-sync-audit/PLAN.mdPhase 1.3): medley#1856 created (2 SYNTHETIC rows, run 32044893913) → updated (1 row, run 32045258184; deliberate failure classifiedinfrastructure-failure=false, liveness SKIPPED) → closedcompleted(run 32045329964).node --test components/runner-policy/runner-policy.test.mjs272/272; manifest validator green; lefthook green. The hourly cron shape is exercised by the next scheduled tick post-merge (expressions resolve to false/'1' on schedule events).Related
Closes #415. Related: #406 (audit umbrella), melodic-software/ci-workflows#492 (the reusable's test mode).
🤖 Generated with Claude Code
https://claude.ai/code/session_013NhxMDn7vZdbs7Cq32m56M