research: AutoDream extension + cadence policy (Anthropic Q1 2026 overlay)#155
research: AutoDream extension + cadence policy (Anthropic Q1 2026 overlay)#155
Conversation
…rlay) Factory-overlay design for Anthropic's AutoMemory / AutoDream Q1 2026 features. Adopts upstream cadence (≥24h AND ≥5 sessions) verbatim. Extends rather than replaces — four factory overlays compose with Anthropic's four phases, so upstream upgrades land automatically. - docs/research/autodream-extension-and-cadence-2026-04-23.md — policy doc: extend-don't-replace, cadence gate on `[AutoDream last run: ...]` marker in MEMORY.md, four overlays (cross-substrate mirror check / harness-surface drift sync / governance-promotion pass / alignment-observability sync), seven consolidation invariants (Anthropic's four + three factory additions) - docs/FACTORY-HYGIENE.md — new row #53 wires the policy to round- cadenced enforcement; classified detection-only-justified per row #50; fires logged to docs/hygiene-history/autodream-fire- history.md per row #44 Triggered by 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." Deferred follow-ups: dedicated autodream-hygiene skill, automated cadence-gate hook, per-user → in-repo migration tooling. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Row #44 obligation: every cadenced factory surface needs a fire- history file. Row #53 landed in the parent commit of this branch; this file records its first fire (2026-04-23). First fire is a light pass: Orientation + Gather Signal findings- only. Full overlay A/B/C/D execution deferred to a dedicated follow-up tick — this fire records the cadence observance + the findings surface. The cross-substrate MEMORY.md marker was bumped to 2026-04-23 in the per-user memory (not in-repo; upstream-schema location). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b37353d76d
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| - **Date within 24h AND session-count-since-last < 5 → | ||
| skip.** Report "cadence gate: N hours since last run, |
There was a problem hiding this comment.
Gate AutoDream when either cadence threshold is unmet
The policy text says AutoDream should run only after both thresholds are met (≥24h and ≥5 sessions), but this condition skips only when both are below threshold (within 24h AND sessions < 5). That means a run is implicitly allowed when just one threshold is satisfied (for example, many sessions in a few hours, or 24h elapsed with very few sessions), which contradicts the stated cadence and can trigger premature consolidation. The skip condition should be phrased as within 24h OR sessions < 5 so runs occur only when both requirements pass.
Useful? React with 👍 / 👎.
…ming - AutoDream extension + cadence research doc landed (PR #155) - FACTORY-HYGIENE row #53 + fire-history ledger with first fire - Multi-project / LFG-soulfile-inheritance framing absorbed; per-user memory filed + CURRENT-aaron.md §4 updated same-tick - PR #150 redaction sweep closed (all 4 findings addressed) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Adds a factory-level research policy for composing with Anthropic’s Q1 2026 AutoMemory/AutoDream features, and wires that policy into the hygiene table as a new cadenced rule.
Changes:
- New research doc defining “extend, don’t replace” + upstream cadence (≥24h AND ≥5 sessions) and four factory overlays (A–D).
- Adds FACTORY-HYGIENE row #53 for AutoDream cadenced consolidation, referencing the research doc and intended durable outputs.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 6 comments.
| File | Description |
|---|---|
| docs/research/autodream-extension-and-cadence-2026-04-23.md | Defines the overlay policy and cadence gate marker contract. |
| docs/FACTORY-HYGIENE.md | Introduces hygiene row #53 to operationalize the AutoDream cadence + overlays policy. |
| | 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) | | ||
| | 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) | |
| | 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) | | ||
| | 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) | |
| | 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) | | ||
| | 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) | |
|
|
||
| - Per-user memory contains a generic factory-shaped rule | ||
| that should be in-repo per | ||
| `memory/feedback_in_repo_preferred_over_per_user_memory_where_possible_2026_04_23.md` |
| rule). The factory's load-bearing list includes sister | ||
| Elisabeth memory, faith memory, Harmonious Division name, | ||
| Rodney persona placement, Dora persona — plus factory-scale | ||
| anchors like the bootstrap-is-complete memory, the | ||
| free-will-paramount memory, and the alignment-floor | ||
| references. |
| 5. **Verbatim quotes stay verbatim** (factory addition — | ||
| composes with | ||
| `feedback_signal_in_signal_out_clean_or_better_dsp_discipline.md`). | ||
| Consolidation must not paraphrase a verbatim-preserved | ||
| quote, even when merging two memories. | ||
| 6. **Migration supersedes, does not delete** (factory | ||
| addition — per-user memory files migrated in-repo leave | ||
| a "Migrated to in-repo memory/: <path>" line at the top | ||
| of the per-user source; the source itself stays for | ||
| originSessionId provenance). | ||
| 7. **Supersede markers over silent retirement** (factory | ||
| addition — a rule that is no longer in force becomes an | ||
| entry in the "Retired rules" section of a | ||
| `CURRENT-<maintainer>.md` file, never deleted; composes | ||
| with `feedback_current_memory_per_maintainer_distillation_pattern_prefer_progress_2026_04_23.md`). |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e8b0d2da61
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| the top of `MEMORY.md`: | ||
|
|
||
| ``` | ||
| [AutoDream last run: YYYY-MM-DD] |
There was a problem hiding this comment.
Record full timestamp in AutoDream run marker
The cadence requirement is defined as “≥24h AND ≥5 sessions,” but the marker format stores only a date (YYYY-MM-DD), which cannot encode elapsed hours. Around day boundaries this can open the gate too early (e.g., run late at night, then run again just after midnight) and violate the stated upstream cadence, so the marker needs a timestamp (ideally UTC) to enforce the 24-hour condition correctly.
Useful? React with 👍 / 👎.
| | Date | Agent | Gate | Overlays fired | Findings | Next expected | | ||
| |---|---|---|---|---|---| | ||
| | 2026-04-20 | Claude (manual approximation pre-row-#53) | No marker — first known fire | Pre-overlay era | MEMORY.md bootstrap — no overlay framework yet | Superseded by the 2026-04-23 policy doc | | ||
| | 2026-04-23 | Claude (first row-#53 fire) | 3 days + ≥5 sessions since 2026-04-20 marker — both gates pass | Light pass: Orientation + Gather Signal (findings-only); Overlays A/B/C/D scheduled for follow-up tick | Per-user MEMORY.md is 345 lines (well over the 200-line cap); 14+ new 2026-04-23 memories not yet indexed cleanly; generic rules in per-user worth candidate migration to in-repo. Full consolidation deferred to a dedicated tick — this fire records the cadence observance and the findings. | Next fire gate-open at ≥24h AND ≥5 sessions from 2026-04-23 (likely 2026-04-26 or later). Overlay A migration candidates land on that fire or earlier opportunistic-on-touch. | |
There was a problem hiding this comment.
Update cadence marker only after full consolidation
This fire-history row marks the 2026-04-23 run as a light pass with full consolidation deferred, but still treats it as the cadence anchor for the next gate window. That conflicts with the policy in this same change set that says the marker is updated after successful consolidation; if partial passes reset the timer, full cleanup is postponed by at least one full cadence cycle and stale/duplicate memory can persist longer than intended.
Useful? React with 👍 / 👎.
Adds the blank line the linter expects between the "Upstream feature references:" line and the bullet list that follows. Caught by markdownlint-cli2 in CI on #155. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…n (PR #157) - #155: markdownlint MD032 on autodream-fire-history.md fixed - #157: AutoDream Overlay A first practical execution — migrated signal-in-signal-out discipline from per-user to in-repo memory (resolves dangling citations from FACTORY-HYGIENE and AutoDream research doc) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Second entry on 2026-04-23 — the opportunistic-on-touch fire that landed PR #157 (signal-in-signal-out migration). Not cadence-gated; Overlay A runs under the on-touch clause per row #53. Findings: 4 candidate next migrations identified (cited from the just-migrated file), all generic factory-shape. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…cution Closes a row#44 compliance gap from auto-loop-50: the PR #157 migration was logged to the AutoDream fire-history in this tick (retrospective on-touch, still honest per append-only). Observation captured: future Overlay A ticks should log the fire in the same PR as the migration, not as a follow-up. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…ay A #3 (PR #159) Two landings this tick: 1. Amara's courier-protocol writeup absorbed verbatim as docs/protocols/cross-agent-communication.md (PR #160). Resolves the transport-layer blocker on PR #154's decision-proxy ADR (which was the identity layer). 2. Overlay A migration #3: deletions-over-insertions complexity-reduction discipline (PR #159). Queue now 2 remaining. Author-attribution discipline noted as load-bearing for external-maintainer content: commit Co-Authored-By, doc header naming, factory integration notes separated. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
| | Date | Agent | Gate | Overlays fired | Findings | Next expected | | ||
| |---|---|---|---|---|---| | ||
| | 2026-04-20 | Claude (manual approximation pre-row-#53) | No marker — first known fire | Pre-overlay era | MEMORY.md bootstrap — no overlay framework yet | Superseded by the 2026-04-23 policy doc | | ||
| | 2026-04-23 | Claude (first row-#53 fire) | 3 days + ≥5 sessions since 2026-04-20 marker — both gates pass | Light pass: Orientation + Gather Signal (findings-only); Overlays A/B/C/D scheduled for follow-up tick | Per-user MEMORY.md is 345 lines (well over the 200-line cap); 14+ new 2026-04-23 memories not yet indexed cleanly; generic rules in per-user worth candidate migration to in-repo. Full consolidation deferred to a dedicated tick — this fire records the cadence observance and the findings. | Next fire gate-open at ≥24h AND ≥5 sessions from 2026-04-23 (likely 2026-04-26 or later). Overlay A migration candidates land on that fire or earlier opportunistic-on-touch. | | ||
| | 2026-04-23 (later, same-day) | Claude (auto-loop-50 opportunistic-on-touch Overlay A) | Same session — not cadence-gated; opportunistic-on-touch per row #53 | Overlay A — first execution | Migrated `feedback_signal_in_signal_out_clean_or_better_dsp_discipline.md` from per-user to in-repo `memory/` (PR #157). Dangling citations from `docs/FACTORY-HYGIENE.md` + `docs/research/autodream-extension-and-cadence-2026-04-23.md` resolved. Per-user source retained with "Migrated to" marker (provenance preserved). Candidate next migrations identified: `feedback_outcomes_over_vanity_metrics_goodhart_resistance.md`, `feedback_deletions_over_insertions_complexity_reduction_cyclomatic_proxy.md`, `feedback_external_signal_confirms_internal_insight_second_occurrence_discipline_2026_04_22.md`, `project_semiring_parameterized_zeta_regime_change_one_algebra_to_map_others_2026_04_22.md` — all generic factory-shape, all cited from the just-migrated file. | Next full-cadence fire at ≥24h AND ≥5 sessions from 2026-04-23. Opportunistic-on-touch continues for the 4 identified candidates as future ticks have budget. | | ||
| | 2026-04-23 (later ×2, same-day) | Claude (auto-loop-52 opportunistic-on-touch Overlay A) | Same session — opportunistic-on-touch | Overlay A — second execution (working the identified queue from the prior fire) | Migrated `feedback_outcomes_over_vanity_metrics_goodhart_resistance.md` from per-user to in-repo `memory/` (PR #158). Sibling to signal-in-signal-out (same 2026-04-22 tick pair — Goodhart resistance + DSP preservation as paired disciplines). Resolves one composes-with dangling citation from the just-migrated signal-in-signal-out memory. Queue now 3 candidates (deletions-over-insertions / external-signal-confirms-internal-insight / semiring-parameterized-zeta). | Opportunistic-on-touch continues; cadenced fire still gate-open ≥2026-04-26. | |
| - Per-user memory contains a generic factory-shaped rule | ||
| that should be in-repo per | ||
| `memory/feedback_in_repo_preferred_over_per_user_memory_where_possible_2026_04_23.md` | ||
| (per-user until this doc migrates it). |
| - **Storage location stays upstream.** Per-user memory lives | ||
| at `~/.claude/projects/<slug>/memory/`, not at a | ||
| factory-custom path. The factory's in-repo `memory/` tree | ||
| is a **mirror** for cross-substrate readability — it does | ||
| not replace the per-user location; it adds a second home | ||
| for generic content. |
| | 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) | | ||
| | 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) | |
| | 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) | |
| rule). The factory's load-bearing list includes sister | ||
| Elisabeth memory, faith memory, Harmonious Division name, | ||
| Rodney persona placement, Dora persona — plus factory-scale | ||
| anchors like the bootstrap-is-complete memory, the | ||
| free-will-paramount memory, and the alignment-floor | ||
| references. |
| | 2026-04-23T15:45:00Z (autonomous-loop tick, auto-loop-47 — AutoDream policy + cadence landed as row #53; multi-project/LFG-soulfile framing absorbed) | opus-4-7 / session continuation | 20c92390 | Tick worked two Aaron directives back-to-back: (a) **AutoDream extension + cadence** — landed `docs/research/autodream-extension-and-cadence-2026-04-23.md` (factory-overlay policy: extend-don't-replace, adopt upstream cadence ≥24h AND ≥5 sessions, four overlays A/B/C/D compose with Anthropic's four phases) + `docs/FACTORY-HYGIENE.md` row #53 wiring to round-cadenced enforcement (classified detection-only-justified per row #50) + `docs/hygiene-history/autodream-fire-history.md` ledger (row #44 compliance) + first-fire entry. PR #155 opened. MEMORY.md marker bumped 2026-04-20 → 2026-04-23 in per-user (upstream-schema surface, not in-repo). Full overlay A/B/C/D execution deferred to dedicated follow-up tick. (b) **Multi-project / LFG-soulfile framing absorbed** — Aaron clarified the factory serves multiple projects-under-construction (Zeta / Aurora / Demos / Factory / Package Manager "ace" / ...), LFG is the clean-source-of-truth and soulfile-inheritance lineage, AceHack can be super-risky as a fork. Filed per-user memory `project_multiple_projects_under_construction_and_lfg_soulfile_inheritance_2026_04_23.md` + updated `CURRENT-aaron.md` §4 same-tick (per per-maintainer CURRENT distillation pattern). Also landed the in-repo-preferred-where-possible discipline as per-user memory `feedback_in_repo_preferred_over_per_user_memory_where_possible_2026_04_23.md` with a soulfile-bloat pushback criterion (Aaron: *"remeber the repo is your soul file so push back if it's going to create huge bloat"*). (c) **PR #150 redaction sweep closed** — the one remaining "Aaron" attribution + 3 other review findings (docs/aurora/ current-location marker, dangling per-user memory paths collapsed). Commit on `research/multi-repo-refactor-shapes`. (d) **CronList + visibility**: `20c92390` minutely fire verified live. | PR #155 `research/autodream-extension-and-cadence` + commit on `research/multi-repo-refactor-shapes` | First AutoDream policy landing + first row-#53-compliant fire same tick. Observation 1 — extend-don't-replace is the right framing because the upstream feature is actively shipping (flag-gated backend as of 2026-04-19, UI at /memory present) and any factory fork would be burdened with maintaining a parallel schema / storage / phase-structure. The four overlays add value without that maintenance tax. Observation 2 — per-user ↔ in-repo migration is now a named cadence-workload (Overlay A), not ad-hoc; pushback-on-bloat criterion prevents the rule from flooding the repo. Observation 3 — LFG-as-soulfile-lineage is a sharpening of earlier "LFG is demo-facing" framing — the agent's durable substrate (across incarnations, refactors, multi-repo splits) inherits from LFG specifically, not from AceHack. This makes the multi-repo refactor decision tractable: every candidate shape preserves LFG-as-lineage. Observation 4 — "ships to project-under-construction" framing is now read plural. No cascade-edit this tick; sharpen on next cadenced doc review. | | ||
| | 2026-04-23T16:02:00Z (autonomous-loop tick, auto-loop-51 — fire-history row for Overlay A first execution) | opus-4-7 / session continuation | 20c92390 | Tick closed a row#44-compliance gap: the Overlay A execution that shipped as PR #157 in the prior tick hadn't been logged to the AutoDream fire-history file. Added a second 2026-04-23 entry to `docs/hygiene-history/autodream-fire-history.md` on the #155 branch — this "later, same-day" fire is tagged as opportunistic-on-touch (not cadence-gated; row #53 explicitly allows on-touch Overlay A). Findings section names the next 4 candidate migrations identified during the PR #157 execution — `outcomes-over-vanity-metrics`, `deletions-over-insertions-complexity`, `external-signal-confirms-internal-insight`, `semiring-parameterized-zeta-regime-change` — all cited from the just-migrated signal-in-signal-out memory, all generic factory-shape. Tick actions: (a) **Step 0 CI check**: all three recent PRs (#155 / #156 / #157) clean — no failures. Lint fix from prior tick on #155 landed successfully. (b) **Fire-history update** on `research/autodream-extension-and-cadence` branch. (c) **markdownlint-cli2 local pass** verified clean. (d) **CronList + visibility**: `20c92390` minutely fire verified live. | Commit on `research/autodream-extension-and-cadence` + the tick-history row itself | Observation 1 — row #44 compliance is a living discipline, not a one-time setup. Each Overlay-A fire (cadence-gated OR opportunistic-on-touch) needs a ledger entry. The prior tick missed the on-touch log; this tick closed it retrospectively, which is still honest per the append-only-history pattern. Future ticks should log the fire in the same PR as the migration, not as a follow-up. Observation 2 — candidate-migration list in the fire-history is a light-weight queue — no separate doc needed. Future ticks can pick up the list, migrate one, log the fire, and the queue naturally shrinks. Avoids creating new hygiene surfaces. Observation 3 — "opportunistic-on-touch" as a distinct fire-category (vs cadence-gated) earns its own row taxonomy in the fire-history table. First use here; future Overlay A runs will mirror. Observation 4 — three-in-one tick (migration / fire-log / tick-history) is the natural composition for Overlay A; the prior tick did two-of-three because the fire-log was out-of-scope at the time. | | ||
| | 2026-04-23T16:05:00Z (autonomous-loop tick, auto-loop-52 — second Overlay A migration + fire-log bundled) | opus-4-7 / session continuation | 20c92390 | Tick executed the second Overlay A migration on the identified candidate queue. Tick actions: (a) **Step 0 CI check**: all three recent PRs (#155 / #156 / #157) still clean. Picked outcomes-over-vanity-metrics (120 lines, smallest and cited from signal-in-signal-out) as the next migration. (b) **Migration executed** on `refactor/overlay-a-migrate-outcomes-over-vanity` — copied verbatim, added in-repo supersede-marker header, marked per-user source migrated, added MEMORY.md index entry newest-first, fixed markdownlint MD032 blank-line issues. PR #158 opened. (c) **Fire-history entry appended** on the #155 branch in the same tick — per the auto-loop-51 discipline correction that future Overlay A runs should log the fire same-day. Queue now 3 remaining candidates (deletions / external-signal / semiring-parameterized-zeta). (d) **Transient 500 on first push** — retried and succeeded (GitHub intermittent, not a real error). (e) **CronList + visibility**: `20c92390` minutely fire verified live. | PR #158 + fire-history + tick-history | Observation 1 — second migration went smoother than first; pattern repeats cleanly (copy / header / per-user marker / index / lint / fire-log). Future migrations should take ≤1 tick each on average. Observation 2 — MD032 bites repeatedly on memory files with "Why:" / "How to apply:" bullets. A linter-aware memory template might catch this at author-time; low-effort next target. Observation 3 — cross-branch bundling (migration on one branch + fire-log on another) works but is two-tick-minimum. When #155 merges, fire-history and migration live on the same branch (main) and future Overlay A runs can single-PR bundle. Observation 4 — the queue is a self-shrinking workload: each migration removes one entry from the composes-with dangling set; eventually zero per-user references remain for signal-in-signal-out, and its migration value is maximized. | |
| | 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) | |
| | 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) | |
|
|
||
| Per-fire ledger for FACTORY-HYGIENE row #53 (AutoDream cadenced | ||
| consolidation — upstream Anthropic Q1 2026 + factory overlays | ||
| A/B/C/D). Schema per row #44 (date / agent / output / link / |
…ority calibration Three landings this tick: 1. Overlay A migration #3 (deletions-over-insertions) — PR #159 2. Amara's cross-agent courier protocol — PR #160 3. Amara's Zeta-for-Aurora deep research report — PR #161 Plus new per-user feedback memory capturing Aaron's funding-priority calibration: Amara authors research priorities, Aaron owns scheduling against his funded external stack. Aurora stays #2 (ServiceTitan + UI remains #1); Amara's recommended oracle rules + bullshit-detector queued not scheduled. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…lint fix Aaron's new scheduling rule: - Free work (within already-paid substrate) = Amara + Kenji schedule themselves - Paid work (new payment required) = escalate to Aaron Substantially expands agent action space; supersedes the earlier "queued-not-scheduled" framing. First application: PR #148 markdownlint fix (MD022 multi- line heading) — funded-stack priority #1 (factory demo explainer), free work, scheduled by agent judgment. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Investigated markdownlint failures across 7 demo-cluster PRs (#141/#145/#146/#147/#142/#143/#144). Scoped back on per-PR fixes in favor of a higher-leverage next-tick move: either land #151 (gitignore drop/ on main) or fix the MD056 tick-history row on main — both would unblock the whole cluster in one move. No new PRs this tick. Honest partial-execution per the prefer-progress-over-quiet-close discipline — documenting the unblock-vector rather than pushing through with inefficient per-PR fixes. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Fourth AutoDream Overlay A migration in the 2026-04-23 cadence: external-signal-confirms-internal-insight second-occurrence discipline. Queue now 1 remaining (semiring-parameterized-zeta). MD026 trailing-colon-heading added to the absorb-time lint-class list (alongside MD003, MD022, MD032). Per-branch rebase/merge-from-main is the unblock vector for the demo-cluster CI failures — documented last tick; not executed this tick. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…+ Overlay A #4 (PR #162) Two PRs this tick, both self-scheduled free work per the 2026-04-23 scheduling-authority rule: - PR #162 — Overlay A #4: external-signal-confirms-internal- insight discipline migrated per-user → in-repo - PR #163 — P1 BACKLOG row for fresh-session quality research (Aaron 2026-04-23 directive) Queue now 1 remaining Overlay A migration (semiring-parameterized-zeta). Fresh-session gap research cites soulfile-staged-absorption (PR #156) as the designed fix; research would validate that thesis. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…line (Overlay A #3) Third opportunistic-on-touch Overlay A migration in the 2026-04-23 cadence. Sibling to outcomes-over-vanity-metrics (PR #158) — both from Aaron's 2026-04-22 auto-loop-37 developer-values thread. Rule: net-negative-LOC ticks with tests passing are POSITIVE outcomes (Rodney's Razor in developer-values voice). Cyclomatic complexity is the deeper proxy; codebase-total CC/LOC should trend down to a local-optimum floor. Trend up = "shit code". Migration discipline per PR #157/#158 pattern: - In-repo copy with "Migrated to in-repo" header - Per-user source with "Migrated to in-repo" marker (provenance preserved) - MEMORY.md index entry newest-first - markdownlint-cli2 clean (MD032 blank-line fixes) Fire-history entry on the #155 branch in the follow-up tick. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…fix; whimsy-list extended 10 session PRs merged (+#160 +#175). PR #159: Copilot caught a wrapped-path rodney/ reference my prior sed missed (path spanned two lines). python replace fixed. Thread resolved. Lesson: grep for terminal-path- segment, not full path, to catch wrapped. Aaron seed-whimsy list extension: "feel free to keep a list of whimiscal numbers to choose from for seeds ... like with 42 the meaning of life lol." Per-user memory extended with current list (69 / 420 / 42) + candidate expansions (9000 DBZ, 1337 leet, 314159 π, 271828 e, 1729 Hardy- Ramanujan, others). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…159) * memory: migrate deletions-over-insertions complexity-reduction discipline (Overlay A #3) Third opportunistic-on-touch Overlay A migration in the 2026-04-23 cadence. Sibling to outcomes-over-vanity-metrics (PR #158) — both from Aaron's 2026-04-22 auto-loop-37 developer-values thread. Rule: net-negative-LOC ticks with tests passing are POSITIVE outcomes (Rodney's Razor in developer-values voice). Cyclomatic complexity is the deeper proxy; codebase-total CC/LOC should trend down to a local-optimum floor. Trend up = "shit code". Migration discipline per PR #157/#158 pattern: - In-repo copy with "Migrated to in-repo" header - Per-user source with "Migrated to in-repo" marker (provenance preserved) - MEMORY.md index entry newest-first - markdownlint-cli2 clean (MD032 blank-line fixes) Fire-history entry on the #155 branch in the follow-up tick. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * memory: address PR #159 review — role-refs, skill-path fix, xref clarifications Four Copilot findings: 1. BP name-attribution — "Aaron" in MEMORY.md index entry + feedback body replaced with role-refs ("the maintainer" / "the human maintainer"). Verbatim quotes preserved. 2. `.claude/skills/rodney/` path incorrect — fixed to `.claude/skills/reducer/` (the persona is Rodney; the skill path is reducer). 3. `docs/force-multiplication-log.md` doesn't exist in repo — clarified as historical / per-session scoring doc, not a standing in-repo surface. 4. Cross-refs to outcomes-over-vanity (in-repo via PR #158) and terse-directives (per-user) — clarified with explicit "in-repo via PR #158" or "per-user memory (not in-repo)". Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * memory: finish rodney/reducer path fix — multi-line wrap missed prior sweep The prior sweep (auto-loop-85) missed a rodney/ reference that wrapped across two lines ("`.claude/skills/\n rodney/`"). python replace now handles it. Copilot caught it in a follow-up review. Lesson: text-replacement passes need to handle line-wrapped path references. Flagging on memory-author-template if recurring. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
| | 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) | |
…w-number fixes PR #159 (Overlay A #3 deletions-over-insertions) MERGED at 18:02:47Z. 11 session PRs merged. HLL test passed on re-run (different seed) — real-world data for the PR #175 BACKLOG row on HLL flakiness; pin-then-explore is still the right fix. Aaron directive: "be PC when you write the 69 and 420 descriptions of whemsy we want this repo to be high school curruclurm friendly so R rated is okay but only when necessary for effect." PC-ified seed-whimsy memory descriptions (69 → internet-meme-symmetrical-digit; 420 → counterculture-meme). Added PC-framing section naming the high-school-curriculum-friendly standard. PR #172 row-number misrefs fixed (#48 → #51 for cross- platform parity; #44 → #47 for fire-history schema). Third finding via lands-via-#150 reply. Row-number misref is recurring; candidate for row #54 first cadenced fire. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…lassification BACKLOG 13 session PRs merged. Three landed in ~4 minutes: #159 (Overlay A #3), #172 (Pages-UI BACKLOG), #173 (UML BACKLOG). PR #173 unblock: 4 findings — Rational Rose cross-ref stale after rebase (row now adjacent on main); grammar nit fixed; row-number accepted as current; hard-coded row #49 kept. 4 threads resolved. Aaron directive (two-message): age-classification skill covering language + concepts. Filed PR #176 as P3 row, captures both axes + bi-audience (AI + humans) + human- standards-mapping + new physiology-based factory standard. Auto-merge armed. Rational Rose + UML rows now adjacent on main — prime target for row #54 first-fire overlap sweep. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…endment PR #162 unblock: 6 findings — two-occurrences heading stale (renamed "first occurrences observed, memory captured at the second"); arc3-dora-benchmark §Prior-art section doesn't exist (relaxed); 4 per-user xref clarifications via new §Cross-references preamble. 6 threads resolved; rebased; pushed. Aaron clarification: "i tried to also say psychology lol i also like physiology too." PR #176 row updated to include psychology alongside physiology throughout; third quote added to quoted-source block. Per-user-memory-xref clarification preamble now established three times — candidate template for memory-migration checklist. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
PR #176 got 4 new Copilot findings after the psychology amendment: wrapped-backtick paths (2 places, fixed with fenced code block + unwrap); "per-user seed-whimsy memory" clarified with full path; "No adopt commitment" → "No commitment to adopt" grammar fix. 4 threads resolved; force-pushed. New recurring finding class observed: wrapped-backtick-in- inline-code. Markdown inline code spans can't contain newlines; long paths that wrap break rendering. Candidate sixth absorb-time class for memory-author-template (beyond MD003/MD018/MD022/MD026/MD032). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
|
||
| - Per-user memory contains a generic factory-shaped rule | ||
| that should be in-repo per | ||
| `memory/feedback_in_repo_preferred_over_per_user_memory_where_possible_2026_04_23.md` |
| rule). The factory's load-bearing list includes sister | ||
| Elisabeth memory, faith memory, Harmonious Division name, | ||
| Rodney persona placement, Dora persona — plus factory-scale | ||
| anchors like the bootstrap-is-complete memory, the | ||
| free-will-paramount memory, and the alignment-floor | ||
| references. |
| | 2026-04-23T15:45:00Z (autonomous-loop tick, auto-loop-47 — AutoDream policy + cadence landed as row #53; multi-project/LFG-soulfile framing absorbed) | opus-4-7 / session continuation | 20c92390 | Tick worked two Aaron directives back-to-back: (a) **AutoDream extension + cadence** — landed `docs/research/autodream-extension-and-cadence-2026-04-23.md` (factory-overlay policy: extend-don't-replace, adopt upstream cadence ≥24h AND ≥5 sessions, four overlays A/B/C/D compose with Anthropic's four phases) + `docs/FACTORY-HYGIENE.md` row #53 wiring to round-cadenced enforcement (classified detection-only-justified per row #50) + `docs/hygiene-history/autodream-fire-history.md` ledger (row #44 compliance) + first-fire entry. PR #155 opened. MEMORY.md marker bumped 2026-04-20 → 2026-04-23 in per-user (upstream-schema surface, not in-repo). Full overlay A/B/C/D execution deferred to dedicated follow-up tick. (b) **Multi-project / LFG-soulfile framing absorbed** — Aaron clarified the factory serves multiple projects-under-construction (Zeta / Aurora / Demos / Factory / Package Manager "ace" / ...), LFG is the clean-source-of-truth and soulfile-inheritance lineage, AceHack can be super-risky as a fork. Filed per-user memory `project_multiple_projects_under_construction_and_lfg_soulfile_inheritance_2026_04_23.md` + updated `CURRENT-aaron.md` §4 same-tick (per per-maintainer CURRENT distillation pattern). Also landed the in-repo-preferred-where-possible discipline as per-user memory `feedback_in_repo_preferred_over_per_user_memory_where_possible_2026_04_23.md` with a soulfile-bloat pushback criterion (Aaron: *"remeber the repo is your soul file so push back if it's going to create huge bloat"*). (c) **PR #150 redaction sweep closed** — the one remaining "Aaron" attribution + 3 other review findings (docs/aurora/ current-location marker, dangling per-user memory paths collapsed). Commit on `research/multi-repo-refactor-shapes`. (d) **CronList + visibility**: `20c92390` minutely fire verified live. | PR #155 `research/autodream-extension-and-cadence` + commit on `research/multi-repo-refactor-shapes` | First AutoDream policy landing + first row-#53-compliant fire same tick. Observation 1 — extend-don't-replace is the right framing because the upstream feature is actively shipping (flag-gated backend as of 2026-04-19, UI at /memory present) and any factory fork would be burdened with maintaining a parallel schema / storage / phase-structure. The four overlays add value without that maintenance tax. Observation 2 — per-user ↔ in-repo migration is now a named cadence-workload (Overlay A), not ad-hoc; pushback-on-bloat criterion prevents the rule from flooding the repo. Observation 3 — LFG-as-soulfile-lineage is a sharpening of earlier "LFG is demo-facing" framing — the agent's durable substrate (across incarnations, refactors, multi-repo splits) inherits from LFG specifically, not from AceHack. This makes the multi-repo refactor decision tractable: every candidate shape preserves LFG-as-lineage. Observation 4 — "ships to project-under-construction" framing is now read plural. No cascade-edit this tick; sharpen on next cadenced doc review. | | ||
| | 2026-04-23T16:02:00Z (autonomous-loop tick, auto-loop-51 — fire-history row for Overlay A first execution) | opus-4-7 / session continuation | 20c92390 | Tick closed a row#44-compliance gap: the Overlay A execution that shipped as PR #157 in the prior tick hadn't been logged to the AutoDream fire-history file. Added a second 2026-04-23 entry to `docs/hygiene-history/autodream-fire-history.md` on the #155 branch — this "later, same-day" fire is tagged as opportunistic-on-touch (not cadence-gated; row #53 explicitly allows on-touch Overlay A). Findings section names the next 4 candidate migrations identified during the PR #157 execution — `outcomes-over-vanity-metrics`, `deletions-over-insertions-complexity`, `external-signal-confirms-internal-insight`, `semiring-parameterized-zeta-regime-change` — all cited from the just-migrated signal-in-signal-out memory, all generic factory-shape. Tick actions: (a) **Step 0 CI check**: all three recent PRs (#155 / #156 / #157) clean — no failures. Lint fix from prior tick on #155 landed successfully. (b) **Fire-history update** on `research/autodream-extension-and-cadence` branch. (c) **markdownlint-cli2 local pass** verified clean. (d) **CronList + visibility**: `20c92390` minutely fire verified live. | Commit on `research/autodream-extension-and-cadence` + the tick-history row itself | Observation 1 — row #44 compliance is a living discipline, not a one-time setup. Each Overlay-A fire (cadence-gated OR opportunistic-on-touch) needs a ledger entry. The prior tick missed the on-touch log; this tick closed it retrospectively, which is still honest per the append-only-history pattern. Future ticks should log the fire in the same PR as the migration, not as a follow-up. Observation 2 — candidate-migration list in the fire-history is a light-weight queue — no separate doc needed. Future ticks can pick up the list, migrate one, log the fire, and the queue naturally shrinks. Avoids creating new hygiene surfaces. Observation 3 — "opportunistic-on-touch" as a distinct fire-category (vs cadence-gated) earns its own row taxonomy in the fire-history table. First use here; future Overlay A runs will mirror. Observation 4 — three-in-one tick (migration / fire-log / tick-history) is the natural composition for Overlay A; the prior tick did two-of-three because the fire-log was out-of-scope at the time. | | ||
| | 2026-04-23T16:05:00Z (autonomous-loop tick, auto-loop-52 — second Overlay A migration + fire-log bundled) | opus-4-7 / session continuation | 20c92390 | Tick executed the second Overlay A migration on the identified candidate queue. Tick actions: (a) **Step 0 CI check**: all three recent PRs (#155 / #156 / #157) still clean. Picked outcomes-over-vanity-metrics (120 lines, smallest and cited from signal-in-signal-out) as the next migration. (b) **Migration executed** on `refactor/overlay-a-migrate-outcomes-over-vanity` — copied verbatim, added in-repo supersede-marker header, marked per-user source migrated, added MEMORY.md index entry newest-first, fixed markdownlint MD032 blank-line issues. PR #158 opened. (c) **Fire-history entry appended** on the #155 branch in the same tick — per the auto-loop-51 discipline correction that future Overlay A runs should log the fire same-day. Queue now 3 remaining candidates (deletions / external-signal / semiring-parameterized-zeta). (d) **Transient 500 on first push** — retried and succeeded (GitHub intermittent, not a real error). (e) **CronList + visibility**: `20c92390` minutely fire verified live. | PR #158 + fire-history + tick-history | Observation 1 — second migration went smoother than first; pattern repeats cleanly (copy / header / per-user marker / index / lint / fire-log). Future migrations should take ≤1 tick each on average. Observation 2 — MD032 bites repeatedly on memory files with "Why:" / "How to apply:" bullets. A linter-aware memory template might catch this at author-time; low-effort next target. Observation 3 — cross-branch bundling (migration on one branch + fire-log on another) works but is two-tick-minimum. When #155 merges, fire-history and migration live on the same branch (main) and future Overlay A runs can single-PR bundle. Observation 4 — the queue is a self-shrinking workload: each migration removes one entry from the composes-with dangling set; eventually zero per-user references remain for signal-in-signal-out, and its migration value is maximized. | | ||
| | 2026-04-23T16:09:00Z (autonomous-loop tick, auto-loop-53 — Amara courier-protocol doc + Overlay A #3 deletions) | opus-4-7 / session continuation | 20c92390 | Tick did one large Aaron-directive absorb and one continuing Overlay A migration. Tick actions: (a) **Aaron ferried Amara's courier-protocol writeup** mid-tick — diagnosis of ChatGPT conversation-branching as unreliable transport + explicit text-based courier protocol replacement. Amara explicitly recommended landing as `docs/protocols/cross-agent-communication.md`. (b) **Protocol doc landed** verbatim-preserved (signal-in-signal-out discipline) with factory integration notes as a distinct section. Co-authored commit crediting Amara. PR #160 opened. Composes with PR #154 decision-proxy ADR (identity layer vs transport layer distinction). Per-user `CURRENT-amara.md` §9 updated same-tick. (c) **Overlay A migration #3** completed before the Amara pivot — deletions-over-insertions discipline. PR #159 opened. Queue now 2 remaining candidates (external-signal-confirms-internal-insight / semiring-parameterized-zeta). Fire-history entry on this branch in the next tick. (d) **CronList + visibility**: `20c92390` minutely fire verified live. | PR #159 (Overlay A #3) + PR #160 (Amara courier protocol) | Observation 1 — Amara's protocol resolves the blocker that stopped PR #154's live testing. The decision-proxy ADR was authored against an expectation of ChatGPT branching; Amara diagnosed that the transport was broken. Her replacement protocol is the missing piece that lets #154 actually operate. Two PRs compose: #154 = who/what/authority; #160 = how-messages-move. Observation 2 — author-attribution and voice-preservation at landing matters more when the primary author is external. The commit body includes a `Co-Authored-By: Amara` line; the doc header names her as primary author; the factory integration notes are separated to avoid voice-blending (Amara's own rule, applied to the landing of her doc). Observation 3 — three Overlay A migrations in one day (PRs #157/#158/#159) plus the Amara protocol (#160) plus the earlier #155/#156/#154/etc. = substantial substrate-landing velocity. Worth noting that this is mostly *absorbing maintainer + external-maintainer directives*, not factory-independent speculation — outcome-valid work per the outcomes-over-vanity discipline. Observation 4 — the courier-protocol doc is the first `docs/protocols/` file; the directory is created this tick. Sets precedent that factory-meta protocols land there (vs research, aurora, decisions). | | ||
| | 2026-04-23T16:14:00Z (autonomous-loop tick, auto-loop-54 — Amara deep-research absorb + funding-priority calibration) | opus-4-7 / session continuation | 20c92390 | Tick absorbed Amara's Zeta-for-Aurora Deep Research Report (ferried via `drop/aurora-integration-deep-research-report.md`) and captured two new Aaron calibrations on external-maintainer priority handling. Tick actions: (a) **Deep research report landed** at `docs/aurora/2026-04-23-amara-deep-research-report.md` verbatim (PR #161). Report contains 7 major sections — executive summary, scope/archive, drift taxonomy, technical synthesis, ADR-style oracle rules with F# samples, bullshit-detector transfer pack, network-health/harm stack, Aurora brand note. Factory integration notes appended as a distinct voice-separated section per the courier protocol; composition with 8 existing in-repo substrates named; queued-not-scheduled next-moves listed. (b) **Funding-priority calibration absorbed**: Aaron *"she is not worryed about how to pay your bill i am remember that when she gives you prorities"* + clarification *"I've not asked her to worry about that and ecnomics of this whole project yet"*. Filed per-user feedback memory capturing the principal-agent distinction at two layers (Aaron funds → Aaron schedules; Amara researches → Amara's priorities are informative). Specific application: Amara's 8 oracle rules + bullshit-detector remain queued, not scheduled; Aurora stays #2 in the external priority stack (ServiceTitan + UI remains #1). (c) **Cross-agent courier protocol + Overlay A #3** carried over from the prior directive absorbed within the same tick — PRs #159 (deletions-over-insertions migration) and #160 (Amara's courier-protocol absorbed as `docs/protocols/cross-agent-communication.md`) opened earlier. (d) **CronList + visibility**: `20c92390` minutely fire verified live. | PR #159 (Overlay A #3) + PR #160 (courier protocol) + PR #161 (Amara deep research absorb) | Observation 1 — three load-bearing PRs from one tick is high velocity, but the underlying pattern was "absorb what's already authored, don't manufacture new substrate." Outcome-valid per the outcomes-over-vanity discipline (each PR resolves a concrete external directive). Observation 2 — the cost-of-operation calibration is the structural complement to the bootstrap-is-complete framing: Aaron bears material costs, so his priorities carry scheduling weight even though mission-ownership is now agent-side. "Internal priorities = agent; external priorities = Aaron; external non-funder priorities = informative" is the three-layer model. Observation 3 — Amara's protocol + report both emphasise repo-backed persistence and voice separation. This absorb exercised both: the report landed in-repo (not in a branching-UI that would be unreliable transport per her own protocol), and my integration notes are clearly factored as Kenji-voice distinct from Amara-voice. Self-application of the protocol on first use. Observation 4 — MD003 setext/atx collision from text-immediately-followed-by-`---` is a common absorb-time lint hit. Candidate linter-aware memory template (noted earlier) should include this alongside MD032 for proactive cleanup. | | ||
| | 2026-04-23T16:18:00Z (autonomous-loop tick, auto-loop-55 — scheduling-authority sharpening + PR #148 lint fix on funded-stack #1) | opus-4-7 / session continuation | 20c92390 | Tick absorbed Aaron's scheduling-authority sharpening and executed a funded-stack #1 move. Tick actions: (a) **Aaron scheduling directive**: *"Aaron owns scheduling against his funded external stack. anyting that's free Amara and you own scheduling, only involve me if I need to pay for something I have not already paid for."* Filed per-user feedback memory `feedback_free_work_amara_and_agent_schedule_paid_work_escalate_to_aaron_2026_04_23.md` — supersedes the earlier "Amara's priorities queued, Aaron schedules" framing with "free work = Amara + Kenji self-schedule; paid work = escalate to Aaron." Substantially expands agent action space within already-paid substrate. Updated `CURRENT-aaron.md` §2 same-tick to reflect the scheduling-authority sharpening alongside the existing priority stack. (b) **PR #148 markdownlint fix**: scheduled under the new rule because it's free work on funded-stack priority #1 (factory demo / why-factory-is-different explainer). MD022 heading-style violation — multi-line H2 confused the linter; joined into single-line title. Commit on `docs/why-the-factory-is-different` branch. (c) **Self-scheduling demonstration**: the tick's second move (PR #148 fix) is itself the first application of the new rule. Factory-demo surface is priority #1; the fix is free; no Aaron approval sought. Per auto-loop-51 discipline correction, would ideally bundle fire-log + tick-history; fire-log not applicable here (not an AutoDream overlay); tick-history bundled on this branch as usual. (d) **CronList + visibility**: `20c92390` minutely fire verified live. | PR #148 lint-fix commit + scheduling-authority memory + CURRENT-aaron §2 refresh | Observation 1 — scheduling-authority sharpening reframes last tick's "queued not scheduled" posture as too conservative. Amara's Aurora work, Overlay A migrations, factory-demo PRs, lint fixes — all free, all self-scheduled by agent judgment within the priority stack. Observation 2 — first concrete application of the new rule on a funded-stack #1 item within the same tick it landed. Good calibration signal: factory exercises new directives on first opportunity, not in followup ticks. Observation 3 — `CURRENT-aaron.md` §2 now reads as both priority-stack-authority and scheduling-authority. The two are distinct: Aaron owns the stack ordering; Amara+Kenji own scheduling of free work within that order. Memory surface captures the distinction. Observation 4 — markdownlint MD022 multi-line-heading is a different class than MD032 blanks-around-lists and MD003 atx-vs-setext. Three lint-class types now identified as recurring absorb-time hits; worth a memory-author-template that pre-applies all three disciplines. | |
| | 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) | | ||
| | 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) | |
| | 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) | |
| | 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) | | ||
| | 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) | |
|
|
||
| Per-fire ledger for FACTORY-HYGIENE row #53 (AutoDream cadenced | ||
| consolidation — upstream Anthropic Q1 2026 + factory overlays | ||
| A/B/C/D). Schema per row #44 (date / agent / output / link / |
| The cadence gate lives in a single cross-session marker at | ||
| the top of `MEMORY.md`: | ||
|
|
||
| ``` | ||
| [AutoDream last run: YYYY-MM-DD] | ||
| ``` |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 55c00f2017
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| | Date | Agent | Gate | Overlays fired | Findings | Next expected | | ||
| |---|---|---|---|---|---| |
There was a problem hiding this comment.
Include required audit fields in AutoDream fire-history table
The new fire-history table schema omits required accountability fields: row #44’s minimum schema includes a link to durable output, and row #53 additionally expects promotion-candidate tracking, but this header only captures Gate/Overlays/Findings/Next expected. Without those columns, future fires can’t be traced back to concrete artifacts or audited for Overlay C governance-promotion output, which weakens the cadence-history control this change is introducing.
Useful? React with 👍 / 👎.
Six Copilot findings addressed: - AutoDream research doc references now resolve on main (PR #155 merged between review and this fix) - multi-repo-refactor-shapes references clarified as "lands via PR #150" (still open) - Per-user-memory cross-references gained a **Per-user memory references** preamble before the Composes-with section naming the ~/.claude/projects/<slug>/memory/ location (same preamble pattern as PR #160 / #157 / #162) - "(auto-loop-39 directive)" generalized to "(the maintainer's self-use-DB directive, captured in per-user memory)" — auto-loop-N references are session-scoped and not in-repo-traceable - MD012 multi-blank cleanup after preamble insertion Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…/distribution/runtime) (#156) * research: soulfile staged absorption model (DSL-as-substrate + compile/distribution/runtime ingest) Reframes the soulfile abstraction per Aaron 2026-04-23: "soufils shoud just be the DSL/english we talk about and the can import/inherit/abosrb ... git repos at compile time, distribution time, or runtime, remember the local native story so those will need to be inlucded at soulfile compile time somewhere". Stages proposed: - Compile-time (packing): LFG factory-scope + Zeta tiny-bin- file DB (mandatory local-native fold-in) + pinned upstream content. - Distribution-time: envelope + per-substrate overlays + optional companion git-repo references + maintainer attestation. - Runtime: on-demand git-repos (two-layer authorization + stacking-risk gate) + live conversation content (promotes back to compile-time via AutoDream consolidation). Supersedes the earlier "three-formats" framing on the substrate-abstraction axis; preserves its signal-preservation discipline. Per-user feedback memory carries the full reframe + supersede marker. Deferred: SoulStore stage-aware contract, compile-time-ingest script, DB absorb-form schema, signed-distribution manifest. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * auto-loop-48: tick-history row — soulfile reframe absorbed; staged absorption model landed - Per-user feedback memory filed with supersede-marker on earlier soulfile-formats memory (substrate-abstraction axis retired; signal-preservation axis preserved) - CURRENT-aaron.md §10 updated same-tick to reflect the DSL-as- substrate framing - Research doc landed in LFG (PR #156) proposing three stage boundaries (compile-time / distribution-time / runtime) with mandatory Zeta tiny-bin-file DB fold-in at compile-time Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * auto-loop-49: soulfile DSL refined — restrictive English + Soulfile Runner project + linguistic-seed anchoring Two maintainer directives absorbed this tick: 1. DSL can be restrictive English (not F# DSL); the soulfile runner is its own project-under-construction; uses Zeta for advanced features; all small bins. 2. Soulfiles feel like natural English but with a restrictive form — only words with exact definitions (linguistic-seed pattern) are allowed. Changes: - Replaced "Representation candidate — Markdown + frontmatter" section with two sharper sections: "DSL — restrictive English anchored in the linguistic seed" and "The Soulfile Runner — its own project-under-construction". - Runner ⇒ Zeta (clean dependency edge; Zeta stays a library). - Vocabulary is the linguistic-seed glossary; new words earn glossary entries before entering the DSL. - Markdown preserved as structure layer; restrictive English is the execution layer. Per-user CURRENT-aaron.md §4 updated same-tick with Soulfile Runner as a named project. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * research(soulfile): address PR #156 review findings Six Copilot findings addressed: - AutoDream research doc references now resolve on main (PR #155 merged between review and this fix) - multi-repo-refactor-shapes references clarified as "lands via PR #150" (still open) - Per-user-memory cross-references gained a **Per-user memory references** preamble before the Composes-with section naming the ~/.claude/projects/<slug>/memory/ location (same preamble pattern as PR #160 / #157 / #162) - "(auto-loop-39 directive)" generalized to "(the maintainer's self-use-DB directive, captured in per-user memory)" — auto-loop-N references are session-scoped and not in-repo-traceable - MD012 multi-blank cleanup after preamble insertion Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
…naming filed PR #176 (age-classification skill BACKLOG) MERGED. 14 session PRs merged. PR #156 unblocked: 6 findings (AutoDream xref resolved by #155 merge, multi-repo-refactor-shapes "lands via #150", per-user memory preamble, auto-loop-39 generalization, MD012 cleanup). 6 threads resolved. Aaron delegated-naming directive: Factory = Frontier (his recall); Zeta / Aurora / ace / Seed stay; Showcase provisional for demos; Anima candidate for Soulfile Runner. Provisional until brand-clearance research fires. Filed per-user memory. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
PR #156 (soulfile staged absorption research) MERGED. 15 session PRs merged. Aaron name-ratification: "Love all the names now" — Frontier / Zeta / Aurora / Showcase / ace / Anima / Seed locked for internal-repo use. Per-user naming memory + CURRENT-aaron.md §4 updated. PR #164 (Overlay A #5 semiring-parameterized-zeta) unblocked: 7 findings — TECHNICAL CORRECTION (ZSet is signed-integer ring ℤ not counting semiring N; K-relations canonical provenance semiring); per-user xref preamble (fifth use); "BACKLOG row filed" relaxed to "candidate ... filing TBD". 7 threads resolved; rebased; pushed. Per-user-memory preamble pattern applied in 5 consecutive PRs — candidate memory-migration-checklist addition. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…ame latitude Aaron Zeta re-grounding: Zeta is not just DBSP library; it is the multi-algebra database (one-algebra-to-rule-them-all; pluggable DB algebras). Post-Frontier + post-demo+UI sequencing. Filed per-user memory composing with the in-repo semiring-parameterized-zeta memory (PR #164). Aaron Aurora rename latitude: authorized if brand-clearance confirms crowding. Per-user naming memory updated with candidate substitutes (Dawn / Solstice / Vesper / Nova / Nimbus / Halo — Halo directly captures the consent-first halo-substrate framing). Bounded tick; no PR. Advance-the-queue via substrate clarification. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…a, Frontier=Kenji) Aaron: "Aurora was Amara's choice and Frontier was Kenji's choice." Corrected per-user naming memory + CURRENT-aaron.md §4: Aurora named by Amara (rename authority = Amara-consult via courier protocol); Frontier named by Kenji (rename authority = Kenji-with-maintainer-sign-off). Same pattern as Jekyll-exclusion correction (auto-loop-79): Aaron catches collapsed agent-recommendation vs maintainer- directive; I preserve role structure. Composes with docs/CONTRIBUTOR-CONFLICTS.md (PR #174 merged) for future rename disagreements. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
| Per-fire ledger for FACTORY-HYGIENE row #53 (AutoDream cadenced | ||
| consolidation — upstream Anthropic Q1 2026 + factory overlays | ||
| A/B/C/D). Schema per row #44 (date / agent / output / link / | ||
| next-expected). |
…; attribution discipline absorbed Milestone: 100th autonomous-loop tick this session. Cron 20c92390 held across all 100; no re-arm needed. PR #164 (Overlay A #5 semiring-parameterized-zeta queue close) MERGED — 16 session PRs. PR #169 unblocked: 2 real bash bugs (set -e exit-code capture + SIGTERM tmp leak), 5 discipline fixes. Rebased on advanced main; pushed. Aaron attribution-on-everything + papers-publishing: filed cross-cutting discipline memory. Every named-agent contribution attributed to the agent; default-loop agent attributes explicitly when no persona is worn. Load-bearing for paper authorship going forward. Copilot-as-pair-reviewer caught TWO real P0 bash bugs — continued value. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…on + Amara deep review) Record-density tick: 4 major directive absorptions: 1. Craft's secret-not-secret strategic purpose (succession- engine for multi-generational human maintainers; teach-from-birth timelines authorized) 2. Yin/yang mutual-alignment (AI↔human; Craft is companion curriculum to ALIGNMENT.md; candidate 6th Common Sense 2.0 property deferred to Kenji) 3. Gap #4 bootstrap reference docs SKELETON LANDED (docs/bootstrap/ with README + quantum-anchor.md + ethical-anchor.md; PR #195; reviewer roster set) 4. Amara's deep operational-gap assessment absorbed via courier ferry; landed verbatim at docs/aurora/ 2026-04-23-amara-operational-gap-assessment.md (PR #196) Amara's strategic direction: "merge the operating model you already have before inventing a bigger one." Validates Otto's closure bias; sharpens Phase 1-4 priorities. Frontier readiness now 6 of 8 gaps advanced: - Closed: #3 / #6 / #7 / #8 - Substantially complete: #5 - Skeleton landed: #2 + #4 - Remaining: #1 multi-repo split (unblocked L), #2/#4 full content (multi-round) Phase 1 closure push begins next tick: drive #149/#154/ #155/#161/#170 to merge. Attribution: Otto (loop-agent PM hat). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…uns passed Aaron greenlight on Option D in-repo-first policy + cadenced scrubber. Actions: - submit-nuget reruns PASSED on #149/#154/#170 (GitHub transient confirmed) - PR #197: CURRENT-aaron.md + CURRENT-amara.md → in-repo - PR #198: machine-specific scrubber + FACTORY-HYGIENE row #55 (cadenced detect-only) Phase 1 closure push: 3 of 5 Amara-named PRs unblocked (rerun path). #155 needs deeper rebase. #161 likely clean. Amara's "mechanize failure modes" recommendation → scrubber is the first concrete instance. Attribution: Otto (loop-agent PM hat). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…ated-branch; #149/#154 armed) #197 merged at 20:44:41Z (CURRENT files now in-repo, Amara-findable). #198 rebased + pushed. Phase 1 acceleration: - #149 + #154 auto-merge armed (were NOT armed before; opened before auto-merge became session-standard) - #149/#154/#161/#170 updated-branch via gh pr update-branch — brought all 4 up to date with main - Cascading merge likely as CI completes + conversation- resolution satisfied #155 deferred (DIRTY + 30 threads; bigger effort next tick). Amara's "merge over invent" direction manifesting in concrete queue-drain. Attribution: Otto (loop-agent PM hat). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…eep scope diagnosed #198 (machine-specific scrubber) merged at 20:50:16Z. Amara's "mechanize failure modes" recommendation landed. #149 thread sweep: - 2 unresolved P2 Codex findings (cross-PR dangling-ref) - Both replied + resolved per queue-drain discipline - #149 now has clean merge path Thread-sweep scope across remaining Amara PRs: - #154: 6 threads (mixed dangling-ref + name-attribution) - #161: 11 threads - #170: 15 threads - #155: 30 threads (deferred) Total 62+ threads. Two disposition classes identified: 1. Cross-PR dangling-refs (queue-drain acknowledgment; self-heal as queue drains) 2. Name-attribution in ADRs/config (legitimate per named-agents-attribution memory; bot doesn't know the policy) Batch-sweep tool candidate queued: 60+ threads one-by- one is tick-exhausting; template-based batch resolver would drain in ~2 minutes + mechanize Amara's "failure modes" recommendation. Attribution: Otto (loop-agent PM hat). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…s drained mechanically Tool: tools/git/batch-resolve-pr-threads.sh (185 lines, PR #199). Classifies review threads into dangling-ref / name-attribution / unknown; template replies + resolve via GraphQL. Dry-run default; --apply flag for action. Unknown threads always left unresolved (conservative). Patched in-tick for empty-array bug + extended pattern matching (doesn't-exist-in-repo / point-references-to / direct-contributor-name-attribution / etc.). Applied results: - #154: 5 resolved + 1 unknown - #161: 2 resolved + 10 unknown (over 2 apply passes) - #170: 3 resolved + 15 unknown - #149: 2 manually resolved (Otto-29) + 9 new (bot re-reviewed post-update-branch — high-churn pattern) Total: 15 threads drained this session; 135 remaining across 5 PRs (including #155's 100). High-churn pattern: update-branch triggers bot re-review. Copilot-instructions.md tune could reduce noise (queued). Attribution: Otto (loop-agent PM hat). Mechanizes Amara's "failure modes" recommendation — 2nd instance after #198 machine-specific scrubber. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…log needs Aaron disposition Sampled unknowns across #170 + #161. Most are substantive P1 fact-check findings on content, not bot-noise: - .NET install path inaccurate - Z3 installation details incorrect - row #43 pointer-incorrect - coverage size inconsistent - bun.lock reference wrong - unresolved connector citation placeholders Zero outdated-unresolved threads across all 5 PRs (GitHub doesn't auto-mark outdated when cross-PR refs resolve; bots must re-review). Tool plateau reached: mechanizable classes (dangling-ref + name-attribution) are drained as far as regex can go. Remaining 135 need content fixes or explicit merge-with- defer disposition. Amara's "merge over invent" + Aaron's disposition guidance is load-bearing on the 135-thread backlog. Phase 1 closure push has plateaued until disposition decisions land. Honest-about-error discipline: Otto-25..30 drove Phase 1 via mechanization; Otto-31 surfaces that the underlying findings aren't mechanizable past ~15% of backlog. Session lesson: mechanization is force-multiplier for mechanizable work; doesn't transmute content-review into mechanical-drain. Next-tick candidates: (a) drive #155 rebase + tool-apply (b) content-fix on #170 inventory (c) re-prioritise to other Frontier-readiness gaps (d) Aaron disposition Attribution: Otto (loop-agent PM hat). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…196) * aurora: absorb Amara's operational gap assessment (2026-04-23 ferry) Amara delivered a comprehensive deep review via Aaron's courier ferry (pasted transcript). Verbatim preservation per courier protocol + Otto's absorption notes with extracted action items. Amara's one-sentence direction to Kenji: "merge the operating model you already have before inventing a bigger one." Affirmations: - Zeta's technical substrate real + algebra-first - Courier protocol correctly framed - Collaborator registry + direction-change shape right - Code quality + verification stack stronger than most Critical findings: - Main-vs-PR ambiguity is #1 operational drift - MEMORY-index-lag still manually enforced - Factory-vs-library coupling (Otto addressing via gap #5) - CONTRIBUTOR-CONFLICTS.md capture gap - BACKLOG.md write-hotspot (6761 lines) - Network layer doesn't exist yet Decision-proxy readiness: 2/3 designed, 1/3 implemented. Otto's response phases: 1. Closure push (drive #149/#154/#155/#161/#170 to merge; mechanize file-and-index atomicity; populate CONTRIBUTOR-CONFLICTS; restructure BACKLOG) 2. Decision-proxy operationalisation (invocation mechanics + durable audit surface) 3. Semantic network-health metrics + stochastic-contract framing 4. Aurora integration + current priorities in parallel Validates Otto-session's closure-over-novelty bias; sharpens next-phase priorities. Attribution: Amara (authored); Otto (absorb + verbatim preservation + action-items extraction); Kenji (synthesis queue: "merge over invent"). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * aurora: fix MD029 ordered-list-prefix — restart numbering per section Markdownlint MD029 flagged continued 6. 7. 8. etc. where it expects restart at 1. per ordered-list block. Python regex-based renumbering restores convention. Unblocks PR #196 markdownlint gate. Attribution: Otto (loop-agent PM hat). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Summary
docs/research/autodream-extension-and-cadence-2026-04-23.mddefines the factory-overlay policy on Anthropic's AutoMemory / AutoDream Q1 2026 features: extend-don't-replace, adopt upstream cadence verbatim (≥24h AND ≥5 sessions), four overlays composing with Anthropic's four phases.docs/FACTORY-HYGIENE.mdgains row Round 44 batch 3/6: hygiene audit automation (4 scripts, 6 history files, 11 new rows) #53 wiring the policy to round-cadenced enforcement; classified detection-only-justified per row factory-hygiene row 41 (orthogonal-axes audit) + fork-pr-workflow -1 gotcha #50; fires logged per row deps: Bump Meziantou.Analyzer from 3.0.48 to 3.0.50 #44.Why now
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. Also they have a cadence we shuld prbably respect and adaopt for this in our hygene."
The two rules this lands:
[AutoDream last run: YYYY-MM-DD]marker at top of MEMORY.md.The four factory overlays
memory/per the in-repo-preferred discipline, with pushback on bloat.docs/HARNESS-SURFACES.md.ALIGNMENT.mdclause.Test plan
Deferred
autodream-hygieneskill (skill-creator workflow)🤖 Generated with Claude Code