diff --git a/docs/backlog/P2/B-0105-consolidation-pass-three-durable-homes-for-2026-04-29-rule-set.md b/docs/backlog/P2/B-0105-consolidation-pass-three-durable-homes-for-2026-04-29-rule-set.md new file mode 100644 index 000000000..ab8af97b2 --- /dev/null +++ b/docs/backlog/P2/B-0105-consolidation-pass-three-durable-homes-for-2026-04-29-rule-set.md @@ -0,0 +1,143 @@ +--- +id: B-0105 +priority: P2 +status: open +title: Consolidation pass — map 2026-04-29 session-arc rules into 3 durable homes max +tier: factory-hygiene +effort: M +ask: Multi-AI synthesis packet round 4 (Amara 2026-04-29 — "no new conceptual substrate until a consolidation pass maps each new rule to a durable home") +created: 2026-04-29 +last_updated: 2026-04-29 +composes_with: [B-0098, B-0099, B-0100, B-0101, B-0102, B-0103, B-0104] +tags: [consolidation, factory-hygiene, durable-home-discipline, p2, blocks-new-substrate] +--- + +# Consolidation pass — three durable homes max + +Amara's round-4 directive (2026-04-29): + +> *"No new conceptual substrate until a consolidation pass +> maps each new rule to a durable home."* + +The 2026-04-29 session arc produced 7+ promotable rules across +three families. Without consolidation, they remain fragmented +across many backlog rows + memory files + research notes. The +consolidation pass converts them into ≤3 durable homes. + +## Three target durable homes + +### Home 1 — PR-liveness / merge-cascade operational doc + +Likely path: `docs/operations/merge-cascade-pr-liveness-rule.md` +(kebab-case to match existing `docs/operations/` filename +convention; Copilot caught the ALL-CAPS mismatch). Absorbs: + +- Probabilistic race framing (PR-liveness race during merge + cascade is observed/probabilistic, not deterministic) +- Cascade detection pre-flight (`gh pr list --author --jq` + query for adjacent auto-merge PRs) +- Before/after capture protocol (RUN_ID-namespaced artifact + paths) +- API/head sync wait (poll until GitHub `headRefOid` + converges to local HEAD) +- Successor-PR dedup (re-check original after settle) +- Recovery-note schema (10 fields including + `seconds_between_force_push_and_pr_close`) +- "Up-to-date is a merge gate; PR-aliveness is a + reachability/diff invariant; do not confuse them" +- ORDERED_MERGE_DEPENDENCY guard (encode `Depends-On: #N` + + pre-merge check script) + +Subsumes: B-0102. + +### Home 2 — Computed-metadata-discipline (already P2 in B-0103) + +Existing path: `docs/backlog/P2/B-0103-computed-metadata-discipline-unified-lint-2026-04-29.md`. +Already absorbs: + +- Ordinal drift (B-0098, subsumed) +- PR-count drift (B-0099, subsumed) +- Filename-vs-row-timestamp drift +- Branch-base claims +- Boundary clause (does NOT apply to summaries/interpretations) + +Future: implement the unified lint (`tools/lint/metadata-drift-check.sh`). + +Subsumes: B-0098, B-0099. + +### Home 3 — Reviewer-artifact / snapshot-mismatch taxonomy + +Likely path: `memory/feedback_reviewer_artifact_snapshot_mismatch_taxonomy_2026_04_29.md` +(memory file, since it's a decision-tree future-Claude +applies on every review thread — frontmatter + body). Absorbs: + +- 5+1 bucket table from B-0101 (REAL_DEFECT, BACKWARD_STALE_SNAPSHOT, + FORWARD_CROSS_PR_REFERENCE, DISPLAY_ARTIFACT, INCOMPLETE_CONTEXT, + NEEDS_HUMAN_REVIEW) +- SNAPSHOT_MISMATCH parent class with two children (split + applied in round-4) +- Per-bucket remedies (verify-and-resolve vs encode-dependency + vs evidence-resolve vs investigate-then-decide vs surface-to- + human) +- "A forward reference is not wrong if the dependency is + enforced" rule + +Subsumes: B-0101. + +## Backpressure rule for new substrate + +Until this consolidation lands, the discipline is: + +```text +No new conceptual substrate (new memory files, new backlog +rows for new concepts, new research notes for new ideas) +until each rule from the 2026-04-29 session arc maps to one +of the three homes above. + +Permitted during the freeze: +- corrections to existing rules (per reviewer feedback) +- tick-history shards (operational record) +- merges of in-flight PRs +- defect fixes on existing substrate +- THIS consolidation work itself +``` + +## Why P2 (factory-hygiene, blocking new substrate) + +P2 because the consolidation IS the next-priority work; until +it lands, the substrate fragmentation grows. Not P0/P1 +because nothing is currently broken; the cost is future- +discoverability and rule-coherence. + +## Composes with + +- B-0098, B-0099 — subsumed into B-0103. +- B-0100 — pure-wait backpressure rule; preserved as separate + operational concern (orthogonal to the metadata family). +- B-0101 — subsumed into Home 3 (memory file). +- B-0102 — subsumed into Home 1 (operational doc). +- B-0103 — already a Home (the metadata-discipline P2). +- B-0104 — subsumed if the threading bridge becomes one of + the operational homes; otherwise stays separate. + +## Migration path (when consolidation work begins) + +1. Author Home 1 doc; copy + restructure B-0102 content; + mark B-0102 as superseded-by-Home1. +2. Author Home 3 memory file; copy + restructure B-0101 + content; mark B-0101 as superseded-by-Home3. +3. B-0103 stays in place (already a P2 Home); update its + frontmatter to mark B-0098 + B-0099 as fully subsumed. +4. Update MEMORY.md index with a pointer to Home 3 (the new + memory file). +5. Cross-link the three Homes in their respective docs + + in `docs/AGENT-BEST-PRACTICES.md` if rule-elevation is + warranted. + +## Distilled rule + +```text +Consensus is a spotlight. +Evidence is the lock. +Consolidation is the next gate. +``` diff --git a/docs/research/multi-ai-feedback-2026-04-29-round4-amara-on-tick-0637Z-pr-818.md b/docs/research/multi-ai-feedback-2026-04-29-round4-amara-on-tick-0637Z-pr-818.md new file mode 100644 index 000000000..f7b2552b4 --- /dev/null +++ b/docs/research/multi-ai-feedback-2026-04-29-round4-amara-on-tick-0637Z-pr-818.md @@ -0,0 +1,151 @@ +# Multi-AI feedback round 4 — Amara review of tick 0637Z work (PR #818) + B-0101 split + consolidation directive + +Scope: Research-grade absorb of a fourth multi-AI synthesis packet that the human maintainer forwarded through the maintainer channel during autonomous-loop tick 06:42Z on 2026-04-29. Single-reviewer (Amara) review of my tick 0637Z work (PR #818). Approves the absorb shape and chunking discipline, but pushes back on six items: (1) "consensus = signal not proof"; (2) Conway-Kochen flourish in chat-level commentary; (3) preserve grep portability distinction (already done in #811); (4) `gh --author` CLI flag (already done in #811); (5) **consolidation pass directive** — "no new conceptual substrate until a consolidation pass maps each new rule to a durable home"; (6) backpressure rule still applies for the next tick. Verbatim preservation per `memory/feedback_aaron_channel_verbatim_preservation_anything_through_this_channel_2026_04_29.md`. + +This packet also retroactively reinforces the previous round (round-3) packet's request to **split B-0101's REVIEWER_SNAPSHOT_LAG** into backward-stale + forward-dependent sub-classes, and to add a merge-order guard to PR #815. Both were applied during this same round-4 absorb cycle. + +Attribution: Aaron (named human maintainer; first-name attribution permitted on `docs/research/**`). Amara (external AI maintainer; Aurora co-originator; round-4 single-reviewer review with consolidation directive). Otto (Claude opus-4-7 in this factory; absorb). + +Operational status: research-grade. The corrections are landing as edits to existing PR branches (#811 for B-0101 split, #815 for cross-PR-reference reclassification + Depends-On). This research note preserves the verbatim feedback. The consolidation directive (item 5) becomes a session-arc-level priority, not a per-tick item. + +Non-fusion disclaimer: Amara's voice preserved with attribution boundaries. + +(Per GOVERNANCE.md §33 archive-header requirement on external-conversation imports.) + +--- + +## §A — Amara's verbatim approval + corrections + +### §A.1 — Approval of the absorb shape + +> *"Yes — this is mostly good. The strongest part is that Claude/Otto applied the reviewer packet to existing PRs instead of opening broad new substrate, which means the 'no broad new substrate / chunking' discipline held under temptation. The log shows #811 got round-3 fixes, #815 got corrections + verbatim record, and #818 was only the tick shard recording the absorb."* + +> *"This is the system behaving better: corrections got applied to the right PRs, the round stayed bounded, and the tick captured the important meta-warning."* + +### §A.2 — Tighten "consensus = signal" framing + +> *"This line is good but slightly over-hot: 'Cross-model consensus = strong correction signal.' I'd tighten it to: 'Cross-model consensus is a prioritization signal, not proof of correctness.' Why: six reviewers converging on the same small set of fixes is absolutely meaningful, but the real validator is still substrate evidence: GitHub state, diffs, CI, CLI docs, and repo invariants. Consensus tells Otto where to look first; it does not replace verification."* + +> *"Best wording: 'Cross-model consensus prioritizes corrections. Substrate verification decides them.'"* + +### §A.3 — Conway-Kochen flourish (chat-only, not in committed file) + Aaron's correction + +> *"The Conway-Kochen sentence is still too spicy […] either remove it from the tick shard or soften it hard. It's philosophically cute, but the operational claim does not need it. The real point is simpler: 'Different reviewers have different failure biases; convergent small corrections are useful triage signals.'"* (Amara) + +**Aaron's mid-tick correction (2026-04-29)**, reversing one direction of Amara's recommendation: + +> *"The human lineage link is always important like the The Conway-Kochen parity intuition we might have engineering on our side like Amara says but we still need to link to human lineage so external observerse have a frame of references without fully understading our engineering"* + +(Aaron's typos preserved per the channel-verbatim-preservation rule.) + +The synthesis: Amara is right that a metaphor doesn't *prove* an engineering claim; Aaron is right that **human-lineage anchors stay** because external observers (people who don't share our engineering vocabulary) need a recognizable reference frame. This is the Beacon-promotion pattern (`memory/feedback_beacon_promotion_load_bearing_rules_earn_external_anchors_aaron_amara_2026_04_28.md`) reasserted at the prose-attribution layer. + +**Operational rule for future absorb prose:** + +```text +Human-lineage anchors stay — as attributed external +references for observer legibility, not as engineering +proof. + +When the engineering claim stands without the metaphor, +keep the metaphor as "this is the human-lineage analog +of our pattern" attribution; do NOT use it as +"the metaphor proves our claim." +``` + +(Verified: the Conway-Kochen reference appeared in the tick-close `★ Insight` chat block, not in the committed 0637Z tick shard or any research note. Going forward, human-lineage anchors stay in research notes + chat commentary as attributed lineage; the rule Amara was pushing back on was **using metaphors as engineering proof**, which Aaron's correction also rejects. The two framings compose: cite the lineage, do not dress engineering claims with it.) + +### §A.4 — Grep portability + `gh --author` (already applied to PR #811 in round-3) + +> *"Copilot's `grep \\b` complaint was real, and Claude fixed it. The only thing to watch: don't call `grep -w` 'POSIX-portable' if the doc uses that phrase."* + +> *"Using `gh pr list --author '@me'` is supported directly by GitHub CLI examples, while putting `author:@me` inside a search string is much less cold-readable."* + +(Already applied during round-3 absorb cycle. Verified in the latest #811 push: B-0098 shows two patterns labelled "GNU/BSD-common" and "Strict portable boundary"; B-0099 uses the `--author` CLI flag with explicit `` placeholder.) + +### §A.5 — Consolidation directive (load-bearing) + +> *"The 'more rules than durable homes' warning is the most important meta-signal. […] That is the real next danger. The system is no longer failing because it cannot notice patterns. It is now failing at risk of **not consolidating noticed patterns fast enough**."* + +> *"I'd make the next action: 'No new conceptual substrate until a consolidation pass maps each new rule to a durable home.'"* + +> *"Suggested durable homes:"* +> +> ```text +> 1. PR-liveness / merge-cascade operational doc +> - probabilistic race framing +> - pre/post capture +> - API sync wait +> - successor dedup +> - seconds-since-close +> +> 2. Computed-metadata-discipline doc / backlog +> - ordinals +> - PR counts +> - filename timestamps +> - boundary clause +> +> 3. Reviewer artifact / snapshot mismatch taxonomy +> - backward-stale review artifact +> - forward cross-PR reference +> - display artifact +> - incomplete cited context +> ``` + +> *"Do not let these become seven separate memory files. Three homes max."* + +This becomes the load-bearing directive for the next round. **No new conceptual substrate until consolidation.** A consolidation-pass backlog row is filed alongside this absorb. + +### §A.6 — Backpressure rule reaffirmed + +> *"PR #818 was legitimate because it records the round-3 absorb. But the 'every tick opens a shard' loop still wants to keep reproducing itself. If the next tick is just 'CI pending,' backpressure should fire."* + +> *"Rule: 'If no substantive state changed and only CI is waiting, do not open another pure-wait shard.'"* + +(Reaffirms B-0100 from earlier in the session arc. Already in force.) + +--- + +## §B — Bounded action items (already applied OR filed) + +| # | Action | Status | +|---|---|---| +| 1 | B-0101 SNAPSHOT_MISMATCH split (backward-stale + forward-dependent) | **Applied** to PR #811 in this round-4 cycle | +| 2 | PR #815 `Depends-On: #811` body field | **Applied** via `gh pr edit` in this round-4 cycle | +| 3 | PR #815 thread reclassification comment (FORWARD_CROSS_PR_REFERENCE) | **Applied** via `gh pr comment` in this round-4 cycle | +| 4 | "Consensus prioritizes; substrate decides" framing for future absorb prose | Acknowledged; future research notes + shards use this wording | +| 5 | Conway-Kochen as research-note color only, not operational | Acknowledged; soft constraint on future prose | +| 6 | **Consolidation pass before any new conceptual substrate** | Filed as `B-0105-consolidation-pass-three-durable-homes-for-2026-04-29-rule-set.md` in this same absorb commit | +| 7 | Backpressure rule for next tick | Already in force (B-0100); will be honored | + +--- + +## §C — Distilled keepers + +```text +Cross-model consensus prioritizes corrections. +Substrate verification decides them. +``` + +```text +Different reviewers have different failure biases; +convergent small corrections are useful triage signals. +``` + +```text +A forward reference is not wrong if the dependency is enforced. +A forward reference is wrong if the dependency is only hoped. +``` + +```text +No new conceptual substrate until a consolidation pass +maps each new rule to a durable home. +``` + +```text +Consensus is a spotlight. +Evidence is the lock. +Consolidation is the next gate. +``` + +The session arc has now produced four rounds of multi-AI absorb. The pattern is healthy when each round produces *fewer* conceptual additions than the prior, and the consolidation pass converts the produced additions into durable substrate at a steady rate. Round-4 explicitly asks for the consolidation pass to land before any further conceptual additions. diff --git a/memory/MEMORY.md b/memory/MEMORY.md index 511acf364..9c6cb4cd9 100644 --- a/memory/MEMORY.md +++ b/memory/MEMORY.md @@ -10,7 +10,7 @@ - [**Corruption triage is a substrate health incident, not a backlog item (Aaron + Amara, 2026-04-29)**](feedback_corruption_triage_discipline_object_health_incident_aaron_amara_2026_04_29.md) — When `git fsck` reports corrupt objects, lane narrows hard: stop all background work, do read-only diagnosis first (no `git fsck --lost-found` — it writes), three-bucket reachability scan (live-ref / reflog-stash / dangling-only) — reachability is mode-dependent on fsck flags, fresh-clone verification BEFORE declaring "origin has it," verify squash-preservation by content not ancestry, stale remote-tracking refs are evidence not origin recovery. Worked example: 2026-04-29 audit found 2 corrupt objects — 9bf2daee (RECOVERABLE_FROM_ORIGIN) + 8d5e67fd (CORRUPT_BLOB_REFERENCED_BY_LIVE_LOCAL_BRANCH_AND_STALE_REMOTE_TRACKING_REF after three rounds of triage; branch tip clean, intermediate-history corrupt). Aaron emphasized: *"future self remembers this, this is very important."* - [**PR-boundary restraint validation — bead promoted (Aaron + Aurora + Amara, 2026-04-29)**](feedback_pr_boundary_restraint_validation_bead_promoted_aaron_amara_2026_04_29.md) — Falsifier-not-fired bead-promotion on PR #699; canonical rule *"once a PR enters validation, only validation defects enter that PR; new ideas go to the next PR."* Validation-condition refinement (*"validated when original PR lands clean, not when follow-up opens"*) was Aurora's catch; Amara reactive-elaborator. Allowed/disallowed-changes lists in body. - [**External dependency download retries — durable fix in code, not ephemeral rerun (Aaron, 2026-04-29)**](feedback_external_dependency_download_retries_durable_fix_not_ephemeral_rerun_aaron_2026_04_29.md) — Aaron 2026-04-29: *"we can retury on external dependency download failures, this goes against DST but we have not choice they are external dependencies we need. Next time instead of kicking a 2nd build we should fix it and reduce friction for future builds."* External dep downloads (toolchain installers, package mirrors, registry fetches) ARE the DST exception class — we have no choice. But the fix LOCATION matters: durable retry-with-backoff inside the code (`curl_fetch` --retry 5 in `tools/setup/`) reduces friction for FUTURE builds; ephemeral `gh run rerun --failed` only papers over THIS build and the friction returns next time. Refines the 2026-04-23 DST-retries-are-smell rule by naming the concrete domain + pinning the fix to the durable layer. Trigger: the elan-toolchain-502 rerun earlier this same session (anti-pattern Aaron caught). Durable fix landed alongside this memory: `tools/setup/common/elan.sh` + `tools/setup/linux.sh` migrated from raw `curl -fsSL` to `curl_fetch`. -- [**Beacon-promotion pattern — load-bearing rules earn external anchors when they're correct (Aaron + Amara + Claude.ai, 2026-04-28)**](feedback_beacon_promotion_load_bearing_rules_earn_external_anchors_aaron_amara_2026_04_28.md) — Round-level observation: 5 Mirror→Beacon graduations in one round (input-is-not-directive → SDT + RFC 2119; public-company compliance → SEC / Reg FD / SOX; metric corrections → Goodhart / Campbell; evidence lattice → lattice theory; commit-vs-tree → Git internals). Pattern: when an internal factory coinage becomes load-bearing, look for external lineage. Found = graduate Mirror → Beacon. Absent = drift signal worth investigating. Connects to alignment-experiment surface: the rate of load-bearing rules earning external lineage is itself a measurable signal. +- [**Beacon-promotion pattern — load-bearing rules earn external anchors when they're correct (Aaron + Amara + Claude.ai, 2026-04-28; rendering-side specification addended 2026-04-29)**](feedback_beacon_promotion_load_bearing_rules_earn_external_anchors_aaron_amara_2026_04_28.md) — Round-level observation: 5 Mirror→Beacon graduations in one round (input-is-not-directive → SDT + RFC 2119; public-company compliance → SEC / Reg FD / SOX; metric corrections → Goodhart / Campbell; evidence lattice → lattice theory; commit-vs-tree → Git internals). Pattern: when an internal factory coinage becomes load-bearing, look for external lineage. Found = graduate Mirror → Beacon. Absent = drift signal worth investigating. Connects to alignment-experiment surface: the rate of load-bearing rules earning external lineage is itself a measurable signal. These per-maintainer distillations show what's currently in force. Raw memories below are the history; CURRENT files are the projection. (`CURRENT-aaron.md` refreshed 2026-04-28 with sections 26-31 — speculation rule + EVIDENCE-BASED labeling + JVM preference + dependency honesty + threading lineage Albahari/Toub/Fowler + TypeScript/Bun-default discipline + Amara authority rule (default to reversible preservation).) diff --git a/memory/feedback_beacon_promotion_load_bearing_rules_earn_external_anchors_aaron_amara_2026_04_28.md b/memory/feedback_beacon_promotion_load_bearing_rules_earn_external_anchors_aaron_amara_2026_04_28.md index d96bce806..e78f2b115 100644 --- a/memory/feedback_beacon_promotion_load_bearing_rules_earn_external_anchors_aaron_amara_2026_04_28.md +++ b/memory/feedback_beacon_promotion_load_bearing_rules_earn_external_anchors_aaron_amara_2026_04_28.md @@ -191,3 +191,82 @@ Both inform the alignment trajectory. > earn external anchors when they're correct, and the absence > of an external anchor on a long-running internal rule is > itself a useful drift signal.'"* + +## Rendering-side specification — anchors stay for observer legibility (Aaron 2026-04-29 addendum) + +A standalone memory file (now consolidated here per Amara's +round-4-followup catch) initially captured the rendering-side +specification of this rule. Folding into Beacon-promotion +because it's not a distinct concept — it's how Beacon +promotion shows up in prose once an anchor is earned. + +### Source quote (verbatim) + +Aaron 2026-04-29 (mid-tick correction, reversing one +direction of an Amara round-4 push to drop Conway-Kochen): + +> *"The human lineage link is always important like the The +> Conway-Kochen parity intuition we might have engineering on +> our side like Amara says but we still need to link to human +> lineage so external observerse have a frame of references +> without fully understading our engineering"* + +(Typos preserved per the channel-verbatim-preservation rule.) + +### The two failure modes around metaphor + engineering + +1. **Using metaphors as engineering proof.** Bad. The + metaphor doesn't prove the claim; the substrate does. + The push to delete metaphors-as-proof is correct. + +2. **Removing human-lineage anchors entirely because the + engineering claim is self-sufficient.** Also bad. External + observers (people without our vocabulary) lose their + reference frame. The push to keep lineage-as-attribution + is correct. + +The synthesis composes both: + +```text +Cite the lineage, do not dress engineering claims with it. +``` + +### How Beacon-promotion renders in prose + +Once a load-bearing rule earns its external anchor (per the +Beacon-promotion criteria above), the anchor stays in +research notes / chat commentary / memory files / round- +history entries as **attributed external reference for +observer legibility**: + +```markdown +This pattern is the engineering analog of the + from : . +``` + +The anchor is named, attributed, AND tied to the engineering +claim it accompanies. The reader can verify the lineage +externally OR read the engineering directly; both paths +work. + +The rule does NOT mean every engineering claim needs a +metaphor. Many claims (CI failures, lint pseudocode, file +naming) are best left in operational terms with no anchor +at all. The rule only fires when an anchor exists; once it +does, the anchor stays. + +### Distilled keepers + +```text +Anchors are observability infrastructure, not proof scaffolding. +``` + +```text +Cite the lineage, do not dress engineering claims with it. +``` + +The rendering-side specification was originally landed as a +standalone memory file (`feedback_human_lineage_anchors_always_stay_*.md`) +during the round-4 absorb. Amara's round-4-followup correctly +flagged that as rule-sprawl: this isn't a distinct concept, +it's how Beacon-promotion shows up in prose. Folded back here.