References

Everything this talk cites, and what it takes from each. Links verified 27 August 2026.

← Back to the slides

The codebase

Katacombs — Quality Sensors Demo
https://github.com/SDiamante13/katacombs-kata-ts
Everything demonstrated today, running and yours to copy. main deliberately carries no src/,
so you can point the apparatus at your own project instead of deleting a half-built text
adventure first:

The game itself is built a slice at a time, one branch each, so you can watch the sensors fire
against real work rather than a fixture:
slice 0 — walking skeleton ·
slice 1 — look around ·
slice 2 — open the way ·
slice 3 — carry things

The core sources

Birgitta Böckeler — Maintainability sensors for coding agents
https://martinfowler.com/articles/sensors-for-coding-agents.html
Where the word sensor comes from, and the distinction between computational and inferential
ones. Her honest failure is the one this talk builds on: asking an agent, via a markdown guide,
to check its own sensors proved unreliable.

Ivett Ördög — habit-hooks
https://github.com/habit-hooks/habit-hooks
Pair a coaching guide with each finding instead of shipping a bare metric. Her line is the one
worth remembering: once the agent refactors to appease the linter, the signal is gone too.

Emily Bache and Ivett Ördög — How to Stop AI from Ruining Your Codebase
https://www.youtube.com/watch?v=6AgndHSkHFI
The interview the talk quotes from. The agent that split a function mid-thought and named the
half buildLinesAndTotal — the "and" is the confession — and the run that gave both halves the
same name. Emily's framing of guides plus sensors as a harness you define yourself.

Liina Suoniemi — prompt-vs-metric-eval
https://github.com/LiinaSuoniemi/prompt-vs-metric-eval
Pre-registered, independent evidence that coaching beats a bare metric. Read the per-smell
figures rather than the pooled headline, which averages in an arm that could not score.

Giles Edwards-Alexander — The economic benefit of refactoring
https://martinfowler.com/articles/exploring-gen-ai/refactoring-economic-benefit.html
159,564 → 27,360 input tokens for the identical change, with line count and output tokens held
flat. The price tag on the whole argument.

Martin Fowler — Design Stamina Hypothesis
https://martinfowler.com/bliki/DesignStaminaHypothesis.html
Neglect design and every feature costs more than the one before it. Agents write faster, so the
payoff line arrives sooner.

Michael Feathers — The Deep Synergy Between Testability and Good Design (talk)
https://www.youtube.com/watch?v=4cVZvoFGJTU
Why a test that reads as a specification is a design signal, not a testing preference.

Also quoted

Kent Beck — "I'm not a great developer. I'm a good developer with great habits."
The habits argument runs through Extreme Programming Explained (Addison-Wesley).

Peter Naur — Programming as Theory Building (1985)
https://pages.cs.wisc.edu/~remzi/Naur.pdf
Understanding lives in people, not in artifacts. The spine of the closing beat.

The kata

Katacombs of Shoreditch, by Marco Consolaro, in Agile Technical Practices Distilled
by Pedro M. Santos, Marco Consolaro and Alessandro Di Gioia (Packt)
https://www.packtpub.com/product/agile-technical-practices-distilled/9781838980849
The brief in the repo README is a paraphrase, credited.

Tools shown or named

Tool Tier Link
ESLint structural https://eslint.org/
jscpd duplication https://github.com/kucherenko/jscpd
gitleaks secrets https://github.com/gitleaks/gitleaks
Stryker mutation (JS/TS) https://stryker-mutator.io/
husky trigger tier 2 https://typicode.github.io/husky/
asciinema how the clips were recorded https://asciinema.org/

The same loop in your language

Structural Mutation Design (computable)
Java PMD · Checkstyle PIT ArchUnit
Python Ruff mutmut import-linter
Go golangci-lint — —
Rust clippy cargo-mutants —
PHP — Infection deptrac
JS/TS ESLint Stryker dependency-cruiser

A blank means we could not verify an equivalent, not that none exists.