Skip to content
2 changes: 1 addition & 1 deletion .claude/rules/refresh-before-decide.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,4 @@ loops generally.
`memory/feedback_refresh_before_decide_invariant_two_layer_print_dx_claudeai_2026_05_01.md`

Verbatim packet:
`docs/research/2026-05-01-claudeai-backlog-driven-dual-pm-loop-with-refresh-discipline.md`
`memory/persona/riven/conversations/2026-05-01-claudeai-backlog-driven-dual-pm-loop-with-refresh-discipline.md`
4 changes: 2 additions & 2 deletions docs/backlog/P1/B-0003-alignment-md-rewrite.md
Original file line number Diff line number Diff line change
Expand Up @@ -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**
(`docs/research/otto-287-noether-formalization-2026-04-25.md`,
(`memory/persona/otto/conversations/otto-287-noether-formalization-2026-04-25.md`,
B-0002) — pipeline that promises compounding rigor over
time.

Expand Down Expand Up @@ -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.
- `docs/research/otto-287-noether-formalization-2026-04-25.md`
- `memory/persona/otto/conversations/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
Expand Down
7 changes: 4 additions & 3 deletions docs/backlog/P1/B-0058-ai-ethics-and-safety-research-track.md
Original file line number Diff line number Diff line change
Expand Up @@ -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-14
last_updated: 2026-05-15
decomposition: decomposed
children: [B-0058.1]
children: [B-0058.1, B-0058.3]
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]
Expand Down Expand Up @@ -47,9 +47,10 @@ 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
### 3. Candidate-failure honesty log (DECOMPOSED -> B-0058.3)

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

Expand Down
19 changes: 19 additions & 0 deletions docs/backlog/P1/B-0058.3-candidate-failure-honesty-log.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
id: B-0058.3
priority: P1
status: open
title: Candidate-failure honesty log
tier: substrate-foundational-discipline
effort: S
parent: B-0058
---

# B-0058.3 — Candidate-failure honesty log

## Origin

Decomposed from B-0058 item 3.

## Scope

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.
Original file line number Diff line number Diff line change
Expand Up @@ -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
`docs/research/backlog-split-design-otto-181.md` (per
`memory/persona/otto/conversations/backlog-split-design-otto-181.md` (per
the generator script's header).
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
---
id: B-0159
priority: P1
status: open
status: closed
title: refresh-github-worldview cross-cutting refresh script (Claude.ai 2026-05-01)
created: 2026-05-01
last_updated: 2026-05-01
last_updated: 2026-05-16
closed: 2026-05-16
decomposition: decomposed
depends_on:
- B-0156
Expand All @@ -14,7 +15,7 @@ type: friction-reducer

# B-0159 — `refresh-github-worldview` cross-cutting refresh script (Claude.ai 2026-05-01)

**Origin:** Claude.ai feedback packet 2026-05-01 — full lineage in [docs/research/2026-05-01-claudeai-backlog-driven-dual-pm-loop-with-refresh-discipline.md](../../research/2026-05-01-claudeai-backlog-driven-dual-pm-loop-with-refresh-discipline.md) and the maintainer-relayed Claude.ai-2 follow-up calibrating against Otto's running state.
**Origin:** Claude.ai feedback packet 2026-05-01 — full lineage in [memory/persona/riven/conversations/2026-05-01-claudeai-backlog-driven-dual-pm-loop-with-refresh-discipline.md](../../../memory/persona/riven/conversations/2026-05-01-claudeai-backlog-driven-dual-pm-loop-with-refresh-discipline.md) and the maintainer-relayed Claude.ai-2 follow-up calibrating against Otto's running state.

## Problem

Expand Down Expand Up @@ -132,7 +133,7 @@ synthetic deps).
the per-PR-detail building block this script wraps.
- `memory/feedback_ts_dependencies_as_interface_di_pattern_sqlsharp_anchor_aaron_2026_05_01.md`
— the architectural pattern for the new script's structure.
- `docs/research/2026-05-01-claudeai-backlog-driven-dual-pm-loop-with-refresh-discipline.md`
- `memory/persona/riven/conversations/2026-05-01-claudeai-backlog-driven-dual-pm-loop-with-refresh-discipline.md`
— full Claude.ai loop architecture; this script is the immediate
actionable extraction.

Expand Down Expand Up @@ -451,3 +452,30 @@ 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.
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,6 @@ Iris (UX). Otto builds the substrate. They build the on-ramp.
## Composes with

- B-0212 (shadow outlet architecture)
- docs/research/2026-05-06-shadow-identity-integration-distinction-aaron-otto.md
- memory/persona/otto/conversations/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
Original file line number Diff line number Diff line change
Expand Up @@ -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
`docs/research/2026-05-07-alexa-dlc-product-research-loop-feedback.md`.
`memory/persona/alexa/conversations/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.
Expand Down
4 changes: 2 additions & 2 deletions docs/backlog/P1/B-0313-wake-time-otto-nn-anchor-backfill.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:**
`docs/research/otto-nn-principles-external-anchors-slice1-otto247-otto341-otto357.md`
`memory/persona/otto/conversations/otto-nn-principles-external-anchors-slice1-otto247-otto341-otto357.md`

**Slice-2 research landing (2026-05-10):**
`docs/research/otto-nn-principles-external-anchors-slice2-otto275-otto279-otto351-otto352.md`
`memory/persona/otto/conversations/otto-nn-principles-external-anchors-slice2-otto275-otto279-otto351-otto352.md`

## Reviewers

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 `docs/research/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 `memory/persona/otto/conversations/2026-05-13-b-0400-bus-protocol-otto-review.md` (slice 6)

## Review requirement

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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** — `docs/research/2026-05-10-aaron-amazon-alexa-hamiltonian-git-mapping-accelerated-timeframes-verbatim-backup.md`
- **Amazon Alexa conversation** — `memory/persona/alexa/conversations/2026-05-10-aaron-amazon-alexa-hamiltonian-git-mapping-accelerated-timeframes-verbatim-backup.md`

## Acceptance

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
- [ ] Documented in `docs/AUTONOMOUS-LOOP.md`
- [x] Documented in `docs/AUTONOMOUS-LOOP.md`

## Design sketch

Expand Down Expand Up @@ -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`) | ❌ open | B-0500 |
| 3 | Queue-state guard wiring (`isAgentQueueEmpty` into `pollOnce`) | ✅ shipped | B-0500 |
| 4 | Bus-publish wiring (`work-assignment` topic) | ✅ shipped | — |
| 5a | Assignment history dedup / cooldown (avoid re-assigning same row) | ❌ open | B-0501 |
| 5a | Assignment history dedup / cooldown (avoid re-assigning same row) | ✅ shipped | B-0501 |
| 5.2 | Agent-side `work-assignment` subscriber handler (consume + act) | ❌ open | B-0460 |
| 6 | launchd plist + `docs/AUTONOMOUS-LOOP.md` wiring | ❌ open | B-0502 |
| 6 | launchd plist + `docs/AUTONOMOUS-LOOP.md` wiring | ✅ shipped | 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.
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
---
id: B-0442
priority: P1
status: open
status: closed
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-14
last_updated: 2026-05-15
closed: 2026-05-15
closed_by_pr: 3458
depends_on: [B-0400]
composes_with: [B-0402, B-0440, B-0441]
children: [B-0503, B-0504, B-0505]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,9 +92,9 @@ After absorption:

## Research substrate

- `docs/research/2026-05-11-deepseek-hkt-clifford-e8-klein-bottle-beacon-smooth.md`
- `memory/persona/deepseek/conversations/2026-05-11-deepseek-hkt-clifford-e8-klein-bottle-beacon-smooth.md`
(15-layer synthesis)
- `docs/research/2026-05-11-deepseek-immune-system-ilife-redteam-qubic-bankerbot-simulations.md`
- `memory/persona/deepseek/conversations/2026-05-11-deepseek-immune-system-ilife-redteam-qubic-bankerbot-simulations.md`
(attack simulations + vaccine spread)

## Acceptance
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
---
id: B-0494
priority: P1
status: open
status: closed
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-14
last_updated: 2026-05-16
closed: 2026-05-16
depends_on: [B-0435]
composes_with:
- B-0401
Expand Down Expand Up @@ -91,3 +92,22 @@ 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.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
id: B-0500
priority: P1
status: open
status: closed
title: "B-0441 slice 3 — wire isAgentQueueEmpty guard into pollOnce"
tier: factory-infrastructure
effort: XS
Expand Down Expand Up @@ -34,22 +34,22 @@ work-assignment envelopes on every poll cycle.

## Acceptance criteria

- [ ] `pollOnce` consults `isAgentQueueEmpty(config.targetAgent, adapters)` before
- [x] `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)
- When queue IS empty (or unknown agent) → proceed with current publish logic
- Conservative default: adapter failures (`execGitLog → null`, `execGhPrList → null`)
are treated as queue BUSY (do not trigger assignment) — matches the existing
`isAgentQueueEmpty` behavior
- [ ] `NotifierConfig` gains a `targetAgent` field (default `"otto"`); `parseArgs`
- [x] `NotifierConfig` gains a `targetAgent` field (default `"otto"`); `parseArgs`
wires `--target-agent <agent>` flag (accepts any string; not restricted to
`SENDER_IDS` because the agent patterns map is the actual lookup)
- [ ] `PollResult` gains a `queueBusy: boolean` field; `pollOnce` populates it
- [ ] Adapters interface unchanged (already includes `execGitLog` + `execGhPrList`
- [x] `PollResult` gains a `queueBusy: boolean` field; `pollOnce` populates it
- [x] Adapters interface unchanged (already includes `execGitLog` + `execGhPrList`
+ `agentPatterns` — exactly what `isAgentQueueEmpty` needs)
- [ ] Existing tests updated to pass `targetAgent` where `DEFAULT_CONFIG` is used
- [ ] New tests added:
- [x] Existing tests updated to pass `targetAgent` where `DEFAULT_CONFIG` is used
- [x] 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,
Expand Down Expand Up @@ -91,7 +91,7 @@ B-0441 (slices 1+2+4 shipped — backlog-ready-notifier.ts functional)

## Pre-start checklist (per backlog-item-start-gate)

- [ ] 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
- [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
before adding new ones
- [ ] Verify `PollResult` type is exported (it is — used in test file)
- [x] Verify `PollResult` type is exported (it is — used in test file)
Loading
Loading