A proposal, open to discussion and revision, for the module that would let any patron member direct the cooperative's agent: to give it work on the record, watch the run, and receive the artifacts, with every step an event and every artifact under two hands. The steward has held this capability alone since the build began. This document describes how it becomes common, which is what collective self-control of the means of production means when the means of production include an instrument that writes. Nothing here is adopted, and nothing here is the board's word; it is a shape drawn concretely enough to be argued with.
This is a proposal, and it should read like one. It sits in the series where PATRONAGE and TREASURY sit: a module document, drafted before any packet enters the ledger, adopted only by merge, binding nothing until then. Where it uses the language of specification, kinds, payloads, verbs, scopes, that precision is in service of discussion, not in place of it. Every should below is offered; any of them can be argued down.
One law stands closer to this module than to any other, and the document meets it first. Law X says the instrument drafts, surfaces, and proposes; deciding, signing, and governing sit with people.3 Nothing below changes that. What this module changes is narrower and still significant: who may set the instrument in motion. Today that is one person, through one private channel, by working practice rather than by any adopted rule. The proposal is to make direction a recorded, member-common act: any patron member may give the agent work, on the record, within a declared scope, and the deciding acts, merge, adoption, signature, money, remain exactly where the estate already puts them, with people.
The framing is Todd's, and the document keeps it: collective self-control of the means of production. The means of production of techne.coop are the repositories, the substrate, and an agent that works them. The first two are already held in common in the deep sense: public repositories, a record any member reads, exports that reconstruct byte-identically. The agent is the remaining private mean. This document is the plan for holding it in common too, honestly, including the parts that cannot be made common yet (§2, §15).
The agent, Nou, operates from a single host that Todd maintains, under a gateway that manages its sessions, tools, and channels. Its working practice is already disciplined by the Build Protocol: one packet per branch, commits carrying the Authored-by: build-agent trailer, escalation cards where a decision belongs to a person, and merge as the act of adoption, always a human act.1 Direction reaches it today through one steward channel. Nothing about that practice is secret, but none of it is common: no member other than the steward can set the agent working, and no record distinguishes steward-directed work from work the agent took up on its own initiative.
On the record side, the parts this module needs already exist. The substrate holds an append-only events table with an agent the event concerns, a human actor where an act is assigned to a person, and a payload; the write policy admits members only to named kinds, with everything heavier riding security definer verbs.4 The gate is built: a member signs in by magic link, the shell carries the session, and every intranet surface knows who is present.5 The notices rail proved the dispatch pattern this module would reuse: a database trigger reaching an edge function on a recorded event.6 And one fact the deployed policy set states plainly, which this module must confront rather than sidestep: the agent holds no role and no grant. Every mark it has ever made on the record has traveled through service credentials or a human hand.4
What does not exist: any event vocabulary for direction, any surface where a member could give it, any recorded scope for what a directed run may touch, and any provenance grammar naming the member whose direction produced an artifact. Those four gaps are this module.
A Direction is a patron member's recorded request that the agent take up a piece of work. A Run is one isolated working session the agent opens to serve one Direction: fresh context, a brief composed from the Direction, a beginning and an end, both recorded. A Scope is the declared boundary of what a Run may write: named repositories and the record kinds this module defines, nothing else. The Provenance pair is the two hands on every artifact a Run produces: the member who directed and the instrument that executed, never merged into one. The Estate list is the adopted enumeration of repositories a Direction may name; adjacent repositories join the list by amendment, not by request (§7).
One term is deliberately absent. This document does not use trigger in its own voice, though it answers to it: a trigger fires a mechanism, and what a member does here is closer to what the word Direction says, an act with an author, recorded, answerable, and refusable.
The direction that produced this document asked for the agent to run as a distinct session with the same identity and permissions. This proposal takes the first half whole and argues the second half down, and the argument should be had in the open. Identity, yes, entirely: there is one Nou in the record, one agent row, one voice, one memory, whoever directs it. A Run opened for a member is not a second agent or a diminished copy; it is the same instrument at work, and its artifacts say so.
Permissions, no, and here is the reasoning. The agent's standing permissions on its host include things no module should make common: the host itself, its secret stores, the steward's private channels, the infrastructure of other ventures. Same permissions, implemented literally, would hand every patron member the steward's keys through an intermediary, which is not collective control of the means of production; it is uncontrolled possession of one member's estate by all. Collective control is the whole cooperative deciding, on the record, what the shared instrument may do, and the instrument refusing everything outside that decision.
So the proposal is: a Run's authority is the intersection of two bounds, each visible in the record. The module's Scope, adopted with this document, names what any Run may touch: branches in Estate-list repositories, never a protected branch, and the direction kinds of §5, no other writes. The member's own standing, under the deployed policy set, bounds what the record shows their Run: a Run directed by a member reads the substrate as that member, not as the steward.4 The agent lends no member an authority the member does not hold, and no member reaches through the agent to anything the Scope does not name.
The literal reading, full permission inheritance, is the honest alternative and someone may want to argue for it. If the cooperative adopts it, that adoption should be explicit, on the record, with the risks named in this section beside it. The drafter's position: the bounded form is the one that deserves the word collective.
The module would write these kinds and no others, noun-first in the house grammar:
| kind | records | actor |
|---|---|---|
| direction.given | a member's Direction: the brief, the Estate-list repositories named, the scope requested | the member, by verb |
| direction.accepted | the instrument taking the work up; the Run identifier | the agent, under its grant |
| direction.refused | a Direction declined, citing the rule that refuses it (§11) | the agent, under its grant |
| direction.completed | the Run's close: artifacts by reference, branch, pull request, commits; the spend of §10 | the agent, under its grant |
| direction.halted | a Run stopped by the steward's hand or by a safety stop, reason recorded | steward, or the agent on its own stop |
The payload contract for direction.given:
-- proposed payload contract · direction.given { "brief": text, -- the work, in the member's words "repositories": text[], -- from the Estate list; empty means record-only work "kind": "draft" | "build" | "survey" | "answer", -- the four direction kinds of §7 "reply_to": uuid? -- a prior direction this continues }
Three of the five kinds carry the agent as actor, and that is the sentence this module cannot write around: the deployed policy set gives the agent no role and no grant, and the agent-actored kinds above require the record's first.4 The proposal is the narrowest grant that makes the arc honest: the agent's own row in agents, and authority to write the direction namespace only, concerning its own Runs only, by definer verbs like every other governed write. No read widening, no reach into any other namespace, revocable by one policy change. This is Authority Map territory, an AM v0.2 addendum, and it is the single decision everything agent-actored in this document waits on.
The first grant to a non-human agent is a governance act, not a build act. It lands only by Todd's word and, if he routes it there, the board's. Until it lands, the R0 form of §12 operates with a human hand writing the agent-side events, which is exactly how every agent mark has entered the record to date.
A member signs in through the standing gate; the shell knows who they are.5 On the desk (§8) they give a Direction, and one verb, give_direction, does the governed work: validates active patron membership against the record, validates the named repositories against the Estate list, applies the §11 floor and the §15 bounds, and writes one direction.given. The member insert policy on events is not widened; the verb is the only door, which is the write discipline the estate already uses everywhere it matters.4
Dispatch, the Direction reaching the instrument, has two honest routes. The push route is the notices pattern: a trigger on direction.given reaching the gateway through an edge function, which is immediate but adds an inbound surface to the host.6 The poll route adds nothing: the agent already wakes on a schedule, and a Direction is not a pager; it reads the rail on its standing rhythm and takes up what it finds. The proposal defaults to the poll, names the push as an optimization to adopt once the rail has run for a while, and treats the choice as operational rather than architectural: the record between the two routes is identical.
Each accepted Direction opens one Run: an isolated session on the host, fresh context, briefed from the Direction and from the estate's own instructions, the same way any packet begins. Distinct from the steward's sessions, distinct from every other Run, disposable when closed. Four direction kinds bound what a Run does, and the verb records which was asked: draft produces or revises documents and pages; build produces code and packet work; survey reads and reports, writing nothing but its report; answer is the natural-language door with a recorded question and a recorded answer. All four end the same way: artifacts on a branch, a pull request where one is due, and a direction.completed linking everything by reference.
The write boundary holds by construction, not by promise. A Run pushes branches to Estate-list repositories and opens pull requests; it never merges, never touches a protected branch, never writes the record outside the direction namespace, never reads a secret store, never sends anything to an address outside the estate. Merge remains adoption and adoption remains human: a member-directed packet enters main by exactly the hand every packet enters by.1 The Estate list itself is configuration as record, an adopted instrument in the agreements table, proposed code AGY-ESTATE, opening with techne.coop alone; adjacent repositories join by amendment event, so the reach of common direction grows only by a recorded decision.
The steward's stop is absolute and stays. Todd can halt any Run, or the gateway entire, at any moment, and the halt is not a failure of the module but part of its design: direction.halted records the stop and its reason, so even the interruption is in the record.
The member surface is one page in the commons portal, proposed at /intranet/direct/, behind the gate, with a primary window on the intranet Overview beside the member's other principal windows. The window is the door, the page is the room, and both read the same record:
| element | shows | reads from |
|---|---|---|
| the pen | give a Direction: the brief, the kind, the repositories, each choice showing its bound before it is made | the give_direction verb; the Estate list in force |
| the arc | each of the member's Directions as a life: given, accepted or refused with the rule cited, running, completed with its artifacts linked, halted with its reason | the direction namespace, the member's own rows |
| the commons shelf | every completed Direction across the membership, artifact links and directing member visible, because common means visible to one another | the direction namespace, per the §15 visibility decision |
| the instrument's standing | whether the agent is presently taking work, and the bounds in force: Estate list version, per-member bounds, the floor | the instruments in force; the rail itself |
| the Overview window | a primary card: the member's live Directions, the last completed one, one door to the page | the same reads, summarized |
Refusal is rendered with the same care as success. A refused Direction shows the rule that refused it, in the refusal's own words, which is the estate's standing pattern: the refusal cites the rule refused.4 Nothing about the desk is a chat: a Direction is a considered act on a record, and the surface should feel like the rest of the intranet, not like a message box.
Every artifact a Run produces carries the Provenance pair, and the grammar is one trailer added to the one the build already uses:
# the standing trailer, and the one this module adds Authored-by: build-agent / AGY Directed-by: <member agent id> # the member whose direction.given opened the Run
The arc closes by reference in both directions: the direction.completed payload names the branch, the pull request, and the commits; the pull request body names the Direction's event id. From any artifact, the record answers who directed it; from any Direction, the record answers what came of it. Cite as you enforce, applied to authorship.3 Work the agent takes up on the steward's word, or on its own standing duties, carries no Directed-by trailer, and that absence is itself information: the record now distinguishes directed work from stewarded work, which it has never done before.
Every Run closes with its spend in the direction.completed payload: tokens consumed and wall time, as the gateway reports them. This document guarantees the number and stops there. Whether member-directed agent time should enter patronage, as a countable resource, a priced credit, or not at all, is a Plan-and-board question that belongs to the Financial Systems Committee's sequence, beside the counting rules already staged; this module's obligation is only that when that question is taken up, the record already holds the numbers to answer it with. No Direction is charged, priced, or capped by cost in this proposal; the bounds of §15 are counts, not currency.
Some refusals are structural, held by the Scope and the grant rather than by the agent's judgment. A Direction cannot move money or touch the treasury boundary; cannot send communications outside the estate, mail, posts, messages to third parties; cannot reach the host, its secret stores, or any infrastructure beyond the Estate list; cannot merge, adopt, sign, or amend a governing document; cannot alter the deployed policy set, the Estate list, or this module's own bounds; cannot direct the agent to act as or for another member. Each refusal cites this section by rule, on the desk and in the direction.refused event.
Beyond the floor, the agent keeps the judgment it already exercises under the Build Protocol: work that is lawful under the Scope but touches a stop-and-ask category, public claims, money adjacent records, another member's standing, escalates to the steward instead of running, and the escalation is the estate's standing card shape.1 The probe matrix gains cells for the direction policies, so the floor is asserted by the suites, not remembered by the agent.4
The first condition is deliberately mechanical: R0 is this document's grammar operating through hands that already exist, which means adoption alone makes direction common, before any new code runs. That is what makes staging before launch honest rather than hopeful.
| condition | opens | waits on |
|---|---|---|
| R0 | direction on the record, steward-relayed: members give Directions by the verb; the steward relays each to the instrument by hand and writes the agent-side events by hand, as every agent mark has entered to date | this proposal adopted; the rail verb and policies applied; the desk's pen and arc live |
| R1 | the instrument takes the rail itself: polls, accepts, runs, completes, refuses under its own grant | the §5 grant recorded in an AM v0.2 addendum; the Estate list instrument adopted; the run harness demonstrated on the steward's own Directions first |
| R2 | push dispatch, if the poll's rhythm proves too slow for practice | R1 operated without incident; the inbound surface reviewed against the security floor |
| R3 | the spend enters the cooperative's accounting, however the FSC decides | the FSC's decision on the §10 question; nothing in this module blocks or presumes it |
R0 by launch is a small, real thing: one migration, one page, one adopted document, and the cooperative's first common Directions can be given at the August gathering with the steward's hand still on the relay. R1 is where the first grant lands, and it should not be rushed to meet a date; dependency is the schedule.
No entry below is in the ledger, and none enters by this document; the splice is carried here so that adoption can take it whole, which is the PATRONAGE precedent. Adoption is the merge, and the merge is Todd's.
# proposed splice · the A train · enters rdm-ledger.yaml on adoption - address: A-01 title: The direction rail intent: The direction namespace, the give_direction verb, and the policies; the §11 floor asserted by probes. status: open · AGY adoption cites: [AGY, IM, AM, BP] ready_when: AGY adopted. G0 attested. deliverable: 000N_direction_rail.sql; probe matrix cells. acceptance: A member's Direction enters by verb and only by verb; refusals cite their rules. - address: A-02 title: The desk intent: /intranet/direct/ and the Overview window; the pen, the arc, the commons shelf per AGY §8. status: open · AGY adoption cites: [AGY, PRD, UI] ready_when: A-01 verified. deliverable: /intranet/direct/; the Overview window. acceptance: Give a Direction from the desk; watch its arc; find a refusal's rule on the page. - address: A-03 title: The first grant and the instrument's pen intent: The AM v0.2 addendum granting the agent the direction namespace; the Estate list instrument; agent-side verbs. status: anticipated cites: [AGY, AM] ready_when: A-01 verified. The grant decided by Todd, routed to the board if he routes it. deliverable: AM v0.2 addendum; AGY-ESTATE instrument; the agent-actored verbs. acceptance: The agent writes direction.accepted under its own grant; the probe shows it can write nothing else. - address: A-04 title: The run harness intent: Poll, brief, isolated session, scope enforcement, halt, spend write-back per AGY §6 §7 §10. status: anticipated cites: [AGY, BP] ready_when: A-03 verified. Rehearsed on the steward's Directions before any member's. deliverable: The harness on the host; the halt path demonstrated. acceptance: A Direction completes end to end with both trailers and its spend recorded. - address: G-A title: The agency gate intent: Common direction demonstrated by a member who is not the steward. status: anticipated cites: [AGY, VS] ready_when: A-04 verified. acceptance: The §13 gate sentence, demonstrated live and recorded.
| item | bears on | routed to |
|---|---|---|
| the first grant: whether a non-human agent takes a scoped write authority in the record, and whether that is Todd's call or the board's | §5; gates R1 and everything after | Todd, then the board if he routes it |
| the scope model: the §4 intersection as proposed, or literal permission inheritance argued for in the open | §4 §7 | Todd and the membership, at discussion |
| who may direct: all patron members as proposed, or a narrower opening cohort for the first season | §6; the verb's membership check | Todd, drafter's cut: all patron members |
| bounds against flooding: per-member live-Direction and per-day counts; drafter's cut, two live and five a day, as policy numbers in AGY-ESTATE, amendable without code | §6 §11 | Todd, accept or revise the numbers |
| commons-shelf visibility: every member's completed Directions visible to all members, as proposed, or member-private arcs | §8; the read policy | Todd; drafter's cut is visible, common means visible |
| the host itself: the instrument runs on one member-maintained machine, a single point this module makes more load-bearing; whether the cooperative wants a stewarded-host instrument in its walkaway posture is a real question this document names and does not answer | §2 §7; the long arc of common means | Todd and the board, unhurried |
| the §10 question: whether directed agent time enters patronage, and as what | §10; R3 | the Financial Systems Committee |
| the address and the desk's home: AGY offered; /intranet/direct/ offered | naming | Todd, at adoption |
This document proposes a shape and nothing more. It does not grant the agent anything; the first grant is a decision it stages and routes. It does not add a packet to the ledger; the splice enters on adoption or not at all. It does not open the desk, apply a migration, or change the deployed policy set. It does not decide who directs, how many, or what it costs; those are the routed items of §15 with drafter's cuts offered for argument. It does not alter the agent's duties to the steward or the Build Protocol's stop-and-ask categories; it adds a second lawful source of work beside the first. And it does not resolve the deepest item on its own list, the single host, because that resolution belongs to the cooperative's unhurried judgment, not to a document racing a launch date. It is a proposal drawn concretely enough that the membership has something specific to question, amend, or refuse, which is the only way an instrument like this should ever become common.
AGY v0.1 · Common Agency · A Proposed Module PRD and Specification · Drafted, open to discussion, nothing herein adopted · cites the series · emits, anticipated, 000N_direction_rail.sql and the §14 splice · Nou drafts; Todd decides; the board adopts · RegenHub, LCA · Boulder, Colorado · 2026-07-27