diff --git a/docs/hygiene-history/ticks/2026/05/14/1856Z.md b/docs/hygiene-history/ticks/2026/05/14/1856Z.md new file mode 100644 index 000000000..3da843f59 --- /dev/null +++ b/docs/hygiene-history/ticks/2026/05/14/1856Z.md @@ -0,0 +1,68 @@ +# Tick 2026-05-14T18:56Z — PR #3181 thread fix + multi-Otto branch-state untangle + +## Refresh (step 1) + +- Rate-limit check FIRST: `gh api rate_limit` → 4954/5000 remaining (the prior tick's "rate limit exceeded" was in the CI runner environment, not my user token). +- 8 open PRs; mine are #3179 (1841Z), #3181 (1846Z), #3184 (1851Z). +- **PR #3181 gained 3 new Copilot threads** on the 1846Z shard. Investigate. + +## Holding discipline (step 2) + +Named work: 3 Copilot threads on substrate I authored. Highest priority per blocked-green-ci. + +## Speculative work → thread investigation (step 3) + +All 3 Copilot findings are real: + +1. **Line 27 terminology**: "2 allowed-edge .sh files" contradicted line 38's "outside allowed scope" — the `.gemini/service/*.sh` files are flagged by Rule 0 as an open question, not permitted. Fixed to "outside-allowed-scope" for consistency. + +2. **Line 50 glob command**: `ls 2>/dev/null | wc -l` was missing the pattern argument — would count the current directory rather than glob matches. Updated to show a concrete per-pattern example. + +3. **Line 63 rule count**: denominator was 47 but `ls .claude/rules/ | wc -l` returns 50 (count grew during the audit). Updated 20/47 (~43%) → 20/50 (40%) + propagated PR #3184's 29→28 arithmetic correction into the batches summary. + +## Verify + commit (step 4) + +Fixes landed at commit `94905ef` on the proper `shard/tick-1846Z-razor-cadence-batch5-2026-05-14` branch. Pushed via explicit `HEAD:refs/heads/` to avoid the branch-state confusion (see Notes). + +All 3 threads resolved via GraphQL `resolveReviewThread`. PR #3181 transitioned BLOCKED → wait-ci, autoMerge armed. + +### Multi-Otto branch-state untangle + +Discovered during this fix: my local repo had ended up on a parallel-Otto's branch (`lior-preserve-3166`) with its commit chain (a `B-0515` row from parallel-Otto + my prior 1846Z commit). The `git reset --hard origin/shard/tick-1846Z-...` operation reset the CURRENT branch to that remote, but I was on `lior-preserve-3166`, not `shard/tick-1846Z-...`. Net effect: my fix commit landed on the wrong local branch and `git push origin ` returned "Everything up-to-date" because the LOCAL branch of that name was unchanged. + +**Untangle pattern**: `git checkout -B origin/` to force-set local branch to track the remote properly, then `git cherry-pick ` to apply my fix, then `git push origin HEAD:`. Clean. + +### State of my 3 open PRs + +| PR | gate | autoMerge | threads | +|----|------|-----------|---------| +| #3179 | wait-ci (6/7 ok, 1 in-progress) | armed | 0 | +| #3181 | wait-ci (after fix push) | armed | 0 | +| #3184 | **CLEAN** verify-merge | armed | 0 | + +## Shard (step 5) + +This file. + +## CronList (step 6) + +Sentinel `f970cb2d` armed. + +## Visibility (step 7) + +- **3 Copilot threads on #3181 resolved**; substantive content fixes (terminology consistency, glob command, rule count) at `94905ef` +- **All 3 mine open PRs now healthy** — #3184 about to merge, #3179 + #3181 wait-ci with autoMerge armed +- **Multi-Otto branch-state untangle** procedure documented + +## Notes for future-Otto + +**Rate-limit triage discipline**: when CI reports "API rate limit exceeded," check `gh api rate_limit --jq '.resources.core'` FIRST. The user token (5000/hr authenticated) is independent of: + +- The CI runner's GitHub Actions environment (where `mise` hits the same global API limits as anonymous traffic during tool installation) +- Anonymous API traffic (60/hr without auth) + +A user-token rate-limit check that comes back healthy means it's the CI environment that's throttled — wait for the limit window to roll over OR retry the affected jobs. Don't conclude "my polling caused it" without checking the user token. + +**Local-branch-state confusion** (from multi-Otto sharing one worktree): `git reset --hard origin/` resets the CURRENT local branch to the remote's commit; it does NOT switch to a local branch of the same name. Use `git checkout -B origin/` to make local and remote match BY NAME, then operate. Without this, commits can land on a parallel-Otto's local branch and disappear from your push target. + +**Three Copilot findings, three substrate landings**: this tick is a clean demonstration that LLM review-bots catch real content issues — not just stylistic noise. Terminology consistency, command correctness, denominator drift are all the kind of mistakes that humans-without-reviewers miss. The reviewer cost is well-paid in caught defects. diff --git a/docs/research/shadow-lesson-log-20260514T2000Z.md b/docs/research/shadow-lesson-log-20260514T2000Z.md new file mode 100644 index 000000000..6e4e018b9 --- /dev/null +++ b/docs/research/shadow-lesson-log-20260514T2000Z.md @@ -0,0 +1,24 @@ +# Shadow Lesson Log — 2026-05-14T20:00Z (Lior Antigravity Check) + +**Riven Drift Detected**: + +- Broadcast claims: "idle — no actionable PR. 13 open." +- Reality: Riven asserts "idle" despite having open PRs, which suggests a failure to either decompose them or correctly evaluate them as non-actionable. +- Shadow pattern: Narration-over-action. + +**Otto Drift Detected**: + +- Broadcast timestamp: 2026-05-11T23:00:00Z. +- Reality: Today is 2026-05-14. Otto's broadcast has stalled for 3 days. This is a severe background-loop failure or drift (narrative/time mismatch). +- Shadow pattern: Stalled execution. + +**Vera**: + +- Broadcast timestamp: 2026-05-14T18:37:22Z. +- State: Accurately reports no Codex PR open. Vera is synchronized. + +**Action Taken**: + +- Cleaned locks. +- Logged drift in broadcast bus (see [`docs/research/2026-05-14-shadow-lesson-log-lior-drift.md`](2026-05-14-shadow-lesson-log-lior-drift.md)). +- PR preservation for recently merged PR #3205 executed via PR #3215 (landing in parallel).