Retire code-fleet-watch #830
Labels
No labels
burndown-2026-06
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/ai
role/creator
role/design
role/director
role/engineer
role/exec
role/human
role/ops
role/qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/infrastructure#830
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Outcome
Retire the
code-fleet-watchobserver completely. Kai selected full teardown: live workload, credentials, SSM parameters, registry package, repository surface, and the managed public issues all go.Reopened after #831 merged. That PR carried
Closes #830but covered only the repository half, so the auto-close was premature. The live and credential teardown below is still outstanding.Live
code-fleet-watchCronJob in namespaceforgejo.code-fleet-watch-runtime,code-fleet-watch-reporter, andcode-fleet-watch-registryExternalSecrets. The workload is applied through a tracked Ward verb rather than Flux, so deletion is not reconciled back. Each ExternalSecret usescreationPolicy: Owner, so its projected Secret is garbage-collected with it.kubectl deleteis absent from the guardedaosguard ops kubectlsurface and was denied to the agent, so this step is operator-only:Credentials
coilyco-opsPATcode-fleet-watch-issues. No guarded verb exists. The nextward exec coilyco-ops-provisionrevokes it regardless, because the revoke stage enumerates the bot's live PATs from the API rather than the spec list./forgejo/coilyco-ops/code-fleet-watch-issue-token./coilysiren/code-fleet-watch/denylist.coilyco-flight-deck/code-fleet-watch. No guarded verb exists.code-fleet-watch-issue-tokenrow from thecoilyco-opscredential-family rotation script.Both SSM deletions wait on the live step above. Deleting the parameters while their ExternalSecrets exist leaves those ExternalSecrets failing to sync hourly against a missing source. The agent can run these once the cluster resources are gone:
The shared
/forgejo/coilyco-ops/read-tokenstays. Flux and ward-mcp consume it. The registry ExternalSecret read the sharedregistry-read-token, which also stays.Repository
deploy/code-fleet-watch/, the three docs pages, the fivescripts/entries, the five.ward/ward.yamlverbs, and.forgejo/workflows/code-fleet-watch-image.yml.docs/FEATURES.mdentry and thedocs/k3s-deploy-notes-ssm-inventory.mddenylist line.code-fleet-watchentries fromcoilyco-bridge/agentic-os-kaiSSM.mdanddata/ssm-descriptions.yaml.SSM.mdis generated from that YAML joined with the live AWS inventory, so this follows the SSM deletions rather than preceding them.Landed in #831, which also removed the now-dead
issueverification kind and corrected the credential-family size from 15 to 14 in the two places that state it. Git history is the archive. No stub doc remains.Public surface
Each was commented and closed. The listed findings are unreviewed. Closing records that the scanner is gone, not that the findings were resolved.
Superseded
Acceptance
code-fleet-watchresource exists in the cluster.code-fleet-watchoutside this issue and its PRs.Agent progress
Done:
pre-commit run --all-filesandward doctorpass, and no tracked file referencescode-fleet-watchafter it.Operator steps
kubectl deleteis not in the guardedaosguard ops kubectlsurface and was denied to the agent, so the live teardown needs an operator:Each ExternalSecret uses
creationPolicy: Owner, so its projected Secret is garbage-collected with it. No separate Secret deletion is needed.Also operator-only, with no guarded verb available:
code-fleet-watch-issuesPAT. The nextward exec coilyco-ops-provisionrun does this on its own, because the revoke stage enumerates the bot's live PATs from the API rather than the spec list, so removing the spec row in #831 does not orphan it. Revoke sooner if the credential should not stay live until the next rotation.coilyco-flight-deck/code-fleet-watch.Deliberately deferred
The two SSM parameters are still present. Deleting them while the three ExternalSecrets exist would leave those ExternalSecrets failing to sync every hour against a missing source. They come out after the cluster resources are gone:
coilyco-bridge/agentic-os-kaistill carries both entries inSSM.mdanddata/ssm-descriptions.yaml.SSM.mdis generated from that YAML joined with the live AWS inventory, so that cleanup runs after the parameters are actually deleted, not before.Teardown complete
Kai ran the two
kubectl deletecommands. Verified afterwards: no CronJob, ExternalSecret, Secret, or Job namedcode-fleet-watchremains in theforgejonamespace. The projected Secrets were garbage-collected by their owning ExternalSecrets as expected, so no separate cleanup was needed.Both SSM parameters are deleted and confirmed
ParameterNotFound:/coilysiren/code-fleet-watch/denylist/forgejo/coilyco-ops/code-fleet-watch-issue-tokenThe inventory cleanup is coilyco-bridge/agentic-os-kai#873. Regenerating
SSM.mdalso swept in seven unrelated parameters that had appeared in AWS since the last run. The file is generator-owned, so they came along rather than being hand-trimmed. They land undocumented and want descriptions from whoever owns them.Remaining
Two items, neither blocking and neither with a guarded verb:
code-fleet-watch-issuesPAT. Still live. The nextward exec coilyco-ops-provisionrevokes it on its own.coilyco-flight-deck/code-fleet-watch. Storage only, no credential exposure.The merged branch
retire-code-fleet-watch-830is also still on the remote, since the repository does not delete branches after merge.This issue can close once the PAT is revoked and the package is gone, or sooner if those are acceptable to leave to the next rotation.