Skip to content

feat(ch18): Reconciliation Loop pattern + Mode axis#8

Open
danielmeppiel wants to merge 2 commits into
mainfrom
feat/ch18-reconciliation-loop-mode-axis
Open

feat(ch18): Reconciliation Loop pattern + Mode axis#8
danielmeppiel wants to merge 2 commits into
mainfrom
feat/ch18-reconciliation-loop-mode-axis

Conversation

@danielmeppiel

Copy link
Copy Markdown
Owner

Closes #7

TL;DR

The move is naming the agentic instance of an ancient style (Wiener 1948, Shewhart 1939, Fielding 2000, CoreOS 2016, SRE 2016) -- this PR claims recognition, not novelty. The existence proof is the batch-bug-shepherd skill running a full reconciliation saga inside GitHub Copilot CLI in Q2 2026 with neither /goal nor /loop shipped by the harness. The Mode axis (static / style / sugar) is the structural fix for ch18's silent structural-only bias: every entry now has two coordinates, not one.

Why now

Three vendor signals are converging on the same discipline, independently. Codex packaged it as /goal; Claude Code packaged it as /loop and /goal; GitHub Copilot CLI has open proposals in #2129 and #3364. Three independent vendors converging on the same primitive in the same quarter is the field telling us a discipline is worth naming. The handbook is the place to name it as the architectural style it is, before the sugar wins the naming war and the discipline becomes legible only to users of one specific runtime.

What changes

  • Thesis rewrite (ch18 §Thesis). Introduces the Mode axis explicitly: every catalogue entry now carries (layer, mode) coordinates. Modes: static (one-shot), style (continuous discipline over substrate, after Fielding 2000), sugar (vendor-packaged primitive). Most existing entries are static; this revision adds the first style entry.
  • Reading rules (ch18 §2). Adds Mode as the seventh field, with static-default documented once so existing entries do not need to be re-decorated.
  • PANEL row update (ch18 §3 Composition layer). Tags PANEL as Mode: static in Consequences and adds a two-line forward reference to the Reconciliation Loop: "PANEL deliberates once; the Reconciliation Loop reasserts continuously."
  • New section 7 'Control loop patterns'. A cross-cutting mode category, not a fifth layer. Opens with a 2D Mode-axis matrix (Mermaid). First and only entry today: Reconciliation Loop, with the GoF-compressed template extended by three operational fields (Invariant / Convergence / Failure Mode) the original was never designed to host. Includes substrate-portability paragraph, existence proof (Shepherd in Copilot CLI), and a closed-cycle topology diagram (Mermaid). Renumbers existing sections 7 / 8 to 8 / 9.
  • Decision matrix row (ch18 §8) and ch17 forward reference. New decision-matrix row for the Reconciliation Loop. One-sentence forward reference in ch17 after the ADAPT loop description, pointing at the new section 7 -- the ADAPT loop is one wave-level instance of the broader style.

Validation evidence

  • Personas approved. Practitioner Authority drafted; CTO Proxy validated the existence-proof claim (Shepherd ran on Copilot CLI without /goal or /loop -- substrate-portability is the load-bearing claim, the conversion metric is supportive); Dev Lead Proxy validated Monday-actionability (Invariant / Convergence / Failure Mode are operational checks a senior dev can write today); Fact & Ref Checker validated every classical citation (Fielding 2000 UC Irvine PhD, Philips 2016 CoreOS blog, SRE book 2016 O'Reilly, Wiener 1948 MIT Press, Shewhart 1939, plus the four vendor URLs verbatim from the discovery brief); Illustrator validated both Mermaid diagrams as syntactically valid and comprehension-accelerating; Chief Editor synthesised and enforced handbook voice (no factory / wedge / commercial framing; novelty disclaimed in the thesis).
  • ASCII guard. All new content is printable ASCII. Existing em-dashes in unchanged lines are preserved verbatim (out of scope for this PR per the surgical-changes rule).
  • Local Quarto render. Not run locally. CI status not asserted here.

Trade-offs

  • The Mode axis adds a coordinate every reader must internalise. We accept this because the alternative -- a silent structural-only catalogue -- mislabels operational patterns as composition variants and produces the Recommendation-as-backlog failure mode at scale.
  • The GoF Intent / Applicability / Consequences template needs three extra fields (Invariant / Convergence / Failure Mode) for operational patterns. We accept the template asymmetry because the original GoF template was designed for object graphs that live and die in one process; agentic operational patterns whose discipline only renders over time do not fit it. This is the same extension Kubernetes Operator literature and the SRE book arrived at independently.
  • The PR puts a stake in the ground that the agentic SDLC catalogue needs both static (GoF-shaped) and style (operator-shaped) entries. Future contributions can add more style-mode entries (Alignment Loop, Drift-Reassertion) under section 7 without re-litigating the axis.

danielmeppiel and others added 2 commits May 28, 2026 09:19
Introduces the Mode axis (static / style / sugar) as a second coordinate
alongside the existing Layer axis. Each pattern entry now records how it
asserts itself over the substrate, not only where it lives. Most existing
entries are mode=static; this revision adds the first mode=style entry.

Adds section 7 'Control loop patterns' as a cross-cutting mode category
(not a fifth layer) with the Reconciliation Loop as its first entry. The
entry extends the GoF-compressed template (Intent / Applicability /
Consequences) with three operational fields (Invariant / Convergence /
Failure Mode) that the original template was never designed to host --
the same extension Kubernetes Operator literature and the SRE book
arrived at independently.

Existence proof: the batch-bug-shepherd skill ran a full reconciliation
saga in Q2 2026 inside GitHub Copilot CLI, a harness that ships neither
/goal nor /loop, demonstrating that the discipline renders on baseline
primitives (sub-agent dispatch, persistent state, completion signal).
Vendor sugar (Codex /goal, Claude Code /loop, Copilot CLI issues #2129
and #3364) is convergent recognition, not a precondition.

Adds forward reference from ch17 ADAPT loop to the new ch18 section.
Cross-references the failure-mode field to ch19 Cost Runaway, Not Fixing
the Primitives, and Persona Drift.

Closes #7

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- 'Existence proof' section renamed to 'Worked example' and
  reframed: batch-bug-shepherd is the first concrete realization
  we built while developing the pattern, not external industry
  validation. A single worked example is not a population claim;
  it is the move from aspirational to demonstrated.
- 'Substrate portability' acknowledges we tested the claim by
  building the worked example in Copilot CLI specifically because
  it ships neither /goal nor /loop -- the discipline rendered
  without the sugar.
- New 'Composition with adjacent patterns' subsection after the
  topology diagram, showing A10-wraps-A11-with-per-item-A8-or-A1
  with a Mermaid diagram and a three-axis explanation (outer
  governance wrap, per-item drop-in, queue-level policy).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Proposal: ch18 treatment of per-item convergence over Wave -- 'note on Wave' (Path A) OR narrowed Reconciliation Loop Tier-3 row (Path B)

1 participant