Skip to content
Merged
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
72 changes: 72 additions & 0 deletions docs/hygiene-history/ticks/2026/05/14/1846Z.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# Tick 2026-05-14T18:46Z — CI infra-flake observed + razor-cadence batch 5 (22/22 LIVE + 3 correctly-cleared)

## Refresh (step 1)

`bun tools/github/poll-pr-gate-batch.ts --all-open`: 5 open PRs.

**Three PRs (#3179 mine, #3174 Aaron, #3167 someone's) all hit `fix-failed-checks`** — same root cause: GitHub API 403 Forbidden during `mise` setup (rate limit), failing tool installs (`uv`, `shellcheck`, `actionlint`, `semgrep`). Affects all lint jobs uniformly because they share the same setup step.

Pulled job 76052923604 log:
```
mise WARN GitHub API returned a 403 Forbidden error. ...
mise ERROR Failed to install tools: aqua:astral-sh/uv@0.11.8, aqua:koalaman/shellcheck@0.11.0, ...
```

Transient CI infra issue, not content. Rerun blocked while the workflow is still `in_progress`. Will resolve on next CI cycle.

## Holding discipline (step 2)

Named work: my #3179 wait-on-CI-cycle for rerun. Aaron's #3174 and #3167 have autoMerge armed → they'll merge once their CI cycles clear. Per never-be-idle: parallel work = razor-cadence batch 5.

## Speculative work (step 3) — razor-cadence batch 5

Next 4 rules from earlier in the rule-cluster (pre-2026-05-12 substrate):

| Rule | Cross-refs |
|------|------------|
| `rule-0-no-sh-files.md` | 2 outside-allowed-scope .sh files (`.gemini/service/*.sh` — rule flags as open question) + 3 legacy-cleared .sh stubs + 1 memory + 1 glob |
| `lost-files-surface.md` | 1 hygiene doc + 1 research + 1 glob (7 rule_number files) |
| `dsl-form-replacement.md` | 1 research + 1 memory + 3 globs + 5 backlog rows |
| `all-complexity-is-accidental-in-greenfield.md` | 1 memory |

### Audit findings

| Category | Count | Status |
|----------|-------|--------|
| Concrete file refs | 6 | 6/6 LIVE |
| Glob patterns | 9 | 9/9 resolve to ≥1 file |
| Gemini service .sh (outside allowed scope) | 2 | 2/2 LIVE (rule correctly flags as open question) |
| Legacy audit .sh (rule says "cleared") | 3 | 3/3 correctly retired (cleared ≠ stale-pointer) |
| Backlog rows | 5 | 5/5 LIVE |

**22/22 testable refs LIVE + 3 correctly-cleared.**

### Glob-pattern lesson

Initial test reported 0 matches for `memory/feedback_rule_number_{one,two,three,four,five,six,seven}_*aaron_2026_05_05.md` — false alarm from shell-quoting. Brace expansion doesn't activate inside `ls $pat` in zsh; resolved by per-word iteration. The actual files all exist. Future audits should use per-pattern iteration, not raw `ls $glob`.

## Verify (step 4)

`test -e <path>` for concrete refs; per-pattern `ls <glob-pattern> 2>/dev/null | wc -l` for globs (e.g., `ls memory/feedback_rule_number_one_*aaron_2026_05_05.md 2>/dev/null | wc -l`); existence-via-MISS confirmation for the "correctly retired" files.

## Shard (step 5)

This file.

## CronList (step 6)

Sentinel `f970cb2d` armed.

## Visibility (step 7)

- **CI infra-flake observed**: mise rate-limit affecting multiple in-flight PRs; transient
- **Cumulative razor-cadence item 4**: 20/50 rules audited (40%); **134/135 testable LIVE (99.3%)** — sole MISS remains B-0514's missing wwjd-grey-honest file (denominator updated: `.claude/rules/` actually has 50 files, not 47 — the count grew with rules added since the audit began)
- **Batches summary**: B1 30/30 ✓ | B2 37/37 ✓ | B3 17/18 (1 captured by B-0514) | B4 28/28 ✓ (corrected from 29 in PR #3184) | B5 22/22 ✓ + 3 correctly-cleared

## Notes for future-Otto

**Glob-pattern reference cluster pattern**: rules like `lost-files-surface.md` and `dsl-form-replacement.md` use brace-expansion globs (e.g., `feedback_rule_number_{one..seven}_*aaron_*.md`) to reference an entire cluster of related memory files with one ref. This is **substrate-honest density** — one cross-reference covers 7 files, the cluster's coherence is the load-bearing signal.

**Legacy-cleared references are a feature, not a miss**: when a rule mentions previously-removed files (e.g., the retired `audit-*.sh` stubs that Rule 0 cleared on 2026-05-13), the references serve as historical anchors. Audit logic must distinguish "cleared-and-noted" from "stale-pointer" — both surface as `test -e` failure but only one is a real finding.

**CI infrastructure as a co-dependency**: `mise` rate-limit on GitHub API affects ALL lint jobs simultaneously. Mitigation candidate: cache mise tool installations (composes with the existing CI cache strategy). Not filed this tick.
Loading