Skip to content
null design

Process

Human-directed agentic orchestration

Null Design uses computational agents the way a workshop uses machine tools: with fixtures, gauges and a person responsible for the part. This page describes what the agents do, what the human keeps, how work is verified and how provenance is maintained. It is not a team of artificial employees.

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.

RoleDoesMay not
Scoutsearches sources — repositories, feeds, papers — and emits candidates with provenancejudge or publish
Researcherreads, extracts and compares; produces notes with citationsmake claims without sources
Builderimplements against a test or contract, touching only the named filesedit tests or unrelated files
Analystruns data and evaluations; produces tables and figures with method notesinterpret beyond the data
Criticadversarial review: fabrication, hype, leakage, provenanceapprove
Archivistwrites run records, updates the registry, stores artifactsdelete
Publisherbuilds, previews, prepares a branch; deploys only after the human gatemerge unapproved
Operatorroutes work between roles, enforces gates, logsact 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.

  1. RESEARCH
  2. SCOUT
  3. ANALYSIS
  4. CRITIQUE
  5. HUMAN GATE
  6. BUILD
  7. VERIFY
  8. ARCHIVE
  9. 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.

Discovery, architecture and initial build of null.designRUN-2026-0001
Date
2026-09-01
Trigger
manual — studio founding brief
Human director
Willie Avendano
Status
running
Roles
  • OperatorClaude Fable 5 (Claude Code) · planning, synthesis, integration, review
  • ScoutClaude Sonnet 5 ×3 (subagents) · read-only repository, infrastructure and education inventories
  • BuilderGLM 5.3 Flash (OpenCode) · src/lib/ids.ts, src/lib/rss.ts against tests — gate PASS on first attempt (both)
  • BuilderGPT-5.6 Sol (Codex) · src/lib/registry.ts, scripts/validate-registry.ts against tests — gate PASS on first attempt
  • ResearcherClaude Sonnet 5 ×2 (subagents) · fact-constrained case-study drafts from the discovery report
  • CriticClaude Opus 5 (subagent) · fabrication, leakage, hype, provenance, consistency and accessibility review of the site, registry and report
  • ScoutClaude Sonnet 5 (subagent) · read-only leakage and provenance scan of the four repositories to be linked or mirrored, before any mirror was created
  • BuilderGLM 5.3 Flash (OpenCode) · src/lib/facts.ts against src/lib/facts.test.ts — gate PASS on first attempt
  • BuilderClaude Sonnet 5 (subagent) · README attribution pull requests on the two exemplar repositories (opened, not merged)
  • CriticClaude Opus 5 (subagent) · second pass over the changes made after the human decisions of 2026-09-01
  • BuilderGLM 5.3 Flash (OpenCode) · src/lib/facts.ts factsTableProblems and validator wiring against src/lib/facts.test.ts — gate PASS on first attempt
  • BuilderGPT-5.6 Sol (Codex) · src/lib/publish-plan.ts against src/lib/publish-plan.test.ts — gate PASS on first attempt
  • BuilderGLM 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
  • BuilderGPT-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
  • BuilderGPT-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
Tools
gh · git · ssh (read-only listing) · create-next-app · vitest · agents/dispatch.sh · Playwright (screenshots)
Artifacts
  • 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
Human decisions
  • Renew the studio domain (renewed by the human director; expiry date kept private)approved
  • Agentic Teaching ↔ Agentic Education positioning: complementary and kept distinct; no link to the parked agenticteaching.comapproved
  • Attribute ND-006 and ND-007 as teacher-built exemplars (commit record); publish both case studiesapproved
  • Revive the nulldesign GitHub organisation; create nulldesign/null.design and push the run branchapproved
  • Mirror Qlass and MDSolids under nulldesign as forks; canonical repositories unchangedapproved
  • Deploy the scaffold to a preview URL only — no production alias, no domain, no DNS changeapproved
  • Provision studio@null.design mailbox before the contact address goes live (human director will create it; no agent action)deferred
  • Code licence: MIT for the repository (LICENSE applies to everything in it)approved
  • Merge run/RUN-2026-0001 to mainapproved
  • Attach null.design to a production deploymentpending
  • 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 publishapproved
Result
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.