|
| 1 | +# Plan 00085 — Journal 26-08-24 |
| 2 | + |
| 3 | +> **Append-only activity log** for plan 00085. One file per day |
| 4 | +> (`00085-Journal-YY-MM-DD.md`). `PLAN.md` tracks the plan (what/why, |
| 5 | +> current state, tasks); this journal tracks what actually *happened* — |
| 6 | +> findings, decisions, dead-ends, hand-off state — the linear lifecycle a plan |
| 7 | +> document structurally cannot carry. |
| 8 | +> |
| 9 | +> **Entry grammar** — append new entries at the BOTTOM; NEVER edit earlier |
| 10 | +> entries (corrections are new entries): |
| 11 | +> |
| 12 | +> ``` |
| 13 | +> ## HH:MM · category · REF — optional short title |
| 14 | +> ``` |
| 15 | +> |
| 16 | +> - `HH:MM` local 24h (the date is in the filename); times increase down the file. |
| 17 | +> - `category` ∈ `action` | `finding` | `decision` | `thought` | `blocker` | `handoff` |
| 18 | +> - `REF` = optional task/phase ref (`T1.2`, `P1`) or `—`. |
| 19 | +> - Bodies may embed fenced logs/diffs/snippets — no size limit — with a |
| 20 | +> one-line takeaway above the fence. |
| 21 | +> - End a working session with a `handoff` entry so the next agent's entry |
| 22 | +> point is the last entry of the newest day-file. |
| 23 | +
|
| 24 | +## 15:33 · action · — — plan scaffolded |
| 25 | +
|
| 26 | +Plan 00085 created via `mkplan.bash`; `JOURNAL/` initialised. Next: |
| 27 | +fill in `PLAN.md`, then log progress here as it happens. |
| 28 | +
|
| 29 | +## 15:50 · finding · T1.1 — root cause confirmed, both PR #33/#34 mechanisms proved live |
| 30 | +
|
| 31 | +A downstream deployment repo's live proof of `RUN_BASH_GITHUB_ACCOUNTS=none` against a real |
| 32 | +guest (via Ansible `become`/`become_user`, not an interactive shell) reached |
| 33 | +`headless_preflight OK — sudo=password (RUN_BASH_SUDO_PASSWORD_FILE)`, the HTTPS self-clone, |
| 34 | +and the correctly-skipped GitHub setup steps — proving PR #33 and PR #34 both work end-to-end |
| 35 | +in composition — then failed at `ansible-galaxy: command not found`, even though the preceding |
| 36 | +pipx step's own output listed `ansible-galaxy` among "these apps are now available". |
| 37 | +
|
| 38 | +Confirmed root cause: `pipx install --include-deps ansible` creates its app shims under |
| 39 | +`~/.local/bin`, but this script never adds that directory to its own `PATH`. An interactive |
| 40 | +terminal already has it (Fedora's `.bash_profile` adds it at login), so the desktop-interactive |
| 41 | +path was never affected. `sudo -u <user>` (what both headless mode and any Ansible `become` task |
| 42 | +use) resets `PATH` to sudoers' `secure_path`, which never includes `~/.local/bin` — so the |
| 43 | +bare `ansible-galaxy install -r requirements.yml` call, and `./playbooks/playbook-main.yml` |
| 44 | +right after it (shebang `#!/usr/bin/env ansible-playbook`, same PATH lookup), cannot resolve. |
| 45 | +Confirmed the shebang directly (`head -1 playbooks/playbook-main.yml`) so the fix covers both |
| 46 | +call sites, not just the one that happened to fail first. |
| 47 | +
|
| 48 | +Fix: `export PATH="$HOME/.local/bin:$PATH"` (guarded against a caller that already has it) |
| 49 | +right after the pipx install/inject block. `bash -n`/`shellcheck -x` clean. Version bumped to |
| 50 | +1.14.0. |
| 51 | +
|
| 52 | +## 16:00 · handoff · — — PR opened |
| 53 | +
|
| 54 | +Committed and pushed on `plan-00085-headless-path-local-bin`; PR opened against `F44`. |
| 55 | +
|
| 56 | +## 16:12 · action · T1.5 — merged, plan complete |
| 57 | +
|
| 58 | +Dispatched an independent review agent (`qa-reviewer` stand-in) over PR #35's full diff; |
| 59 | +verdict MERGE-READY WITH NITS, nits addressed (README index row, Task 1.3/1.4 ticked) in |
| 60 | +commit `300269c`. |
| 61 | +
|
| 62 | +Then re-proved the fix live, pinned at the branch tip `8fd8725` (lts-infra Plan 00045's |
| 63 | +`verify-github-accounts-none.yml`, prove-before-merge on an unmerged commit — `get_url` |
| 64 | +resolves any sha regardless of branch state). The run got past `ansible-galaxy` and through |
| 65 | +`playbook-main.yml`'s Preflight Sanity and DNF Upgrade plays cleanly — proving both the PATH |
| 66 | +fix AND the underlying PR #33/#34 composition all work together — before hitting an |
| 67 | +unrelated, pre-existing defect in `play-AB-dnf-upgrade.yml`'s kernel-modules enumeration |
| 68 | +(filed as Plan 00086, PR #36). Success criteria met: the failure that remained was not a |
| 69 | +PATH failure. |
| 70 | +
|
| 71 | +Checked PR #35's CI: `gitleaks secret scan` was failing, but confirmed via |
| 72 | +`git diff origin/F44...plan-00085-headless-path-local-bin --stat` that the flagged file |
| 73 | +(`CLAUDE/Plan/Completed/00070-.../research/scan-alt-engines.md`) is untouched by this PR, and |
| 74 | +via `gh run list --branch F44` that F44's own tip already fails the same way — a pre-existing |
| 75 | +false positive unrelated to this change, not a merge blocker. |
| 76 | +
|
| 77 | +Merged PR #35 (`gh pr merge 35 --merge --delete-branch`, merge commit `dac4f7c`). Plan |
| 78 | +status flipped to Complete and archived to `Completed/`. |
0 commit comments