Skip to content

Restructure documentation: condense thesis, add RFC collection - #3

Open
andreisavu wants to merge 5 commits into
mainfrom
claude/agent-control-plane-rfcs-5lduv3
Open

Restructure documentation: condense thesis, add RFC collection#3
andreisavu wants to merge 5 commits into
mainfrom
claude/agent-control-plane-rfcs-5lduv3

Conversation

@andreisavu

Copy link
Copy Markdown
Member

Summary

This PR restructures the project documentation to establish a clearer, more actionable foundation for the agent-definition library. The main README is condensed from a lengthy philosophical exposition into a concise statement of the core thesis and nine guiding principles. A new RFC collection in rfcs/ provides detailed, testable contracts for implementing the vision.

Key Changes

  • README.md: Reduced from ~387 lines to ~223 lines

    • Condensed the thesis from a multi-paragraph narrative into a single, direct statement: "the harness is the depreciating asset; the definition is the durable one"
    • Replaced the lengthy "Situation" and "Problem We Are Solving" sections with a one-line summary of the bet
    • Converted the six "Tenets" into nine "Principles" with more actionable, implementation-focused language
    • Removed the "Situation" and "Problem We Are Solving" sections entirely, deferring detailed rationale to RFCs
    • Added a pointer to the RFC collection as the source of testable contracts
  • rfcs/README.md (new): Index and overview of the RFC collection

    • Frames the three rings: definition, control plane, and harness
    • Provides a table of contents for all 14 RFCs with their ring assignments
  • RFC-0001 through RFC-0014 (new): Detailed design contracts

    • RFC-0001: Scope and boundary — establishes the three-ring model and why unattended operation changes the design
    • RFC-0002: Instruction graph — typed, hierarchical sections as the portable artifact
    • RFC-0003: Tools — transactional side-effect boundaries with typed I/O
    • RFC-0004: Policies — declarative invariants that gate actions
    • RFC-0005: Feedback and completion gates — trajectory steering and termination verification
    • RFC-0006: Event ledger — one append-only stream; state and transcript as views
    • RFC-0007: Workspace and egress — declared intent, mediated effects, default-deny
    • RFC-0008: Capabilities and injected time — nothing ambient, everything declared
    • RFC-0009: Execution envelope — deadlines, budgets, and liveness proofs
    • RFC-0010: Work distribution — at-least-once delivery, dead letters, graceful shutdown
    • RFC-0011: Run record — self-contained, queryable archive of every run
    • RFC-0012: Adapter contract — thin translation layer with conformance testing
    • RFC-0013: Versioned iteration — content hashes, overrides, and experiments
    • RFC-0014: Evaluation — datasets, evaluators, and behavioral assertions

Notable Implementation Details

  • The principles in the new README are reframed to emphasize how to build rather than why it matters: "Make the correct path the easy path" (principle 2) and "Nothing ambient" (principle 8) are concrete design directives
  • Each RFC is marked as Draft status and declares its dependencies, enabling readers to understand prerequisite concepts
  • The RFC structure separates concerns into three rings (definition, control plane, harness), making it clear which contracts are portable and which are runtime-specific
  • RFCs include normative properties, motivation, and concrete failure modes, making them testable rather than aspirational

https://claude.ai/code/session_01JgQvogiHxBzof7Cd7LYita

claude added 5 commits July 9, 2026 19:10
Distill the design ideas behind weakincentives/weakincentives into 14
implementation-agnostic RFCs specifying what a state-of-the-art library
for unattended agents should look like: the definition ring (instruction
graph, transactional tools, policies, feedback/completion gates, event
ledger), the environment ring (workspace/sandbox/egress, capabilities and
injected time), and the control plane (execution envelope, work
distribution, run records, adapter certification, versioned overrides and
experiments, evaluation).

README changes: link the RFC collection, add two tenets (make the correct
path the easy path; evaluation is the control loop), extend the reference
architecture with egress/credential posture, the canonical transcript,
and hash-anchored versioned iteration, add an upgrade-gating success
scenario, and reflect the additions in the boundary diagram.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgQvogiHxBzof7Cd7LYita
Fold reviewed decisions into normative text and add a decision log to the
RFC index:

1. Policies gate the full action surface, including native harness tools,
   via adapter pre-action hooks; harnesses without an interception point
   declare the capability absent (RFC-0004, RFC-0012).
2. The transcript becomes the storage substrate: one append-only event
   stream per run, with conversation, state, and operational views as
   projections; definition-plane appends are authoritative while
   harness-derived mirroring stays best-effort (RFC-0006, RFC-0011).
3. Dead-letter and retriability classification move to the definition,
   declared against the typed error taxonomy; the adapter error-translation
   layer is named as the load-bearing encapsulation boundary (RFC-0010,
   RFC-0012).
4. Analysis agents are report-only and must emit structured findings with
   evidence references and machine-actionable proposals (RFC-0014).
5. The adapter floor is Core tier plus transcript emission (RFC-0012).

Also update the root README state-contract paragraph, the glossary, and
open-question sections; add new open questions surfaced by the decisions
(cross-source ordering on the unified stream, deny-with-reason hook
expressiveness, structured-finding schema).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgQvogiHxBzof7Cd7LYita
Remove the trailing open-questions sections from all RFCs rather than
parking implementation-level choices as future work. Add an "Altitude"
convention to the index: RFCs specify observable contracts, and
implementation choices that do not change behavior observable through the
compatibility surface are deliberately unstated.

Keep only the additions that close real contract holes: causal ordering
across transcript sources (RFC-0011), sub-agent spend attribution to the
parent envelope (RFC-0009), and invariants-over-exact-counts guidance for
suite scenarios (RFC-0012). Trim implementation-flavored phrasing from the
filesystem protocol and slice-view passages.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgQvogiHxBzof7Cd7LYita
Blocker-driven rewrite of all 14 RFCs, the index, and the README. The
narrative: one artifact defines the agent, one stream records the run,
explicit bounds contain it, tests prove it ports, evaluation improves it.

Blockers fixed:
- Ownership contradiction: the README diagram assigned deadlines, retries,
  and leases to the harness while the RFCs made them control-plane
  contracts. The diagram is now three boxes (definition / control plane /
  harness) consistent with RFC-0001's rings and ownership table.
- Dependency inversion: the definition-ring state RFC depended on a
  control-plane RFC for its own substrate. The transcript now lives in
  RFC-0006 (The Transcript and State, definition ring); RFC-0011 becomes
  The Run Record. Files renamed accordingly.
- Terminology drift: "ledger" (three meanings across nine files) retired in
  favor of transcript (stream) and slices/views (state).
- Repetition: shared motivation hoisted into RFC-0001; per-RFC motivation
  cut to one paragraph; README FAQ removed with its load-bearing content
  folded into the principles and worst-cases sections.

The README's tenets become twelve principles that the RFCs elaborate.
Collection shrinks from 2,735 to 2,002 lines with no contract removed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgQvogiHxBzof7Cd7LYita
Revise the substrate decision: the ledger — one append-only,
high-granularity event stream per run covering conversation, guardrail
decisions, state transitions, and operational signals — is the storage
abstraction. The transcript is a deterministic projection of what the model
saw and did; state slices and metrics are other views. Not every state
transition appears in the transcript; nothing escapes the ledger.

RFC-0006 becomes The Event Ledger, with an event-class table mapping each
class to transcript membership (the model boundary is the membership rule)
and a transcript-stuffing anti-pattern. The compatibility oracle moves to
the transcript view, where cross-harness parity is meaningful —
full-ledger granularity may differ across harnesses. Recording contracts
across RFCs 0001-0005 and 0011-0014 now name the ledger; model-visible
assertions keep naming the transcript. Decision log entry 2 is superseded
in place; glossary gains a Ledger entry; README principle 6 becomes
"One ledger".

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgQvogiHxBzof7Cd7LYita
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.

2 participants