AppBundle V3 State IR

State, reducer, shell, and proof from one agent-authored app contract.

Agents write bounded AppBundle JSON. ViewSpec validates interactive_state_v0, emits a pure TypeScript reducer at state_reducer.ts, checks state_replay_assertions, renders the static shell, and proves it with viewspec prove-app --with-shell.

State replaypassed
Reducergenerated
Manifestchecked
Shell hashmatched
Runtime LLMnone

Evidence Tabs

These tabs are static evidence, not a live simulator. They show the contract surface ViewSpec proves: AppBundle JSON, generated reducer, replay assertion, rendered shell, and proof report facts.

{
  "schema_version": 3,
  "resource_binding": "fixture_readonly_v0",
  "state": {
    "profile": "interactive_state_v0",
    "entries": [
      { "id": "incident_filter", "type": "string", "initial": "open" },
      { "id": "selected_incident_ids", "type": "string_list", "initial": [] }
    ],
    "mutations": [
      {
        "id": "set_filter",
        "kind": "set_value",
        "state_ref": "incident_filter",
        "payload_path": "filter"
      }
    ],
    "selectors": [
      { "id": "visible_incidents", "source": "resource_view:incidents", "where_state": "incident_filter" }
    ],
    "state_replay_assertions": [
      { "id": "filter_changes_visible_rows", "mutation_ref": "set_filter", "expect_selector_ref": "visible_incidents" }
    ]
  }
}

What this proves

State is part of the contract.

V3 proves that a bounded app contract can compile screens, local interactive state, reducer code, shell metadata, and replay results into files a reviewer can inspect.

Explicit caveats

Bounded by design.

AppBundle is local and proof-oriented. State IR is not Redux, not Zustand, not CRDT, not persistence, not backend generation, not browser-history proof, and not a deployable framework app.