blue/.blue/docs/rfcs/0037-single-source-protocol-authority.draft.md
Eric Garcia 02901dfec7 chore: batch commit - ADRs, RFCs, dialogues, spikes, and code updates
ADRs:
- Update 0008-honor, 0009-courage, 0013-overflow, 0015-plausibility
- Add 0017-hosted-coding-assistant-architecture

RFCs:
- 0032: per-repo AWS profile configuration (draft)
- 0033: round-scoped dialogue files (impl + plan)
- 0034: comprehensive config architecture (accepted)
- 0036: expert output discipline (impl)
- 0037: single source protocol authority (draft)
- 0038: SDLC workflow discipline (draft)
- 0039: ADR architecture greenfield clarifications (impl)
- 0040: divorce financial analysis (draft)
- 0042: alignment dialogue defensive publication (draft)

Spikes:
- Read tool token limit on assembled dialogues
- RFC ID collision root cause
- Expert agent output too long
- Judge writes expert outputs
- Blue MCP server on superviber infrastructure
- Playwright MCP multiple window isolation

Dialogues: 16 alignment dialogue records

Code:
- blue-core: forge module enhancements
- blue-mcp: env handlers and server updates
- alignment-expert agent improvements
- alignment-play skill refinements
- install.sh script

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 16:28:31 -05:00

4.6 KiB

RFC 0037: Single-Source Protocol Authority

Status Draft
Date 2026-01-26
Dialogue Remove SKILL.md / build_judge_protocol Redundancy
Depends On RFC 0033 (round-scoped dialogue files), RFC 0036 (expert output discipline)

Summary

The alignment dialogue system had two sources of truth describing the same workflow: SKILL.md (315-line skill file) and build_judge_protocol() in dialogue.rs (Rust function generating runtime JSON). This RFC strips SKILL.md to a thin entry point (73 lines) and establishes build_judge_protocol() as the sole authority for all runtime behavior.

Problem

SKILL.md and build_judge_protocol() both contained:

  • Round workflow steps (7-step process)
  • Agent prompt template structure
  • File architecture (scoreboard.md, tensions.md, round-N.summary.md)
  • Artifact writing instructions
  • Context instructions for round 1+
  • Scoring dimensions and convergence criteria

When one changed, the other had to change. They had already drifted — SKILL.md lacked artifact writing instructions while the protocol included them, causing the Judge to skip writing scoreboard.md, tensions.md, and round-N.summary.md.

Root cause: SKILL.md tried to be both a discovery document and a runtime specification.

Analysis (from 5-Expert Alignment Dialogue)

The dialogue explored three approaches and reached 5/5 convergence on Approach C (validated redundancy). However, post-dialogue review overruled that conclusion: we don't need to build for human operators. SKILL.md is not read by humans browsing documentation — it's loaded by the skill system at invocation time, immediately before blue_dialogue_create returns the Judge Protocol.

This makes Approach A (strip SKILL.md) correct. The dialogue's concern about "orphaning human operators" was based on a false premise.

Solution

Strip SKILL.md to Entry Point

SKILL.md retains only:

  • Frontmatter — name, description (required by skill system)
  • Usage — invocation syntax and parameters
  • How It Works — 3-line summary: call blue_dialogue_create, get protocol, follow it
  • Expert Selection — pastry names and tier distribution
  • Blue MCP Tools — tool names and one-line descriptions
  • Key Rules — 3 rules (don't participate, spawn parallel, follow protocol)
  • The Spirit of the Dialogue — philosophy (unique to SKILL.md, not in protocol)

SKILL.md does NOT contain:

  • Round workflow steps
  • Agent prompt template (or any description of it)
  • File architecture diagram
  • Artifact writing instructions
  • Context instructions for round 1+
  • Scoring dimensions or formulas
  • Convergence criteria
  • .dialogue.md format specification

All of the above live exclusively in build_judge_protocol().

Authority Hierarchy

Source Role Contains
build_judge_protocol() Runtime protocol Everything: workflow, prompts, file paths, scoring, convergence
SKILL.md Thin entry point Invocation syntax, parameters, "call blue_dialogue_create and follow the protocol"

There is no overlap to validate. No sync test needed.

What Changed

  • SKILL.md: 315 lines → 73 lines. Removed all workflow, scoring, file architecture, template details, and .dialogue.md format specification.
  • No code changes: build_judge_protocol() is unchanged. It was already correct.
  • No new tests: No validation test needed — there's nothing to validate when there's no duplication.

What Does NOT Change

  • Runtime behaviorbuild_judge_protocol() output is unchanged
  • File architecture — RFC 0033 round-scoped files unchanged
  • Agent prompt template — RFC 0036 structural template unchanged
  • Scoring — ALIGNMENT = Wisdom + Consistency + Truth + Relationships, unbounded

Risks

SKILL.md may be too thin for an LLM that hasn't seen the protocol yet. The Judge reads SKILL.md before calling blue_dialogue_create. If SKILL.md provides zero context about what to expect, the Judge may not know to call blue_dialogue_create in the first place. Mitigation: SKILL.md retains the "How It Works" section with the 3-step flow (create → receive protocol → follow it), which is sufficient orientation.

Test Plan

  • Run alignment dialogue with stripped SKILL.md — verify Judge follows protocol correctly
  • Verify artifact files (scoreboard.md, tensions.md, round-N.summary.md) still written
  • Run cargo test — existing tests pass (protocol unchanged)

"Right then. Let's get to it."

— Blue