Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
20 changes: 20 additions & 0 deletions .claude/rules/blocked-green-ci-investigate-threads.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,26 @@ Resolve these no-op (the prose was correct at write-time;
substrate edits would be retroactive rewriting). Stale ≠
false; it just means the action window closed.

### Stale-armed-PR resolution patterns

Empirical anchor 2026-05-16T13:10Z-16:33Z (one session, 5 stale-armed PR investigations):

A stale-armed PR is one with auto-merge armed for hours/days where checks fail or merge conflicts persist. Investigation per this rule typically classifies it into one of three resolution patterns:

| Pattern | Apply when | Empirical instance |
|---|---|---|
| **Close as redundant** | The PR's substrate already exists on `main` via a different PR (byte-identical file paths, or content shipped via newer PR). Close with substrate-honest comment + cross-link to the merged equivalent. Preserves alternate-content version in branch history per [`lost-files-surface`](lost-files-surface.md) | [#3823](https://github.com/Lucent-Financial-Group/Zeta/pull/3823) — 07:58Z shard already on main via different PR; closed at 13:31Z |
| **Re-land via cherry-pick** | The PR's substrate is genuinely new but the branch is too stale to merge (CI fails on unrelated evolved files, merge conflicts on regenerated index files). Cherry-pick the substrate onto a fresh branch off current main, manually re-apply auto-generated files via the generator (e.g., `bun tools/backlog/generate-index.ts`), fix any lint issues that surface | [#3817 → #3894](https://github.com/Lucent-Financial-Group/Zeta/pull/3894) (B-0558 worktree-pool); [#3779 → #3904](https://github.com/Lucent-Financial-Group/Zeta/pull/3904) (0630Z shard re-land) |
| **Forward-signal comment** | The PR is too large (e.g., 61 files in [#3545](https://github.com/Lucent-Financial-Group/Zeta/pull/3545)) or otherwise impractical to re-land in a single tick. Leave a comment naming the two viable resolution paths (rebase OR cherry-pick) AND flagging any newer PRs that may supersede the substrate. Forward signal for whoever picks it up next | [#3545](https://github.com/Lucent-Financial-Group/Zeta/pull/3545#issuecomment-4467314174) — DIRTY 19+ hr, 61-file conflict |

**Decision tree** (in order):

1. Does the substrate already exist on `main` via a different PR? → **Close as redundant**
2. Is the substrate small enough to re-land in 1-2 ticks? → **Re-land via cherry-pick**
3. Otherwise → **Forward-signal comment** (the PR sits until someone else has the budget)

Composes with [`refresh-world-model-poll-pr-gate.md`](refresh-world-model-poll-pr-gate.md) rate-limit tiers — re-land requires normal-tier GraphQL budget; forward-signal works at any tier.

## Full reasoning

`memory/feedback_otto_355_blocked_with_green_ci_means_investigate_review_threads_first_dont_wait_2026_04_27.md`
Expand Down
79 changes: 79 additions & 0 deletions docs/hygiene-history/ticks/2026/05/16/1634Z.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# Tick 2026-05-16T16:34Z — cascade complete; lint-failure-as-named-dep loop closed

## Refresh

- Cron `23b8588a` armed.
- Rate-limit: 1101 GraphQL remaining; 23 min reset. Cost-aware tier (1000-2000).
- `git fetch origin main` → main moved several merges since last tick.
- Peer WIP persistently in primary worktree (this tick: a QG/Cayley-Dickson
research item from another agent — substantial, fresh, NOT discarded).

## Cascade summary (1531Z → 1634Z, 1h 03m)

| PR | Subject | State on main |
|---|---|---|
| [#3897](https://github.com/Lucent-Financial-Group/Zeta/pull/3897) | B-0462 close-row (7th cycle) | ✅ `4443c09` |
| [#3898](https://github.com/Lucent-Financial-Group/Zeta/pull/3898) | 1535Z tick shard | ✅ `b5850f7` (with `fe49b8e` fix carried) |
| [#3900](https://github.com/Lucent-Financial-Group/Zeta/pull/3900) | 1547Z tick shard | ✅ MERGED **with broken paths** |
| [#3903](https://github.com/Lucent-Financial-Group/Zeta/pull/3903) | 1610Z + path-depth ref table | ✅ `943cc3d` |
| [#3906](https://github.com/Lucent-Financial-Group/Zeta/pull/3906) | fix-1547z-on-main | 🟡 OPEN, auto-merging cleanly (22 SUCCESS, 0 FAILURE, 2 pending) |

## Substrate-honest lessons from the cascade

1. **Auto-merge race**: PR #3900 squash-merged the original broken commit
`9986e5860f` BEFORE my fix-push `53bc359` registered. Fix-push to a
branch that already has auto-merge armed can lose to the original
commit.
2. **Lint check classification**: PR #3898's lint failure surfaced LATER
even though PR #3900 had merged with broken paths — the lint sees
broken paths from main as new errors when the next PR's branch is
compared against main's tree. Path errors propagate transitively
through the audit's all-shards scan.
3. **Path-depth reference table** (landed in 1610Z.md via PR #3903) is
the durable substrate fix — future tick-authoring across all 3 Otto
surfaces reads it at cold-boot.

## Persistent contamination class — `git switch` HEAD-shift between cron fires

Empirical: my HEAD has shifted to a different peer-Otto branch on FIVE
consecutive cron fires of this session:

- 1547Z fire: peer branch `otto-cli-b0457-close-2026-05-16-1542z`
- 1610Z fire: peer branch `otto-cli-3779-reland-2026-05-16-1617z`
- 1620Z fire: still on prior peer branch + peer WIP discarded
- 1634Z fire: peer branch `otto-cli-rule-stale-armed-resolution-2026-05-16-1635z`

`git branch --show-current` IS the primary catch (cheap, free, accurate)
per [`zeta-expected-branch.md`](../../../../../../.claude/rules/zeta-expected-branch.md).
The discipline ran cleanly all 5 times — no commits landed on peer branches.

## What landed this tick

- This tick shard documenting cascade completion + persistent contamination
class observation
- No mutating action beyond shard (PR #3906 auto-merging cleanly handles the
remaining 1547Z-on-main fix)

## Real-dependency-waits active

- [PR #3906](https://github.com/Lucent-Financial-Group/Zeta/pull/3906) —
auto-merge armed, 22/25 SUCCESS, 2 pending; ETA bounded by CI completion
(~3-5 min)
- This tick's PR (TBD) — auto-merge armed at open

## Cost summary

- ~8 GraphQL consumed (1× rate_limit-REST-free, 2× pr-view, 1× pr-create,
1× pr-merge)
- Budget remaining: ~1093 GraphQL; cost-aware tier holding

## Composes with

- [`docs/AUTONOMOUS-LOOP-PER-TICK.md`](../../../../../AUTONOMOUS-LOOP-PER-TICK.md)
- [`.claude/rules/zeta-expected-branch.md`](../../../../../../.claude/rules/zeta-expected-branch.md)
- [`.claude/rules/refresh-world-model-poll-pr-gate.md`](../../../../../../.claude/rules/refresh-world-model-poll-pr-gate.md)
(extreme-cost-aware tier discipline; deferred-PR pattern)
- [`.claude/rules/claim-acquire-before-worktree-work.md`](../../../../../../.claude/rules/claim-acquire-before-worktree-work.md)
(saturation-ceiling — auto-merge-race is sub-case 5)
- B-0519 (multi-Otto branch contamination RCA)
- PRs #3897 + #3898 + #3900 + #3903 + #3906 (the cascade)
Loading