Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/BACKLOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ are closed (status: closed in frontmatter)._
- [x] **[B-0161](backlog/P1/B-0161-substrate-reshelf-asymmetry-applied-to-pr-1202-overshoot-aaron-claudeai-2026-05-02.md)** Substrate reshelf — apply thoughts-free-actions-razored asymmetry to PR #1202's CLAUDE.md overshoot (Aaron + Claude.ai 2026-05-02)
- [x] **[B-0162](backlog/P1/B-0162-pre-commit-hook-direct-name-attribution-on-current-state-surfaces-aaron-2026-05-02.md)** Pre-commit hook to catch direct name attribution on current-state surfaces (Otto-279 role-ref convention) — mechanize the recurring failure mode (5 catches this branch — past mechanization breakeven)
- [ ] **[B-0164](backlog/P1/B-0164-dual-loop-substrate-attribution-and-reconciliation-protocol-2026-05-02.md)** Dual-loop substrate attribution + reconciliation protocol — implementation work for BFT-many-masters at loop layer (Aaron 2026-05-02 + Otto independent extension)
- [ ] **[B-0164.1](backlog/P1/B-0164.1-pr-review-disagreement-preservation-protocol.md)** PR-review disagreement-preservation protocol (dual-loop AC #2)
- [x] **[B-0164.1](backlog/P1/B-0164.1-pr-review-disagreement-preservation-protocol.md)** PR-review disagreement-preservation protocol (dual-loop AC #2)
- [ ] **[B-0164.2](backlog/P1/B-0164.2-multi-loop-tick-tooling-attribution.md)** Multi-loop tick-history tooling attribution (dual-loop AC #5)
- [ ] **[B-0164.3](backlog/P1/B-0164.3-cron-tick-coordination-dual-loop.md)** Cron-tick coordination for dual-loop operation (dual-loop AC #6)
- [x] **[B-0168](backlog/P1/B-0168-incorporate-brat-voice-enterprise-translation-framework-claudeai-research-2026-05-02.md)** Incorporate Claude.ai brat-voice enterprise translation framework — 5-layer (corrected) property-preserving register architecture for Zeta (Personal/Mirror/Beacon-safe/Professional/Regulated)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ priority: P1
status: open
title: Dual-loop substrate attribution + reconciliation protocol — implementation work for BFT-many-masters at loop layer (Aaron 2026-05-02 + Otto independent extension)
created: 2026-05-02
last_updated: 2026-05-10
last_updated: 2026-05-31
depends_on:
- B-0160
children:
Expand Down Expand Up @@ -50,7 +50,7 @@ Aaron's morning reconciliation has to resolve these. The architecture's commitme

1. **Per-loop attribution channel.** ✅ SATISFIED BY EXISTING SUBSTRATE — Otto's tick-shards under `docs/hygiene-history/ticks/**` already include col2 model-identifier (e.g., `opus-4-7 / autonomous-loop session continuation`). Codex's loop should write to the same shard surface with its own model-identifier (e.g., `gpt-5.5 / codex-loop`). The col2 schema accommodates this; no schema change needed.

2. **Disagreement-preservation protocol for PR reviews.** ⏳ BLOCKEDrequires dual-loop running. When both loops review the same PR thread with different conclusions: each loop's review-comment is preserved with attribution; neither auto-resolves the other. The morning reconciliation reads both, decides, resolves accordingly. No silent overwrites.
2. **Disagreement-preservation protocol for PR reviews.** ✅ DONEB-0164.1 closed on 2026-05-31. The landed `tools/hygiene/divergence-shard.ts` detector/writer preserves differing PR-review-thread conclusions as divergence shards without auto-resolving GitHub threads, and `tools/hygiene/divergence-reconcile.ts` supplies the pending-shard read/write-back path for morning reconciliation.

3. **Branch-attribution for in-flight work.** ✅ SATISFIED BY EXISTING SUBSTRATE — When both loops produce concurrent commits to the same branch: each loop commits with its own author-identifier (already supported by `Co-Authored-By` trailer). Different loops working different threads don't conflict if file-isolation holds; if they touch the same file, the second loop's tick should detect the conflict and either rebase OR file a divergence-shard noting the conflict for morning reconciliation.

Expand Down Expand Up @@ -134,7 +134,7 @@ ACs #1, #3, #4 are closed. Remaining open work extracted as atomic child rows:

| Child | AC | Blocker | File |
|-------|----|---------|------|
| B-0164.1 | AC #2 — PR-review disagreement-preservation | B-0160 (dual-loop not running) | `B-0164.1-pr-review-disagreement-preservation-protocol.md` |
| B-0164.1 | AC #2 — PR-review disagreement-preservation | Closed 2026-05-31 | `B-0164.1-pr-review-disagreement-preservation-protocol.md` |
Comment thread
AceHack marked this conversation as resolved.
Outdated
| B-0164.2 | AC #5 — Multi-loop tick-tooling attribution | B-0163 (tooling retirement) | `B-0164.2-multi-loop-tick-tooling-attribution.md` |
| B-0164.3 | AC #6 — Cron-tick coordination | B-0160 + B-0164.1 | `B-0164.3-cron-tick-coordination-dual-loop.md` |

Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
---
id: B-0164.1
priority: P1
status: open
status: closed
Comment thread
AceHack marked this conversation as resolved.
Outdated
title: "PR-review disagreement-preservation protocol (dual-loop AC #2)"
effort: M
created: 2026-05-10
last_updated: 2026-05-31
depends_on:
- B-0160
parent: B-0164
classification: blocked
classification: landed
decomposition: decomposed
owners: [architect]
type: friction-reducer
Expand Down Expand Up @@ -68,10 +68,10 @@ shard schema (already landed in B-0164 AC #4).

## Blocker

Requires two loops actually running concurrently (B-0160 harness side).
Cannot test or verify the protocol without at least a simulated dual-loop
execution. Unblock path: land B-0160 → stand up Codex loop → run a
controlled dual-review experiment → validate this protocol against the outcome.
Historical, resolved for this row: the original row required B-0160's harness
side before end-to-end validation. B-0160 is now closed, and the protocol's
repo-native pieces have landed below the live GitHub auto-resolution boundary.
The remaining timing/coordination experiment is tracked by B-0164.3.

## Composes with

Expand Down Expand Up @@ -160,3 +160,20 @@ controlled dual-review experiment → validate this protocol against the outcome
keeps list mode separate from the write-back path.
- Focused tests cover argv parsing, usage-error no-write behavior, and an
end-to-end CLI write-back against a writer-emitted divergence shard.

## Resolution (2026-05-31)

Closed as implemented by the landed disagreement-preservation tooling:

- `detectReviewThreadDisagreement` and `fileReviewThreadDisagreement` in
`tools/hygiene/divergence-shard.ts` compare two loop observations for the
same PR review thread, avoid GitHub auto-resolution, and file a divergence
shard when machine-comparable conclusions differ.
- `buildDivergenceShard` records the PR/thread topic, both attributed loop
perspectives, and a neutral disagreement summary, making the shard readable
without external context.
- `scanDivergenceDir` plus `tools/hygiene/divergence-reconcile.ts --list` /
`--reconcile` provide the morning read/action path for pending shards.

B-0164.3 remains open for the live dual-loop cron-topology decision and
observation window.
Loading