Human-directed agentic orchestration
01What agents do
Agents have defined computational roles with a scope, allowed tools and an output type. A role is a contract, not a character.
| Role | Does | May not |
|---|---|---|
| Scout | searches sources — repositories, feeds, papers — and emits candidates with provenance | judge or publish |
| Researcher | reads, extracts and compares; produces notes with citations | make claims without sources |
| Builder | implements against a test or contract, touching only the named files | edit tests or unrelated files |
| Analyst | runs data and evaluations; produces tables and figures with method notes | interpret beyond the data |
| Critic | adversarial review: fabrication, hype, leakage, provenance | approve |
| Archivist | writes run records, updates the registry, stores artifacts | delete |
| Publisher | builds, previews, prepares a branch; deploys only after the human gate | merge unapproved |
| Operator | routes work between roles, enforces gates, logs | act externally |
02What humans keep
Gates are policy today and tooling tomorrow. Either way they are recorded.
- 01strategic direction
- 02publication approval
- 03consequential external actions
- 04client commitments
- 05financial decisions
- 06research claims
No agent run deploys, merges, transfers a repository, publishes to /dev/null, prices a product, or makes a commitment to a client or partner. Those actions happen only after a decision is written into the run record.
03Canonical workflow
Two views of one process: stages (left) and roles (Scout → Researcher → Builder → Critic → human gate → Archivist → Publisher). The human gate sits wherever the consequential action is — before a build that commits resources, or after a preview when the action is publication. Projects may enter or exit at any stage.
- RESEARCH
- SCOUT
- ANALYSIS
- CRITIQUE
- HUMAN GATE
- BUILD
- VERIFY
- ARCHIVE
- PUBLISH
For building, the lead writes the failing test first. The job — the named files, the exports, the behaviour, the gate command — is dispatched to a worker model. Workers today include GLM 5.3 Flash via OpenCode, GPT-5.6 via Codex, and a self-hosted Hermes agent (a third-party runtime by Nous Research) reached over SSH. The gate decides: typecheck plus the named test. A worker's self-report is never the evidence.
For research, Scouts widen and Researchers narrow; a Critic reads for fabrication and overreach before anything reaches a human. For publishing, the registry must validate before a page can exist.
04How this differs from automation
- Automation executes a fixed procedure.
- Agentic workflows decide how to reach a specified end within a scope — which files to read, which sources to trust, when to stop. That discretion is why gates exist.
- Automation is verified once.
- Agent output is verified every run, by tests, by a Critic, and by a person, because the same prompt does not produce the same work twice.
- Automation has logs.
- Runs have provenance: trigger, inputs, tools, roles and models, artifacts, critiques, human decisions and the resulting commit or publication.
05Provenance
Run records are registry entries — RUN-YYYY-NNNN — validated like everything else.
- 2026-09-01
- manual — studio founding brief
- Willie Avendano
- running
- Operator — Claude Fable 5 (Claude Code) · planning, synthesis, integration, review
- Scout — Claude Sonnet 5 ×3 (subagents) · read-only repository, infrastructure and education inventories
- Builder — GLM 5.3 Flash (OpenCode) · src/lib/ids.ts, src/lib/rss.ts against tests — gate PASS on first attempt (both)
- Builder — GPT-5.6 Sol (Codex) · src/lib/registry.ts, scripts/validate-registry.ts against tests — gate PASS on first attempt
- Researcher — Claude Sonnet 5 ×2 (subagents) · fact-constrained case-study drafts from the discovery report
- Critic — Claude Opus 5 (subagent) · fabrication, leakage, hype, provenance, consistency and accessibility review of the site, registry and report
- Scout — Claude Sonnet 5 (subagent) · read-only leakage and provenance scan of the four repositories to be linked or mirrored, before any mirror was created
- Builder — GLM 5.3 Flash (OpenCode) · src/lib/facts.ts against src/lib/facts.test.ts — gate PASS on first attempt
- Builder — Claude Sonnet 5 (subagent) · README attribution pull requests on the two exemplar repositories (opened, not merged)
- Critic — Claude Opus 5 (subagent) · second pass over the changes made after the human decisions of 2026-09-01
- Builder — GLM 5.3 Flash (OpenCode) · src/lib/facts.ts factsTableProblems and validator wiring against src/lib/facts.test.ts — gate PASS on first attempt
- Builder — GPT-5.6 Sol (Codex) · src/lib/publish-plan.ts against src/lib/publish-plan.test.ts — gate PASS on first attempt
- Builder — GLM 5.3 Flash (OpenCode) · src/lib/checks.ts against src/lib/checks.test.ts — gate FAIL: the worker exhausted its reasoning budget and wrote nothing; job re-dispatched to Codex
- Builder — GPT-5.6 Sol (Codex) · src/lib/checks.ts (stage-7 leakage and language checks) against src/lib/checks.test.ts — gate PASS on first attempt
- Builder — GPT-5.6 Sol (Codex) · scripts/publish.ts and scripts/publish.test.ts (pipeline stages 1, 7, 9 and the gate checklist; never merges or deploys) — gate PASS on first attempt
- gh · git · ssh (read-only listing) · create-next-app · vitest · agents/dispatch.sh · Playwright (screenshots)
- docs/discovery/2026-09-01-discovery-report.md (private; kept out of the publishable tree)
- docs/discovery/screenshots/ (private)
- registry/schema.ts and 20 records (13 projects, 2 programs, 4 products, 1 run)
- registry/_templates/project.yaml
- content/work/ (11 case studies) and content/research/ (2 program essays)
- content/_templates/ (project, research)
- src/ — Next.js App Router site (index, work, research, process, studio, /dev/null, feed.xml, registry.json, sitemap, robots, OG image, icon)
- src/lib/ids.ts, src/lib/rss.ts, src/lib/registry.ts, src/lib/content.ts (+ 33 tests)
- scripts/validate-registry.ts (frontmatter and facts-table cross-check)
- src/lib/facts.ts (+ tests)
- LICENSE (MIT)
- github.com/nulldesign/null.design (repository; branch run/RUN-2026-0001; pull request
- github.com/nulldesign/qlass-lms and github.com/nulldesign/mdsolids (forks; mirrors of the canonical repositories)
- Vercel project "null-design" (preview deployments only; no production alias)
- agents/dispatch.sh, agents/roles.md, .claude/agents/worker-*.md, opencode.json
- .github/workflows/check.yml (typecheck, tests, registry validation, lint, build on pull requests; never merges or deploys)
- src/app/fonts/IBMPlexSans-Medium.ttf + OFL.txt (bundled for the OG image; deferred critic item resolved)
- src/lib/publish-plan.ts (+ tests) — pure planner for the publish pipeline; stops at the human gate
- src/lib/checks.ts (+ tests) — stage-7 leakage and banned-language checks as a pure module
- scripts/publish.ts (+ tests) — npm run null:publish -- <ID> [--dry-run]: validate, critique-check, build, print the gate checklist; refuses stages 12–13 without a recorded approval
- src/lib/facts.ts factsTableProblems (+ tests) — per-row cell-count reporting; deferred critic item resolved
- AGENTS.md, README.md
- docs/identity/directions.md, docs/identity/moodboard.md, public/identity/*.svg
- docs/architecture/publishing-pipeline.md
- Renew the studio domain (renewed by the human director; expiry date kept private)
- Agentic Teaching ↔ Agentic Education positioning: complementary and kept distinct; no link to the parked agenticteaching.com
- Attribute ND-006 and ND-007 as teacher-built exemplars (commit record); publish both case studies
- Revive the nulldesign GitHub organisation; create nulldesign/null.design and push the run branch
- Mirror Qlass and MDSolids under nulldesign as forks; canonical repositories unchanged
- Deploy the scaffold to a preview URL only — no production alias, no domain, no DNS change
- Provision studio@null.design mailbox before the contact address goes live (human director will create it; no agent action)
- Code licence: MIT for the repository (LICENSE applies to everything in it)
- Merge run/RUN-2026-0001 to main
- Attach null.design to a production deployment
- Merge the README attribution pull requests on the two exemplar repositories (opened by the Operator as the mechanism for the attribution decision, without a separate approval; closing them reverts the action), then clear review_required on ND-006 and ND-007 so their repository links publish
- commit b8d353f (branch run/RUN-2026-0001 at github.com/nulldesign/null.design, pull request #1, unmerged) · publication preview deployment on Vercel (team-protected URL, not production; no domain attached)
06Publishing
The content system is built so that a single command can eventually carry a catalogue entry from registry to page — with the human gate intact.
null publish ND-004 validate registry → inspect repository → collect artifacts → draft case study → verify provenance → generate metadata → run critique → create branch → build → preview → HUMAN APPROVAL → merge → deploy → archive run
Conventions for agents working in the site repository are written down in its AGENTS.md; the repository will be public once the studio's organisation account is revived.