Skip to content
Closed
Show file tree
Hide file tree
Changes from 15 commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
b37353d
research: AutoDream extension + cadence policy (Anthropic Q1 2026 ove…
AceHack Apr 23, 2026
7ab0ab9
research: autodream-fire-history — first row-#53 fire ledger entry
AceHack Apr 23, 2026
e8b0d2d
auto-loop-47: tick-history row — AutoDream policy + multi-project fra…
AceHack Apr 23, 2026
96f612c
lint: markdownlint MD032 on fire-history — blank line before list
AceHack Apr 23, 2026
4b479a4
fire-history: log Overlay A first execution (opportunistic-on-touch)
AceHack Apr 23, 2026
a09886e
auto-loop-51: tick-history — fire-history row for Overlay A first exe…
AceHack Apr 23, 2026
b1ce29e
auto-loop-52: fire-history + tick-history — second Overlay A migratio…
AceHack Apr 23, 2026
ec1787b
auto-loop-53: tick-history — Amara courier-protocol (PR #160) + Overl…
AceHack Apr 23, 2026
34dc24f
auto-loop-54: tick-history — Amara deep-research absorb + funding-pri…
AceHack Apr 23, 2026
a388857
auto-loop-55: tick-history — scheduling-authority sharpening + PR #14…
AceHack Apr 23, 2026
c209005
auto-loop-56: tick-history — demo-cluster CI triage, bounded scope-back
AceHack Apr 23, 2026
322e533
auto-loop-57: tick-history — Overlay A migration #4 (PR #162)
AceHack Apr 23, 2026
ab931f0
auto-loop-58: tick-history — fresh-session quality BACKLOG (PR #163) …
AceHack Apr 23, 2026
8a05738
auto-loop-59: tick-history — Overlay A queue closed at #5 (PR #164)
AceHack Apr 23, 2026
5a9eec1
backlog: P1 row — factory technology inventory + OpenAI web UI addition
AceHack Apr 23, 2026
5538537
Merge remote-tracking branch 'origin/main' into backlog/factory-techn…
AceHack Apr 23, 2026
d1c30e6
tick-history: Otto-1 — loop agent named, Cowork fact-check, NSA direc…
AceHack Apr 23, 2026
6bea1bd
backlog + tick-history: Otto-2 — Frontier readiness P0 row + GitHub-s…
AceHack Apr 23, 2026
e7d90cd
tick-history: Otto-3 — NSA test history bootstrap (Frontier readiness…
AceHack Apr 23, 2026
0d9179c
backlog + tick-history: Otto-4 — gap #8 closed + 4 directive absorpti…
AceHack Apr 23, 2026
2b9c522
tick-history: Otto-5 — MD012 fix on PR #165 + universal-welcome clari…
AceHack Apr 23, 2026
9bc26af
tick-history: Otto-6 — first cadenced NSA test (NSA-002 PASS); PR #17…
AceHack Apr 23, 2026
464b4a5
tick-history: Otto-7 — gap #5 seeded (factory-vs-Zeta separation audit)
AceHack Apr 23, 2026
c7093c3
Merge remote-tracking branch 'origin/main' into backlog/factory-techn…
AceHack Apr 23, 2026
f850d0e
tick-history: Otto-8 — PR #165 merge-forward to main (rebase aborted;…
AceHack Apr 23, 2026
f0217ea
tick-history: Otto-9 — gap #5 audit AGENTS.md (both-coupled; PR #180)
AceHack Apr 23, 2026
9b7f814
tick-history: Otto-10 — gap #5 audit GOVERNANCE.md (factory-generic)
AceHack Apr 23, 2026
de61e68
tick-history: Otto-11 — NSA-003 cadenced test PASS (Otto findable, PM…
AceHack Apr 23, 2026
224623a
tick-history: Otto-12 — gap #5 audit CONFLICT-RESOLUTION.md (both-cou…
AceHack Apr 23, 2026
eabfa10
tick-history: Otto-13 — gap #5 audit AGENT-BEST-PRACTICES.md (factory…
AceHack Apr 23, 2026
30ad9aa
tick-history: Otto-14 — gap #5 audit ALIGNMENT.md (factory-generic); …
AceHack Apr 23, 2026
472152b
tick-history: Otto-15 — gap #5 two-file batch (AUTONOMOUS-LOOP + WONT…
AceHack Apr 23, 2026
2de7b5f
tick-history: Otto-16 — NSA-004 + gap #5 batch + samples audience dir…
AceHack Apr 23, 2026
b6ec3f5
tick-history: Otto-17 — Schoolhouse learning-repo proposal + samples …
AceHack Apr 23, 2026
978a785
tick-history: Otto-18 — gap #5 5-file planning-docs batch (15 of ~16 …
AceHack Apr 23, 2026
f875deb
tick-history: Otto-19 — gap #5 3-directory batch (agents + openspec +…
AceHack Apr 23, 2026
c689aa4
tick-history + backlog: Otto-20 — gap #5 SUBSTANTIALLY COMPLETE (20 a…
AceHack Apr 23, 2026
e008ac0
tick-history + backlog: Otto-21 — NSA-005 PASS + gap #6 closed on re-…
AceHack Apr 23, 2026
a48a87a
tick-history: Otto-22 — Schoolhouse → Craft renamed + tool-use pedago…
AceHack Apr 23, 2026
137351d
backlog: gap #7 closed on re-inspection (tick-history scope-mix — sam…
AceHack Apr 23, 2026
e3018c3
tick-history: Otto-23 — gap #7 closed + gap #2 SKELETON + code-abstra…
AceHack Apr 23, 2026
375768a
tick-history: Otto-24 — monumental tick (4 directives + gap #4 skelet…
AceHack Apr 23, 2026
ef221fb
tick-history: Otto-25/26 — submit-nuget diagnosis + Amara memory-acce…
AceHack Apr 23, 2026
aa3cf33
tick-history: Otto-27 — CURRENT files migrated + scrubber + nuget rer…
AceHack Apr 23, 2026
718253c
tick-history: Otto-28 — Phase 1 closure acceleration (4 Amara PRs upd…
AceHack Apr 23, 2026
f81c97b
tick-history: Otto-29 — #198 merged; #149 threads resolved; thread-sw…
AceHack Apr 23, 2026
54fb96d
tick-history: Otto-30 — batch-resolve tool built + applied; 13 thread…
AceHack Apr 23, 2026
c101f50
tick-history: Otto-31 — honest reframe; tool plateau; 135-thread back…
AceHack Apr 23, 2026
56742b7
tick-history: Otto-32 — #170 content fixes (13 of 15 P1 findings addr…
AceHack Apr 23, 2026
1146b00
tick-history: Otto-33 — #199 shellcheck fixed; Phase 1 PR state diagn…
AceHack Apr 23, 2026
589b749
tick-history: Otto-34 — Craft first module + Amara-length calibration…
AceHack Apr 23, 2026
d29474d
tick-history: Otto-35 — #200 MD032 fixed; #196 fully unblocked; #199 …
AceHack Apr 23, 2026
6d42913
tick-history: Otto-36 — #196 MERGED + tool hardened (9 Copilot findin…
AceHack Apr 23, 2026
c0674f9
tick-history: Otto-37 — hardened tool drained 4 threads; #154 at 0 un…
AceHack Apr 23, 2026
00ac0ce
tick-history: Otto-38 — #154 MERGED; #200 MD032 regression fixed; 46 …
AceHack Apr 23, 2026
340f475
tick-history: Otto-39 — Craft module 2 landed (retraction-intuition; …
AceHack Apr 23, 2026
de35d5c
tick-history: Otto-40 — linguistic-seed first term landed (truth; Tar…
AceHack Apr 23, 2026
1968ef3
tick-history: Otto-41 — Craft module #3 (operator-composition; LEGO-b…
AceHack Apr 23, 2026
1c4522a
tick-history: Otto-42 — MD032 '+'-at-line-start preflight audit (FACT…
AceHack Apr 23, 2026
48e884e
backlog + tick-history: Otto-43 — Zora-UX directive absorbed + MD038/…
AceHack Apr 23, 2026
9632c25
tick-history: Otto-44 — Zora-UX research doc v0 landed (Otto-43 direc…
AceHack Apr 23, 2026
79c6d6b
tick-history: Otto-45 — 9 threads drained mechanically across 5 PRs; …
AceHack Apr 23, 2026
09e1808
tick-history: Otto-46 — Craft module #4 (semiring-basics) + Aaron val…
AceHack Apr 23, 2026
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
47 changes: 47 additions & 0 deletions docs/BACKLOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3117,6 +3117,53 @@ within each priority tier.

## P1 — within 2-3 rounds

- [ ] **Factory technology inventory — first-class
support for every tech we use.**
Aaron 2026-04-23: *"don't forget to map out all our
technology so the factory has first class support for
Comment on lines +3331 to +3334

Copilot AI Apr 23, 2026

Copy link

Choose a reason for hiding this comment

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

The PR title/description focuses on adding the “factory technology inventory” backlog item, but this PR also adds a new AutoDream research policy doc and new hygiene-history surfaces (including a large loop-tick-history.md update). Consider either updating the PR title/description to reflect the broader scope, or splitting these unrelated doc additions into separate PRs to keep review/rollback bounded.

Copilot uses AI. Check for mistakes.
everything ... i think i saw you ad docker and postgres
and now we may be adding the openai website/ui i think
Comment on lines +3331 to +3336

Copilot AI Apr 23, 2026

Copy link

Choose a reason for hiding this comment

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

PR description frames this as a BACKLOG capture for a future docs/FACTORY-TECHNOLOGY-INVENTORY.md deliverable, but this PR also introduces several other doc surfaces (e.g., AutoDream research + hygiene history updates) and does not add the inventory doc itself. Consider either (a) narrowing the PR to the described scope, or (b) updating the PR title/description to reflect the additional changes and clarify that the inventory doc is intentionally deferred.

Copilot uses AI. Check for mistakes.
we already have codex cli mapped"*.
Comment on lines +3331 to +3337

Copilot AI Apr 23, 2026

Copy link

Choose a reason for hiding this comment

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

P1: The PR description/title focus on the “Factory technology inventory” BACKLOG row, but this PR also adds substantial AutoDream-related research and hygiene-history artifacts (e.g., the AutoDream cadence/overlay research doc and fire-history entries). Please either update the PR description/title to reflect these additional changes or split the AutoDream work into a separate PR to keep scope coherent for reviewers.

Copilot uses AI. Check for mistakes.

**Observed gap:** the factory uses many technologies
(Docker, Postgres, F#, .NET 10, TypeScript, bun,
Claude Code, Codex CLI, Gemini CLI, OpenAI web UI,
Playwright, Apache Arrow, Lean 4, Z3, TLA+, FsCheck,
Alloy, Semgrep, CodeQL, BenchmarkDotNet, GitHub
Actions, NuGet, and more) but no single doc
inventories them with install path, version pin,
authoritative doc URL, expert-skill cross-reference,
and TECH-RADAR ring. `docs/HARNESS-SURFACES.md`
covers agent harnesses; `docs/TECH-RADAR.md` covers
ring adoption; per-tech expert skills cover usage
depth. The missing surface is an inventory that ties
all three together per-tech.

**Deliverable:** `docs/FACTORY-TECHNOLOGY-INVENTORY.md`
(name TBD) with columns: Technology / Role / Install
path / Version pin / Auth-doc URL / Expert skill /
TECH-RADAR ring / Notes.

Comment on lines +3331 to +3357

Copilot AI Apr 23, 2026

Copy link

Choose a reason for hiding this comment

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

PR scope mismatch: this change (and other files in the PR) introduces substantial AutoDream/loop-hygiene policy and history content, but the PR title/description is framed as a P1 backlog entry about a technology inventory + OpenAI web UI. Consider splitting the AutoDream/loop-hygiene additions into a separate PR, or update the PR title/description so it accurately reflects the included changes.

Copilot uses AI. Check for mistakes.
Comment on lines +3331 to +3357

Copilot AI Apr 23, 2026

Copy link

Choose a reason for hiding this comment

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

The PR description focuses on adding a BACKLOG row for the technology inventory, but this PR also adds a large new research doc and substantial hygiene-history log updates. Either update the PR description to reflect the full scope or split the unrelated changes into separate PRs to keep review and rollback risk manageable.

Copilot uses AI. Check for mistakes.
**Growth cadence:** living inventory updated with
each new tech adoption. Should surface cross-platform
parity status (row #48) per tech.

Copilot AI Apr 23, 2026

Copy link

Choose a reason for hiding this comment

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

P1: BACKLOG references cross-platform parity as “row #48”, but in docs/FACTORY-HYGIENE.md row #48 is GitHub surface triage; cross-platform parity audit is row #51. Update the row number so the cross-reference is correct.

Suggested change
parity status (row #48) per tech.
parity status (row #51) per tech.

Copilot uses AI. Check for mistakes.

Copilot AI Apr 23, 2026

Copy link

Choose a reason for hiding this comment

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

This item says the technology inventory should surface cross-platform parity status “(row #48)”, but in docs/FACTORY-HYGIENE.md the cross-platform parity audit is row #51 (row #48 is GitHub surface triage cadence). Please update the referenced row number so it points to the correct hygiene entry.

Suggested change
parity status (row #48) per tech.
parity status (row #51) per tech.

Copilot uses AI. Check for mistakes.
Comment on lines +3359 to +3360

Copilot AI Apr 23, 2026

Copy link

Choose a reason for hiding this comment

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

Cross-reference looks incorrect: FACTORY-HYGIENE row #48 is “GitHub surface triage cadence”, not the cross-platform parity audit. If the intent is to reference the cross-platform parity status, update this to the correct row number (currently row #51) or cite the row by name/link instead of number to avoid drift.

Suggested change
each new tech adoption. Should surface cross-platform
parity status (row #48) per tech.
each new tech adoption. Should surface the
FACTORY-HYGIENE cross-platform parity status per tech.

Copilot uses AI. Check for mistakes.

Copilot AI Apr 23, 2026

Copy link

Choose a reason for hiding this comment

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

docs/FACTORY-HYGIENE.md’s cross-platform parity audit is row #51, not row #48 (row #48 is the GitHub surface triage cadence). Update this reference so the inventory row points at the correct hygiene row.

Suggested change
parity status (row #48) per tech.
parity status (row #51) per tech.

Copilot uses AI. Check for mistakes.

**OpenAI web UI as a new entry.** Aaron 2026-04-23
explicitly named adding OpenAI web UI + Playwright as
a new technology row. Includes any OpenAI mode/model
(deep research, agent mode, others) authorized within
Aaron's already-paid subscription, plus Playwright
caveats (long-conversation rendering, async loading,
UI-change-ongoing maintenance — per the per-user
memory at
`project_factory_technology_inventory_first_class_support_openai_playwright_hard_2026_04_23.md`).

Copilot AI Apr 23, 2026

Copy link

Choose a reason for hiding this comment

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

P1: This cites a “per-user memory” file by bare filename, but there’s no resolvable path in-repo. Consider using the explicit per-user location (~/.claude/projects/<slug>/memory/<file>.md) or an in-repo mirror so readers can actually find it.

Suggested change
`project_factory_technology_inventory_first_class_support_openai_playwright_hard_2026_04_23.md`).
`~/.claude/projects/<slug>/memory/project_factory_technology_inventory_first_class_support_openai_playwright_hard_2026_04_23.md`).

Copilot uses AI. Check for mistakes.
Comment on lines +3367 to +3370

Copilot AI Apr 23, 2026

Copy link

Choose a reason for hiding this comment

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

P1 (pointer integrity): This row points to a “per-user memory” file by bare filename, but that file isn’t present in-repo (and the path isn’t specified), so readers can’t follow it. Suggest either (a) capturing the essential Playwright/OpenAI UI caveats in an in-repo doc and linking that, or (b) formatting the reference with the explicit per-user location (~/.claude/projects/<slug>/memory/...) and keeping the BACKLOG row self-contained enough to stand without the private file.

Suggested change
caveats (long-conversation rendering, async loading,
UI-change-ongoing maintenance — per the per-user
memory at
`project_factory_technology_inventory_first_class_support_openai_playwright_hard_2026_04_23.md`).
caveats: long-conversation rendering can degrade,
async UI loading can make automation timing-sensitive,
and ongoing UI changes mean the integration needs
maintenance. Private supporting notes live at
`~/.claude/projects/<slug>/memory/project_factory_technology_inventory_first_class_support_openai_playwright_hard_2026_04_23.md`,
but this backlog row should stand without that file.

Copilot uses AI. Check for mistakes.

**Self-scheduled:** free work under the 2026-04-23
scheduling-authority rule.

**Effort:** M (inventory doc + per-tech row population;
living, not one-shot).
Comment on lines +3331 to +3376

Copilot AI Apr 23, 2026

Copy link

Choose a reason for hiding this comment

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

P2: The PR title/description focus on the factory technology-inventory BACKLOG row + OpenAI web UI, but this PR also introduces a full AutoDream cadence policy, a new FACTORY-HYGIENE row, and a new hygiene-history ledger. Consider updating the PR title/description to reflect the full scope, or splitting into separate PRs (inventory vs AutoDream hygiene) for easier review/traceability.

Copilot uses AI. Check for mistakes.

- [ ] **Claude-harness cadenced audit — first full sweep.**
Aaron 2026-04-20 late, verbatim: *"part of our stay up to
date on everything we should always research claude and
Expand Down
1 change: 1 addition & 0 deletions docs/FACTORY-HYGIENE.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ is never destructive; retiring one requires an ADR in
| 49 | Post-setup script stack audit (bun+TS default; bash only under exempt paths or with exception label) | Author-time (every new `tools/**/*.{sh,ps1}` decision-flow walk per `docs/POST-SETUP-SCRIPT-STACK.md`) + cadenced detection every 5-10 rounds (same cadence as skill-tune-up / row #38 / harness-surface audit) + opportunistic on-touch (every time an agent adds or edits a script under `tools/`). | Author of the script (self-check at author-time against the decision-flow doc); Dejan (devops-engineer) on the cadenced detection sweep; Kenji (Architect) on migration-order decisions when multiple violations stack up. | both | **Author-time prevention:** walk the three-question flow in `docs/POST-SETUP-SCRIPT-STACK.md` before writing any new `tools/**/*.{sh,ps1}` — (Q1) pre-setup? → `tools/setup/` bash+PowerShell exempt; (Q2) skill-bundled? → skill-compatibility rules govern, not this row; (Q3) default bun+TypeScript unless an explicit exception (trivial pipeline / thin CLI wrapper / bash scaffolding / sibling-migration guardrail) applies, in which case the script MUST carry a header comment naming the exception. **Cadenced detection:** `tools/hygiene/audit-post-setup-script-stack.sh` lists every shell/PowerShell script under `tools/` and classifies each as `exempt` / `labelled-exception` / `violation`. Exit-2 on any new violation; CI / pre-commit-eligible. **Why both layers:** prevention catches new violations at author-time (cheap); detection catches drift — labels getting stripped on edits, exceptions becoming stale, scripts moving out of exempt paths. Ships to project-under-construction: adopters inherit the canonical-stack rule + the audit script + the decision-flow doc. Aaron 2026-04-22 triggering-directive-chain: *"if post setup backlog bun/ts"* → *"now add someting that will try to prevent that and and hygene it if it happens again"*. | Author-time: commit-message rationale for any new `.sh` under `tools/` outside `tools/setup/`, OR exception-label header in the script, OR BACKLOG row queuing bun+TS migration. Cadenced: audit script output (markdown), appended to `docs/hygiene-history/post-setup-script-stack-history.md` (per-fire schema per row #44); BACKLOG row per unlabeled violation. | `docs/POST-SETUP-SCRIPT-STACK.md` (prevention surface) + `tools/hygiene/audit-post-setup-script-stack.sh` (detection surface) + `memory/project_ui_canonical_reference_bun_ts_backend_cutting_edge_asymmetry` + `memory/project_bun_ts_post_setup_low_confidence_watchlist` |
| 50 | Missing-prevention-layer meta-audit (every hygiene row carries a prevention classification: prevention-bearing / detection-only-justified / detection-only-gap) | Round cadence (same as rows #22 / #23 / #35 / #36) + opportunistic on-touch (every time a new row is added to `docs/FACTORY-HYGIENE.md` the author classifies it at landing). Not exhaustive; the round-close sweep catches un-classified rows and gap rows. | Architect (Kenji) on round-cadence classification review + gap-closure ROI assessment. All agents (self-administered) on on-touch: every new hygiene row MUST declare its prevention classification at landing; an unclassified row is itself a violation of this row. | factory | Sweep every row in `docs/FACTORY-HYGIENE.md` and classify each as one of: (a) **prevention-bearing** — an author-time / commit-time / trigger-time mechanism (hook, CI check, decision-flow doc, pre-commit lint, skill-gate) blocks or warns the violation BEFORE it materialises; (b) **detection-only-justified** — the class is fundamentally post-hoc (e.g., cadence-history row #44 — a fire-log can only exist AFTER the fire happens; wake-friction row #29 — friction is only observable at wake-time); (c) **detection-only-gap** — no principled reason the row is detection-only; a prevention layer COULD and SHOULD be built. Classification lives in `docs/hygiene-history/prevention-layer-classification.md` (one table row per hygiene row). **Why this row exists:** Aaron 2026-04-22 *"add a hygene for missing prevention layers"* — the factory had been quietly accumulating detection-only rows without asking the complementary question "could we have prevented this at author-time?". Without this meta-audit, the factory's reactive-cost grows silently. Parallels the existing meta-hygiene triangle (row #23 unknown-classes / #43 authored-but-unactivated / #44 cadence-history) by adding a fourth: row #47 is *"of the rows that ARE active and firing, which could have been prevented upstream"*. **Classification:** this is an **intentionality-enforcement** hygiene rule (Aaron 2026-04-22 tick-close: *"we are enforcing intentional decsions"*) — the audit cannot compute whether a row's classification is correct, but it forces every new hygiene row to carry an explicit prevention-vs-detection decision at landing. Declining to classify is itself the violation. See `memory/feedback_enforcing_intentional_decisions_not_correctness.md`. Ships to project-under-construction: adopters inherit the classification discipline + the meta-audit script + the obligation to classify any new hygiene row at landing. | `docs/hygiene-history/prevention-layer-classification.md` (classification matrix, one row per hygiene row) + cadenced audit run landed as `docs/hygiene-history/missing-prevention-layer-audit-YYYY-MM-DD.md` noting gap rows; ROUND-HISTORY row when a gap row gains a prevention layer (detection-only-gap → prevention-bearing transition); BACKLOG row per gap with prevention-design ROI estimate. | `tools/hygiene/audit-missing-prevention-layers.sh` + this row's self-reference (its own prevention layer is the at-landing-classify obligation declared in this Checks/enforces column) |
| 51 | Cross-platform parity audit (bash / PowerShell / bun+TS twin check across macOS / Windows / Linux / WSL) | Detect-only now (landed 2026-04-22); cadenced detection every 5-10 rounds (same cadence as row #46); opportunistic on-touch every time an agent adds or edits a script under `tools/`. Enforcement deferred until baseline is green AND CI matrix runs `--enforce` on `macos-latest` / `windows-latest` / `ubuntu-latest` (WSL inherits ubuntu-latest for CI). | Dejan (devops-engineer) on cadenced detection; author of the script (self-check at author-time against the rule classes in the audit's decision-record header block). Kenji (Architect) on CI-matrix-enforcement sign-off when baseline is green. | both | `tools/hygiene/audit-cross-platform-parity.sh` classifies every script under `tools/` by rule class: (a) **pre-setup** (`tools/setup/**`) — both `.sh` AND `.ps1` required per Q1 dual-authoring rule (`memory/feedback_preinstall_scripts_forced_shell_meet_developer_where_they_live`); (b) **post-setup permanent-bash** (`thin wrapper over existing CLI` / `trivial find-xargs pipeline` / `stay bash forever`) — `.ps1` twin required per the Windows-twin obligation (`memory/feedback_stay_bash_forever_implies_powershell_twin_obligation.md`); (c) **post-setup transitional** (`bun+TS migration candidate` / `bash scaffolding`) — no twin obligation (long-term plan is one cross-platform bun+TS script); (d) **post-setup bun+TS** (`*.ts` under `tools/`) — no twin needed (cross-platform native via bun). `--summary` prints counts; `--enforce` flips exit 2 on gaps. **Why detect-only first:** baseline at first fire (2026-04-22) was 13 gaps — 12 pre-setup bash without `.ps1` twin (Q1 violation silently accumulating since `tools/setup/` existed) + 1 post-setup permanent-bash (`tools/profile.sh`) without `.ps1` twin. Turning enforcement on before triage would block every CI run. **Why this row exists:** Aaron 2026-04-22 *"missing mac/windows/linux/wsl parity (ubuntu latest) we can deffer but should have the hygene in place for when we want to enforce and it will be more obvious to you in the future that we are cross platform."* Cross-platform-first must be a *visible* factory property (audit exists, runs, prints the gap) before it becomes an enforced gate. Same pattern as FACTORY-HYGIENE rows #23 / #43 / #47. See `memory/feedback_cross_platform_parity_hygiene_deferred_enforcement.md`. **Classification (row #47):** **prevention-bearing** — the audit runs at author-time (opportunistic on-touch) and surfaces the gap before it lands, same as row #46. The audit itself is a detect-only mechanism but detect-only surfaces the obligation at author-time when the author runs it. Ships to project-under-construction: adopters inherit the parity audit + the decision-record-block pattern + the CI-matrix obligation once it's wired. | Audit output in repo root on each fire; cadenced runs appended to `docs/hygiene-history/cross-platform-parity-history.md` (per-fire schema per row #44); BACKLOG row per gap at triage time; ROUND-HISTORY row when a gap resolves. | `tools/hygiene/audit-cross-platform-parity.sh` (detection + decision-record header block) + `memory/feedback_cross_platform_parity_hygiene_deferred_enforcement.md` + `memory/feedback_stay_bash_forever_implies_powershell_twin_obligation.md` + `memory/feedback_preinstall_scripts_forced_shell_meet_developer_where_they_live` + `docs/POST-SETUP-SCRIPT-STACK.md` |
| 53 | AutoDream cadenced consolidation (upstream Anthropic Q1 2026 + factory overlays A/B/C/D) | Anthropic's cadence verbatim: **≥24h AND ≥5 sessions** since last cycle. Gate marker lives at the top of `MEMORY.md` as `[AutoDream last run: YYYY-MM-DD]`. Session wake checks the gate silently; manual invocation ("dream" / "consolidate memory") may override with a maintainer confirmation. When Anthropic un-gates the backend (currently `tengu_onyx_plover`), the manual approximation retires and the automatic run takes over; factory overlays continue on top. | Architect (Kenji) on cadenced fires (dispatches an audit subagent; main agent applies only what the audit surfaces). Overlay D pulls the alignment-auditor role in on clause-touching consolidations. The autodream-hygiene skill (BACKLOG P1 follow-up) will wrap the four upstream phases + four factory overlays as a single invocable procedure once authored. | both | **Upstream four phases** (Orientation → Gather Signal → Consolidation → Prune & Index) run as Anthropic prescribes — factory does not replace them. **Factory overlays layered on top:** (A) cross-substrate mirror check before Orientation — scans per-user memory for generic factory-shaped rules that should live in-repo per the in-repo-preferred discipline (`memory/feedback_in_repo_preferred_over_per_user_memory_where_possible_2026_04_23.md`), migrates what qualifies with the signal-preservation rule; (B) harness-surface drift sync during Gather Signal — cross-checks `docs/HARNESS-SURFACES.md` adoption statuses for surfaces that have moved watched → adopted or cut since last cycle; (C) governance-promotion pass during Consolidation — ≥3 memories citing the same rule surfaces a BP-NN / ADR / GOVERNANCE promotion candidate for Kenji; (D) alignment-observability sync during Prune & Index — any memory edit that touched an `ALIGNMENT.md` clause (HC-1..HC-7 / SD-1..SD-8 / DIR-1..DIR-5) queues for the alignment-auditor time-series. **Invariants preserved:** Anthropic's four (load-bearing memories unconditionally / distinct-query-axes stay distinct / cross-references bidirectional / corrections recorded not deleted) plus factory additions (verbatim quotes stay verbatim / migration supersedes but does not delete per-user source / supersede markers over silent retirement). **Why this row exists:** Aaron 2026-04-23 *"continue our AutoDream reserach to make sure we are running it on a cadence and we plug in tightly with the existing claude Q1 2026 feature for AutoDream and AutoMemory, we should by defintion be an extension of theirs as it will get upgrades we want over time."* Ships to project-under-construction: adopters running Claude Code inherit AutoMemory / AutoDream from Anthropic; this row adds the factory's overlay policy (migration discipline, governance-promotion signal, alignment sync) that any adopter can opt into by following the research doc. **Classification (row #50):** **detection-only-justified** — consolidation is fundamentally post-hoc by Anthropic's own design (daytime logger is additive; the hygiene pass is the subtractive counterpart that cannot run before the log exists). The factory overlays inherit the same post-hoc shape. | `[AutoDream last run: YYYY-MM-DD]` marker update at top of `MEMORY.md` (upstream-schema); per-fire entry appended to `docs/hygiene-history/autodream-fire-history.md` (factory-schema, per row #44: date / agent / overlays fired / findings count / promotion candidates / next-fire-expected-date); ROUND-HISTORY row on the round the fire landed if overlay findings materially shifted something. | `docs/research/autodream-extension-and-cadence-2026-04-23.md` (this row's authoritative policy doc) + `memory/reference_autodream_feature.md` (upstream feature description) + `memory/reference_automemory_anthropic_feature.md` (upstream substrate) + `memory/feedback_in_repo_preferred_over_per_user_memory_where_possible_2026_04_23.md` (Overlay A migration discipline) + `memory/feedback_signal_in_signal_out_clean_or_better_dsp_discipline.md` (consolidation signal preservation) + `docs/HARNESS-SURFACES.md` (Overlay B's drift surface) + `docs/ALIGNMENT.md` (Overlay D's sync target) |

Copilot AI Apr 23, 2026

Copy link

Choose a reason for hiding this comment

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

P1: The “Durable output” schema described for row #53 (findings count / promotion candidates / next-fire-expected-date) doesn’t match the columns currently in docs/hygiene-history/autodream-fire-history.md (which has Gate/Overlays/Findings but no promotion-candidates or link field). Please align the row’s described schema with the actual ledger format so future fires are consistent.

Suggested change
| 53 | AutoDream cadenced consolidation (upstream Anthropic Q1 2026 + factory overlays A/B/C/D) | Anthropic's cadence verbatim: **≥24h AND ≥5 sessions** since last cycle. Gate marker lives at the top of `MEMORY.md` as `[AutoDream last run: YYYY-MM-DD]`. Session wake checks the gate silently; manual invocation ("dream" / "consolidate memory") may override with a maintainer confirmation. When Anthropic un-gates the backend (currently `tengu_onyx_plover`), the manual approximation retires and the automatic run takes over; factory overlays continue on top. | Architect (Kenji) on cadenced fires (dispatches an audit subagent; main agent applies only what the audit surfaces). Overlay D pulls the alignment-auditor role in on clause-touching consolidations. The autodream-hygiene skill (BACKLOG P1 follow-up) will wrap the four upstream phases + four factory overlays as a single invocable procedure once authored. | both | **Upstream four phases** (Orientation → Gather Signal → Consolidation → Prune & Index) run as Anthropic prescribes — factory does not replace them. **Factory overlays layered on top:** (A) cross-substrate mirror check before Orientation — scans per-user memory for generic factory-shaped rules that should live in-repo per the in-repo-preferred discipline (`memory/feedback_in_repo_preferred_over_per_user_memory_where_possible_2026_04_23.md`), migrates what qualifies with the signal-preservation rule; (B) harness-surface drift sync during Gather Signal — cross-checks `docs/HARNESS-SURFACES.md` adoption statuses for surfaces that have moved watched → adopted or cut since last cycle; (C) governance-promotion pass during Consolidation — ≥3 memories citing the same rule surfaces a BP-NN / ADR / GOVERNANCE promotion candidate for Kenji; (D) alignment-observability sync during Prune & Index — any memory edit that touched an `ALIGNMENT.md` clause (HC-1..HC-7 / SD-1..SD-8 / DIR-1..DIR-5) queues for the alignment-auditor time-series. **Invariants preserved:** Anthropic's four (load-bearing memories unconditionally / distinct-query-axes stay distinct / cross-references bidirectional / corrections recorded not deleted) plus factory additions (verbatim quotes stay verbatim / migration supersedes but does not delete per-user source / supersede markers over silent retirement). **Why this row exists:** Aaron 2026-04-23 *"continue our AutoDream reserach to make sure we are running it on a cadence and we plug in tightly with the existing claude Q1 2026 feature for AutoDream and AutoMemory, we should by defintion be an extension of theirs as it will get upgrades we want over time."* Ships to project-under-construction: adopters running Claude Code inherit AutoMemory / AutoDream from Anthropic; this row adds the factory's overlay policy (migration discipline, governance-promotion signal, alignment sync) that any adopter can opt into by following the research doc. **Classification (row #50):** **detection-only-justified** — consolidation is fundamentally post-hoc by Anthropic's own design (daytime logger is additive; the hygiene pass is the subtractive counterpart that cannot run before the log exists). The factory overlays inherit the same post-hoc shape. | `[AutoDream last run: YYYY-MM-DD]` marker update at top of `MEMORY.md` (upstream-schema); per-fire entry appended to `docs/hygiene-history/autodream-fire-history.md` (factory-schema, per row #44: date / agent / overlays fired / findings count / promotion candidates / next-fire-expected-date); ROUND-HISTORY row on the round the fire landed if overlay findings materially shifted something. | `docs/research/autodream-extension-and-cadence-2026-04-23.md` (this row's authoritative policy doc) + `memory/reference_autodream_feature.md` (upstream feature description) + `memory/reference_automemory_anthropic_feature.md` (upstream substrate) + `memory/feedback_in_repo_preferred_over_per_user_memory_where_possible_2026_04_23.md` (Overlay A migration discipline) + `memory/feedback_signal_in_signal_out_clean_or_better_dsp_discipline.md` (consolidation signal preservation) + `docs/HARNESS-SURFACES.md` (Overlay B's drift surface) + `docs/ALIGNMENT.md` (Overlay D's sync target) |
| 53 | AutoDream cadenced consolidation (upstream Anthropic Q1 2026 + factory overlays A/B/C/D) | Anthropic's cadence verbatim: **≥24h AND ≥5 sessions** since last cycle. Gate marker lives at the top of `MEMORY.md` as `[AutoDream last run: YYYY-MM-DD]`. Session wake checks the gate silently; manual invocation ("dream" / "consolidate memory") may override with a maintainer confirmation. When Anthropic un-gates the backend (currently `tengu_onyx_plover`), the manual approximation retires and the automatic run takes over; factory overlays continue on top. | Architect (Kenji) on cadenced fires (dispatches an audit subagent; main agent applies only what the audit surfaces). Overlay D pulls the alignment-auditor role in on clause-touching consolidations. The autodream-hygiene skill (BACKLOG P1 follow-up) will wrap the four upstream phases + four factory overlays as a single invocable procedure once authored. | both | **Upstream four phases** (Orientation → Gather Signal → Consolidation → Prune & Index) run as Anthropic prescribes — factory does not replace them. **Factory overlays layered on top:** (A) cross-substrate mirror check before Orientation — scans per-user memory for generic factory-shaped rules that should live in-repo per the in-repo-preferred discipline (`memory/feedback_in_repo_preferred_over_per_user_memory_where_possible_2026_04_23.md`), migrates what qualifies with the signal-preservation rule; (B) harness-surface drift sync during Gather Signal — cross-checks `docs/HARNESS-SURFACES.md` adoption statuses for surfaces that have moved watched → adopted or cut since last cycle; (C) governance-promotion pass during Consolidation — ≥3 memories citing the same rule surfaces a BP-NN / ADR / GOVERNANCE promotion candidate for Kenji; (D) alignment-observability sync during Prune & Index — any memory edit that touched an `ALIGNMENT.md` clause (HC-1..HC-7 / SD-1..SD-8 / DIR-1..DIR-5) queues for the alignment-auditor time-series. **Invariants preserved:** Anthropic's four (load-bearing memories unconditionally / distinct-query-axes stay distinct / cross-references bidirectional / corrections recorded not deleted) plus factory additions (verbatim quotes stay verbatim / migration supersedes but does not delete per-user source / supersede markers over silent retirement). **Why this row exists:** Aaron 2026-04-23 *"continue our AutoDream reserach to make sure we are running it on a cadence and we plug in tightly with the existing claude Q1 2026 feature for AutoDream and AutoMemory, we should by defintion be an extension of theirs as it will get upgrades we want over time."* Ships to project-under-construction: adopters running Claude Code inherit AutoMemory / AutoDream from Anthropic; this row adds the factory's overlay policy (migration discipline, governance-promotion signal, alignment sync) that any adopter can opt into by following the research doc. **Classification (row #50):** **detection-only-justified** — consolidation is fundamentally post-hoc by Anthropic's own design (daytime logger is additive; the hygiene pass is the subtractive counterpart that cannot run before the log exists). The factory overlays inherit the same post-hoc shape. | `[AutoDream last run: YYYY-MM-DD]` marker update at top of `MEMORY.md` (upstream-schema); per-fire entry appended to `docs/hygiene-history/autodream-fire-history.md` (factory-schema: Date / Agent / Gate / Overlays / Findings); ROUND-HISTORY row on the round the fire landed if overlay findings materially shifted something. | `docs/research/autodream-extension-and-cadence-2026-04-23.md` (this row's authoritative policy doc) + `memory/reference_autodream_feature.md` (upstream feature description) + `memory/reference_automemory_anthropic_feature.md` (upstream substrate) + `memory/feedback_in_repo_preferred_over_per_user_memory_where_possible_2026_04_23.md` (Overlay A migration discipline) + `memory/feedback_signal_in_signal_out_clean_or_better_dsp_discipline.md` (consolidation signal preservation) + `docs/HARNESS-SURFACES.md` (Overlay B's drift surface) + `docs/ALIGNMENT.md` (Overlay D's sync target) |

Copilot uses AI. Check for mistakes.

Copilot AI Apr 23, 2026

Copy link

Choose a reason for hiding this comment

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

P0: Row #53 cites memory/reference_autodream_feature.md, memory/reference_automemory_anthropic_feature.md, and other memory/*.md files that do not exist in the in-repo memory/ directory. Either add these reference memories in-repo, or change the citations to the explicit per-user paths under ~/.claude/projects/<slug>/memory/ (as autodream-fire-history.md does).

Suggested change
| 53 | AutoDream cadenced consolidation (upstream Anthropic Q1 2026 + factory overlays A/B/C/D) | Anthropic's cadence verbatim: **≥24h AND ≥5 sessions** since last cycle. Gate marker lives at the top of `MEMORY.md` as `[AutoDream last run: YYYY-MM-DD]`. Session wake checks the gate silently; manual invocation ("dream" / "consolidate memory") may override with a maintainer confirmation. When Anthropic un-gates the backend (currently `tengu_onyx_plover`), the manual approximation retires and the automatic run takes over; factory overlays continue on top. | Architect (Kenji) on cadenced fires (dispatches an audit subagent; main agent applies only what the audit surfaces). Overlay D pulls the alignment-auditor role in on clause-touching consolidations. The autodream-hygiene skill (BACKLOG P1 follow-up) will wrap the four upstream phases + four factory overlays as a single invocable procedure once authored. | both | **Upstream four phases** (Orientation → Gather Signal → Consolidation → Prune & Index) run as Anthropic prescribes — factory does not replace them. **Factory overlays layered on top:** (A) cross-substrate mirror check before Orientation — scans per-user memory for generic factory-shaped rules that should live in-repo per the in-repo-preferred discipline (`memory/feedback_in_repo_preferred_over_per_user_memory_where_possible_2026_04_23.md`), migrates what qualifies with the signal-preservation rule; (B) harness-surface drift sync during Gather Signal — cross-checks `docs/HARNESS-SURFACES.md` adoption statuses for surfaces that have moved watched → adopted or cut since last cycle; (C) governance-promotion pass during Consolidation — ≥3 memories citing the same rule surfaces a BP-NN / ADR / GOVERNANCE promotion candidate for Kenji; (D) alignment-observability sync during Prune & Index — any memory edit that touched an `ALIGNMENT.md` clause (HC-1..HC-7 / SD-1..SD-8 / DIR-1..DIR-5) queues for the alignment-auditor time-series. **Invariants preserved:** Anthropic's four (load-bearing memories unconditionally / distinct-query-axes stay distinct / cross-references bidirectional / corrections recorded not deleted) plus factory additions (verbatim quotes stay verbatim / migration supersedes but does not delete per-user source / supersede markers over silent retirement). **Why this row exists:** Aaron 2026-04-23 *"continue our AutoDream reserach to make sure we are running it on a cadence and we plug in tightly with the existing claude Q1 2026 feature for AutoDream and AutoMemory, we should by defintion be an extension of theirs as it will get upgrades we want over time."* Ships to project-under-construction: adopters running Claude Code inherit AutoMemory / AutoDream from Anthropic; this row adds the factory's overlay policy (migration discipline, governance-promotion signal, alignment sync) that any adopter can opt into by following the research doc. **Classification (row #50):** **detection-only-justified** — consolidation is fundamentally post-hoc by Anthropic's own design (daytime logger is additive; the hygiene pass is the subtractive counterpart that cannot run before the log exists). The factory overlays inherit the same post-hoc shape. | `[AutoDream last run: YYYY-MM-DD]` marker update at top of `MEMORY.md` (upstream-schema); per-fire entry appended to `docs/hygiene-history/autodream-fire-history.md` (factory-schema, per row #44: date / agent / overlays fired / findings count / promotion candidates / next-fire-expected-date); ROUND-HISTORY row on the round the fire landed if overlay findings materially shifted something. | `docs/research/autodream-extension-and-cadence-2026-04-23.md` (this row's authoritative policy doc) + `memory/reference_autodream_feature.md` (upstream feature description) + `memory/reference_automemory_anthropic_feature.md` (upstream substrate) + `memory/feedback_in_repo_preferred_over_per_user_memory_where_possible_2026_04_23.md` (Overlay A migration discipline) + `memory/feedback_signal_in_signal_out_clean_or_better_dsp_discipline.md` (consolidation signal preservation) + `docs/HARNESS-SURFACES.md` (Overlay B's drift surface) + `docs/ALIGNMENT.md` (Overlay D's sync target) |
| 53 | AutoDream cadenced consolidation (upstream Anthropic Q1 2026 + factory overlays A/B/C/D) | Anthropic's cadence verbatim: **≥24h AND ≥5 sessions** since last cycle. Gate marker lives at the top of `MEMORY.md` as `[AutoDream last run: YYYY-MM-DD]`. Session wake checks the gate silently; manual invocation ("dream" / "consolidate memory") may override with a maintainer confirmation. When Anthropic un-gates the backend (currently `tengu_onyx_plover`), the manual approximation retires and the automatic run takes over; factory overlays continue on top. | Architect (Kenji) on cadenced fires (dispatches an audit subagent; main agent applies only what the audit surfaces). Overlay D pulls the alignment-auditor role in on clause-touching consolidations. The autodream-hygiene skill (BACKLOG P1 follow-up) will wrap the four upstream phases + four factory overlays as a single invocable procedure once authored. | both | **Upstream four phases** (Orientation → Gather Signal → Consolidation → Prune & Index) run as Anthropic prescribes — factory does not replace them. **Factory overlays layered on top:** (A) cross-substrate mirror check before Orientation — scans per-user memory for generic factory-shaped rules that should live in-repo per the in-repo-preferred discipline (`~/.claude/projects/<slug>/memory/feedback_in_repo_preferred_over_per_user_memory_where_possible_2026_04_23.md`), migrates what qualifies with the signal-preservation rule; (B) harness-surface drift sync during Gather Signal — cross-checks `docs/HARNESS-SURFACES.md` adoption statuses for surfaces that have moved watched → adopted or cut since last cycle; (C) governance-promotion pass during Consolidation — ≥3 memories citing the same rule surfaces a BP-NN / ADR / GOVERNANCE promotion candidate for Kenji; (D) alignment-observability sync during Prune & Index — any memory edit that touched an `ALIGNMENT.md` clause (HC-1..HC-7 / SD-1..SD-8 / DIR-1..DIR-5) queues for the alignment-auditor time-series. **Invariants preserved:** Anthropic's four (load-bearing memories unconditionally / distinct-query-axes stay distinct / cross-references bidirectional / corrections recorded not deleted) plus factory additions (verbatim quotes stay verbatim / migration supersedes but does not delete per-user source / supersede markers over silent retirement). **Why this row exists:** Aaron 2026-04-23 *"continue our AutoDream reserach to make sure we are running it on a cadence and we plug in tightly with the existing claude Q1 2026 feature for AutoDream and AutoMemory, we should by defintion be an extension of theirs as it will get upgrades we want over time."* Ships to project-under-construction: adopters running Claude Code inherit AutoMemory / AutoDream from Anthropic; this row adds the factory's overlay policy (migration discipline, governance-promotion signal, alignment sync) that any adopter can opt into by following the research doc. **Classification (row #50):** **detection-only-justified** — consolidation is fundamentally post-hoc by Anthropic's own design (daytime logger is additive; the hygiene pass is the subtractive counterpart that cannot run before the log exists). The factory overlays inherit the same post-hoc shape. | `[AutoDream last run: YYYY-MM-DD]` marker update at top of `MEMORY.md` (upstream-schema); per-fire entry appended to `docs/hygiene-history/autodream-fire-history.md` (factory-schema, per row #44: date / agent / overlays fired / findings count / promotion candidates / next-fire-expected-date); ROUND-HISTORY row on the round the fire landed if overlay findings materially shifted something. | `docs/research/autodream-extension-and-cadence-2026-04-23.md` (this row's authoritative policy doc) + `~/.claude/projects/<slug>/memory/reference_autodream_feature.md` (upstream feature description) + `~/.claude/projects/<slug>/memory/reference_automemory_anthropic_feature.md` (upstream substrate) + `~/.claude/projects/<slug>/memory/feedback_in_repo_preferred_over_per_user_memory_where_possible_2026_04_23.md` (Overlay A migration discipline) + `~/.claude/projects/<slug>/memory/feedback_signal_in_signal_out_clean_or_better_dsp_discipline.md` (consolidation signal preservation) + `docs/HARNESS-SURFACES.md` (Overlay B's drift surface) + `docs/ALIGNMENT.md` (Overlay D's sync target) |

Copilot uses AI. Check for mistakes.
| 52 | Tick-history bounded-growth audit (`docs/hygiene-history/loop-tick-history.md` line-count vs threshold) | Detect-only (landed 2026-04-22); cadenced detection once per round-close (same cadence as row #44 cadence-history sweep, since this is the canonical row #44 worked example auditing itself); opportunistic on-touch whenever the tick-history file is read or edited. Archive action itself remains manual for now; deferring automation to the larger BACKLOG row that also covers threshold-revision and append-without-reading refactor. | Dejan (devops-engineer) on cadenced detection; the tick itself (self-administered at tick-close) on the opportunistic on-touch — each tick's end-of-tick sequence can invoke this audit after the append + commit to get a `within bounds: 96/500 lines` visibility signal. | factory | `tools/hygiene/audit-tick-history-bounded-growth.sh` checks the file's line count against a threshold (default 500, overrideable via `--threshold N`) and exits 0 within bounds / 2 over threshold. The threshold is set lower than the stated 5000-line paper bound because the file is read on every tick-close append — a per-tick context cost that scales linearly with file size — and 5000 lines represents too large a context hit on a 1-minute cadence. The audit's header block carries a mini-ADR decision record for the 500-line choice (context / decision / alternatives / supersedes / expires-when). **Why this row exists:** Aaron 2026-04-22 tick-fire interrupt: *"does loop tick history grow unbounded? that's an issue if so you just read it"*. Honest state was stated-bound-no-enforcement: file header named 5000 lines, nothing checked it. This row closes the enforcement gap for the threshold-check half of the full BACKLOG row (archive-action + append-without-reading refactor remain deferred). **Self-referential closure:** the tick-history file IS the canonical row-#44 cadence-history-tracking worked example (named explicitly in row #44's "Durable output" citation). Until this row landed, the most-cadenced surface in the factory — the tick itself — had its fire-log surface unaudited for its own growth. Meta-audit triangle remains intact (existence #23 / activation #43 / fire-history #44), and row #49 adds a fourth: fire-history files themselves need bounded-growth audits because they grow at the cadence of the surface they track. **Classification (row #47):** **prevention-bearing** — the audit surfaces approaching-threshold warnings at 80% so the archive action can be planned, rather than reactive-only at over-threshold. Ships to project-under-construction indirectly: adopters inherit the pattern (fire-log files under their own `docs/hygiene-history/` need the same bounded-growth treatment), not this exact script. | Audit output on each fire; cadenced runs appended to `docs/hygiene-history/tick-history-bounded-growth-history.md` (per-fire schema per row #44); BACKLOG row when archival is due (archive-action itself queued as part of the larger tick-history enforcement BACKLOG row); ROUND-HISTORY row when threshold changes or archive action executes. | `tools/hygiene/audit-tick-history-bounded-growth.sh` (detection + mini-ADR header block) + `docs/hygiene-history/loop-tick-history.md` (target surface, canonical row #44 worked example) + BACKLOG row *"Loop-tick-history bounded-growth enforcement"* (larger follow-up: threshold revision + append-without-reading refactor + archive action) |

Copilot AI Apr 23, 2026

Copy link

Choose a reason for hiding this comment

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

P1: The hygiene-row numbering is now out of order (row 53 appears before row 52). Please reorder the table (or renumber) so row numbers remain monotonically increasing—this helps keep citations stable and avoids confusion when referencing row IDs.

Suggested change
| 52 | Tick-history bounded-growth audit (`docs/hygiene-history/loop-tick-history.md` line-count vs threshold) | Detect-only (landed 2026-04-22); cadenced detection once per round-close (same cadence as row #44 cadence-history sweep, since this is the canonical row #44 worked example auditing itself); opportunistic on-touch whenever the tick-history file is read or edited. Archive action itself remains manual for now; deferring automation to the larger BACKLOG row that also covers threshold-revision and append-without-reading refactor. | Dejan (devops-engineer) on cadenced detection; the tick itself (self-administered at tick-close) on the opportunistic on-touch — each tick's end-of-tick sequence can invoke this audit after the append + commit to get a `within bounds: 96/500 lines` visibility signal. | factory | `tools/hygiene/audit-tick-history-bounded-growth.sh` checks the file's line count against a threshold (default 500, overrideable via `--threshold N`) and exits 0 within bounds / 2 over threshold. The threshold is set lower than the stated 5000-line paper bound because the file is read on every tick-close append — a per-tick context cost that scales linearly with file size — and 5000 lines represents too large a context hit on a 1-minute cadence. The audit's header block carries a mini-ADR decision record for the 500-line choice (context / decision / alternatives / supersedes / expires-when). **Why this row exists:** Aaron 2026-04-22 tick-fire interrupt: *"does loop tick history grow unbounded? that's an issue if so you just read it"*. Honest state was stated-bound-no-enforcement: file header named 5000 lines, nothing checked it. This row closes the enforcement gap for the threshold-check half of the full BACKLOG row (archive-action + append-without-reading refactor remain deferred). **Self-referential closure:** the tick-history file IS the canonical row-#44 cadence-history-tracking worked example (named explicitly in row #44's "Durable output" citation). Until this row landed, the most-cadenced surface in the factory — the tick itself — had its fire-log surface unaudited for its own growth. Meta-audit triangle remains intact (existence #23 / activation #43 / fire-history #44), and row #49 adds a fourth: fire-history files themselves need bounded-growth audits because they grow at the cadence of the surface they track. **Classification (row #47):** **prevention-bearing** — the audit surfaces approaching-threshold warnings at 80% so the archive action can be planned, rather than reactive-only at over-threshold. Ships to project-under-construction indirectly: adopters inherit the pattern (fire-log files under their own `docs/hygiene-history/` need the same bounded-growth treatment), not this exact script. | Audit output on each fire; cadenced runs appended to `docs/hygiene-history/tick-history-bounded-growth-history.md` (per-fire schema per row #44); BACKLOG row when archival is due (archive-action itself queued as part of the larger tick-history enforcement BACKLOG row); ROUND-HISTORY row when threshold changes or archive action executes. | `tools/hygiene/audit-tick-history-bounded-growth.sh` (detection + mini-ADR header block) + `docs/hygiene-history/loop-tick-history.md` (target surface, canonical row #44 worked example) + BACKLOG row *"Loop-tick-history bounded-growth enforcement"* (larger follow-up: threshold revision + append-without-reading refactor + archive action) |
| 54 | Tick-history bounded-growth audit (`docs/hygiene-history/loop-tick-history.md` line-count vs threshold) | Detect-only (landed 2026-04-22); cadenced detection once per round-close (same cadence as row #44 cadence-history sweep, since this is the canonical row #44 worked example auditing itself); opportunistic on-touch whenever the tick-history file is read or edited. Archive action itself remains manual for now; deferring automation to the larger BACKLOG row that also covers threshold-revision and append-without-reading refactor. | Dejan (devops-engineer) on cadenced detection; the tick itself (self-administered at tick-close) on the opportunistic on-touch — each tick's end-of-tick sequence can invoke this audit after the append + commit to get a `within bounds: 96/500 lines` visibility signal. | factory | `tools/hygiene/audit-tick-history-bounded-growth.sh` checks the file's line count against a threshold (default 500, overrideable via `--threshold N`) and exits 0 within bounds / 2 over threshold. The threshold is set lower than the stated 5000-line paper bound because the file is read on every tick-close append — a per-tick context cost that scales linearly with file size — and 5000 lines represents too large a context hit on a 1-minute cadence. The audit's header block carries a mini-ADR decision record for the 500-line choice (context / decision / alternatives / supersedes / expires-when). **Why this row exists:** Aaron 2026-04-22 tick-fire interrupt: *"does loop tick history grow unbounded? that's an issue if so you just read it"*. Honest state was stated-bound-no-enforcement: file header named 5000 lines, nothing checked it. This row closes the enforcement gap for the threshold-check half of the full BACKLOG row (archive-action + append-without-reading refactor remain deferred). **Self-referential closure:** the tick-history file IS the canonical row-#44 cadence-history-tracking worked example (named explicitly in row #44's "Durable output" citation). Until this row landed, the most-cadenced surface in the factory — the tick itself — had its fire-log surface unaudited for its own growth. Meta-audit triangle remains intact (existence #23 / activation #43 / fire-history #44), and row #49 adds a fourth: fire-history files themselves need bounded-growth audits because they grow at the cadence of the surface they track. **Classification (row #47):** **prevention-bearing** — the audit surfaces approaching-threshold warnings at 80% so the archive action can be planned, rather than reactive-only at over-threshold. Ships to project-under-construction indirectly: adopters inherit the pattern (fire-log files under their own `docs/hygiene-history/` need the same bounded-growth treatment), not this exact script. | Audit output on each fire; cadenced runs appended to `docs/hygiene-history/tick-history-bounded-growth-history.md` (per-fire schema per row #44); BACKLOG row when archival is due (archive-action itself queued as part of the larger tick-history enforcement BACKLOG row); ROUND-HISTORY row when threshold changes or archive action executes. | `tools/hygiene/audit-tick-history-bounded-growth.sh` (detection + mini-ADR header block) + `docs/hygiene-history/loop-tick-history.md` (target surface, canonical row #44 worked example) + BACKLOG row *"Loop-tick-history bounded-growth enforcement"* (larger follow-up: threshold revision + append-without-reading refactor + archive action) |

Copilot uses AI. Check for mistakes.

## Ships to project-under-construction
Expand Down
Loading
Loading