Problem
plugins/claude-ops/skills/lanes/context/refresh.md's git staleness probe (added in #514 / PR #791) references a <lane-launch-commit> placeholder described as "the repo HEAD when lanes start/restart last ran" — but plugins/claude-ops/skills/lanes/scripts/lane-launcher.sh never captures this value anywhere (confirmed by inspection: the only rev-parse call in that script is rev-parse --show-toplevel for the repo root). An operator or future automation following the probe literally has no automated way to retrieve <lane-launch-commit> — it's advisory-only today.
Observed vs expected
Observed: the probe is conceptually correct (git log --oneline "<lane-launch-commit>..${default}" -- plugins/claude-ops/) but the placeholder has no producer.
Expected: lane-launcher.sh captures git rev-parse HEAD at launch time (after its pre-launch pull step) and persists it somewhere the probe doc can point at — e.g. ${CLAUDE_PLUGIN_DATA}/lanes/<lane>-launch-commit.
Fix direction (from two independent review passes on PR #791)
Launcher patch: after the pre-launch git pull, capture git rev-parse HEAD and write it to a per-lane file under ${CLAUDE_PLUGIN_DATA}/lanes/. Update context/refresh.md's probe instructions to read from that file instead of an unfilled placeholder. A hex-only SHA from git rev-parse HEAD carries no injection risk; if this is ever instead sourced from external/user-controlled input, that input must never be interpolated unquoted into the probe command — call this out explicitly in the doc once the launcher change lands.
Lighter-weight fallback if the launcher change is out of scope for now: document claude agents --json's startedAt field as a time-based approximation (git log --after="<startedAt>" origin/main -- plugins/claude-ops/).
Category
behavioral (documentation gap / incomplete automation surface, not a bug in shipped behavior — the probe is correctly labeled advisory)
Lane / source
work lane, 2026-07-21. Deferred VALID finding from PR #791's post-green review pass (two independent review-bot passes both flagged it, before and after a follow-up commit; both classified it non-blocking for a doc-only PR).
Work-class: C3 (bug-fix-shaped) — attended triage 2026-07-23, operator-ratified. 🤖
Problem
plugins/claude-ops/skills/lanes/context/refresh.md's git staleness probe (added in #514 / PR #791) references a<lane-launch-commit>placeholder described as "the repo HEAD whenlanes start/restartlast ran" — butplugins/claude-ops/skills/lanes/scripts/lane-launcher.shnever captures this value anywhere (confirmed by inspection: the onlyrev-parsecall in that script isrev-parse --show-toplevelfor the repo root). An operator or future automation following the probe literally has no automated way to retrieve<lane-launch-commit>— it's advisory-only today.Observed vs expected
Observed: the probe is conceptually correct (
git log --oneline "<lane-launch-commit>..${default}" -- plugins/claude-ops/) but the placeholder has no producer.Expected:
lane-launcher.shcapturesgit rev-parse HEADat launch time (after its pre-launch pull step) and persists it somewhere the probe doc can point at — e.g.${CLAUDE_PLUGIN_DATA}/lanes/<lane>-launch-commit.Fix direction (from two independent review passes on PR #791)
Launcher patch: after the pre-launch
git pull, capturegit rev-parse HEADand write it to a per-lane file under${CLAUDE_PLUGIN_DATA}/lanes/. Updatecontext/refresh.md's probe instructions to read from that file instead of an unfilled placeholder. A hex-only SHA fromgit rev-parse HEADcarries no injection risk; if this is ever instead sourced from external/user-controlled input, that input must never be interpolated unquoted into the probe command — call this out explicitly in the doc once the launcher change lands.Lighter-weight fallback if the launcher change is out of scope for now: document
claude agents --json'sstartedAtfield as a time-based approximation (git log --after="<startedAt>" origin/main -- plugins/claude-ops/).Category
behavioral (documentation gap / incomplete automation surface, not a bug in shipped behavior — the probe is correctly labeled advisory)
Lane / source
work lane, 2026-07-21. Deferred VALID finding from PR #791's post-green review pass (two independent review-bot passes both flagged it, before and after a follow-up commit; both classified it non-blocking for a doc-only PR).
Work-class: C3 (bug-fix-shaped) — attended triage 2026-07-23, operator-ratified. 🤖