“It Runs” Is Not a Reliability Standard
Most personal AI workflows begin with one acceptance test: did it produce something?
A draft appears, a patch compiles, ten pages become one, and the task feels finished. After enough repetitions, however, the costly failures are rarely dramatic. They arrive quietly: a polished paragraph built on a stale source, a tool call that never completed, a plausible plan that solved the wrong problem.
Traditional software often fails loudly. A model can fail fluently. That changes the question:
When the workflow is wrong, how soon can I know—and when I cannot know, will it stop?
Software engineering already has language for this problem: observability, tests, review, change records, rollback, and incident escalation. An AI output should therefore be treated as a candidate result, not a verdict that takes effect simply because it reads well.
The point is not to bury a personal system under enterprise ceremony. The point is to give uncertainty a name, a record, and an exit.
Observability Starts with an Evidence Ledger
It can be useful to ask a model to list its sources, assumptions, or confidence. But that list remains a model self-report. It does not prove that a tool ran, that a URL was opened, or that the returned data supported the conclusion.
A reliable workflow separates three kinds of record:
- Model self-report records what the model says it did and where it believes uncertainty remains. This is a clue for review, not proof.
- Runtime logs record what the surrounding system actually observed: input identifiers, tool calls, source URLs or file paths, timestamps, statuses, errors, and request IDs.
- Evaluation results compare outputs against a declared dataset and graders. They tell us how a version behaved across cases, rather than whether one answer sounded convincing.
OpenAI’s Evals API reflects this separation: an eval defines testing criteria and a data-source schema, while runs execute that definition against model configurations and report statuses and result counts. OpenAI also recommends pinned model versions and evals when consistent behavior matters, because model outputs and prompting behavior can vary across snapshots.
For consequential work, I keep a small evidence card:
task_id: article-review-2026-07-31
model: provider/model-version
instructions_version: git-sha-or-v3
sources:
- url-or-file-path
tools:
- name: web-search
status: success
checks:
factual_claims: 8/8 sourced
broken_links: 0
unknowns:
- "The market figure has only one primary source."
reviewer: human-or-eval-name
This ledger does not ask for hidden reasoning. It preserves facts that another person can inspect: which version ran, what it read, which actions occurred, what was checked, and what remains unresolved.
There is a moral difference between “the model says it checked” and “the system retained evidence of the check.” Engineering begins in that gap.
Quality Gates: A Second Model Is Not a Second Truth
An adversarial model review can be useful. It may catch missing requirements, internal contradictions, formatting defects, or counterexamples the first pass ignored. But it is not automatically an independent witness.
Two models may share training biases. Two prompts sent to the same model may reproduce the same mistaken premise. A reviewer model can also issue a confident “pass” without verifying the underlying world.
The gate should therefore match the failure mode:
| Possible failure | Preferred evidence or check | Failure threshold | Response |
|---|---|---|---|
| Incorrect or stale fact | Primary documentation, database, reproducible query | A material claim lacks a primary source, or primary sources conflict | Stop publication; human verification |
| Incorrect code behavior | Unit and integration tests, static analysis | Any required check fails | Block merge or deployment |
| Missing requirement or contradiction | Independent rubric, adversarial model review | Any hard requirement is unmet | Return for revision |
| Privacy, security, legal, or financial harm | Qualified human, permission policy, sandbox, approval | Impact is irreversible or the boundary is uncertain | Escalate before action |
| Voice or readability drift | Reader sample, editorial review | Score falls below the agreed rubric | Edit and re-evaluate |
A gate also needs a richer result than “pass”:
decision: conditional_pass
evidence_coverage: 0.86
failed_checks: []
unknowns:
- "The vendor documentation does not specify boundary behavior."
risk: medium
next_action: human_review
The number 0.86 is not truth. It is a rubric-derived trigger. The rubric exposes uncertainty; the threshold prevents wishful thinking; the human escalation path assigns responsibility.
Keep Instructions, Project Files, and Persistent Memory Separate
“Put every rule into CLAUDE.md or AGENTS.md and it will persist automatically” is attractive because it turns a difficult systems problem into a filing problem. The mechanism is more specific.
- Session instructions arrive through the product’s instruction hierarchy and current context. Their priority depends on their source; a lower-trust instruction should not displace a higher-trust constraint.
- Project instruction files are repository artifacts that a particular tool discovers and loads within a defined scope. They are good places for build commands, architectural boundaries, naming rules, and verification steps.
- Persistent memory carries selected facts or preferences across sessions through a product feature or external store. It needs provenance, correction, deletion, and scope rules of its own.
The official loading behavior matters. Codex discovers AGENTS.md (or an override) from global and project scopes, walking from the project root toward the working directory; nearer files appear later in the combined guidance. Claude Code reads CLAUDE.md, not AGENTS.md directly. Its documentation recommends importing an existing shared file with @AGENTS.md when both tools should use it. CLAUDE.md can also import other files with @path/to/import, while Claude Code’s auto memory is a separate, machine-local mechanism.
That means a project file can create the appearance of memory because the tool loads it again in a later session. The model itself has not acquired a dependable permanent recollection. Both products provide ways to verify what was loaded: inspect Codex’s active instruction chain or use Claude Code’s /memory view instead of assuming a file took effect.
Directory structure still matters, but as a boundary for maintenance—not as magic:
- Keep only stable, repository-wide rules at the root.
- Put specialized constraints close to the subtree they govern.
- Store volatile facts in sourced data with an update date.
- Separate personal preferences from team policy.
- Give every important rule a check that can reveal whether it was followed.
A rule without an observable check eventually becomes a sentence on a wall.
SOPs and Staged Release: Prove, Accelerate, Delegate
A process is ready for automation only after someone can say what “done” means.
I prefer this sequence:
- Run it yourself. Preserve inputs, judgment calls, and failure examples. Write the success criteria.
- Let AI accelerate it. Delegate retrieval, drafting, classification, and repetitive checks while keeping consequential judgment with a person.
- Evaluate it repeatedly. Maintain ordinary cases, boundary cases, and regressions collected from real failures.
- Release autonomy gradually. Automate only low-risk, reversible actions that pass declared thresholds.
- Recycle corrections. Turn each human correction into a test case instead of leaving it as “remember next time” in a chat.
Anthropic’s evaluation guidance begins by defining success criteria that are specific, measurable, achievable, and relevant. It also recommends task-specific evals that include edge cases, and it distinguishes code-based, human, and model-based grading. OpenAI’s Evals API similarly separates the evaluation definition, data source, graders, and runs.
The shared lesson is plain: define good before automating the judgment of good.
Engineering discipline does not eliminate uncertainty. It stops uncertainty from travelling anonymously.
A Five-Part Minimum Gate You Can Copy
You do not need an evaluation platform to begin. Put this in the task template:
## 1. Task contract
- Objective:
- Hard requirements:
- Explicitly out of scope:
- Rollback method:
## 2. Evidence ledger
- Source URLs / file paths:
- Access time:
- Tools and observed results:
- Model / prompt / project-instruction version:
- Unverified assumptions:
## 3. Automated checks
- [ ] Formatting, links, tests, or static checks pass
- [ ] Material factual claims trace to primary sources
- [ ] Ordinary, boundary, and historical failure cases ran
## 4. Failure thresholds and escalation
- Stop when any hard check fails
- Send conflicting or missing critical sources to human verification
- Require human approval for privacy, security, legal, financial, or irreversible actions
- Permit unattended execution only for low-risk, reversible work
## 5. Retrospective and evals
- Decision: pass / conditional pass / fail
- Failure category and captured example:
- Quality, cost, and latency versus the previous version:
- Test cases to add or update:
It is quieter than an “AI advisory board,” but closer to engineering: inputs, evidence, checks, brakes, and a person who can take the wheel.
Bring in Discipline, Not Bureaucracy
The weight of a gate should match the cost of being wrong.
A private, disposable draft may need only a link check and an editorial pass. A client-facing recommendation deserves primary-source verification. Production access, money, private data, or irreversible changes deserve isolation, rollback, and explicit human approval.
I no longer believe that a longer prompt manufactures certainty. Reliable systems are usually less mystical. They know what ran. They retain what was checked. They expose what remains unknown. Most importantly, they know when not to proceed.
AI gives us more execution. It does not transfer the burden of consequence. Engineering discipline is not a cage around that power; it is the riverbed that lets power move without pretending there are no banks.
Official References
- OpenAI: Custom instructions with AGENTS.md
- OpenAI API: Evals
- OpenAI API: Backward compatibility
- Anthropic: How Claude remembers your project
- Anthropic: Define success criteria and build evaluations
Further reading: for a hands-on system, see Handing Your Notes Over to AI ; for the broader method, see From Information to Creation .




Responses