docs(overseer): escalation-triage for blocked goal e06d9e64 — self-deploy deadlock (complete-delivered-goal) - #4914
Open
rysweet wants to merge 2 commits into
Open
Conversation
…et (#4878) Reset the disposable self-deploy source checkout to a pristine state before each `git checkout --detach`, so a dirty tracked file (e.g. a locally modified hook manifest) can no longer break source preparation. - Add `is_canonical_src_repo` guard and `reset_source_tree` (git reset --hard + git clean -fd) in source_prep.rs, invoked at both the fetch and skip-fetch call sites. - Fail closed: refuse to reset any tree that cannot be proven canonical (double canonicalize + equality); never silently proceed. - Use `clean -fd` (never -x) to preserve ignored secrets/caches and the separate warm cargo target dir. - Reuse existing env-scrubbed git_capture and SafeUpdateError::CheckoutFailed; additive, happy path unchanged. - Add tests covering both failure modes, warm-target preservation, and the non-canonical fail-loud path; update self-deploy source-prep/API docs and the run-from-any-directory how-to. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…actions-health e06d9e64 (complete-delivered-goal) Prior round ran exploration but shipped none of the action deliverables. This applies the course-correction and records it verifiably. Root cause: self-deploy chicken-and-egg deadlock. The self-update workspace ~/.simard/self-deploy-src had a dirty tracked file (.github/hooks/amplihack-hooks.json) that made the detached checkout abort, and the running 0.40.0 binary predates the merged reset_source_tree self-heal (7651265, #4898/#4878), so the fix could not land until the tree was unwedged once. Decision: complete-delivered-goal — the remedy is already delivered by a merged PR; applied its one-time prerequisite (git reset --hard && git clean -fd) so the next deploy installs the fixed binary. The goal is STANDING (is_perpetual), so it is gap-scan-exempt and left active by design; 'goal complete' would only reopen it. Four jargon-free Signal updates sent to the operator (all SUCCESS). escalate: null. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
📊 Coverage Summary
Coverage data from CI run. Test files matching |
rysweet
added a commit
that referenced
this pull request
Jul 28, 2026
…iant (#4914) The self-deploy checkout wedged every Overseer cycle because the tracked .github/hooks/amplihack-hooks.json drifted, aborting 'git checkout --detach' with 'your local changes would be overwritten'. The reset-before-checkout repair shipped in #4878; this adds the durable CI regression guard for the drift *source*: - hooks_manifest_and_scripts_are_git_tracked: the manifest (and its hook scripts) must stay git-tracked — untracking/gitignoring is NOT the fix (SR-P1-2, supply-chain integrity). - hooks_dir_has_no_untracked_drift_in_a_clean_checkout: a fresh checkout must leave .github/hooks/ pristine, so a reappearing unconditional manifest rewrite turns CI red instead of silently re-wedging self-deploy. Skips cleanly outside a git work tree (vendored/packaged builds). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
rysweet
added a commit
that referenced
this pull request
Jul 28, 2026
The self-deploy checkout wedged every Overseer cycle because a tracked-file drift (.github/hooks/amplihack-hooks.json, rewritten out-of-band each session) aborted 'git checkout --detach' with 'your local changes would be overwritten'. The code repair shipped in #4878 (reset+clean the disposable canonical checkout before checkout, fail-closed canonical-only gate) and its CI regression guard in #4914 (tests/self_deploy_hooks_tracked_invariant.rs). This adds the reference doc for that shipped fix. Zero-BS: the doc describes ONLY code that exists. It documents the shipped reset_source_tree scrub on both prepare paths, the double-canonicalized is_canonical_src_repo gate, the remove_stale_checkout clone-clean recovery, and the git-tracked / drift-free invariant test — and lists only the real tests in src/self_deploy/tests_source_prep.rs and the invariant target. No invented write_manifest_if_changed / checkout_detached_with_retry / gate_uncertain / dirty_retry symbols. Added to mkdocs nav for discoverability. Verified: cargo test --test docs_integrity (green), the 33 tests_source_prep tests (green), and the 2 hooks-tracked invariant tests (green). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
rysweet
added a commit
that referenced
this pull request
Jul 28, 2026
…variant (#4914) CI's `clippy --all-targets --all-features` reds on `tracked_files.iter().any(|f| *f == MANIFEST_REL)` (manual_contains); the commit-stage `clippy --no-deps` (lib only) did not cover the test target. Use the idiomatic `Vec::contains` so the branch's #4914 regression guard is clippy-clean under the full CI gate. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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.
Summary
Round 1 ran exploration but shipped none of the required action deliverables for blocked goal
steward-ci-github-actions-health-across-all-gov-e06d9e64. This round applies the course-correction and records it verifiably, perprompt_assets/simard/overseer/escalation_triage.md.Root cause (SC2)
Self-deploy chicken-and-egg deadlock:
~/.simard/self-deploy-srchad a dirty tracked file (.github/hooks/amplihack-hooks.json) that aborted the detached checkout every tick (deploys=0, persistenterrors=1). The running0.40.0binary predates the mergedreset_source_treeself-heal (76512653b, #4898/#4878), so the fix could not land until the tree was unwedged once.Decision (SC3): complete-delivered-goal
Remedy already delivered by a merged PR; applied its one-time prerequisite:
git -C ~/.simard/self-deploy-src reset --hard && git clean -fd. Verified clean tree;git checkout --detachnow returns rc=0. The next deploy installs the fixed binary and self-healing resumes.Correction to round 1: the goal is a standing goal (
is_perpetual), so it is gap-scan-exempt andgoal completewould only reopen it — the standing CI-stewardship goal is left active by design.Signal (SC4)
Four jargon-free operator updates sent over the live Signal channel, all
type: SUCCESS. No marker tokens or jargon surfaced.Escalation (SC5)
escalate: null— fixed agentically, no human decision required.Artifact:
ai_working/investigation/escalation_triage_...e06d9e64_HEAD_bbb0d678.md.Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com