The BackOfHouseOS pattern, in plain language.

The Doctrine Layer

Before I built BackOfHouseOS, I spent a week writing down the operating principles. No code. No prototypes. Just the rules.

Most people building with AI skip this. It's why their systems drift. The model makes decisions the operator should be making, the discipline isn't there to catch it, and a year in nobody knows what the system is actually for.

The doctrine is what determines what every BOH module does and doesn't do. The 9-step workflow below is the practice. The doctrine is the posture underneath.

Source mutation is false.

Nothing in BOH ever modifies the original. Files don't get renamed, moved, or rewritten. The source is preserved as-is, addressable forever. If the system needs a cleaner version, it produces a new artifact alongside the original. The original wins ties.

Observe, surface, decide — in that order.

The system observes what's there. It surfaces what it observes. The operator decides what it means. The system never collapses observation into decision automatically. "Same bytes in different places are different facts" — a duplicate is reported, never resolved without human approval.

Existing structure is evidence of past operator intent.

Folders that are already organized are evidence. The system recognizes that evidence, quantifies its clarity, and surfaces it explicitly. It only proposes changes when the operator has declared new intent. Default posture: respectful observation, never silent reorganization.

Receipts over telemetry.

Decisions produce receipts — deterministic, on-disk records that prove what was decided, by whom, with what evidence supporting it. Telemetry is for systems that need to know how they are doing. Receipts are for operators who need to know what they decided. BOH is built for the second.

Static-first where possible.

Dashboards are projections, not authority. The same evidence layer can be rendered as static HTML, terminal output, or future surfaces — the underlying truth doesn't change because the view does. Static surfaces are signed by their own generation. The reader knows when a view was made and what it was made from.

Failed tests are evidence.

When the system catches a failure — a corrupt file, a missing reference, a classification rule that overfires — the failure is logged, not hidden. A protection rule that flagged 5,100 files when it should have flagged 200 is more useful than a rule that fails silently. Visible failure is correctable. Silent failure compounds.

Humans decide. BOH records the decision.

The operator's role is judgment. The system's role is to preserve the conditions under which judgment was made — the inputs, the alternatives, the timestamp, the reasoning. So that future-operator (or future-anyone) can reconstruct why, not just what.

This is the substrate. Everything that follows in the workflow runs on top of it.