refactor!: remove host health-watch and scheduled dependency-drift workflow - #363
Merged
Merged
Conversation
…rkflow Delete the same-host health-watch monitor (internal/healthwatch, the `host health-watch check` and `install-task` subcommands, its scheduled task installer, and its config schema). `host doctor` already checks heartbeat freshness, and no host or provisioning repository installs the task or configures the block. Delete the daily Dependency Drift workflow. The freshness gate in release.yml and scripts/Test-DependencyFreshness.ps1 are unchanged; the docs now describe the check as release-time or run by hand. A host configuration that still carries a top-level `healthWatchdog` block keeps loading under strict decoding: the key is accepted, ignored, and reported as a warning by the CLI and in the controller log. The jobindex read surface that only health-watch used (SnapshotBytes, MaximumJobStateBytes, EncodedCatalogSize) is removed with it. BREAKING CHANGE: `ci-runner host health-watch check` and `ci-runner host health-watch install-task` are removed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019mo9xaZ53JHHy4aBjgd8wK
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019mo9xaZ53JHHy4aBjgd8wK
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No related issue: this PR closes nothing.
Summary
Owner direction 2026-09-14: delete stale and overengineered automation. This PR removes the host health-watch feature and the scheduled Dependency Drift workflow. It does not cut a release; nothing reaches a host until a later reviewed release is promoted.
Fix
Deleted:
.github/workflows/dependency-drift.yml(daily schedule).scripts/Test-DependencyFreshness.ps1stays and still runs as the freshness gate inrelease.yml.internal/healthwatch/(alert, check, inventory, storage and their tests).internal/app/health_watch.go,health_watch_checker.go,health_watch_test.go,health_watch_install_test.go.internal/host/healthwatch_task.go,healthwatch_task_windows.go,healthwatch_task_other.go.internal/jobindex/snapshot_bytes_test.go, withSnapshotBytes,MaximumJobStateBytesandEncodedCatalogSizeinfile_store.go. Only health-watch called them.Edited:
internal/app/app.go: removed thehost health-watchcase, its two usage lines, and theDependencies.ACLfield that only health-watch read.bootstrap.gono longer passes it.ScheduledTaskCLIstays becausehost controller restartuses it.internal/config/config.go: removed theHealthWatchdogtype, defaults and validation. StrictKnownFields(true)decoding is unchanged. A top-levelhealthWatchdogkey is still accepted and ignored, andLoadrecords a warning inConfig.Warnings. The CLI prints it to stderr and the controller writes it to its log asconfig-warning.internal/config/config_test.go:TestLoadIgnoresLegacyHealthWatchdogloads a config with a populatedhealthWatchdogblock and asserts it loads with one warning, and that the base config has none.internal/controller/reconciler_test.go,internal/app/doctor.go,internal/jobindex/file_store.go: removed the config fixture block and the comments that referred to health-watch..github/actionlint.yaml: removed the ignore entry for the deleted workflow.README.md,docs/releases.md,docs/worker-image.md: freshness is now described as checked at release publication or by hand, not daily. The#freshness-policyanchor is kept.release/dependency-drift-review.json: removed the four sentences saying the daily dependency-drift job reconciles issue 283..gitignore: comment wording only. Thedependency-drift.jsonentry stays because it is the script's default output path.Left untouched:
docs/topics/repo-simplify-sweep/*, which are historical run records.Host findings
Checked read-only on 2026-09-14. Both hosts load
C:\Users\KyleSexton\AppData\Local\ci-runner\config.yaml, according to theci-runner-fleetscheduled task arguments.healthWatchdogin configci-runner-health-watchtaskNo host needs a change. The legacy-key handling covers any config this check could not see.
Verification
go build ./...,go vet ./...,GOOS=linux go vet ./...: pass (go1.27.1).go test ./...: all packages pass.golangci-lint run ./...(v2.13.1 built with go1.27.1): 0 issues.actionlint -shellcheck= -pyflakes=: exit 0.markdownlint-cli2 README.md docs/releases.md docs/worker-image.md: 0 issues.pwsh -NoProfile -File scripts/Test-ReleasePins.ps1: "Release and workflow pins are internally consistent."node --test .github/scripts/*.test.cjs: 21 pass, 0 fail.24fac49FAIL on one stale sentence, wheredocs/releases.md:64still described "the daily official-release check". Every other check passed: build, vet, tests, lint, pin test, node tests, no leftover references, no dangling symbols, legacy config loads with a warning, unknown keys still rejected, release freshness step intact. Fixed ina7ce55b. Re-verify ata7ce55b: PASS. No daily or scheduled freshness wording remains, and the onlyhealthWatchdoghits are the legacy-key acceptance and its test.Related
Refs: melodic-software/github-iac#378
Refs: #357
Refs: #227
BREAKING CHANGE:
ci-runner host health-watch checkandci-runner host health-watch install-taskare removed.🤖 Generated with Claude Code
https://claude.ai/code/session_019mo9xaZ53JHHy4aBjgd8wK