Slide 0 β€” the hero

Sentry meetup · 15 minutes

I built a software factory and an agentic automation product at the same time.

One developer. One $100/month plan. 108 days. I did not write the code.

793commits · 767 agent-authored
4,529written decisions
110kwords of judgment
671planning documents
334issues · 9 workstreams
99dispatch events
70agent worktrees
2,564tests

Slide 0a β€” who I am

Before the numbers

I have spent six years selling and supporting the tools that test the web.

Cypress Β· Replay.io Β· Checkly Β· now Resolve AI. Solutions engineering, then Head of Solutions for North America.

  • I did not come to agents from research. I came from six years of watching deterministic tests fail in production.
  • Built InterIntel in 2023 β€” one of the first agentic coding tools.
  • Before all of it: founder, UX consultant, therapist, chef.
Jon Canales
projectJanus
started2026-05-09
team size1
budget$100 / month

Every line on every slide in this deck is editable β€” click it and type.

Slide 0b β€” what Janus is

Named once, then never explained again

You don’t write tests. You write guides.

You don’t write tests. You write guides. A guide is a deterministic script that carries enough intent that when a step breaks, an agent takes the wheel, drives from the failed step, and either finishes the job or returns a real failure.

A Chrome extension and a CLI over one substrate. Three verbs.

janus runreplay a guide, agent recovers on a miss
janus communedrive a tab from natural language
janus auspexjudge the trace it produced
Automation for the AI SDLC. — PROJECT-GUIDANCE.md

That is the last time this talk explains the product. Everything after it is evidence about the factory that built it.

Slide 0c — the surface area

Why any of this machinery exists

One product. Three hosts, six processes, three languages, four test runners — one person.

Hosts

  • Chrome extension
  • Chromium via CDP
  • Docker image

Processes

  • Extension worker
  • Offscreen document
  • Go daemon
  • CLI · 17 commands
  • MCP · 8 tools
  • Node controller

AI at runtime

  • 23 live-DOM tools
  • Provider agnostic
  • Shadow-piercing
  • Mid-script handoff
  • A model judges it

artifact review

  • .janus.zip trace
  • LLM as a judge of the trace
  • Network capture
  • Trace viewer UI
  • Two writers
56,284 lines TypeScript 52,868 Go 8,094 Python 2,564 tests · 4 runners 1 developer

Every line above is a seam two agents can disagree across, and not one of them fails loudly.

Slide 1 β€” the timeline (hero image)

May 9 – August 26, 2026 Β· one developer

Throughput went up. The machinery required to keep it honest went up faster.

commits / weekdebugging builtenforcement mechanismsMayJunJulAugnow1170
May 9–12
1vision docs · chat·engine log·DOM snapshot · pick export
May 20–22
·agent debug log·survey snapshot
Jun 9
·network inspector·query_network
Aug 1–2
2parallel, one tree3workstreams·beads rejected·PRDs + tracker4roles
5factoryAug 22

14 enforcement mechanisms, all built between Aug 2 and Aug 22. None in the first twelve weeks.

Slide 2 β€” five days

Two commits, five days apart

Every capability adds a failure. Every failure adds machinery. The overhead never comes back down.

The capability

08-01

Workstreams shipped β€” issues.json, 9 parallel tracks, a nested planning repo.

The machinery it forced

08-06

Agents kept drifting into the nested repo with no source in it. scripts/tracker β€” 10 lines of fix β€” stopped it.

"It is documented in agent memory … and being documented did not stop it." β€” scripts/tracker, line 25

Slide 4 β€” the inventory

What it cost

The harness is small. It is also 84% bookkeeping.

More test code than product code. And the part that actually dispatches, verifies and lands work is the thin slice.

tests57,700
product src/54,100
harness7,304

Inside that 7,304

7,304 harness
6,162 doc & tracker Python β€” bookkeeping 1,362 shell orchestration + agent roles β€” the thin slice

Slide 5 β€” the leak

252 issues closed · 80 of them dispatched to a subagent

90% of dispatches got a record. 209 changelog fragments got written. None were ever published.

A dispatch hands one issue to a subagent working in its own git worktree. A brief goes in; a handoff record β€” what it changed, what it verified β€” comes out. The worktree is then deleted, so the record is the only thing that survives.

99dispatch events 80distinct issues 19 re-dispatched 72 handoff recorded 8 with no exit record

A commit-msg hook blocks any commit naming a dispatched issue until its handoff exists. Writing a fragment is gated too — 209 written. Collating them into the changelog is gated by nothing — 0 published.

Slide 6 β€” what agents actually read

225 subagent runs Β· one rule Β· measured, then re-run independently

They had the rule in context. It governed them 7% of the time.

96%

Rule pasted into the brief.
74 of 77 complied.

7%

Rule only in CLAUDE.md.
11 of 148 complied.

Same rule. Same repo. Same agents. Loaded both times β€” subagents receive every level of the CLAUDE.md hierarchy; only the built-in Explore and Plan agents skip it. The only variable was how close the rule sat to the prompt.

Your CLAUDE.md is not configuration. It is a suggestion with roughly 1-in-14 odds. The brief is the instrument that works.

Slide 3 β€” the six

What the numbers taught, numbered to the timeline
1

Always attribute your guidance and rules

2

Never take an agent's report of its work as evidence

3

Never let an agent casually add a word to your lexicon

4

Subagent context must be intentional

5

The cost of order never comes down

6

Rules aren’t meant to be broken. Enforce them.

Slide 7 β€” what I actually chose

The turn

None of this was falling behind. It was a decision I made on purpose.

Work I would never fully own. Not fix — own.

  • 183changelog entries for landed commits that never reached the record
  • 19tasks dispatched twice β€” first result lost or wrong
  • 4,167judgment calls across 528 documents, all mine
  • 17 · 13 · 70PRDs, build reports, planning docs β€” one author, one reviewer
  • 252issues closed, filed and reviewed by whoever was awake
  • 3manual QA sessions left on disk. I deleted the rest.

A team pushes this to other people. Specialists, reviewers, a QA function, someone who owns the changelog. I had me.

Slide 8 β€” the close

The close

An agent takes you as far as you can judge.
Not as far as it can write.

Vygotsky's zone of proximal development is the gap between what you can do alone and what you can do with help from someone who knows more than you. The scaffolding comes from above.

There is nobody above you here. An agent does not know more than you. It knows differently, and faster, and it cannot exceed your ability to check its work.

Three identical Spider-Men pointing at each other
What you build is a reflection of whoever built it.

I was the only reviewer in the system, and the only component with no gate in front of it.

Slide 9 β€” the timeline, again

Where we started

The line never comes back down.

commits / weekdebugging builtenforcement mechanismsMayJunJulAugnow1170
May 9–12
1vision docs · chat·engine log·DOM snapshot · pick export
May 20–22
·agent debug log·survey snapshot
Jun 9
·network inspector·query_network
Aug 1–2
2parallel, one tree3workstreams·beads rejected·PRDs + tracker4roles
5factoryAug 22

One developer. One $100/month plan. 108 days. I did not write the code.

Slide 10 — Q&A

Thank you

Questions.

Everything in this deck is a number out of one repo, and every one of them is in the talk notes if you want to argue with it.

QR code linking to linkedin.com/in/modern-sapien
Let’s stay connected

jonathan canales · linkedin.com/in/modern-sapien