Agentic runtimes are completion-driven: they read whatever they find in a workspace, treat much of it as instruction, and invent what they cannot find. That behavior is a capability in a single session and a liability across many. This paper proposes a small type system for the artifacts a product team keeps around its work: ten classes defined by three attributes, with one central rule — authority derives from an artifact's class, never from its content. Three of the classes carry spec authority at nested scales (the promise that is honored, the thread that closes, the move that lands), and the split of ownership between them lets autonomous execution be both safe and useful. The design yields a mechanical injection boundary, a complete promotion trail, deterministic context assembly, and a learning loop that survives pauses, resumptions, and high agent volume. It is drawn from small-team practice and offered as a working hypothesis, not a proven method.

01

The problem: ambiguity, agents, and authority

Product development is the continuous effort to convert ambiguity into value. A team's work can be pictured on two axes: how clear an idea is, and how committed the team is to it. Ideas hatch vague and uncommitted; shaping raises their clarity; commitment gives them standing; execution converts them into shipped capability.

Two thresholds structure the plane. Work must clear both to be worth building. Work that is committed but unclear sits in a danger zone where time and resources burn.

Desires that need shaping uncommitted · no standing Shovel ready clear and committed Danger zone committed, unclear high low Clarity Commitment
Figure 1. The clarity–commitment plane. Product development is the continuous motion of ideas up and to the right; the thresholds define what an execution system may pick up.

Agentic runtimes raise the stakes in a specific way. Tools like Claude Code are completionists: given an ask, they drive toward something that satisfies it: filling gaps in the specification, exploring the workspace for anything that resolves ambiguity, and, where nothing is found, inventing.

Exploration is a capability, but a downstream one. The agent reads the README, discovers instruction files, and greps the code not because roaming is its job but because whatever it finds reduces its uncertainty about what "correct" and "done" mean. So it grants standing to whatever it finds.

Discovery-as-authority is less a designed architecture than the emergent behavior of a completion drive set loose in a workspace. In a single session it mostly works. Across many sessions it degrades predictably:

At high agent volume, where agents author most of the text that agents later read, the feedback loop of unratified instruction compounds.

The failure has a precise shape: these systems conflate the information channel with the authority channel, because the completion drive makes no distinction between them: anything that fills the gap gets treated as if it belongs there. What the agent actually needs is three different things:

The design below delivers all three by design: evidence stays open to roam, ratification alone fixes what commands obedience, and typed context assembly supplies the grounding, so the completion drive cites instead of inventing.

02

The baseline: a repo, issues, markdown, and an agent

The most popular alternative to this design is not a heavier process but a lighter one, and many teams working with agents are already running it: a repository, an issue tracker, freeform markdown, and Claude Code. It works, and the reason it works is where this design starts.

It works because a human supplies the type system at read time. Reading a README, you classify without effort: this paragraph is aspirational, this one is stale, this is a rule the team means, this is a note nobody ever ratified. The classification exists and the team runs on it; it just lives in heads and team memory rather than in the artifacts. Freeform tools are not untyped systems. They are typed systems whose labels are stored in wetware.

Seen that way, the baseline is already a knowledge system, with exactly one authority rule: whatever is in the repo binds. A CLAUDE.md is a policy set with no ratification act. The issue backlog is a desire pool with no commitment gate. TODO comments are moves with no verification. Every class in the table that follows is present in the baseline, stored in two unlabeled containers. So this paper does not propose a different kind of thing. It proposes the same thing with gates installed on the authority channel: moving labels that already exist out of heads, where agents cannot read them, into artifacts, where they can.

Issues, in particular, keep their seat. An issue is excellent capture — permalinked, timestamped, threaded — and that is the seat it holds here. What strains an issue is being asked to be a desire, a commitment, a plan, and a discussion in one noun; the spec triad later in the paper exists to relieve that. Keep the issues; stop asking them to be promises. The same holds for adoption generally: a team's tracker and documents already contain every class this paper describes, so adopting the system is an act of ratifying labels, not migrating data.

The trade also runs the other way. This design abandons the traditional work-item apparatus as well: no sprints, no story points, no burndown, no epic hierarchy — ten classes and a handful of verbs. And nearly everything stays freeform. Slack threads, markdown documents, transcripts, and notes remain untyped, because they are evidence, and evidence needs no discipline. The type system governs only the small canonical set that binds, guides, or tasks. Structure at the authority and commitment joints; freedom everywhere else.

A note on provenance, finally. This design grew out of small-team practice, in the baseline setup described above, as agents took on a growing share of the reading and the writing. It is a working hypothesis with one team's experience influencing it, not a proven method. Nothing here claims that freeform practice fails; the paper describes what one team reached for when the labels in its heads stopped being readable by the agents doing the work.

03

Foundations: three attributes

The system rests on classifying every artifact along three independent dimensions.

Type of utterance

Artifacts differ in what kind of utterance they are. The classification is borrowed from speech-act theory: Austin's observation that saying something is often doing something (How to Do Things with Words, 1962), and Searle's taxonomy of the kinds of doing (1975). Three of the four types here are Searle's; records are an addition the append-only layer needs.

Derivation level

Artifacts also differ in how processed they are, in a pipeline familiar from data engineering. Derivation level largely determines volume and loading behavior.

Authority

The third attribute is what an artifact is entitled to do to an agent's behavior. It is enforced by the harness, not the agent runtime, and the distinction matters here. The runtime (Claude Code and its kin) is the completionist inside the loop: it weighs whatever enters its context roughly equally, and it cannot be trusted to police what binds it. The harness is the system wrapped around the runtime: it assembles context, dispatches runs, and verifies outcomes, and it is the only place authority can be enforced. Four levels suffice.

Of the three attributes, authority is the one that is directly a security property:

Content never carries authority; only classification does. A document that says "always do X" is evidence that someone wrote that — nothing more — until someone with standing ratifies it into a class that binds.

This single rule is the prompt-injection boundary. Raw material is full of imperative-sounding text, and the system makes it structurally impossible for that text to bind an agent, no matter where it appears — a Slack message, a README, a comment in generated code.

A qualification — once text is inside a context window, no harness can mechanically control how a model weighs it; a hostile instruction in a capture can still influence the session that reads it, and the separation of channels relies in part on prompt discipline and on the runtime honoring it. What the classification makes structural is the boundary around a session, not the model's behavior within one: unratified text never enters the compiled authority preamble, hard guards do not care what the model believes, verification does not accept a deceived agent's claims, and nothing a session was talked into can ratify itself into the knowledge layer. Injection can still bend a single run. It cannot mint durable authority or compound across sessions, which converts a persistence problem into a bounded, per-session one.

04

The artifact classes

The full cross-product of the three attributes yields dozens of cells, most of them incoherent. The ten discrete combinations below are the ones that have recurred enough to highlight.

ClassUtteranceDerivationAuthorityIn one line
CapturerecordrawevidenceImmutable observation: threads, tickets, transcripts, exports, run exhaust
Factassertivederived / canonicalevidenceCited, dated claim about the world; its strength follows what it cites
Desirecommissive embryoderivedevidenceA shaped want with explicitly no standing
PromisecommissivecanonicalspecDurable commitment — "X is true for Y"; honored or broken, never "done"
ThreadcommissivecanonicalspecEpisodic execution arc opened against a drift; done-when defines closure
MovecommissivederivedspecAgent-owned plan atom: one verifiable assertion; lands when its check passes
PolicydirectivecanonicalconstraintMechanically enforced rule; one current answer per question
PrincipledirectivecanonicalguidanceAdvisory value; violation is a conversation, not a blocked merge
DecisionrecordderivedevidenceAppend-only entry logging a promotion, ratification, or ruling
StorylineassertivederivedevidenceCorrelation: asserts that a set of artifacts is one line of product-making

The authority column collapses to something legible: one class binds, one guides, three task at nested scales, and everything else (the great majority of artifact volume) is evidence, structurally incapable of directing an agent's behavior. It can inform a run, never steer one. Figure 2 shows the classes in their zones.

Knowledge system Managed artifacts · curated, current Policy enforced rules Principle advisory values Promise · Thread · Move commitment · arc · plan Fact cited claims Desire no standing Storyline correlation Decision promotion log cites Captures append-only, immutable, cited by facts named, never held Entities code, services, releases, external systems · identity via naming policy binds · policy guides · principle tasks · promise / thread / move informs
Figure 2. Zones and authority. Managed artifacts and the capture layer sit inside the knowledge system; entities sit outside it, reachable by name only. Border treatment encodes authority.

The spec triad

The three spec-carrying classes resolve a failure that afflicts nearly every product artifact stack — call it the single-noun problem. Teams need a middle layer that is durable enough to plan against and stable enough to represent a commitment, yet also granular enough to organize execution and episodic enough to have a start and an end. Those are different things. Every noun asked to be both — the Epic, the Initiative, the Workstream — ends up state-shaped in some sentences ("the search capability") and motion-shaped in others ("the search overhaul"), a commitment and an arc at once, neither clearly.

The solution is to split the noun, and this system splits it twice:

Collapsing promise into thread produces the Epic. Collapsing move into thread produces a subtler failure: acceptance criteria and plan steps interleaved in one list, so that revising the plan means touching the definition of done.

Keeping the three apart yields three distinct completion predicates: honored-when (evidence criteria, re-derived on a cadence), done-when (drift-closure conditions, fixed at open), and landed-when (one verifiable assertion per move). It also yields a clean ownership split. Done-when is human-ratified, because it is the edge of the commitment. The move plan is agent-owned: an agent may propose, reorder, replace, and abandon moves freely, because closure never rests on the plan, only on done-when verifying in the environment.

This split is why autonomy and safety stop trading off against each other. An agent with no plan authority pushes its planning into ephemeral session files; an agent with done-when authority can define its own success. The triad gives it the middle.

Notes on the evidence classes

The storyline is the class most easily mistaken for a container. The citation graph among artifacts already connects everything implicitly; what it cannot say is where one story of product-making ends and another begins. That boundary is a judgment someone asserts, which is why a storyline is an artifact rather than a computed view. And despite the shared root, a storyline is not an agile story grown large: a story is a unit of work with a definition of done; a storyline is the correlation among many units of work, and it has neither.

The storyline is the durable home for the fragments the work actually consists of: the Slack threads, the bug reports, the telemetry exports, the threads that came and went. Its defining property is that it outlives any piece of work: a fix closes; "checkout reliability" never does. Two constraints keep it from decaying into a hierarchy:

The test that separates storyline from thread: if it should stop existing when verification passes, it is a thread; if more related work will obviously come afterward, it is a storyline.

05

Evidence and the world: captures and entities

The word "source" collapses three different things (the provenance of information, source code, and data-emitting systems), and the collapse causes design confusion. The system separates two categories with opposite semantics on nearly every axis:

The relationship between the categories is generative: entities emit, the system captures. The test: if it can change after you look at it, it is an entity; if it cannot, it is a capture.

Entities · mutable, named service:billing-api repo:acme/webapp Slack workspace Captures · immutable, cited log export · July 3 webapp@abc123 thread as ingested observe · ingest Fact names the entity · cites the capture names cites Only facts connect the two — and only facts go stale
Figure 3. Entities emit; the system captures. Facts are the connective tissue: they name entities, cite captures, and carry the verification dates that track decay.

Why hold captures at all? A cache is the wrong model: a cache implies the original is authoritative and the copy disposable, and captures invert that. Slack retention expires, logs rotate, dashboards recompute, tickets get edited — the copy inside the system is the evidentiary record, often the only durable one. This is custody, not caching: closer to how a court treats an exhibit than how a CDN treats an object.

Nor is every capture a slice of something external. Session transcripts and harness events are born inside the system with no original elsewhere. The class is defined by the properties the evidence layer needs, not by where its contents came from.

A tempting version of this layer makes custody an admission rule: a fact may cite only what the system holds or what carries delegated immutability, and a bare URL does not qualify. That strictness is theoretically clean and practically an adoption cliff — teams live in tools whose contents cannot all be ingested, and a system that refuses to record "the dashboard says X" records nothing. The rule here is a gradient instead:

The evidence strength rule: a fact's evidentiary strength follows the citability of what it cites — held bytes are strong, delegated immutability (a commit hash) is strong, a name (a URL, a ticket id) is weak. Citation is never forbidden; strength and staleness are derived from it, visibly.

The gradient preserves the incentive the hard rule was after, without the cliff. A fact citing a capture is trustworthy in a way a fact citing a URL is not, and the system says so in its quality scoring, staleness tracking, and context assembly, rather than refusing the weaker fact entry.

The gradient also gives a delegation test: Git commits are citable in place, because content-addressing supplies custody for free. A SaaS ticket ID is a name, because tickets get edited. Ingesting the ticket turns the name into a capture and the weak citation into a strong one, which is the action the gradient rewards.

Where the discipline stays strict is the boundary where strictness is free: exhaust born inside the system is always captured. Run transcripts, verifier output, drift reports, compiled context bundles: none has an external original, and none is costly to hold. A system that deletes its own transcripts while pleading custody principles for other people's Slack messages has its priorities inverted; the richest capture the system produces is the record of its own runs.

The two cases that most strain the "source" vocabulary come apart the same way. Source code is an entity with built-in capture semantics: the repository at HEAD (the living thing agents modify) is an entity, described by facts that decay; every commit is already an immutable, content-addressed capture. Facts about code cite commits; threads and promises target the repo.

Product signals split the same way: the telemetry-emitting subsystem is an entity; each ingested export is a capture; "p99 is roughly 340ms" is a fact naming the former and citing the latter. The staleness asymmetry follows: a fact wholly grounded in captures ("the July 3 export showed 340ms") never becomes false, while a fact about an entity ("the service's p99 is 340ms") starts decaying at birth. Only the second kind needs a verification date.

In short: cite the strongest evidence available, name what you must, and let strength be visible.

06

Promotion and the decision log

Artifacts change class through a small set of promotion paths, and every promotion is logged:

The readiness criteria a thread must meet before opening (clear intent, verifiable done-when, a judgment gate where the intent is subjective) are themselves a policy about threads. That move turns the danger zone of Figure 1 into something a harness can lint: no intention enters committed state without passing the readiness policy, the same way no code merges without passing tests.

Below the commitment gate, one path is deliberately ungated: agents propose and revise moves freely within an open thread. The plan carries no authority over what counts as done — a move is ratified by landing, not by review.

Capture immutable Fact verified Desire no standing Promise · Thread defines done extract shape commit ratify Policy enforced Decisions · append-only promotion log Diamonds are ratification gates — every promotion emits a decision entry
Figure 4. Promotion paths. Gates sit on the crossings that mint authority; each promotion drops an entry into the decision log automatically. Move proposal, below the commitment gate, is deliberately ungated — moves are ratified by landing.

Urgency enters without breaking type discipline, through policies that connect artifact attributes to promotion speed: "sev-1 facts auto-shape to threads within 24 hours" is a ratified rule rather than an exception to the pipeline.

And because every promotion logs a decision, the log becomes the system's telemetry about itself. How long do desires sit before shaping? What fraction of threads get abandoned? Which policies are proposed repeatedly before ratification? These are queries over the event stream, and the reflection process consumes that substrate.

A worked example

Each step below gives the actor, the action, and the artifact it touches.

The original tickets never change; the layers above them flip state. An updated fact names the release that resolved the bug. And the storyline the whole episode belonged to ("checkout reliability," say) absorbs all of it and stays warm for the next arc.

One thing the example overstates: the ceremony. This walkthrough shows the discretionary lane, where a human decides whether the work is worth doing. Most bugs travel a delegated lane instead: a standing operational promise ("sev-1 and sev-2 defects are fixed within N days") plus a ratified policy that delegates commitment for that class — so when the reproduced-bug fact makes the promise drift, the harness opens the repair thread itself and logs the decision under delegated authority. The threshold between the lanes is not promise-versus-thread; it is delegated-versus-human commitment. And it is itself a policy, so a team tunes its own ceremony level, and every auto-commitment still leaves a decision entry.

07

The process layer: the plan is an artifact, execution is not

Runs, sessions, and turns appear nowhere in the class table, and the omission is deliberate. The artifact classes are the knowledge layer; execution is the process layer, and the two are different kinds of stuff with different lifecycles. Artifacts are durable and slowly changing. A run is ephemeral and fast, holding enormous transient state (context windows, tool calls, intermediate files) that would poison the knowledge layer if persisted as first-class artifacts.

The type system defines execution's interface without containing it:

Execution is what happens between artifact states, not an artifact state. The analogy is a legal system: statutes, contracts, and case records are artifacts; a trial is a process, and nobody files the trial — they file its transcript and its verdict.

The boundary could plausibly sit one rung higher, with the plan kept out of the artifact table too and any urge to add a "task" class treated as a symptom — of a promise too big, or of harness state leaking into the knowledge layer. Sometimes it is that symptom. But what the task-shaped hole actually wants is the plan layer, and the plan is a legitimate artifact: durable across sessions, meaningful to resumption, owned by an identifiable authority. What must stay out of the knowledge layer is liveness (which run is executing, how far along, on whose context window), and that belongs to the harness. So the boundary lands here: moves sit above the line; runs sit below it.

Promise honored-when · evidence criteria, re-derived on cadence Drift the observed gap that triggers work Thread done-when · drift-closure criteria, human-ratified Move landed-when · one assertion, harness-verified durability boundary — artifacts above, process below Run one reduction cycle · move goal + compiled context Agent session output is a claim, never accepted as verification plan.md the agent's ephemeral shadow of the move plan Turns tool calls Solid spec borders are human-ratified; the dashed spec border (Move) is agent-owned.
Figure 5. The reduction ladder. Three completion predicates at three scales above the durability boundary; below it, everything is process whose exhaust is captured at run end. The authority boundary sits between Thread and Move: done-when is human-owned, the plan is agent-owned, verification is always the harness's.

One rung below the boundary sits the session plan: the plan.md or todo list an agent writes for itself. It is the right tool at its timescale — an agent decomposing its dispatched moves into turns.

The failure mode of bare agent runtimes is that this file is the only plan layer, and it evaporates with the session: the very fragmentation the knowledge layer exists to fix. With moves above the line, the session plan becomes cheap and disposable by design: regenerated from the current move at each dispatch, its useful residue flowing back as move status and captured exhaust, never as authority for the next session.

The distinction also untangles a term teams chronically overload. Acceptance criteria, properly, are a thread's done-when: outcome-level, environment-observable, fixed at open. The scrum-style "Definition of Done" (tests written, docs updated, review passed) is not any thread's criterion; it applies to every move in every thread, which makes it a policy: ratified once, compiled into every run, appended to every move's verification. Per-thread edges and every-thread floors live in different classes with different authority. Most methodology arguments about "DoD versus acceptance criteria" dissolve once they do.

Run exhaust maps onto existing classes completely:

The three loops

The worked example in the previous section quietly involved three different loops, and they are easy to conflate. Each is level-triggered: it derives its work from current state, never from remembered continuity.

Operational commitments are what make the first loop concrete. "Every reported bug gets a triage verdict within 24 hours" is a promise like any other: state-shaped, measurable, capable of drifting. Real teams carry such commitments implicitly; the type system forces them to be named, and once named, an untriaged ticket is drift the harness can see and close. Autonomous triage is also safe for a structural reason: everything a triage run can produce (facts, citations, desires) is evidence-class, so no gate is needed between it and the knowledge layer.

08

The repository

Where does source code sit? Outside the classes: it is the referent the system exists to produce. The knowledge layer holds artifacts about the codebase — facts describing its architecture, policies constraining how it changes, threads open to modify it, decisions recording why — while the code itself lives in the ordinary Git, build, and deploy world. Identity without membership, exactly as with any other entity: repo:acme/webapp is a name governed by the naming policy; claims about it are facts; commits are its captures.

The more interesting observation: a repository is full of documents that look like code but are knowledge artifacts in disguise, already compiled into executable form. Lint configs, CI pipelines, branch protection, and CODEOWNERS files are compiled policy — the enforcement mechanism for policy-class artifacts.

The discipline that follows: the canonical policy artifact is the source of truth, and repo config is generated from it or verified against it. Otherwise the written policy and the enforced behavior drift apart, and agents obey the linter because the linter is what actually binds. When enforcement config exists with no corresponding policy artifact, that is an unratified constraint operating by fiat — and the promotion path runs backward: extract the rule, ratify it, log the decision.

Prose documents — READMEs, CONTRIBUTING files, inline docs — are the messiest case, because a typical README interleaves facts, policies, principles, and instructions in one file. In a system with high agent volume they are treated as evidence with no authority, the same rule as a Slack thread. A README saying "never touch the legacy module" does not bind an agent; the ratified policy citing that README does. This matters most in repositories agents write to: a generated README must not silently mint constraints for the next agent's run. The injection boundary, applied inside the repo.

Traffic flows the other direction as well: the codebase is the best raw material for as-built facts. What the architecture actually looks like should be derived from code by agents, cheaply and repeatedly, rather than hand-maintained — the code is ground truth, and the fact layer is a cached, cited, staleness-tracked projection of it. Facts derived from code carry a verification hook: re-derive at HEAD, invalidate on drift. Agent volume helps here rather than hurting; regeneration is cheap enough that as-built facts stay fresher than any hand-written architecture document ever did.

The placement rule in one line: the repo holds the product plus compiled projections of knowledge artifacts; the knowledge layer holds the authoritative versions and everything derived.

09

Context assembly

The payoff of the type system is that assembling an agent's context stops being retrieval over a pile of markdown and becomes a typed query with per-class loading rules. Given a thread, the harness loads:

The storyline supplies the boundary of relevance — a human-curated table of contents rather than pure similarity search. That is the difference between an agent reconstructing the story every run and being handed it.

Policy set Principles Frame + move Storyline facts Context assembly typed loading rules compile Agent session Claude Code, etc. transcript retrieval Captures · append-only raw layer Only the assembled bundle carries authority into the session
Figure 6. Context assembly. Typed inputs converge into a compiled bundle; the session retrieves evidence on demand and emits its transcript back into the capture layer.

The compile edge is how the design coexists with today's runtimes rather than fighting them. Agentic tools keep their native discovery mechanisms; what they discover is generated. The harness compiles CLAUDE.md (or whatever instruction format the runtime respects) from the canonical policy set, principles, and the dispatched move at run start, giving every instruction a provenance trail.

Instruction files found in the workspace that lack a ratified counterpart are surfaced as anomalies (quoted to a human, proposed for promotion) rather than silently obeyed or silently ignored. The runtimes themselves do not yet distinguish the information channel from the authority channel; everything in context flows into behavior with roughly equal weight. So the harness enforces the distinction from outside: controlling what enters context at assembly time, and compiling authority into the formats the runtime natively respects.

The runtime contract

Compilation assumes something on the other side. The harness can wrap any agent runtime, but it requires four things of one — a contract with four planes.

The flagship hard guard implements a rule the model already implies: the knowledge layer has a single writer. An agent never appends to the artifact store directly; it proposes facts and desires through tools, and the harness files its exhaust. The rest of enforcement degrades gracefully — a runtime without hooks gets sandbox plus audit, and because every transcript is already a capture, audit is nearly free. A detected violation becomes an anomaly in the attention queue; a repeatedly violated policy becomes a reflection finding ("violated in a third of runs: propose a hard guard, or revise the rule").

Nor is the enforcement extension new theory. The repository section established that lint configs and CI pipelines are compiled policy; a guard configuration injected into the session is the same class, compiled policy at session scope, reaching one layer further down.

Does the stricter model limit agent capability? The limitation lands almost entirely on the authority channel, where predictability is the goal, and barely at all on the information channel, where capability lives. An agent remains free to roam the filesystem, read every README, grep the code, and cite anything it finds. And on the one channel where agent judgment is the point — the plan — the agent holds authority of its own: it revises its moves without asking. What it cannot do is treat discovered text as binding, or redefine what counts as done.

The trade forecloses behaviors the way a type system forecloses bugs, and most of what it forecloses is what accumulates when no head is in the loop: stale instruction, minted rules, confabulated gaps. Explore everything, cite anything, plan freely, obey only what is ratified.

10

Multisession operation and reflection

Priced against a single-session baseline, this structure looks like friction: an agent's mid-run insight must wait for ratification instead of being written directly into its own instruction file. Priced against the actual unit of work — a storyline spanning many threads and months, paused and resumed — the accounting inverts. Most of the friction turns out to be the mechanism multisession work depends on.

Consider self-modification. Within one session, an agent editing its own instructions is a tight, appealing learning loop. Across sessions it is unversioned state accumulating in the authority channel: session twelve inherits instruction files mutated by sessions three, seven, and nine — each encoding a lesson from a context that no longer exists, none reviewed, some contradictory. The lesson from session three may have been correct for session three and wrong ever since, and without ratification there is no moment at which anyone asks whether it still applies. Persistent shared state needs write discipline, here as everywhere else in software.

Reflection supplies the learning loop that direct self-modification was a degenerate version of. The insight lands as a proposed desire or draft policy plus a decision entry, and the reflection process reviews accumulated proposals with cross-thread visibility no single session had: this lesson was proposed four times across three storylines; it conflicts with a policy ratified in March; here is the promotion recommendation. Session-local adaptation samples one trajectory; reflection integrates over many. An agent that instantly self-modifies is doing online learning with batch size one and no evaluation set.

Resumption makes the same case from another angle. Picking up a storyline after three dormant weeks requires knowing what currently binds versus what was contextual to the last session. If authority lived in prose accreted across sessions, resumption would mean archaeology. With typed artifacts it is a query: open threads and their move plans, current policy set, storyline narrative, recent decisions. The strictness is the resumability.

What survives as an actual cost is ratification latency: a good lesson waits, and if humans are the only ratifiers, human attention gates the policy-update rate. That is a tunable parameter rather than an architectural ceiling: ratification authority can be delegated to agent roles for low-stakes policy classes, with formatting conventions auto-ratifying under logging while safety rules keep a human gate. The structure holds (every constraint has a promotion event); the throughput scales.

11

Design rules

The system compresses into a short set of rules, each of which earlier sections derive.

  1. Authority derives from class, never content. Imperative text anywhere — Slack, README, generated code — is evidence until ratified.
  2. One class binds, one guides, three task at nested scales; everything else informs. Most artifact volume cannot direct an agent's behavior, by type.
  3. Promises are honored, threads close, moves land. Three completion predicates; conflating any two of them is the single-noun failure: the Epic when promise and thread merge, the task-shaped done-when list when thread and move merge.
  4. Done-when is human-ratified; the move plan is agent-owned; verification is always the harness's. The authority split lets autonomy and safety coexist.
  5. Evidence strength follows citability. Held bytes and delegated immutability are strong; names are weak but admissible. Everything born inside the system is captured; the run transcript is the system's richest evidence about itself.
  6. Every promotion emits a decision. The paper trail is exhaust from the mechanism, not a separate practice, and it is the substrate reflection consumes.
  7. Desires have no standing. The uncommitted pool is where sorting happens plainly, instead of through a backlog treated as a promise.
  8. Policies carry current-set semantics. One active answer per question, with history in the decision log rather than in the rule. A team-wide Definition of Done is a policy, not a criterion.
  9. Execution is a process; the plan is an artifact. Moves sit above the durability boundary, runs below it; liveness belongs to the harness, and session plan files are regenerated shadows, never authority.
  10. The repo holds the product plus compiled projections; the knowledge layer holds the authoritative versions. Enforcement config without a ratified policy is an anomaly to surface.
  11. Storylines reference, never contain, and never close. Correlation is a judgment worth recording; it must not become a shadow hierarchy or a shadow authority channel. It is also where a resumed effort starts warm.
  12. Commitment and ratification are acts of accountable roles. Human by default, delegated explicitly, logged always; delegation breadth is the throughput knob.

None of this replaces the runtimes or the workflow engines; it wraps them. The harness assembles typed context in, enforces policy during, and files typed exhaust out — and the knowledge system in between is what lets a team's intent stay coherent across sessions, agents, and months of product-making.