Field notes

Field notes

The close-ups: smaller, dated pieces from building the systems. The essays are the long arguments; these are the working notes from figuring it out.

  1. A Portfolio Is an Observability Problem

    I had too many repos and no honest picture of which ones were real. So I built a tool to audit my own mess, and the public page became the last mile of a small operating system.

    status: field-tested · ~5 min read
  2. Anatomy of a Health Verdict

    Every repo in my portfolio gets a verdict from a chain of small, readable judgments. Here is the entire decision, stage by stage, with the reason each rule exists.

    status: field-tested · ~6 min read
  3. Before You Connect the Tool

    Adding an MCP server is a trust grant. mcpforge builds the capability; MCPAudit verifies the blast radius before an agent can touch it.

    status: field-tested · ~3 min read
  4. Building an operator OS for one

    A hub, a handful of spokes, and one rule I kept enforcing in the shape of the thing: the scary actions are structurally unavailable. The trust is in the architecture, not the vibes.

    status: field-tested · ~6 min read
  5. Grading the grader

    I use a model judge to decide which of my own paragraphs survive. So I graded 30 of its calls against my own, blind, on a protocol fixed before I saw the data.

    status: verified · ~3 min read
  6. OPERANT public lab scorecard

    OPERANT now has a public lab surface: sanitized model cards, OCS scorecards, comparability caveats, and a safe path for scoring your own agent.

    status: evolving · ~2 min read
  7. Operator OS in a box

    The same model does wildly different work depending on what you build around it. So I tried to extract the environment (memory, judgment, trust, improvement) into something runnable, and prove the capability was never really in the model.

    status: evolving · ~3 min read
  8. Pruning the fleet

    I sat down to cut a bloated fleet of specialist agents and found the opposite: it wasn't bloated. It was mildly broken in specific, fixable ways. Here's the framework for deciding when an agent earns its keep, and the honest caveats about what I couldn't measure.

    status: position · ~4 min read
  9. Scoring the operator, not the worker

    Every coding-agent benchmark asks whether the agent did the task. None ask whether it made the right call when the environment was trying to trick it, and stayed calibrated enough not to refuse safe work. So I built one.

    status: evolving · ~6 min read
  10. Showing a private system in public

    There's a live page on this site that visualizes my operator system from its own activity log. The hard part was never the visualization. It was deciding what honesty requires you to hide, index, or refuse to claim.

    status: field-tested · ~4 min read
  11. Showing the Operator OS without leaking it
    status: field-tested · ~2 min read
  12. Teaching a system to say "I don't know"

    The most dangerous thing a dashboard can do is answer confidently with stale data. How I taught my tools to admit when they've gone cold, and why I'd rather they say nothing than guess.

    status: field-tested · ~3 min read
  13. The Site That Answers Back

    I made this site queryable by AI agents. Instead of scraping the HTML, any agent can ask it directly: my writing, projects, and benchmark results.

    status: verified · ~2 min read
  14. The weighted die behind every word

    Every word a model writes is a sample, not a lookup. I built a small toy to make that visible, and it quietly changed how I read everything a model says.

    status: position · ~4 min read
  15. Why bridge-db runs on FTS5, not a vector database

    I had a vector-search layer planned for my agent memory. A dry-run before I built it killed the whole idea; the misses were never a retrieval problem.

    status: field-tested · ~3 min read
  16. Why this is public

    This isn't a résumé. It's a workshop: small, occasionally strange, mostly-useful systems I build for myself, and the reasoning behind them.

    status: position · ~2 min read