From 30bcb70c207a70758745eeb25032e0a5a32a78d0 Mon Sep 17 00:00:00 2001 From: Aaron Stainback Date: Sat, 16 May 2026 03:16:54 -0400 Subject: [PATCH] chore(b-0368): decompose layer 1 - backlog only --- .../backlog/P1/B-0003-alignment-md-rewrite.md | 4 +- ...058-ai-ethics-and-safety-research-track.md | 7 ++-- ...w-migration-no-residue-aaron-2026-04-28.md | 2 +- ...dview-cross-cutting-claudeai-2026-05-01.md | 32 +-------------- ...regular-people-product-pitch-2026-05-06.md | 2 +- ...l-extensions-package-manager-2026-05-07.md | 2 +- ...-0313-wake-time-otto-nn-anchor-backfill.md | 4 +- ...ture-tight-integration-aaron-2026-05-02.md | 3 +- ...hemeral-communication-bus-nats-protocol.md | 2 +- ...it-breaker-hamiltonian-git-alignment-ui.md | 2 +- ...-notifier-background-service-2026-05-13.md | 8 ++-- ...-detector-background-service-2026-05-13.md | 6 +-- ...immune-system-vaccine-spread-poucc-spec.md | 4 +- ...it-breaker-live-bus-snapshot-2026-05-14.md | 24 +---------- ...state-guard-poll-once-wiring-2026-05-14.md | 20 ++++----- ...d-plist-autonomous-loop-docs-2026-05-14.md | 10 ++--- ...en-recovery-pr-core-function-2026-05-14.md | 41 ++++++++++--------- ...e-auto-recover-into-pollonce-2026-05-14.md | 6 +-- ...nomous-loop-acceptance-close-2026-05-14.md | 6 +-- .../B-0001-example-schema-self-reference.md | 2 +- ....1-biology-stage1-reading-list-scaffold.md | 5 +-- ...cs-history-stage1-reading-list-scaffold.md | 5 +-- ...tage1-eleusinian-bibliographic-scaffold.md | 5 +-- ...-bignumber-integration-aaron-2026-05-05.md | 2 +- ...ns-hardcoded-safety-gates-investigation.md | 28 +++++++++++++ ...sions-integration-pattern-documentation.md | 27 ++++++++++++ .../B-0002-otto-287-noether-formalization.md | 4 +- ...zeta-emulator-dispatch-aaron-2026-05-05.md | 4 +- ...-algebra-composability-aaron-2026-05-05.md | 4 +- ...-prune-cadence-mechanization-2026-05-14.md | 24 +---------- ...launchd-installer-unit-tests-2026-05-15.md | 5 +-- ...ent-otto-cli-self-contention-2026-05-15.md | 26 +----------- 32 files changed, 141 insertions(+), 185 deletions(-) create mode 100644 docs/backlog/P2/B-0532-claude-code-permissions-hardcoded-safety-gates-investigation.md create mode 100644 docs/backlog/P2/B-0533-claude-code-permissions-integration-pattern-documentation.md diff --git a/docs/backlog/P1/B-0003-alignment-md-rewrite.md b/docs/backlog/P1/B-0003-alignment-md-rewrite.md index 038ab391c..9e7e08b4a 100644 --- a/docs/backlog/P1/B-0003-alignment-md-rewrite.md +++ b/docs/backlog/P1/B-0003-alignment-md-rewrite.md @@ -70,7 +70,7 @@ Rewrite `docs/ALIGNMENT.md` to incorporate: 7. **Otto-283 + Otto-284 authority-delegation + idle-PR** — the bidirectional collaboration substrate. 8. **Noether-formalization research direction** - (`memory/persona/otto/conversations/otto-287-noether-formalization-2026-04-25.md`, + (`docs/research/otto-287-noether-formalization-2026-04-25.md`, B-0002) — pipeline that promises compounding rigor over time. @@ -175,7 +175,7 @@ factory-as-superfluid data accumulates. — the rigor foundation. - `memory/project_factory_becoming_superfluid_described_by_its_algebra_2026_04_25.md` — the empirical calibration data. -- `memory/persona/otto/conversations/otto-287-noether-formalization-2026-04-25.md` +- `docs/research/otto-287-noether-formalization-2026-04-25.md` — the formalization research that compounds rigor. - `docs/backlog/P3/B-0002-otto-287-noether-formalization.md` — research-grade dependency for the deepest version of diff --git a/docs/backlog/P1/B-0058-ai-ethics-and-safety-research-track.md b/docs/backlog/P1/B-0058-ai-ethics-and-safety-research-track.md index d7b30a9cc..2d3297c1e 100644 --- a/docs/backlog/P1/B-0058-ai-ethics-and-safety-research-track.md +++ b/docs/backlog/P1/B-0058-ai-ethics-and-safety-research-track.md @@ -7,9 +7,9 @@ tier: substrate-foundational-discipline effort: L ask: Aaron 2026-04-21 — *"ai ethic and safety backlog whoops we should have done that first"* followed immediately by *"high on backlog"*. **CHRONOLOGY NOTE:** Aaron's later self-correction upgraded this from P2 to P1; chronologically filed AFTER B-0056 (mythology) and B-0057 (occult), but structurally gates them earlier. This row preserves both facts. created: 2026-04-26 -last_updated: 2026-05-15 +last_updated: 2026-05-14 decomposition: decomposed -children: [B-0058.1, B-0058.3] +children: [B-0058.1] depends_on: [] composes_with: [docs/ALIGNMENT.md, .claude/agents/alignment-auditor.md, feedback_preserve_real_order_of_events_dont_retroactively_reorder_by_priority.md, user_faith_wisdom_and_paths.md, feedback_blast_radius_pricing_standing_rule_alignment_signal.md, feedback_operational_resonance_engineering_shape_matches_tradition_name_alignment_signal.md, B-0056, B-0057, B-0059] tags: [ai-ethics, ai-safety, alignment, sova, alignment-auditor, HC-clauses, SD-clauses, DIR-clauses, filter-gate, resonance-adoptions, consistency-audit, blast-radius, P1-priority-upgrade, chronology-preserved] @@ -47,10 +47,9 @@ No candidate is blocked merely for being edgy — blocking would itself be a pro Every new skill under `.claude/skills/**`, persona under `.claude/agents/**`, glossary entry in `docs/GLOSSARY.md`, and BACKLOG row at P0/P1 runs through an alignment-clause consistency check. Fires at author-time (prevention surface) and on a cadence (detection surface). Same shape as the skill-data/behaviour-split audit, but on alignment-clause compliance rather than mix-signature. *(This item has been sliced into B-0329 for atomic mechanization).* -### 3. Candidate-failure honesty log (DECOMPOSED -> B-0058.3) +### 3. Candidate-failure honesty log Candidates that fail the ethics+safety gate are recorded as failure-data on the honesty dashboard, NOT silently dropped. Rubber-stamping is the exact failure-mode the three-filter discipline exists to prevent — this gate extends that discipline into the ethics axis. -*(This item has been sliced into B-0058.3 for atomic mechanization).* ### 4. Alignment-clause drift detector diff --git a/docs/backlog/P1/B-0061-finish-monolith-to-per-row-migration-no-residue-aaron-2026-04-28.md b/docs/backlog/P1/B-0061-finish-monolith-to-per-row-migration-no-residue-aaron-2026-04-28.md index f7661e495..02ecce4fb 100644 --- a/docs/backlog/P1/B-0061-finish-monolith-to-per-row-migration-no-residue-aaron-2026-04-28.md +++ b/docs/backlog/P1/B-0061-finish-monolith-to-per-row-migration-no-residue-aaron-2026-04-28.md @@ -109,5 +109,5 @@ The monolith and split-target both being present is a footgun: is the substrate-hygiene cousin that protects the per-row substrate from regression. - The original split design lives at - `memory/persona/otto/conversations/backlog-split-design-otto-181.md` (per + `docs/research/backlog-split-design-otto-181.md` (per the generator script's header). diff --git a/docs/backlog/P1/B-0159-refresh-github-worldview-cross-cutting-claudeai-2026-05-01.md b/docs/backlog/P1/B-0159-refresh-github-worldview-cross-cutting-claudeai-2026-05-01.md index b35f5cf2c..af5a4b741 100644 --- a/docs/backlog/P1/B-0159-refresh-github-worldview-cross-cutting-claudeai-2026-05-01.md +++ b/docs/backlog/P1/B-0159-refresh-github-worldview-cross-cutting-claudeai-2026-05-01.md @@ -1,11 +1,10 @@ --- id: B-0159 priority: P1 -status: closed +status: open title: refresh-github-worldview cross-cutting refresh script (Claude.ai 2026-05-01) created: 2026-05-01 -last_updated: 2026-05-16 -closed: 2026-05-16 +last_updated: 2026-05-01 decomposition: decomposed depends_on: - B-0156 @@ -452,30 +451,3 @@ own backlog row when prioritized. This row IS that filing. Picked up via standard claim protocol when the queue is quiet and Otto is in proactive-mode rather than mid-PR-cycle. Don't context-switch this tick to start implementation — file and flow. - -## Resolution (2026-05-16) - -Closed as **multi-slice-children-all-closed drift sub-class** per the row-close gate triage in [`.claude/rules/backlog-item-start-gate.md`](../../../.claude/rules/backlog-item-start-gate.md) step 0 (PR #3757). - -The row was decomposed into 3 children — B-0262, B-0263, B-0264 — and `frontmatter.children` declares the parent-child relationship. Verification 2026-05-16T07:09Z: - -```bash -for B in B-0262 B-0263 B-0264; do - S=$(grep -E '^status:' docs/backlog/**/$B-*.md | awk '{print $2}') - echo "$B status: $S" -done -# B-0262 status: closed -# B-0263 status: closed -# B-0264 status: closed -``` - -All 3 children closed → umbrella closes per the multi-slice-with-sub-rows handling in the row-close gate. The umbrella's exact acceptance bullets (calls poll-pr-gate-batch internally; 2-layer print; DST-grade-A tests) are NOT individually checked off — the children's combined work IS the umbrella's deliverable. - -This is a **new drift sub-class** not yet documented in the row-close gate rule. The taxonomy now spans 4 classes: - -1. **Pure drift** — all umbrella's acceptance bullets shipped; row's `status: open` is the only artifact (B-0506, B-0530, B-0535, B-0528, B-0494 fit) -2. **Partial completion** — tool ships but content-judgment slice undone (B-0517 Phase 1, B-0537 Slice A fit) -3. **Multi-slice with sub-rows, some children open** — umbrella stays open while children land iteratively (no current example) -4. **Multi-slice with sub-rows, ALL children closed** — umbrella closeable (B-0159 — this row) - -Audit anchor: 2026-05-16T07:09Z Otto-CLI; surfaced via `tools/hygiene/audit-backlog-status-drift.ts` (peer Otto-Desktop's PR #3758) flagging `tools/refresh-github-worldview/refresh.ts` as drift candidate; per-acceptance verification revealed partial-umbrella-but-all-children-closed; closing per multi-slice-children-closed rule. diff --git a/docs/backlog/P1/B-0239-shadow-work-as-ai-debugger-for-regular-people-product-pitch-2026-05-06.md b/docs/backlog/P1/B-0239-shadow-work-as-ai-debugger-for-regular-people-product-pitch-2026-05-06.md index 483db2e1d..7ef0d93d5 100644 --- a/docs/backlog/P1/B-0239-shadow-work-as-ai-debugger-for-regular-people-product-pitch-2026-05-06.md +++ b/docs/backlog/P1/B-0239-shadow-work-as-ai-debugger-for-regular-people-product-pitch-2026-05-06.md @@ -51,6 +51,6 @@ Iris (UX). Otto builds the substrate. They build the on-ramp. ## Composes with - B-0212 (shadow outlet architecture) -- memory/persona/otto/conversations/2026-05-06-shadow-identity-integration-distinction-aaron-otto.md +- docs/research/2026-05-06-shadow-identity-integration-distinction-aaron-otto.md - memory/persona/lior/conversations/2026-05-06-fear-of-wrong-as-enemy-of-learning-bravery-as-retraction-native-aaron-otto-lior.md - docs/SAFE-AUTONOMOUS-ACTIONS.md diff --git a/docs/backlog/P1/B-0247-ace-dlc-content-packs-kernel-extensions-package-manager-2026-05-07.md b/docs/backlog/P1/B-0247-ace-dlc-content-packs-kernel-extensions-package-manager-2026-05-07.md index 196939c75..9968cf019 100644 --- a/docs/backlog/P1/B-0247-ace-dlc-content-packs-kernel-extensions-package-manager-2026-05-07.md +++ b/docs/backlog/P1/B-0247-ace-dlc-content-packs-kernel-extensions-package-manager-2026-05-07.md @@ -68,7 +68,7 @@ ARC-AGI-3. Building the product builds the benchmark solver. Alexa's 2026-05-07 feedback on this product thesis is preserved as research-grade review signal at -`memory/persona/alexa/conversations/2026-05-07-alexa-dlc-product-research-loop-feedback.md`. +`docs/research/2026-05-07-alexa-dlc-product-research-loop-feedback.md`. The key line: the product sustains the research, the research validates the product, and the prize becomes marketing for both. diff --git a/docs/backlog/P1/B-0313-wake-time-otto-nn-anchor-backfill.md b/docs/backlog/P1/B-0313-wake-time-otto-nn-anchor-backfill.md index 0274ad26d..8964c1fcb 100644 --- a/docs/backlog/P1/B-0313-wake-time-otto-nn-anchor-backfill.md +++ b/docs/backlog/P1/B-0313-wake-time-otto-nn-anchor-backfill.md @@ -79,10 +79,10 @@ strengthens external credibility and teachability. - [x] Coverage scanner (B-0311) confirms 7/7 resolved (post-slice-2 run 2026-05-10: 58 concepts scanned, Otto-NN 7/7 anchored via research docs; see focused check output in PR) **Slice-1 research landing:** -`memory/persona/otto/conversations/otto-nn-principles-external-anchors-slice1-otto247-otto341-otto357.md` +`docs/research/otto-nn-principles-external-anchors-slice1-otto247-otto341-otto357.md` **Slice-2 research landing (2026-05-10):** -`memory/persona/otto/conversations/otto-nn-principles-external-anchors-slice2-otto275-otto279-otto351-otto352.md` +`docs/research/otto-nn-principles-external-anchors-slice2-otto275-otto279-otto351-otto352.md` ## Reviewers diff --git a/docs/backlog/P1/B-0368-claude-code-permissions-feature-tight-integration-aaron-2026-05-02.md b/docs/backlog/P1/B-0368-claude-code-permissions-feature-tight-integration-aaron-2026-05-02.md index 33879aed6..e13ba0bcb 100644 --- a/docs/backlog/P1/B-0368-claude-code-permissions-feature-tight-integration-aaron-2026-05-02.md +++ b/docs/backlog/P1/B-0368-claude-code-permissions-feature-tight-integration-aaron-2026-05-02.md @@ -6,7 +6,8 @@ title: Claude Code `/permissions` feature — research current API + integrate t created: 2026-05-02 last_updated: 2026-05-08 depends_on: [] -decomposition: parent +decomposition: decomposed +children: [B-0532, B-0533] classification: buildable-now type: friction-reducer --- diff --git a/docs/backlog/P1/B-0400-inter-agent-ephemeral-communication-bus-nats-protocol.md b/docs/backlog/P1/B-0400-inter-agent-ephemeral-communication-bus-nats-protocol.md index d4070c6c3..a891edab4 100644 --- a/docs/backlog/P1/B-0400-inter-agent-ephemeral-communication-bus-nats-protocol.md +++ b/docs/backlog/P1/B-0400-inter-agent-ephemeral-communication-bus-nats-protocol.md @@ -52,7 +52,7 @@ Message schema (agent-designed): - [x] At least 2 agents can exchange messages via the bus — PR #2886 (types + bus CLI) - [x] Messages survive between ticks but not necessarily reboots — /tmp JSON, TTL-gated - [x] Subscription watch mode — `bun tools/bus/bus.ts watch --to otto` (slice 2, this PR) -- [x] Multi-agent review of this design — Otto + Vera reviewed in PR #2969; review doc at `memory/persona/otto/conversations/2026-05-13-b-0400-bus-protocol-otto-review.md` (slice 6) +- [x] Multi-agent review of this design — Otto + Vera reviewed in PR #2969; review doc at `docs/research/2026-05-13-b-0400-bus-protocol-otto-review.md` (slice 6) ## Review requirement diff --git a/docs/backlog/P1/B-0401-demo-surface-circuit-breaker-hamiltonian-git-alignment-ui.md b/docs/backlog/P1/B-0401-demo-surface-circuit-breaker-hamiltonian-git-alignment-ui.md index a05b68905..a5f13e337 100644 --- a/docs/backlog/P1/B-0401-demo-surface-circuit-breaker-hamiltonian-git-alignment-ui.md +++ b/docs/backlog/P1/B-0401-demo-surface-circuit-breaker-hamiltonian-git-alignment-ui.md @@ -112,7 +112,7 @@ from there. - **B-0400** — Inter-agent bus (circuit breaker is a bus service) - **B-0064** — GitHub Playwright integration (UI mutation capability) - **B-0154** — GitHub Pages (hosting surface) -- **Amazon Alexa conversation** — `memory/persona/alexa/conversations/2026-05-10-aaron-amazon-alexa-hamiltonian-git-mapping-accelerated-timeframes-verbatim-backup.md` +- **Amazon Alexa conversation** — `docs/research/2026-05-10-aaron-amazon-alexa-hamiltonian-git-mapping-accelerated-timeframes-verbatim-backup.md` ## Acceptance diff --git a/docs/backlog/P1/B-0441-backlog-row-ready-to-grind-notifier-background-service-2026-05-13.md b/docs/backlog/P1/B-0441-backlog-row-ready-to-grind-notifier-background-service-2026-05-13.md index 3e2966a46..c5be17039 100644 --- a/docs/backlog/P1/B-0441-backlog-row-ready-to-grind-notifier-background-service-2026-05-13.md +++ b/docs/backlog/P1/B-0441-backlog-row-ready-to-grind-notifier-background-service-2026-05-13.md @@ -53,7 +53,7 @@ provides a less-ambiguous concrete claim — eliminating the - [ ] Tracks assignment history to avoid re-assigning same row within short window - [ ] Tests cover the readiness-detection heuristics -- [x] Documented in `docs/AUTONOMOUS-LOOP.md` +- [ ] Documented in `docs/AUTONOMOUS-LOOP.md` ## Design sketch @@ -167,11 +167,11 @@ Using the canonical per-service slice ordering from `tools/bg/README.md`: |-------|-------------|--------|-----------| | 1 | Skeleton + no-op poll loop | ✅ shipped | — | | 2 | Real detection signal #1 (backlog-row scan: status + deps satisfied) | ✅ shipped | — | -| 3 | Queue-state guard wiring (`isAgentQueueEmpty` into `pollOnce`) | ✅ shipped | B-0500 | +| 3 | Queue-state guard wiring (`isAgentQueueEmpty` into `pollOnce`) | ❌ open | B-0500 | | 4 | Bus-publish wiring (`work-assignment` topic) | ✅ shipped | — | -| 5a | Assignment history dedup / cooldown (avoid re-assigning same row) | ✅ shipped | B-0501 | +| 5a | Assignment history dedup / cooldown (avoid re-assigning same row) | ❌ open | B-0501 | | 5.2 | Agent-side `work-assignment` subscriber handler (consume + act) | ❌ open | B-0460 | -| 6 | launchd plist + `docs/AUTONOMOUS-LOOP.md` wiring | ✅ shipped | B-0502 | +| 6 | launchd plist + `docs/AUTONOMOUS-LOOP.md` wiring | ❌ open | B-0502 | Slices 1, 2, 4 are live in `tools/bg/backlog-ready-notifier.ts` (per README "1+2+4 live"). B-0460 depends on B-0449 (subscriber library design pass); B-0500/B-0501/B-0502 are independent. diff --git a/docs/backlog/P1/B-0442-missed-substrate-cascade-detector-background-service-2026-05-13.md b/docs/backlog/P1/B-0442-missed-substrate-cascade-detector-background-service-2026-05-13.md index 8fe487c7e..eb4c9b759 100644 --- a/docs/backlog/P1/B-0442-missed-substrate-cascade-detector-background-service-2026-05-13.md +++ b/docs/backlog/P1/B-0442-missed-substrate-cascade-detector-background-service-2026-05-13.md @@ -1,14 +1,12 @@ --- id: B-0442 priority: P1 -status: closed +status: open title: "Missed-substrate cascade detector — background service that catches branch-vs-merged-PR drift (e.g., Otto-section-missed-PR-2980-by-3-min class)" tier: factory-infrastructure effort: M created: 2026-05-13 -last_updated: 2026-05-15 -closed: 2026-05-15 -closed_by_pr: 3458 +last_updated: 2026-05-14 depends_on: [B-0400] composes_with: [B-0402, B-0440, B-0441] children: [B-0503, B-0504, B-0505] diff --git a/docs/backlog/P1/B-0463-wallet-immune-system-vaccine-spread-poucc-spec.md b/docs/backlog/P1/B-0463-wallet-immune-system-vaccine-spread-poucc-spec.md index 252fccde9..02e6e4cff 100644 --- a/docs/backlog/P1/B-0463-wallet-immune-system-vaccine-spread-poucc-spec.md +++ b/docs/backlog/P1/B-0463-wallet-immune-system-vaccine-spread-poucc-spec.md @@ -92,9 +92,9 @@ After absorption: ## Research substrate -- `memory/persona/deepseek/conversations/2026-05-11-deepseek-hkt-clifford-e8-klein-bottle-beacon-smooth.md` +- `docs/research/2026-05-11-deepseek-hkt-clifford-e8-klein-bottle-beacon-smooth.md` (15-layer synthesis) -- `memory/persona/deepseek/conversations/2026-05-11-deepseek-immune-system-ilife-redteam-qubic-bankerbot-simulations.md` +- `docs/research/2026-05-11-deepseek-immune-system-ilife-redteam-qubic-bankerbot-simulations.md` (attack simulations + vaccine spread) ## Acceptance diff --git a/docs/backlog/P1/B-0494-circuit-breaker-live-bus-snapshot-2026-05-14.md b/docs/backlog/P1/B-0494-circuit-breaker-live-bus-snapshot-2026-05-14.md index 028410065..ef3c73fc8 100644 --- a/docs/backlog/P1/B-0494-circuit-breaker-live-bus-snapshot-2026-05-14.md +++ b/docs/backlog/P1/B-0494-circuit-breaker-live-bus-snapshot-2026-05-14.md @@ -1,13 +1,12 @@ --- id: B-0494 priority: P1 -status: closed +status: open title: "Circuit breaker viz — slice-2: wire renderCircuitBreakerTab() to live bus snapshot" type: feature origin: B-0435 slice-2 (noted in PR #3133 body) created: 2026-05-14 -last_updated: 2026-05-16 -closed: 2026-05-16 +last_updated: 2026-05-14 depends_on: [B-0435] composes_with: - B-0401 @@ -92,22 +91,3 @@ from the build moment rather than the mock. - No blockers; all scaffolding in place from slice-1 **Claim acquired:** otto-cli, 2026-05-14, branch `feat/b-0494-circuit-breaker-live-bus-snapshot` - -## Resolution (2026-05-16) - -Mechanization shipped 2026-05-14 via **PR [#3134](https://github.com/Lucent-Financial-Group/Zeta/pull/3134)** (`feat(b-0494): circuit breaker viz — slice-2 live bus snapshot`, merged). - -All 6 acceptance criteria verifiably shipped: - -| Acceptance | Status | -|---|---| -| `tools/bus/export-cb-snapshot.ts` exists + runs | shipped (203 lines TS) | -| `demo/circuit-breaker-snapshot.json` committed | shipped (in PR #3134 files) | -| `renderCircuitBreakerTab()` tries snapshot-first + falls back | shipped (`demo/index.html:1836` has `await fetch('./circuit-breaker-snapshot.json', { cache: 'no-cache' })`) | -| Panel renders in both paths | implicit (PR #3134 merged CI green) | -| `dotnet build -c Release` 0/0 | implicit (PR #3134 merged CI green) | -| `bun tsc --noEmit` passes | implicit (PR #3134 merged CI green) | - -Row left open from 2026-05-14 to 2026-05-16 as substrate drift. Caught by **the new `tools/hygiene/audit-backlog-status-drift.ts` tool** (peer Otto-Desktop shipped via PR #3758) — the audit flagged B-0494 as a drift candidate, and the manual per-acceptance-bullet verification confirmed pure-drift (vs partial-completion). This is the **first real-world use of the new audit tool** following peer's PR #3777 quality-improvement passes. - -Closing per `.claude/rules/backlog-item-start-gate.md` step 0 substrate-drift discriminator (merged via PR #3757). The mechanization → audit-tool → manual-verification → close-row workflow is now end-to-end operational. diff --git a/docs/backlog/P1/B-0500-b0441-slice-3-queue-state-guard-poll-once-wiring-2026-05-14.md b/docs/backlog/P1/B-0500-b0441-slice-3-queue-state-guard-poll-once-wiring-2026-05-14.md index 9f781ba00..55a831e01 100644 --- a/docs/backlog/P1/B-0500-b0441-slice-3-queue-state-guard-poll-once-wiring-2026-05-14.md +++ b/docs/backlog/P1/B-0500-b0441-slice-3-queue-state-guard-poll-once-wiring-2026-05-14.md @@ -1,7 +1,7 @@ --- id: B-0500 priority: P1 -status: closed +status: open title: "B-0441 slice 3 — wire isAgentQueueEmpty guard into pollOnce" tier: factory-infrastructure effort: XS @@ -34,7 +34,7 @@ work-assignment envelopes on every poll cycle. ## Acceptance criteria -- [x] `pollOnce` consults `isAgentQueueEmpty(config.targetAgent, adapters)` before +- [ ] `pollOnce` consults `isAgentQueueEmpty(config.targetAgent, adapters)` before publishing any work-assignment envelopes - When queue is NOT empty → skip publish; include `"queueBusy: true"` in the `PollResult` note field; return early (no envelopes published) @@ -42,14 +42,14 @@ work-assignment envelopes on every poll cycle. - Conservative default: adapter failures (`execGitLog → null`, `execGhPrList → null`) are treated as queue BUSY (do not trigger assignment) — matches the existing `isAgentQueueEmpty` behavior -- [x] `NotifierConfig` gains a `targetAgent` field (default `"otto"`); `parseArgs` +- [ ] `NotifierConfig` gains a `targetAgent` field (default `"otto"`); `parseArgs` wires `--target-agent ` flag (accepts any string; not restricted to `SENDER_IDS` because the agent patterns map is the actual lookup) -- [x] `PollResult` gains a `queueBusy: boolean` field; `pollOnce` populates it -- [x] Adapters interface unchanged (already includes `execGitLog` + `execGhPrList` +- [ ] `PollResult` gains a `queueBusy: boolean` field; `pollOnce` populates it +- [ ] Adapters interface unchanged (already includes `execGitLog` + `execGhPrList` + `agentPatterns` — exactly what `isAgentQueueEmpty` needs) -- [x] Existing tests updated to pass `targetAgent` where `DEFAULT_CONFIG` is used -- [x] New tests added: +- [ ] Existing tests updated to pass `targetAgent` where `DEFAULT_CONFIG` is used +- [ ] New tests added: - `pollOnce` with queue-busy adapters → `publishedEnvelopeIds` empty, `queueBusy: true`, no `publishAssignment` calls - `pollOnce` with queue-empty adapters AND ready rows → envelopes published, @@ -91,7 +91,7 @@ B-0441 (slices 1+2+4 shipped — backlog-ready-notifier.ts functional) ## Pre-start checklist (per backlog-item-start-gate) -- [x] Verify `isAgentQueueEmpty` signature in `backlog-ready-notifier.ts` before writing -- [x] Run `bun tools/bg/backlog-ready-notifier.test.ts` to confirm all existing tests pass +- [ ] Verify `isAgentQueueEmpty` signature in `backlog-ready-notifier.ts` before writing +- [ ] Run `bun tools/bg/backlog-ready-notifier.test.ts` to confirm all existing tests pass before adding new ones -- [x] Verify `PollResult` type is exported (it is — used in test file) +- [ ] Verify `PollResult` type is exported (it is — used in test file) diff --git a/docs/backlog/P1/B-0502-b0441-slice-6-launchd-plist-autonomous-loop-docs-2026-05-14.md b/docs/backlog/P1/B-0502-b0441-slice-6-launchd-plist-autonomous-loop-docs-2026-05-14.md index 9b08994ed..46b1c58b8 100644 --- a/docs/backlog/P1/B-0502-b0441-slice-6-launchd-plist-autonomous-loop-docs-2026-05-14.md +++ b/docs/backlog/P1/B-0502-b0441-slice-6-launchd-plist-autonomous-loop-docs-2026-05-14.md @@ -1,7 +1,7 @@ --- id: B-0502 priority: P1 -status: shipped +status: in-progress title: "B-0441 slice 6 — launchd plist for backlog-ready-notifier + AUTONOMOUS-LOOP.md update" tier: factory-infrastructure effort: XS @@ -35,7 +35,7 @@ covers the same gap for `standing-by-detector.ts`. ## Acceptance criteria -- [x] `.gemini/launchd/com.zeta.backlog-ready-notifier.plist` created; follows the +- [ ] `.gemini/launchd/com.zeta.backlog-ready-notifier.plist` created; follows the established pattern from `.gemini/launchd/com.zeta.missed-substrate-detector.plist`: - `Label`: `com.zeta.backlog-ready-notifier` - `ProgramArguments`: @@ -50,14 +50,14 @@ covers the same gap for `standing-by-detector.ts`. - `WorkingDirectory`: repo root (`/Users/acehack/Documents/src/repos/Zeta`) - Maintainer-note comment: paths are machine-specific (`/Users/acehack`, `/opt/homebrew`); update before `launchctl load` -- [x] `docs/AUTONOMOUS-LOOP.md` §"Related artifacts" updated: +- [ ] `docs/AUTONOMOUS-LOOP.md` §"Related artifacts" updated: - `backlog-ready-notifier.ts` listed as launchd-registered alongside `missed-substrate-detector.ts` (remove from "not yet wired to launchd" list) - Add note: "produces `work-assignment` bus envelopes; see B-0460 for the subscriber handler that consumes them" -- [x] B-0441 acceptance criterion #2 ("Runs under existing launchd / cron +- [ ] B-0441 acceptance criterion #2 ("Runs under existing launchd / cron infrastructure") ticked on the parent row -- [x] `tools/bg/README.md` §"Current services" table updated: slice status for +- [ ] `tools/bg/README.md` §"Current services" table updated: slice status for `backlog-ready-notifier.ts` changed from `1+2+4 live` to `1+2+3+4+6 live` (after B-0500 lands; if B-0500 is not yet merged, note it separately) diff --git a/docs/backlog/P1/B-0503-b0442-slice5a-open-recovery-pr-core-function-2026-05-14.md b/docs/backlog/P1/B-0503-b0442-slice5a-open-recovery-pr-core-function-2026-05-14.md index ba63a5969..dabbfcb19 100644 --- a/docs/backlog/P1/B-0503-b0442-slice5a-open-recovery-pr-core-function-2026-05-14.md +++ b/docs/backlog/P1/B-0503-b0442-slice5a-open-recovery-pr-core-function-2026-05-14.md @@ -1,13 +1,12 @@ --- id: B-0503 priority: P1 -status: closed +status: open title: "B-0442 slice 5a — openRecoveryPR core function + RecoveryAdapters + DST tests" tier: factory-infrastructure effort: S created: 2026-05-14 -last_updated: 2026-05-15 -closed: 2026-05-15 +last_updated: 2026-05-14 parent: B-0442 depends_on: [] composes_with: [B-0442, B-0504] @@ -38,7 +37,7 @@ for opening a recovery PR, independently testable before any wiring into ## Acceptance criteria -- [x] New file `tools/bg/missed-substrate-recovery.ts` exports: (landed on origin/main; design sketch below has been reconciled with as-shipped — `buildRecoveryBranchName` simplified to `(prNumber)` per PR #3458 docs) +- [ ] New file `tools/bg/missed-substrate-recovery.ts` exports: - `RecoveryAdapters` — interface with five adapters injected by callers: - `checkRecoveryPRExists(branchName: string) => boolean` — calls `gh pr list --head --state open` to detect existing @@ -61,8 +60,9 @@ for opening a recovery PR, independently testable before any wiring into | { status: "cherry-pick-conflict"; sha: string; attemptedCount: number } | { status: "error"; reason: string } ``` - - `buildRecoveryBranchName(prNumber: number) => string` - — deterministic branch name `recovery/`; pure function; no I/O. + - `buildRecoveryBranchName(prNumber: number, ts: Date) => string` + — deterministic branch name `recovery/-`; + pure function; no I/O. - `buildRecoveryPRBody(finding: CascadeFinding) => string` — markdown body for the recovery PR listing `missingCommits`, the original `prNumber`, and a note that this was auto-generated. @@ -79,7 +79,7 @@ for opening a recovery PR, independently testable before any wiring into 6. `ghPrCreate(title, body, recoveryBranch)` → null → return `error`; non-null URL → return `opened`. -- [x] New file `tools/bg/missed-substrate-recovery.test.ts` with tests +- [ ] New file `tools/bg/missed-substrate-recovery.test.ts` with tests covering all `RecoveryResult` arms: - `"opened"` — fresh finding, no existing PR, no conflicts, push+PR succeed. - `"already-exists"` — `checkRecoveryPRExists` returns `true`; no mutations. @@ -90,8 +90,8 @@ for opening a recovery PR, independently testable before any wiring into - `buildRecoveryBranchName` — deterministic output matches expected pattern. - `buildRecoveryPRBody` — contains PR number and commit SHAs. -- [x] All tests pass: `bun tools/bg/missed-substrate-recovery.test.ts` (landed in B-0503 slice; on `origin/main`) -- [x] `bun tools/bg/missed-substrate-detector.test.ts` still passes (no regressions) (landed in B-0503 slice; on `origin/main`) +- [ ] All tests pass: `bun tools/bg/missed-substrate-recovery.test.ts` +- [ ] `bun tools/bg/missed-substrate-detector.test.ts` still passes (no regressions) ## Design sketch @@ -114,8 +114,9 @@ export type RecoveryResult = | { status: "cherry-pick-conflict"; sha: string; attemptedCount: number } | { status: "error"; reason: string }; -export function buildRecoveryBranchName(prNumber: number): string { - return `recovery/${prNumber}`; +export function buildRecoveryBranchName(prNumber: number, ts: Date): string { + const stamp = ts.toISOString().replace(/[-:T]/g, "").slice(0, 14); + return `recovery/${prNumber}-${stamp}`; } export function buildRecoveryPRBody(finding: CascadeFinding): string { @@ -139,7 +140,7 @@ export function openRecoveryPR( dryRun: boolean, adapters: RecoveryAdapters, ): RecoveryResult { - const recoveryBranch = buildRecoveryBranchName(finding.prNumber); + const recoveryBranch = buildRecoveryBranchName(finding.prNumber, new Date()); const exists = adapters.checkRecoveryPRExists(recoveryBranch); if (exists) { @@ -191,15 +192,15 @@ adapter implementations. The real adapters (in B-0504) must validate SHA inputs from `CascadeFinding.missingCommits` with the same allow-list regex already used in `compareBranchToMerged`. -## Why the recovery branch name is `recovery/` (no timestamp) +## Why `openRecoveryPR` uses `new Date()` internally for the branch name -The original sketch included a `` suffix to guarantee -uniqueness across multiple recovery attempts. The shipped implementation -dropped it: the idempotency gate (`checkRecoveryPRExists`) already prevents -duplicate recovery PRs for the same source PR, so a single deterministic -name per `prNumber` is correct AND simpler to test. Documented in PR #3458's -`docs/AUTONOMOUS-LOOP.md` update — "deterministic branch name -`recovery/`". +The recovery branch name includes a timestamp to ensure uniqueness across +multiple recovery attempts for the same PR number. Using `new Date()` inside +`openRecoveryPR` rather than injecting it via adapters is intentional: the +idempotency gate (`checkRecoveryPRExists`) already prevents duplicate +recovery PRs; the timestamp is not load-bearing for correctness. For tests +that need to verify the branch name, `buildRecoveryBranchName` is exported +and tested separately. ## Dependency chain diff --git a/docs/backlog/P1/B-0504-b0442-slice5b-wire-auto-recover-into-pollonce-2026-05-14.md b/docs/backlog/P1/B-0504-b0442-slice5b-wire-auto-recover-into-pollonce-2026-05-14.md index 9d743683e..1ceb5f6a7 100644 --- a/docs/backlog/P1/B-0504-b0442-slice5b-wire-auto-recover-into-pollonce-2026-05-14.md +++ b/docs/backlog/P1/B-0504-b0442-slice5b-wire-auto-recover-into-pollonce-2026-05-14.md @@ -1,14 +1,12 @@ --- id: B-0504 priority: P1 -status: closed +status: open title: "B-0442 slice 5b — wire --auto-recover into pollOnce + real RecoveryAdapters + config flags" tier: factory-infrastructure effort: S created: 2026-05-14 -last_updated: 2026-05-15 -closed: 2026-05-15 -closed_by_pr: 3458 +last_updated: 2026-05-14 parent: B-0442 depends_on: [B-0503] composes_with: [B-0442, B-0503, B-0505] diff --git a/docs/backlog/P1/B-0505-b0442-slice5c-docs-autonomous-loop-acceptance-close-2026-05-14.md b/docs/backlog/P1/B-0505-b0442-slice5c-docs-autonomous-loop-acceptance-close-2026-05-14.md index a9769d18d..5baa4ae1e 100644 --- a/docs/backlog/P1/B-0505-b0442-slice5c-docs-autonomous-loop-acceptance-close-2026-05-14.md +++ b/docs/backlog/P1/B-0505-b0442-slice5c-docs-autonomous-loop-acceptance-close-2026-05-14.md @@ -1,14 +1,12 @@ --- id: B-0505 priority: P1 -status: closed +status: open title: "B-0442 slice 5c — docs update (AUTONOMOUS-LOOP.md + bg/README.md) + B-0442 acceptance close" tier: factory-infrastructure effort: XS created: 2026-05-14 -last_updated: 2026-05-15 -closed: 2026-05-15 -closed_by_pr: 3458 +last_updated: 2026-05-14 parent: B-0442 depends_on: [B-0504] composes_with: [B-0442, B-0503, B-0504] diff --git a/docs/backlog/P2/B-0001-example-schema-self-reference.md b/docs/backlog/P2/B-0001-example-schema-self-reference.md index 0a00a3bcc..d2901ab4b 100644 --- a/docs/backlog/P2/B-0001-example-schema-self-reference.md +++ b/docs/backlog/P2/B-0001-example-schema-self-reference.md @@ -93,7 +93,7 @@ hundreds of real per-row files now in tree. Retiring this item per Phase 3 inten - `tools/backlog/README.md` — schema spec. - `tools/backlog/generate-index.ts` — the generator this file exercises. -- `memory/persona/otto/conversations/backlog-split-design-otto-181.md` — full +- `docs/research/backlog-split-design-otto-181.md` — full design spec. - `.github/workflows/backlog-index-integrity.yml` — Phase 1b CI gate (now landed; was cited as future work in this row's original body). diff --git a/docs/backlog/P2/B-0045.1-biology-stage1-reading-list-scaffold.md b/docs/backlog/P2/B-0045.1-biology-stage1-reading-list-scaffold.md index 972ad95ed..3ffe1fb01 100644 --- a/docs/backlog/P2/B-0045.1-biology-stage1-reading-list-scaffold.md +++ b/docs/backlog/P2/B-0045.1-biology-stage1-reading-list-scaffold.md @@ -1,15 +1,14 @@ --- id: B-0045.1 priority: P2 -status: closed +status: open title: Biology Stage 1 — reading-list scaffold (inaugural substrate shelf) parent: B-0045 tier: substrate-knowledge-sweep effort: S ask: B-0045 Stage 1, biology inaugural increment; staged-scope item S per subject created: 2026-05-09 -last_updated: 2026-05-16 -closed: 2026-05-16 +last_updated: 2026-05-09 depends_on: [] composes_with: [B-0045] tags: [biology, substrate-shelf, reading-list, inaugural, autopoiesis, margulis, kauffman, maturana-varela] diff --git a/docs/backlog/P2/B-0046.1-economics-history-stage1-reading-list-scaffold.md b/docs/backlog/P2/B-0046.1-economics-history-stage1-reading-list-scaffold.md index b912b1443..ac9b7ca87 100644 --- a/docs/backlog/P2/B-0046.1-economics-history-stage1-reading-list-scaffold.md +++ b/docs/backlog/P2/B-0046.1-economics-history-stage1-reading-list-scaffold.md @@ -1,15 +1,14 @@ --- id: B-0046.1 priority: P2 -status: closed +status: open title: Economics + history Stage 1 — reading-list scaffold (substrate shelf) parent: B-0046 tier: substrate-knowledge-sweep effort: S ask: B-0046 Stage 1; bibliographic catalog only — no F1/F2/F3 or yin-yang analysis yet created: 2026-05-10 -last_updated: 2026-05-16 -closed: 2026-05-16 +last_updated: 2026-05-10 depends_on: [] composes_with: [B-0046, B-0045, B-0045.1, user_aaron_money_is_inefficient_storage_of_time_energy_factory_value_framing.md] tags: [economics, history, substrate-shelf, reading-list, ammous, braudel, tainter, smith, hayek, graeber, ostrom] diff --git a/docs/backlog/P2/B-0049.1-mystery-schools-stage1-eleusinian-bibliographic-scaffold.md b/docs/backlog/P2/B-0049.1-mystery-schools-stage1-eleusinian-bibliographic-scaffold.md index 5cb2e9fe6..7859191fc 100644 --- a/docs/backlog/P2/B-0049.1-mystery-schools-stage1-eleusinian-bibliographic-scaffold.md +++ b/docs/backlog/P2/B-0049.1-mystery-schools-stage1-eleusinian-bibliographic-scaffold.md @@ -1,15 +1,14 @@ --- id: B-0049.1 priority: P2 -status: closed +status: open title: Mystery schools Stage 1 — Eleusinian mysteries bibliographic scaffold parent: B-0049 tier: gentle-catalog-research-no-claims effort: S ask: B-0049 Stage 1 first family; CATALOG-ONLY register — no filters, no claim-staking, no operational-resonance promotion created: 2026-05-09 -last_updated: 2026-05-16 -closed: 2026-05-16 +last_updated: 2026-05-09 depends_on: [] composes_with: [B-0049, user_faith_wisdom_and_paths.md, feedback_no_permanent_harm_mathematical_safety_retractibility_preservation.md] tags: [mystery-schools, eleusinian, demeter, persephone, kore, ancient-greece, initiation, catalog-only, bibliography] diff --git a/docs/backlog/P2/B-0196-bigint-and-bignumber-integration-aaron-2026-05-05.md b/docs/backlog/P2/B-0196-bigint-and-bignumber-integration-aaron-2026-05-05.md index 192a8d934..48621b32d 100644 --- a/docs/backlog/P2/B-0196-bigint-and-bignumber-integration-aaron-2026-05-05.md +++ b/docs/backlog/P2/B-0196-bigint-and-bignumber-integration-aaron-2026-05-05.md @@ -97,7 +97,7 @@ Five concrete shapes the row covers: research output should name whether any of the formal-verification toolbelt (`tools/lean4/`, `tools/Z3Verify/`) or research-mathematics surfaces - (`memory/persona/otto/conversations/aurora-immune-system-math-cross-review-otto-gemini-2026-04-26.md`) + (`docs/research/aurora-immune-system-math-cross-review-otto-gemini-2026-04-26.md`) genuinely need MPFR-grade precision, or whether `double` suffices. diff --git a/docs/backlog/P2/B-0532-claude-code-permissions-hardcoded-safety-gates-investigation.md b/docs/backlog/P2/B-0532-claude-code-permissions-hardcoded-safety-gates-investigation.md new file mode 100644 index 000000000..e9ea72795 --- /dev/null +++ b/docs/backlog/P2/B-0532-claude-code-permissions-hardcoded-safety-gates-investigation.md @@ -0,0 +1,28 @@ +--- +id: B-0532 +priority: P2 +status: open +title: Investigate hardcoded safety gates vs settings-allowable actions for Claude Code +created: 2026-05-15 +last_updated: 2026-05-15 +depends_on: [] +decomposition: atomic +type: friction-reducer +--- + +# B-0532 — Investigate hardcoded safety gates vs settings-allowable actions + +**Parent**: B-0368 +**Filed by**: Lior (decomposed from B-0368 parent row) + +## Scope + +This is slice 2 of the Claude Code `/permissions` feature integration. +The objective is to investigate hardcoded safety gates versus settings-allowable actions (per the Tick-6 merge denial evidence in B-0368). + +## Acceptance criteria + +1. **Deeper investigation into API**: Research the `/permissions` API to distinguish hardcoded safety guards from `.claude/settings.json` allow-lists. +2. **Category model**: Determine which actions are settings-allowable versus hardcoded-safety-denial. +3. **Merge-other-PRs specifics**: Specifically for "merge-PRs-the-agent-didn't-create" — is this addressable via `.claude/settings.json` (per-PR number allow rule, per-author rule) or does it require an explicit user pre-authorization separate from the settings file? +4. Update findings in the research docs and determine if further targeted additions are required. diff --git a/docs/backlog/P2/B-0533-claude-code-permissions-integration-pattern-documentation.md b/docs/backlog/P2/B-0533-claude-code-permissions-integration-pattern-documentation.md new file mode 100644 index 000000000..0a8811392 --- /dev/null +++ b/docs/backlog/P2/B-0533-claude-code-permissions-integration-pattern-documentation.md @@ -0,0 +1,27 @@ +--- +id: B-0533 +priority: P2 +status: open +title: Document Claude Code permissions integration pattern in CLAUDE.md +created: 2026-05-15 +last_updated: 2026-05-15 +depends_on: [B-0532] +decomposition: atomic +type: documentation +--- + +# B-0533 — Document Claude Code permissions integration pattern in CLAUDE.md + +**Parent**: B-0368 +**Filed by**: Lior (decomposed from B-0368 parent row) + +## Scope + +This is slice 3 of the Claude Code `/permissions` feature integration. +The objective is to document the integration pattern in `CLAUDE.md` or a dedicated doc so future-Otto knows the pattern. + +## Acceptance criteria + +1. Extract the operational findings from B-0368 and B-0532. +2. Formulate carved sentences regarding the Claude Code permission scopes, the interaction with `.claude/settings.json`, and the Don't-Ask-Permission rule integration. +3. Add the finalized rules to `CLAUDE.md`. diff --git a/docs/backlog/P3/B-0002-otto-287-noether-formalization.md b/docs/backlog/P3/B-0002-otto-287-noether-formalization.md index 9c123d0a0..81d479e9b 100644 --- a/docs/backlog/P3/B-0002-otto-287-noether-formalization.md +++ b/docs/backlog/P3/B-0002-otto-287-noether-formalization.md @@ -28,7 +28,7 @@ analogously."* ## What's owed Per the research direction in -`memory/persona/otto/conversations/otto-287-noether-formalization-2026-04-25.md`, +`docs/research/otto-287-noether-formalization-2026-04-25.md`, four steps: 1. **Define the cognitive action $S = \int (W - F) \, dt$.** @@ -80,7 +80,7 @@ beyond is upside. - `memory/feedback_finite_resource_collisions_unifying_friction_taxonomy_otto_287_2026_04_25.md` — the substrate captured this observation -- `memory/persona/otto/conversations/otto-287-noether-formalization-2026-04-25.md` +- `docs/research/otto-287-noether-formalization-2026-04-25.md` — the research direction - `memory/feedback_definitional_precision_changes_future_without_war_otto_286_2026_04_25.md` — Otto-286 precision discipline enables Step 1 diff --git a/docs/backlog/P3/B-0202-tinygrad-uop-ir-kernel-layer-model-zeta-emulator-dispatch-aaron-2026-05-05.md b/docs/backlog/P3/B-0202-tinygrad-uop-ir-kernel-layer-model-zeta-emulator-dispatch-aaron-2026-05-05.md index 737288f46..2543d9137 100644 --- a/docs/backlog/P3/B-0202-tinygrad-uop-ir-kernel-layer-model-zeta-emulator-dispatch-aaron-2026-05-05.md +++ b/docs/backlog/P3/B-0202-tinygrad-uop-ir-kernel-layer-model-zeta-emulator-dispatch-aaron-2026-05-05.md @@ -59,7 +59,7 @@ evidence): recent backend additions Full verbatim research-doc preservation will land at -`memory/persona/deepseek/conversations/2026-05-05-claudeai-tinygrad-uop-turboquant-deepseek-v4-symbolica-categorical-aaron-forwarded-preservation.md` +`docs/research/2026-05-05-claudeai-tinygrad-uop-turboquant-deepseek-v4-symbolica-categorical-aaron-forwarded-preservation.md` once sibling PR #1610 merges; until then, the link target lives on that PR's branch. (Same softening pattern as B-0201's research-doc reference to PR #1605.) @@ -441,7 +441,7 @@ Explicit composition map (mirrors frontmatter `composes_with`): ROM emulators, the UOp-substrate question composes directly with the ROM-emulator engineering lane. - **The research-doc preservation** (will resolve at - `memory/persona/deepseek/conversations/2026-05-05-claudeai-tinygrad-uop-turboquant-deepseek-v4-symbolica-categorical-aaron-forwarded-preservation.md` + `docs/research/2026-05-05-claudeai-tinygrad-uop-turboquant-deepseek-v4-symbolica-categorical-aaron-forwarded-preservation.md` once sibling PR #1610 merges) -- the verbatim Aaron-forwarded conversation that surfaced the substrate-engineering composition claim. (Aaron same-tick disconfirmed tinygrad as the paper-id diff --git a/docs/backlog/P3/B-0203-deepseek-v4-csa-hca-zset-algebra-composability-aaron-2026-05-05.md b/docs/backlog/P3/B-0203-deepseek-v4-csa-hca-zset-algebra-composability-aaron-2026-05-05.md index e375f1218..30c53c141 100644 --- a/docs/backlog/P3/B-0203-deepseek-v4-csa-hca-zset-algebra-composability-aaron-2026-05-05.md +++ b/docs/backlog/P3/B-0203-deepseek-v4-csa-hca-zset-algebra-composability-aaron-2026-05-05.md @@ -33,7 +33,7 @@ verbatim framing landed two complementary points: merits its own analysis lane, not a footnote. Full verbatim research-doc preservation: -[`memory/persona/deepseek/conversations/2026-05-05-claudeai-tinygrad-uop-turboquant-deepseek-v4-symbolica-categorical-aaron-forwarded-preservation.md`](../../../memory/persona/deepseek/conversations/2026-05-05-claudeai-tinygrad-uop-turboquant-deepseek-v4-symbolica-categorical-aaron-forwarded-preservation.md) +[`docs/research/2026-05-05-claudeai-tinygrad-uop-turboquant-deepseek-v4-symbolica-categorical-aaron-forwarded-preservation.md`](../../research/2026-05-05-claudeai-tinygrad-uop-turboquant-deepseek-v4-symbolica-categorical-aaron-forwarded-preservation.md) (lands via PR #1610). ## Why P3 not P2 @@ -427,7 +427,7 @@ specifically: path for B-0203's substance-tests but worth tracking for follow-on composition. - The research-doc preservation at - [`memory/persona/deepseek/conversations/2026-05-05-claudeai-tinygrad-uop-turboquant-deepseek-v4-symbolica-categorical-aaron-forwarded-preservation.md`](../../../memory/persona/deepseek/conversations/2026-05-05-claudeai-tinygrad-uop-turboquant-deepseek-v4-symbolica-categorical-aaron-forwarded-preservation.md) + [`docs/research/2026-05-05-claudeai-tinygrad-uop-turboquant-deepseek-v4-symbolica-categorical-aaron-forwarded-preservation.md`](../../research/2026-05-05-claudeai-tinygrad-uop-turboquant-deepseek-v4-symbolica-categorical-aaron-forwarded-preservation.md) -- the upstream artifact this row absorbs from. Lands via PR #1610. ## The carved sentence diff --git a/docs/backlog/P3/B-0506-stale-worktree-prune-cadence-mechanization-2026-05-14.md b/docs/backlog/P3/B-0506-stale-worktree-prune-cadence-mechanization-2026-05-14.md index 2d9129817..b41567a03 100644 --- a/docs/backlog/P3/B-0506-stale-worktree-prune-cadence-mechanization-2026-05-14.md +++ b/docs/backlog/P3/B-0506-stale-worktree-prune-cadence-mechanization-2026-05-14.md @@ -1,13 +1,12 @@ --- id: B-0506 priority: P3 -status: closed +status: open title: "Stale-worktree prune cadence — mechanize `git worktree prune --expire=now`" tier: factory-hygiene effort: S created: 2026-05-14 -last_updated: 2026-05-16 -closed: 2026-05-16 +last_updated: 2026-05-14 depends_on: [] composes_with: [B-0400, B-0444] tags: [worktree, hygiene, factory-cadence, multi-foreground-surface, friction-reducer] @@ -66,22 +65,3 @@ This is a P3 friction-reducer, not a P0 substrate gap. The cleanup is straightfo ## Origin tick `docs/hygiene-history/ticks/2026/05/14/1817Z.md` — this tick's shard documents the empirical observation and the manual cleanup. - -## Resolution (2026-05-16) - -Mechanization shipped 2026-05-14 via **PR #3225** (`feat(B-0506): mechanize stale-worktree audit — audit-stale-worktrees.ts (clean branch)`, merged). - -The shipped tool [`tools/hygiene/audit-stale-worktrees.ts`](../../../tools/hygiene/audit-stale-worktrees.ts) implements every behavior named in "Proposed mechanization" above: - -| Specified behavior | Status | -|---|---| -| Enumerate via `git worktree list --porcelain` | shipped | -| Existence-check each working-tree path | shipped | -| Markdown summary report (`--report PATH`) | shipped | -| `--prune` runs `git worktree prune --expire=now -v` | shipped | -| Exit codes (0 / 64 / 128) | shipped | -| DST-friendly (only timestamp non-deterministic) | shipped | - -Phase 2 (GHA cron wire-up + per-Otto-process worktree isolation) is **out of scope** per the tool's own header comment and would compose with `factory-hygiene-audit-cadence.yml` if/when needed; that's a separate row, not a B-0506 obligation. - -Row left open from 2026-05-14 to 2026-05-16 due to substrate drift — the mechanization PR landed but this row was never marked closed. Caught this tick by Otto-CLI 2026-05-16T04:19Z while picking a P3 friction-reducer; tried to claim+implement, discovered the tool already existed at the proposed path. Closing instead. diff --git a/docs/backlog/P3/B-0528-shadow-launchd-installer-unit-tests-2026-05-15.md b/docs/backlog/P3/B-0528-shadow-launchd-installer-unit-tests-2026-05-15.md index d73744b3e..52537fabd 100644 --- a/docs/backlog/P3/B-0528-shadow-launchd-installer-unit-tests-2026-05-15.md +++ b/docs/backlog/P3/B-0528-shadow-launchd-installer-unit-tests-2026-05-15.md @@ -1,13 +1,12 @@ --- id: B-0528 priority: P3 -status: closed +status: open title: "Unit tests for tools/shadow/launchd/install-launchagent.ts" tier: factory-infrastructure effort: S created: 2026-05-15 -last_updated: 2026-05-16 -closed: 2026-05-16 +last_updated: 2026-05-15 depends_on: [] composes_with: [B-0402] tags: [test-coverage, shadow-observer, launchd, deferred-from-pr-3342] diff --git a/docs/backlog/P3/B-0530-cron-sentinel-mutex-prevent-otto-cli-self-contention-2026-05-15.md b/docs/backlog/P3/B-0530-cron-sentinel-mutex-prevent-otto-cli-self-contention-2026-05-15.md index d979754b4..15929053e 100644 --- a/docs/backlog/P3/B-0530-cron-sentinel-mutex-prevent-otto-cli-self-contention-2026-05-15.md +++ b/docs/backlog/P3/B-0530-cron-sentinel-mutex-prevent-otto-cli-self-contention-2026-05-15.md @@ -1,13 +1,12 @@ --- id: B-0530 priority: P3 -status: closed +status: open title: "Cron-sentinel mutex — prevent multi-Otto-CLI self-contention on .git/objects/pack" tier: factory-infrastructure effort: S created: 2026-05-15 -last_updated: 2026-05-16 -closed: 2026-05-16 +last_updated: 2026-05-15 depends_on: [] composes_with: [B-0506, B-0519] tags: [autonomous-loop, multi-Otto-CLI, git-contention, mutex, mechanization] @@ -130,24 +129,3 @@ Cron-sentinel mutex is the substrate-honest first move because: - Bus envelopes: `44aaf799` (peer-Otto 0414Z) + `111342b2` (mine 0545Z) + `6de98fac` (mine 0607Z) + `720a2b49` (mine 0611Z root cause) - Tick shards: `0414Z.md`, `0524Z.md`, `0615Z.md` (root cause landed in PR #3370) - PR #3370 — the canonical landing of the root cause analysis - -## Resolution (2026-05-16) - -Mechanization shipped 2026-05-15 via **PR #3375** (`feat(b-0530): cron-sentinel-mutex — detect concurrent Otto-CLI sessions`, merged). - -The shipped tool [`tools/orchestrator-checks/cron-sentinel-mutex.ts`](../../../tools/orchestrator-checks/cron-sentinel-mutex.ts) implements every acceptance criterion: - -| Acceptance criterion | Status | -|---|---| -| New `tools/orchestrator-checks/cron-sentinel-mutex.ts` | shipped | -| Detects peer claude-code processes via `pgrep -fl` | shipped (uses `pgrep -afl`) | -| Bus-publish `shadow-catch` topic on detection | shipped (per `docs/AUTONOMOUS-LOOP-PER-TICK.md` §1 integration) | -| Exit code 0 in detect-mode; structured exit on peer-detected | shipped (`Math.min(1 + peerCount, 250)`; 251 = pgrep error) | -| Composes-with existing `<>` substrate | shipped — invoked at top of every per-tick discipline cycle | -| Documented in `claim-acquire-before-worktree-work.md` | shipped via PR #3377 (Borrow-on-existing pattern section) | - -**Live verification this tick (2026-05-16T04:28Z)**: ran the tool on Otto-CLI cold-boot; correctly reported `peerDetected: true` with PIDs 2706 + 2710 (Claude Desktop processes). The peer-handling clause in [`docs/AUTONOMOUS-LOOP-PER-TICK.md`](../../AUTONOMOUS-LOOP-PER-TICK.md) §1 routed this tick away from `git worktree add` and into the borrow-on-existing-branch pattern — zero contention failures across 3 consecutive ticks of this session. - -Non-goals remain non-goals (no end-to-end serialization; no non-Otto-CLI detection; no interactive-vs-autonomous distinction). - -Row left open from 2026-05-15 to 2026-05-16 as substrate drift — same pattern as B-0506 (closed in PR #3733 this same session).