Skip to content

hygiene(tick-history): 2026-05-03T10:51Z — deferred-5-CI-ref'd-sh investigation#1376

Merged
AceHack merged 1 commit intomainfrom
hygiene/tick-2026-05-03-1051Z-ci-bun-investigation
May 3, 2026
Merged

hygiene(tick-history): 2026-05-03T10:51Z — deferred-5-CI-ref'd-sh investigation#1376
AceHack merged 1 commit intomainfrom
hygiene/tick-2026-05-03-1051Z-ci-bun-investigation

Conversation

@AceHack
Copy link
Copy Markdown
Member

@AceHack AceHack commented May 3, 2026

Step 0a 12 min approaching threshold. Investigation: 3 workflows (gate.yml + memory-index-duplicate-lint + memory-reference-existence-lint) reference 5 deferred .sh files; none have setup-bun. Switching = add setup-bun step + verify CLI flag/exit-code parity + sequential rollout (low-risk → high). gate.yml is all-PR-gate; defer to dedicated bounded PRs after testing pattern on smaller workflows first.

Copilot AI review requested due to automatic review settings May 3, 2026 10:51
@AceHack AceHack enabled auto-merge (squash) May 3, 2026 10:51
@AceHack AceHack merged commit 76e7ded into main May 3, 2026
23 checks passed
@AceHack AceHack deleted the hygiene/tick-2026-05-03-1051Z-ci-bun-investigation branch May 3, 2026 10:53
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds a new tick-history shard documenting an investigation into the remaining CI workflows that still invoke deferred hygiene .sh scripts, and records why their .sh.ts migration is being deferred into smaller follow-up PRs. It fits the repository’s autonomous-loop hygiene trail by preserving a per-tick write record of operational investigation and rollout planning.

Changes:

  • Adds a new 2026-05-03 10:51Z tick-history shard under docs/hygiene-history/ticks/.
  • Records the three affected workflows and the five deferred shell-script references.
  • Documents a proposed low-risk-to-high-risk rollout order for future workflow migrations.

@@ -0,0 +1 @@
| 2026-05-03T10:51:00Z | opus-4-7 / autonomous-loop continuation | a2e2cc3a | **Deferred-5-CI-ref'd-sh investigation: 3 workflows lack setup-bun; flag-compatibility check needed before .ts swap.** Step 0a 12 min approaching threshold — looking for real work continuously per Aaron's tick-15 corrective. Investigation: deferred 5 .sh files (audit-memory-index-duplicates, audit-memory-references, check-archive-header-section33, check-no-conflict-markers, check-tick-history-order) all referenced from 3 CI workflows: gate.yml + memory-index-duplicate-lint.yml + memory-reference-existence-lint.yml. **None have setup-bun step**. Switching .sh → .ts requires (1) add `oven-sh/setup-bun@v2` step before the lint step, (2) verify .ts equivalent supports same CLI flags (e.g., audit-memory-index-duplicates.sh runs with `--enforce` flag — need to verify .ts has same), (3) verify exit code parity, (4) test in CI before removing .sh. **Risk-stratification**: gate.yml is most-load-bearing (3 of 5 .sh refs); a broken edit blocks all PRs. The two memory-*-lint.yml workflows are scoped (path filters: only memory/MEMORY.md changes). Recommended sequence: (a) memory-index-duplicate-lint.yml first (lowest risk; single-tool workflow), (b) memory-reference-existence-lint.yml next, (c) gate.yml last (after first two prove the pattern). Each is its own bounded PR. Per careful-action discipline, none of these are bounded enough for current tick + risk profile too high for end-of-session. **CADENCE-TRACK**: AutoDream still overdue (last 2026-04-23, ~10 days); cadence-rule prohibits same-session run. Defer next-session unchanged. Today's session has produced 50+ PRs; the .sh→.ts conversion is the natural extension that completes Aaron's "fully converted" directive but at workflow-level granularity, not file-level. | All recent PRs (#1366-1375) MERGED; deferred 5 .sh CI-cleanup awaits dedicated bounded PRs (3 workflows, sequential) | This tick teaches **risk-stratified deferral discipline**: when a directive's remaining scope crosses load-bearing boundaries (gate.yml is the all-PR gate), defer to dedicated bounded PRs with sequenced rollout (low-risk → medium → high). Not all "cleanup" is mechanical; some is substantive infrastructure change. Future-Otto: when filing a multi-file cleanup PR, explicitly stratify by reference-type (zero-ref → workflow-ref → load-bearing-workflow-ref) and execute each stratum as separate bounded PR. |
AceHack added a commit that referenced this pull request May 3, 2026
…st-risk first per #1376 risk-stratification) (#1377)

Per Aaron 2026-05-03 "fully converted" directive + B-0156 TS
standardization, deferred 5 .sh files in tools/hygiene/ all
referenced from CI workflows. #1376 stratified by risk:

- LOW: memory-index-duplicate-lint.yml (this PR — single-tool,
  scoped path filter)
- LOW: memory-reference-existence-lint.yml (next)
- HIGH: gate.yml (3 of 5 .sh refs; load-bearing all-PR gate; last)

This PR (lowest-risk first) tests the pattern:
1. Add `./tools/setup/install.sh` step (provides bun via mise per
   GOVERNANCE §24, same pattern as gate.yml)
2. Update path filters .sh → .ts
3. Replace `tools/hygiene/audit-memory-index-duplicates.sh
   --enforce` with `bun tools/hygiene/audit-memory-index-duplicates.ts
   --enforce`

Verified locally: both .sh and .ts produce identical output ("no
duplicate memory-index links in memory/MEMORY.md") and exit code
(0) for current MEMORY.md state.

If this PR's CI passes, apply same pattern to
memory-reference-existence-lint.yml next, then gate.yml. Each is
its own bounded PR per risk-stratified deferral discipline.

The .sh file is NOT removed in this PR — keep both .ts and .sh
during the transition; .sh removal happens AFTER all 3 workflows
are .ts-based AND verified.
AceHack added a commit that referenced this pull request May 3, 2026
…t tier per #1376) (#1380)

The gate.yml workflow ran three lint scripts as .sh:
  - tools/hygiene/check-tick-history-order.sh
  - tools/hygiene/check-no-conflict-markers.sh
  - tools/hygiene/check-archive-header-section33.sh

All three have a TS+Bun port in tools/hygiene/<name>.ts with full
output / exit-code parity verified locally (179 tick-history rows
non-decreasing; 0 conflict-marker violations; 0 §33 archive-header
violations).

Why this PR closes the .sh→.ts cleanup loop:
  - #1377 converted memory-index-duplicate-lint.yml (lowest-risk —
    only fires on memory/MEMORY.md changes)
  - #1378 converted memory-reference-existence-lint.yml (lowest-risk
    — only fires on memory/** changes)
  - This PR converts gate.yml's three lint jobs (highest-risk — fires
    on every PR via the all-PR gate critical path)
  - #1379 (rerere ALLOWLIST parity) was a prerequisite — the .ts port
    of check-no-conflict-markers had to ALLOWLIST the rerere memo to
    match the .sh version BEFORE running on every PR

After this lands and CI verifies green, the 5 deferred .sh files can
be removed (audit-memory-index-duplicates.sh, audit-memory-references
.sh, check-archive-header-section33.sh, check-no-conflict-markers.sh,
check-tick-history-order.sh) — completing the .sh cleanup the
maintainer asked for in #1371 ("we should clean up .sh and any .sh
where we have the .ts I thought we were fully converted").

Conversion pattern (identical for all three jobs):
  - Add "Install toolchain via three-way-parity script" step calling
    ./tools/setup/install.sh — same shape as #1377 + #1378
  - Change `run: tools/hygiene/<name>.sh` to
    `run: bun tools/hygiene/<name>.ts`

Three lint jobs run in parallel (one job each), so the bun install
cost is bounded by the slowest job's path — does not compound.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants