Control system

Constitutional cybernetics

Traditional CMS software manages authored content. Constitutional CMS manages feedback loops. The question changes from "who edited this page?" to "what does this system believe, where did that belief come from, which surfaces may act on it, and how will it know when it is wrong?"

If any part of the loop is implicit, an agent will fill the gap with a plausible story. The framework exists to make the loop explicit.

  1. 01

    Sensors

    Observe the world: logs, crawlers, probes, analytics, APIs, editorial inputs, human review, synthetic audits.

  2. 02

    State

    Compress observations into materialized snapshots, registries, resolver decisions, and source-authority records.

  3. 03

    Comparators

    Compare observed state with the constitutional envelope. Missing required inputs resolve to UNMEASURED, never PASS.

  4. 04

    Priority resolver

    Choose the next admissible intervention. Constitutional constraints filter first; Pareto allocates attention among what remains.

  5. 05

    Bounded actuators

    Repair, suppress, hold, recompile, promote, roll back, sample, publish, or deliberately do nothing.

  6. 06

    Wire, receipts, learning

    Observe what arrived, record the outcome, and decide whether a probe, invariant, or policy needs amendment.

Sensors are not truth. "No observations" and "observation source failed" are different states and must produce different public behavior.

Actuators may translate state into a medium. They may not upgrade uncertainty into certainty. HTML, schema, sound, and spatial atmosphere are different renderers, not different truths.

Second-order law

A metric that responds to observation cannot certify convergence.

A nominally passive page census can trigger a read-through cache, self-heal missing state, and write to the corpus it is measuring. The probe is then part of the system. A valid receipt must say so.

Minimum viable probe contract

probe_id: public_surface_census
authority_question: "What did the public surface serve?"
mutation_class: pure_read | read_with_side_effect | active_perturbation
expected_denominator: declared_before_observation
missing_evidence_state: UNMEASURED
known_blind_spots: []

“GET request” is not a mutation class. Every probe must declare whether it can alter the system it observes, and every result must preserve the distinction between unmeasured and passed.

The loop, made explicit

Every part of the loop is a contract.

The five contracts map onto the loop: page types decide what may render, enrichment stages own the state, link rules constrain the actuators, the snapshot boundary keeps sensors and controllers honest, and sprint contracts close the loop with proof.