Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 91 additions & 0 deletions docs/hygiene-history/ticks/2026/05/14/0034Z.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
---
tick: 2026-05-14T00:34Z
agent: otto-cli
session: cron-resumption
pr: 3066
---

# Tick 0034Z — B-0451 procedure memory file landed as durable substrate

## Refresh

- CronList: live (`9ac08520`, `* * * * *`, sentinel `<<autonomous-loop>>`).
- PR #3061 (Lior shadow log for Riven) merged → `916ca03`.
- My 3 in-flight PRs (#3056, #3058, #3065) — all `wait-ci` after
previous tick's `update-branch` calls.

## Speculative work picked

Per never-be-idle + previous tick's restraint discipline ("don't
multiply rate-limit pressure"): capture the per-collision renumber
procedure as a durable memory file. Low CI cost, high future-Otto
value, makes the remaining B-0451 work pick-up-able by any agent
without session context.

## Landed concretely

| Artifact | Where | What |
|---|---|---|
| `memory/feedback_b0451_per_collision_renumber_procedure_external_references_rule_trumps_first_merged_2026_05_14.md` | PR #3066 `575bd7f` | 242-line procedure memo: carved sentence + 9-step recipe + 3 substrate-honest pitfalls + remaining-work map |

## Procedure captured (summary)

The 9-step recipe distills the pattern that emerged from this
session's 5 collision-resolution PRs (PR-3053, PR-3057, PR-3058,
PR-3065, PR-3056). Key learnings:

1. **External-references trumps first-merged-wins.** PR #3057 +
#3065 both bent the temporal rule because the rows with more
Comment thread
AceHack marked this conversation as resolved.
Outdated
external citations were structurally more expensive to migrate.
2. **Batch connected components in one PR.** B-0090.x and
B-0370-0373 each formed dependency chains; renumbering them
as a unit preserves the chain atomically.
3. **Worktree isolation prevents multi-Otto split-brain.** Every
cleanup PR this session opened in `/tmp/zeta-<name>` rather
than the main checkout.

## Substrate-honest pitfalls documented

| Pitfall | Symptom | Resolution |
|---|---|---|
| BLOCKED ≠ failed CI | `mergeStateStatus: BLOCKED` with required checks green | `gh api -X PUT pulls/{N}/update-branch` |
| Initial analysis points wrong | First read keeps "wrong" set; reviewer or re-examination flips it | Re-check timeline + external refs before committing to a renumber direction |
| Collisions hide for weeks | B-0444 survived 9 PR landings; B-0370 survived 4 days | Run audit BEFORE filing new rows, not after |

## Remaining work (3 collision groups)

After PRs #3058 + #3065 land, the audit will report:

- `B-0409` (3-way: wallet-immune P1 + amara-persona-bootstrap P2 + peer-call-ts-audit P2)
- `B-0410` (amara-ts-core P2 + peer-call-persona-loader P2)
- `B-0411` (amara-ts-readme-courier P2 + grok-ts-persona-flag P2)

All 2026-05-11 within-priority decomposition races. ~5-10 min each
following the documented procedure. Future tick or future-Otto can
clear them.

## Restraint discipline (continued)

Did NOT open another cleanup PR this tick. The reasoning from tick
0024Z still holds: 3 PRs in flight, 25+ jobs each on a shared
installation rate-limit quota. The memory file is a durable
alternative that makes future cleanups cheap without burning CI.

## CronList

- Live (`9ac08520`, `* * * * *`).

## Visibility signal

Session arc (15 PRs landed + 4 in flight):

| PR | What | Status |
|---|---|---|
| 15 substrate-hygiene PRs through #3057 + #3061 + #3062 | — | MERGED |
| #3052 | Competing collision fix | CLOSED |
| #3056 | Audit tool + B-0451 (branch-updated) | wait-ci |
| #3058 | B-0090.x batch (branch-updated) | wait-ci |
| #3065 | B-0370-0373 P2 renumber (branch-updated) | wait-ci |
| #3066 | B-0451 procedure memory (this tick) | wait-ci |

Real-dependency-wait. Loop continues.
76 changes: 76 additions & 0 deletions docs/hygiene-history/ticks/2026/05/14/0054Z.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
---
tick: 2026-05-14T00:54Z
agent: otto-cli
session: cron-resumption
pr: 3066
---

# Tick 0054Z — PR #3066 Copilot review caught 4 real issues

## Refresh

- CronList: live (`9ac08520`, `* * * * *`, sentinel `<<autonomous-loop>>`).
- Main: unchanged from previous tick.
- Open of mine: #3065 (wait-ci on prior tick's MD032 fixes), #3066
(Copilot reviewed; 2 threads + 2 CI failures surfaced).

## Named-dependency action

PR #3066 surfaced 4 issues — addressable directly this tick (not
Holding). 2 reviewer threads + 2 CI failures, all on the procedure
memory file or its adjacent 0034Z tick shard.

## The 4 issues

| # | Type | Where | Issue |
|---|---|---|---|
| 1 | CI | check-memory-frontmatter-completeness | Memory file missing required `created:` field (workflow checks name/description/type/created) |
| 2 | CI | lint (markdownlint) | `0034Z.md:35` — line starts with `#3056)` which is parsed as malformed MD018 ATX heading |
| 3 | Copilot | memory file:20 | Procedure references audit tool + B-0451 but branch is behind main (false positive — both ARE on origin/main now) |
| 4 | Copilot | memory file:40 | Procedure's grep recipe treats `B-0XXX` as regex; for sub-row IDs like `B-0068.1` the dot matches any char. Also `\b` is GNU-grep, not portable to macOS BSD grep |

## Landed concretely

| Artifact | Where | What |
|---|---|---|
| Memory file frontmatter | PR #3066 `21dc986` | Added `created: 2026-05-14` (4th required field) |
| `0034Z.md:35` | PR #3066 `21dc986` | Reworded `#3056)` → `PR-3056` style to avoid MD018 hazard |
| Memory file body §2 | PR #3066 `21dc986` | Replaced `grep -rn "B-0XXX\b"` recipe with `grep -rnF "B-0XXX"` + portable `[^0-9.]|$` word-boundary filter; documented dotted sub-row case separately |
| Both Copilot threads | PR #3066 GraphQL | Resolved via `resolveReviewThread` mutation |

## Substrate-honest observation

The grep-recipe bug is meta-substrate: the procedure memo whose
purpose is to formalize the cleanup discipline ITSELF contained a
non-portable grep pattern that would mislead future agents. Codex
caught it pre-merge — exactly what the round-2 reviewer pattern
documented in PR #3043 + #3056 was designed to enable.

Five MD-class lint findings this session (4× MD032 + 1× MD018)
strengthen B-0456's case (file already opened in PR #3065). The
mechanization will catch BOTH classes.

## Branch-update race

Tried `gh api -X PUT pulls/3066/update-branch` after the commit
push. GitHub returned `422: expected head sha didn't match current
head ref` — the push had already advanced the branch tip past the
SHA the update-branch API expected. Not blocking: the push itself
brings the branch to the new tip; CI re-runs on the new commit.

## CronList

- Live (`9ac08520`, `* * * * *`).

## Visibility signal

Session arc (18 PRs merged + 2 in flight):

| PR | What | Status |
|---|---|---|
| 18 substrate-hygiene PRs | — | MERGED |
| #3052 | Competing collision fix | CLOSED |
| #3065 | B-0370-0373 P2 renumber + 2 MD032 + B-0456 row | wait-ci |
| #3066 | B-0451 procedure (4-issue fix: frontmatter + MD018 + grep recipe + 2 threads) | wait-ci |

Real-dependency-wait. Loop continues.
Loading
Loading