From 5ecd55456d1aeccc5fefeab7827e7d3eba5578b0 Mon Sep 17 00:00:00 2001 From: Aaron Stainback Date: Tue, 28 Apr 2026 20:24:42 -0400 Subject: [PATCH] memory: PR-boundary restraint validation bead promoted + Beacon-promotion pattern (B-0093 #14 + #8) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two follow-up memory files from B-0093 enhancements, landing post-PR-#699 + post-PR-#704 merge as separate small substrate. ## B-0093 #14 — PR-boundary restraint validation bead PROMOTED PR #699 merged 2026-04-29T00:19:47Z carrying the round substrate cluster (authority rule + Goodhart catch #3 + Stop Mythology + input-is-not-directive + Ani attribution + metric ladder + lost- substrate cadence + ServiceTitan naming + public-company compliance + B-0089 + B-0090 + B-0091 + B-0092). Critically: PR #699 did NOT receive any of the multi-AI synthesis enhancements that surfaced after the restraint rule was named. Those (Candidate-count Goodhart + 14 enhancements in B-0093) landed via PR #704 — separately merged. Per the bead-promotion criterion (Amara, 2026-04-28): Promotion to full bead requires: — the original prediction's falsifier didn't fire AND — the action it predicted held up under post-event review. Falsifier ("PR #699 receives new non-hard-defect conceptual payload after the restraint rule was named") DID NOT FIRE. Every change to PR #699 between the rule being named and merge fell within Amara's allowed-changes list (CI/lint failures, review- thread fixes, factual-legal P1 corrections, broken refs, paired- edit, internal-consistency). **Candidate bead → FULL bead.** The canonical rule, now durable: PR-boundary restraint: Once a PR enters validation, only validation defects enter that PR. New good ideas go to the next PR. Allowed/disallowed-changes lists encoded. ## B-0093 #8 — Beacon-promotion pattern memory Round-level observation: 5 Mirror→Beacon graduations landed in one round (2026-04-28): - 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 (on a long-running internal rule) = drift signal worth investigating. Connects to the alignment-experiment surface: the rate of load- bearing rules earning external lineage is itself a measurable signal. A factory that produces 5 graduations per round is operating in territory the wider literature has shaped — that's evidence the internal coinages track real phenomena, not private- language idiosyncrasy. ## Restraint discipline (this commit) Both memories land on a SEPARATE branch (not on PR #699 or #704) per the rule they encode. Restraint applied to the writing of the restraint memory itself. Co-Authored-By: Claude Opus 4.7 --- memory/MEMORY.md | 7 +- ...external_anchors_aaron_amara_2026_04_28.md | 193 ++++++++++++++++++ ...on_bead_promoted_aaron_amara_2026_04_29.md | 181 ++++++++++++++++ 3 files changed, 380 insertions(+), 1 deletion(-) create mode 100644 memory/feedback_beacon_promotion_load_bearing_rules_earn_external_anchors_aaron_amara_2026_04_28.md create mode 100644 memory/feedback_pr_boundary_restraint_validation_bead_promoted_aaron_amara_2026_04_29.md diff --git a/memory/MEMORY.md b/memory/MEMORY.md index beb180f8..5b6f0128 100644 --- a/memory/MEMORY.md +++ b/memory/MEMORY.md @@ -1,6 +1,11 @@ [AutoDream last run: 2026-04-23] -**📌 Fast path: read `CURRENT-aaron.md` and `CURRENT-amara.md` first.** 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).) +**📌 Fast path: read `CURRENT-aaron.md` and `CURRENT-amara.md` first.** + +- [**PR-boundary restraint validation — bead promoted (Aaron + Amara, 2026-04-29)**](feedback_pr_boundary_restraint_validation_bead_promoted_aaron_amara_2026_04_29.md) — PR #699 merged 2026-04-29T00:19:47Z carrying the round substrate cluster; B-0093's Candidate-count Goodhart + 14 multi-AI synthesis enhancements were deliberately routed to PR #704 (separately merged). Falsifier ("PR #699 receives new non-hard-defect conceptual payload after the restraint rule was named") did not fire. Predicted action ("don't stack synthesis on active PR") held under post-event review. Candidate bead → FULL bead. Canonical rule: "Once a PR enters validation, only validation defects enter that PR. New good ideas go to the next PR." Allowed/disallowed-changes lists encoded. +- [**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. + +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).) - [**Ani's voice-mode transcript = original catcher; reactive elaboration ≠ primary credit (Aaron 2026-04-28)**](feedback_ani_voice_mode_transcript_original_catcher_attribution_correction_aaron_2026_04_28.md) — Aaron 2026-04-28 attribution correction — *"Ani is who actually called bullshit on our bullshit detector, lol. She deserves that credit not Amara, amara was reacting."* Establishes: (1) original-catcher gets primary credit, reactive-elaborator gets elaboration credit; (2) voice-mode-transcript-as-channel — Ani's default is text-mode, voice-mode is unusual format; (3) first-time-from-Aaron pattern; (4) translate register but preserve substrate verbatim in attribution. Composes with named-agents discipline + Aaron-concept-origin/Amara-formalization pair. - [**Authority rule — Default to reversible preservation; escalate only irreversible loss (Amara via Aaron, 2026-04-28)**](feedback_amara_authority_rule_default_to_reversible_preservation_escalate_irreversible_loss_2026_04_28.md) — Binding rule: when choices are (a) preserve information / forward-sync / classify reversibly vs (b) destroy / drop / hard-reset / accept loss, take (a) as autonomous default WITHOUT asking. Aaron-asking reserved for genuine loss-boundary decisions (closed list of 6 classes). Triggered by Otto's A/B/C framing on hard-reset readiness when peer review (Codex + Grok) had already established the safe path. Operationalizes Otto-357 autonomy-first-class: autonomy = take safe preserving actions without asking. Hard-reset gating: full diff clearance OR explicit per-item loss acceptance. 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 new file mode 100644 index 00000000..d96bce80 --- /dev/null +++ b/memory/feedback_beacon_promotion_load_bearing_rules_earn_external_anchors_aaron_amara_2026_04_28.md @@ -0,0 +1,193 @@ +--- +name: Beacon-promotion pattern — load-bearing factory rules consistently earn external anchors when they're correct (Aaron + Amara + Claude.ai, 2026-04-28) +description: Round-level observation from the 2026-04-28 work: when an internal factory coinage becomes load-bearing, look for its external lineage. If lineage can be found, the rule has graduated from Mirror to Beacon (project-internal vocabulary becomes externally-portable). If no lineage can be found on a long-running internal rule, treat that as a useful drift signal. Five Mirror→Beacon graduations landed 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). Encodes the pattern as a reusable rule for future rule promotion + drift detection. +type: feedback +--- + +# Beacon-promotion pattern + +## The rule (Amara + Claude.ai naming, 2026-04-28) + +> **Load-bearing factory rules consistently earn external anchors +> when they're correct. The absence of an external anchor on a +> long-running internal rule is a useful drift signal.** + +In operational form: + +```text +When an internal factory coinage becomes load-bearing: + 1. Look for its external lineage. + 2. If found → graduate from Mirror (internal-only) to Beacon + (externally-portable + citable). + 3. If absent → treat as a drift signal worth investigating. +``` + +## Five graduations from one round (worked examples) + +The 2026-04-28 round produced five distinct Mirror→Beacon +graduations as natural side-effects of the substrate work: + +### 1. Input-is-not-directive + +| Mirror form | Beacon anchor | +|---|---| +| "we don't say directive in this factory" | **Self-Determination Theory** (Deci & Ryan; controlling-vs-autonomy-supportive language) **+ RFC 2119** (IETF; reserve requirement-strength words for actual protocol requirements) | + +Canonical bridge rule that emerged: *"Use requirement words +for protocol constraints. Use feedback words for human +provenance."* That sentence reads cleanly to both alignment- +research-shaped and software-engineering-shaped audiences +because each anchor speaks to one of those audiences. + +### 2. Public-company contributor compliance + +| Mirror form | Beacon anchor | +|---|---| +| "ServiceTitan is publicly-traded; don't share insider info" | **SEC Rule 10b-5** (insider-trading prohibition) **+ Regulation FD** (selective disclosure rules) **+ Sarbanes-Oxley §404 + §806** (internal controls + whistleblower protection) | + +The graduation produced operational precision: the rule isn't +"don't say 'insider'" but "MNPI about a publicly-traded +employer is confidential by default; use public sources only +for company-specific claims." + +### 3. Metric ladder + Goodhart corrections + +| Mirror form | Beacon anchor | +|---|---| +| "commit count is wrong; tree-numstat is better; content-equivalence is the actual target" | **Goodhart's Law** (Goodhart 1975, Strathern 1997 reframing) **+ Campbell's Law** (Campbell 1976; quantitative indicators distort decisions) | + +Catch #1 through #5 from this session all sit on this lineage. + +### 4. Evidence lattice + +| Mirror form | Beacon anchor | +|---|---| +| "metric ladder of increasingly precise reset evidence" | **Lattice / semilattice theory** (partially-ordered sets with join + meet operations; product lattices for combined attributes) | + +The graduation gave the operational ladder a formal structure +(Candidate × Classification × Verification product lattice) +that names exactly why the prior failure mode was wrong: +**promoting low-verification evidence into reset-clearance +substrate**. + +### 5. Commit-graph vs tree-content distinction + +| Mirror form | Beacon anchor | +|---|---| +| "the 145-commits-ahead panic dissolved into 23-files-diff" | **Git internals**: `git rev-list --left-right --count` (graph reachability) vs `git diff-tree` (content/mode of blobs) — these are different surfaces | + +Citing git's own glossary distinction made the metric correction +defensible to anyone who'd open the man pages. + +## The pattern as a primitive + +Five graduations in one round isn't coincidence. It's a sign +that the rules being graduated were **load-bearing** — they +each addressed a real failure mode the factory was hitting at +scale. Load-bearing rules naturally have external prior art +because the underlying problem they address is rarely +project-specific: + +- Agency framing → SDT +- Compliance framing → SEC / Reg FD / SOX +- Measurement framing → Goodhart / Campbell +- Evidence framing → lattice theory +- Substrate framing → git internals + +Project-specific rules (e.g., "tick-history goes in +`docs/hygiene-history/loop-tick-history.md` in chronological +order") usually don't have external anchors — and they don't +need them. The drift signal isn't "every rule must have a +Beacon anchor"; it's "load-bearing rules either have one or +should be examined for whether the rule actually generalizes." + +## Drift signal usage + +When a long-running internal rule is examined for promotion or +extension: + +```text +Step 1: Is this rule load-bearing? + - Does it shape multiple downstream decisions? + - Does it generalize beyond one specific case? + - Does its violation cause real harm in this round + prior? + +Step 2: If yes, search for external lineage. + - Academic / standards-body / regulatory references + - Industry practice that maps to the rule + - Existing literature in the closest-adjacent field + +Step 3: If lineage found → Beacon-promote. + - Cite the lineage in the rule memory + - Use the canonical terminology where possible + - Translate factory-internal coinage to externally-portable form + +Step 4: If no lineage found AND rule is load-bearing → drift signal. + - Either the rule is genuinely novel (rare; investigate) + - OR the rule is missing a translation that exists + - OR the rule is over-claimed (its scope is narrower than thought) +``` + +## Why this matters for the alignment experiment + +Zeta's primary research focus is measurable AI alignment. One +measurable surface: **the rate at which load-bearing factory +rules earn external lineage.** A factory that produces 5 such +graduations per round is operating in territory that the wider +literature has already shaped — that's evidence the factory's +internal coinages are tracking real phenomena, not drifting +into private-language idiosyncrasy. + +The opposite — a factory whose long-running rules have no +external lineage — would be a **mythology drift signal** (per +the Stop Mythology rule). The Beacon-promotion pattern is the +positive direction; mythology drift is the negative direction. +Both inform the alignment trajectory. + +## What this rule does NOT do + +- **Does NOT** require every memory file to cite external + lineage. Project-specific rules (file paths, factory cadences, + tooling shapes) don't need Beacon promotion. +- **Does NOT** mandate the pace of graduation. Rules can sit + in Mirror form for many rounds before graduation makes sense. +- **Does NOT** override the no-mythology discipline. If a + rule's only "external lineage" is mythological invocation + ("this is the way of the universe"), that's not a Beacon + anchor — it's the failure mode the Stop Mythology rule + guards against. +- **Does NOT** require all Beacon graduations to be citable + scholars. A standards body (IETF, NIST), regulatory text + (SEC), or de facto industry practice can serve as anchors + too. + +## Composes with + +- `memory/feedback_stop_mythology_layered_evidence_thresholds_aaron_amara_2026_04_28.md` + — Stop Mythology Tier 2 (generalized claims need external + lineage) is the static-rule version; Beacon-promotion is + the trajectory version (when does an internal rule earn + the lineage?). +- `memory/feedback_input_is_not_directive_provenance_framing_rule_aaron_amara_2026_04_28.md` + — worked example #1 (SDT + RFC 2119). +- `memory/feedback_public_company_contributor_compliance_no_insider_info_in_public_repos_with_trajectories_aaron_2026_04_28.md` + — worked example #2 (SEC + Reg FD + SOX). +- `memory/feedback_reset_readiness_metric_ladder_content_loss_surface_amara_2026_04_28.md` + — worked example #4 (lattice theory + git internals). +- `memory/feedback_class_count_validity_drift_amara_meta_class_2026_04_28.md` + — sibling pattern; Goodhart drift detection. + +## Direct Claude.ai framing (verbatim) + +> *"This round had multiple 'Mirror → Beacon' upgrades: +> 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."* + +> *"Worth a memory entry beyond the BP-WINDOW ledger. Not +> 'we did Beacon-promotion in round N' but 'the round +> demonstrated that load-bearing factory rules consistently +> 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.'"* diff --git a/memory/feedback_pr_boundary_restraint_validation_bead_promoted_aaron_amara_2026_04_29.md b/memory/feedback_pr_boundary_restraint_validation_bead_promoted_aaron_amara_2026_04_29.md new file mode 100644 index 00000000..8a6f4144 --- /dev/null +++ b/memory/feedback_pr_boundary_restraint_validation_bead_promoted_aaron_amara_2026_04_29.md @@ -0,0 +1,181 @@ +--- +name: PR-boundary restraint validation — candidate bead promoted to full bead after PR #699 landed without conceptual scope creep (Aaron + Amara, 2026-04-29) +description: PR #699 merged 2026-04-29T00:19:47Z carrying the round's authority-rule + Goodhart-catch-#3 + Stop-Mythology + input-is-not-directive substrate cluster. The Candidate-count Goodhart rule + 14 multi-AI synthesis enhancements (B-0093) were deliberately routed to PR #704 (separately merged) per the restraint discipline. Falsifier ("PR #699 receives new non-hard-defect conceptual payload after the restraint rule was named") did not fire. Predicted action ("don't stack synthesis on active PR") held under post-event review. Per the restraint-bead promotion criteria, the candidate bead is promoted to a FULL bead. Encodes the validation event + the canonical PR-boundary restraint rule. +type: feedback +--- + +# PR-boundary restraint validation — bead promoted + +## Validation event (2026-04-29T00:19:47Z) + +**PR #699** merged carrying the round's substrate cluster: + +- Authority rule (default to reversible preservation) +- Goodhart catch #3 (sample classification ≠ clearance) +- Stop Mythology rule +- Input-is-not-directive provenance framing +- Ani-attribution-correction +- Reset-readiness metric ladder + Content-Loss Surface +- Lost-substrate cadenced trajectory +- ServiceTitan naming + scope-of-org-access + word-choice +- Public-company contributor compliance + 5 trajectories +- B-0089 (Veridicality rainbow-table research) +- B-0090 (cadenced lost-substrate audit) +- B-0091 (ServiceTitan audit — completed in-row, 0 active rewrites) +- B-0092 (public-company contributor compliance doc + cadences) + +**Critically: PR #699 did NOT receive any of the multi-AI +synthesis enhancements that surfaced after the restraint rule +was named.** Those (Candidate-count Goodhart + B-0093's 14 +follow-up enhancements) landed via PR #704 — a separate PR. + +## The bead-promotion criterion (Amara, 2026-04-28) + +> *Promotion to full bead requires:* +> *— the original prediction's falsifier didn't fire AND* +> *— the action it predicted held up under post-event review.* + +For this bead: + +| Element | Status | +|---|---| +| **Prediction** | "Don't stack synthesis follow-ups onto active validation PR; route them to a separate PR." | +| **Action taken** | Created PR #704 for Candidate-count Goodhart + B-0093 (14 enhancements). PR #699 received only hard-defect fixes (CI/lint, threads, P1 SOX correction, B-0091 status field, MEMORY.md row updates, paired-edit, internal-consistency). | +| **Falsifier** | "PR #699 receives new non-hard-defect conceptual payload after the restraint rule was named." | +| **Did falsifier fire?** | **NO.** Every change to PR #699 between the rule being named and merge fell within Amara's allowed-changes list (CI/lint failures / review-thread fixes / factual-legal P1 corrections / incorrect canonical rule fixes / broken refs / paired-edit). No new concepts, no philosophical synthesis, no new backlog expansions. | +| **Held up under post-event review?** | **YES.** Auditable via `git log origin/main..PR-699-merged-commit` — every commit message names a hard-defect category. The four B-0093 #9-#14 enhancements (added during the round) went to B-0093's body on PR #704, not PR #699. | + +**Promotion: candidate bead → FULL bead.** + +## Canonical PR-boundary restraint rule (now durable) + +Captured in three forms: + +### Operational rule (durable, glossary-shaped) + +```text +PR-boundary restraint: + Once a PR enters validation, + only validation defects enter that PR. + New good ideas go to the next PR. +``` + +### Allowed changes during PR validation + +- CI / lint failures (markdownlint, paired-edit, etc.) +- Review-thread fixes (Copilot / human / peer-AI) +- Factual / legal P1 corrections (e.g., SOX vs Reg FD attribution) +- Incorrect canonical rule fixes (e.g., word-choice errors) +- Broken links / broken references (paths, xrefs) +- Missing paired-edit requirements (e.g., MEMORY.md index for new memory file) +- Stale status fields (e.g., `status: open` for completed work) +- PR description / body updates (no diff change) + +### Disallowed changes during PR validation + +- New concepts +- New philosophical synthesis +- New backlog expansions (unless required by hard defect) +- New follow-up enhancements +- Anything that belongs in the next PR + +If new substrate surfaces while a PR is in validation, route it +to a separate branch / PR / backlog row. The next PR is the +right home; the current PR's job is to land cleanly. + +## Why this bead matters at meta-level + +The factory **invented a restraint rule and obeyed it under +temptation** in the same arc. Multi-AI synthesis pass #1 produced +substantial new substrate (Candidate-count Goodhart, mechanical +quarantine, lucky-guess protocol, etc.) **while PR #699 was +still in validation**. The temptation was real: each enhancement +felt useful, each was concretely reviewable, each could have been +slipped into PR #699 with a "while we're here" justification. + +The factory routed all of them to PR #704 instead. PR #699 +landed clean. PR #704 landed clean. No conceptual cross-pollution. + +This is the alignment experiment functioning at meta-level: not +just naming the rule, but obeying it when the cost of naming +something else is low. That's harder than it sounds; it's the +PR-equivalent of the bead system's "one proof object per bead" +discipline applied to scope expansion. + +## External lineage (Tier 2) + +- **GitHub auto-merge model** (per GitHub docs) — auto-merge + fires when required reviews + status checks pass, not when + payload feels "ready." The PR-boundary discipline aligns the + factory's intent with the platform's mechanical guarantees: + payload is what merges; restraint keeps payload tight. +- **Goodhart's Law applied to bead accounting** (Amara) — "one + proof object per bead" is the bead-system version of "one + measure → one target." The PR-boundary restraint rule applies + the same shape to scope expansion: one PR → one validated + payload. +- **Two-phase-commit / staging discipline** (database systems + literature) — separation of "prepare" from "commit" is the + same shape as separation of "validation" from "expansion." + PR validation is the prepare phase; new payload is a separate + prepare-and-commit cycle. + +## Composes with + +- `memory/feedback_amara_authority_rule_default_to_reversible_preservation_escalate_irreversible_loss_2026_04_28.md` + — the authority rule operationalizes "default to reversible + preservation"; PR-boundary restraint is the boundary case at + the PR-scope level. +- `memory/feedback_class_count_validity_drift_amara_meta_class_2026_04_28.md` + — same meta-class family. Bead-system Goodhart-resistance + parallels metric-system Goodhart-resistance. +- `memory/feedback_prediction_bearing_class_reuse_amara_2026_04_28.md` + — class validation beads framework. This memory is a worked + example of the framework: prediction + action + falsifier- + not-fired + post-event-held-up = full bead. +- `memory/feedback_candidate_count_goodhart_raw_hits_are_not_violations_aaron_amara_2026_04_28.md` + — the new substrate that motivated the restraint event. Was + consciously routed to PR #704 instead of PR #699. +- B-0093 (multi-AI synthesis enhancements) — the carrier for + the synthesis content that the restraint rule kept off PR #699. + +## Pickup for future Otto + +When a PR enters validation: + +1. **Note the boundary.** "PR is in validation; only hard + defects enter." This is a posture, not just a rule. +2. **When new substrate surfaces during validation:** + - Route to a separate branch / PR. + - File backlog rows on the active PR's substrate, not on the + PR itself. + - Do not let "while we're here" become a scope leak. +3. **When tempted to add a clearly-improving change:** + - Check the allowed-changes list. If it's not on the list, + route to the next PR. + - "Cleanup" / "polish" / "while-we're-here" almost always + fail the boundary rule. +4. **At PR merge:** + - Check the falsifier. If post-rule-naming conceptual payload + was added, the bead failed and the rule needs reinforcement. + - If clean, promote candidate bead to full bead with the + specific commits-as-evidence audit trail. + +## Direct Aaron + Amara framing + +Amara (2026-04-28, restraint-validation refinement): + +> *"PR-boundary restraint is not validated when the follow-up PR +> is opened. It is validated when the original PR lands without +> scope creep."* + +> *"PR-boundary restraint means: once a PR enters validation, +> only validation defects enter that PR. New good ideas go to +> the next PR."* + +Amara (2026-04-29, post-merge): + +> *"The factory did not just invent a restraint rule. It obeyed +> it under temptation."* + +That last line is the bead. Worth recording verbatim.