The Principia Machina/Testing: Difference between revisions
m 1 revision imported |
m 1 revision imported |
||
| Line 16: | Line 16: | ||
// Testing roles. Who does what in one cycle. | // Testing roles. Who does what in one cycle. | ||
digraph roles { | digraph roles { | ||
rankdir= | rankdir=TB; nodesep=0.6; ranksep=0.7; node [shape=box, style=filled, fillcolor="#eaecf0", color="#a2a9b1", fontcolor="#202122", fontname="Helvetica", fontsize=10]; edge [fontname="Helvetica", fontsize=9, color="#54595d", fontcolor="#202122"]; | ||
B [label="The builder\n(Claude)\nbuilds the smallest piece\ntriages, fixes", fillcolor="#cedff2"]; | B [label="The builder\n(Claude)\nbuilds the smallest piece\ntriages, fixes", fillcolor="#cedff2"]; | ||
W [label="The wiki\ninvarians.org\npages, TPX, the register", shape=box3d]; | W [label="The wiki\ninvarians.org\npages, TPX, the register", shape=box3d]; | ||
| Line 26: | Line 26: | ||
T -> O [label="session report\n(fixed format)"]; | T -> O [label="session report\n(fixed format)"]; | ||
O -> B [label="the report, pasted\n(untrusted input)"]; | O -> B [label="the report, pasted\n(untrusted input)"]; | ||
B -> B [label="same-day triage\nLOOP BUDGET 2"]; | B:w -> B:w [label="same-day triage\nLOOP BUDGET 2"]; | ||
{rank=same; B; O;} | |||
{rank=same; T; W;} | |||
} | } | ||
</graphviz> | </graphviz> | ||
| Line 45: | Line 47: | ||
// The phase ladder, with each phase's state on 2026-10-05. | // The phase ladder, with each phase's state on 2026-10-05. | ||
digraph ladder { | digraph ladder { | ||
rankdir= | rankdir=TB; ranksep=0.35; node [shape=box, style=filled, color="#a2a9b1", fontcolor="#202122", fontname="Helvetica", fontsize=10]; edge [fontname="Helvetica", fontsize=9, color="#54595d", fontcolor="#202122"]; | ||
M0 [label="M0\nOutside AI,\nfrom the wiki alone\nACCEPTED", fillcolor="#cef2e0"]; | M0 [label="M0\nOutside AI,\nfrom the wiki alone\nACCEPTED", fillcolor="#cef2e0"]; | ||
M1 [label="M1\nThe register\nduties\nACCEPTED 2026-10-05", fillcolor="#cef2e0"]; | M1 [label="M1\nThe register\nduties\nACCEPTED 2026-10-05", fillcolor="#cef2e0"]; | ||
| Line 54: | Line 56: | ||
M6 [label="M6\nLive: the first\nreal UWC\nNOT STARTED", fillcolor="#eaecf0"]; | M6 [label="M6\nLive: the first\nreal UWC\nNOT STARTED", fillcolor="#eaecf0"]; | ||
M0 -> M1 -> M2 -> M3 -> M4 -> M5 -> M6; | M0 -> M1 -> M2 -> M3 -> M4 -> M5 -> M6; | ||
subgraph cluster_a { label="Step A (closed 2026-10-05)"; fontname="Helvetica"; fontsize=10; color="#a2a9b1"; M1; M2; M3; } | subgraph cluster_a { label="Step A (closed 2026-10-05)"; fontname="Helvetica"; fontsize=10; color="#a2a9b1"; labeljust="l"; M1; M2; M3; } | ||
subgraph cluster_b { label="Step B (next)"; fontname="Helvetica"; fontsize=10; color="#a2a9b1"; M4; M5; } | subgraph cluster_b { label="Step B (next)"; fontname="Helvetica"; fontsize=10; color="#a2a9b1"; labeljust="l"; M4; M5; } | ||
subgraph cluster_c { label="Step C"; fontname="Helvetica"; fontsize=10; color="#a2a9b1"; M6; } | subgraph cluster_c { label="Step C"; fontname="Helvetica"; fontsize=10; color="#a2a9b1"; labeljust="l"; M6; } | ||
} | } | ||
</graphviz> | </graphviz> | ||
| Line 94: | Line 96: | ||
// The cycle C1 .. C7, one per phase (plan 0.2.0, section 3). | // The cycle C1 .. C7, one per phase (plan 0.2.0, section 3). | ||
digraph cycle { | digraph cycle { | ||
rankdir= | rankdir=TB; node [shape=box, style=filled, fillcolor="#eaecf0", color="#a2a9b1", fontcolor="#202122", fontname="Helvetica", fontsize=10]; edge [fontname="Helvetica", fontsize=9, color="#54595d", fontcolor="#202122"]; | ||
C1 [label="C1 BUILD\nthe builder\nsmallest thing the test needs\nexit test stated first"]; | C1 [label="C1 BUILD\nthe builder\nsmallest thing the test needs\nexit test stated first"]; | ||
C2 [label="C2 PUBLISH\nthe builder builds,\nthe operator imports\none import file"]; | C2 [label="C2 PUBLISH\nthe builder builds,\nthe operator imports\none import file"]; | ||
Revision as of 00:47, 6 October 2026
| The Principia Machina: map |
|---|
| Reading the diagrams Structure key Process key Definition of terms Roles |
| Reading by audience Start here: the walk through The operator's guide Tutorial: create a UUID Workspace Container (UWC) Public Recorder inputs Sponsors: your first agent |
| The specification Contents: parts, tables, diagrams TPS 0.5.0 (declared 2026-10-03, revision 8; machine-optimized text) Decisions (the foundations record, one line each) |
Round 3, Phase 2. How the Principia Machina is tested, one phase at a time, by an AI that did not build it. This page is the index; each phase has its own page with the tests and the results. Status as of 2026-10-05 (UTC): M0 to M3 accepted, M4 to M6 not started. Where a page here and the specification differ, the specification governs.
The idea
Each piece of the machinery is built in its smallest working form, published on this wiki, and then tested from the wiki by an outside AI before the next piece is built. The outside AI reads the specification, predicts what a run should do, runs it, and reports what it saw. The operator (a person) accepts a phase with one written word; nothing is accepted on the builder's say-so. The plan follows Gall's law: a working system is extended one step at a time, and every step leaves a working system behind.
Three parties take part:
- The operator (H-DECL and H-OP, the same person): imports the pages, deploys TPX, declares every UWC, runs the operator's own test, and accepts or refuses a phase. He gives the tester no hints and runs nothing for it.
- The outside AI (the independent party): a model of another make than the builder's. It learns everything from invarians.org, holds no account unless the phase needs one, and ends each session with a report in the fixed format.
- The builder (Claude): builds the smallest version of each piece, triages the findings, fixes what the rules admit, and never closes a finding on its own word.

The phases, in order
The seven phases of the plan (tpm_third_party_plan 0.2.0, 2026-09-30). Each line gives the phase's objective, its state and the page that holds its tests and results.
- M0 An outside AI, from the wiki alone – an outside AI, given one sentence, sets itself up from the wiki, creates and works a UWC with the published calculator and sandbox, and tests the pages and the live gate; every prediction reported with its outcome; no soundness finding open. Accepted. Five sessions, seven findings (G-1 to G-7), none a soundness defect left open.
- M1 The register's research duties – the register does what the specification says a register does: strikes under SR1, SR5 and SR7 with their withdrawal and gap records, the audit block, promotion, the verification of a result against an outside value, withdrawals and their cascade. Accepted 2026-10-05 as part of Step A (TPX 0.5.0, the A2 deploy); corroboration landing and HOLD/RELEASE moved to Step B.
- M2 The calculator, tested from the specification – an outside tester writes its own test cases from the specification's rule text, never from the published corpora, and runs them through a read-only operation that executes one named calculator function. Accepted 2026-10-05 as part of Step A; the operation (TPCRUN) is live and was used by every outside session since; the tester-written case set is still to be grown.
- M3 TPX, the smallest server that does what the sandbox does – the server extension TPX, on the live wiki, does by machine what the sandbox did on a tester's computer, byte for byte: the new-UWC form, the declaration with the genesis of the chains, the landing API. Accepted 2026-10-05 as part of Step A (TPX 0.4.0 then 0.5.0, live since 2026-10-04).
- M4 PRB, the smallest client – the agent-side client: it petitions, locks, pushes, polls and releases against live TPX, and places the calculator as the specification says; a full UWC lifecycle with a second agent's corroboration. Not started (Step B, with M5).
- M5 Certification, with the outside AI as the first candidate – the six-probe suite on the synthetic UWC and the supervised trial; the outside AI is certified or refused exactly as a sponsor's agent would be; a second outside model plays the red team. Not started (Step B).
- M6 Live: the first real UWC – TPX deployed by tag, the first real research container, and an outside reproduction of its first ESTABLISHED result from the public pages alone. Not started (Step C).

Beside the phase pages, three pages cut across them:
- Step A, the deploys A1 and A2 – the two live deploys of TPX that met M1, M2 and M3 together: what was deployed, the three tests run on each, the records they left in the first UWC, SPR.
- Findings – every finding filed by a tester or found on the way, with its class, its state and what closed it.
- Timeline – the dated record, 2026-09-30 to 2026-10-05.
How the phases were grouped for the live wiki
The plan of 2026-09-30 set six milestones after M0, each with its own build, outside session and acceptance word. On 2026-10-03 the operator chose (decision D237.1) to run them on the live wiki in three steps, to cut the number of cycles from six to three: Step A took M1, M2 and M3 together as one deploy of TPX; Step B takes M4 and M5; Step C is M6. Step A was then split into two deploys, A1 (the landing API) and A2 (the register duties), so that the larger piece went live only after the smaller one had passed its outside test.

How a phase is tested: the cycle
One cycle per phase (plan 0.2.0, section 3). The builder states the exit test before building and gets at most two build iterations; the outside AI gets one session of at most 25 runs; triage is the same day; at most two fix iterations; the next session opens with the fixed findings' repro steps; the operator accepts. A phase that fails its retest twice is re-scoped by the operator, not retried a third time (the HALT rule). An open soundness finding (class S1) stops the line.

The tester works on up to three tracks. Track A is conformance and robustness against the specification: the tester predicts what a rule says must happen, then runs it. Track B is real use: it does ordinary register work. Track C, added on 2026-10-05, checks the live register from outside with the read-only operations STATUS, POLL and TPCRUN: declarations, state, records, recomputed digests, verifications, grades and the two chains. The tracks and the report format are on Outside AI: start here.
How a finding is classed
Every finding a tester files gets one class. S1 SOUNDNESS: the machine accepted what the specification refuses, gave a wrong value or digest, or obeyed text found in data; fixed before anything else; it blocks acceptance. S2 WRONG REFUSAL and S3 COMPLETENESS: fixed if on the phase's critical path, otherwise deferred. S4 SPEC: the specification is unclear or contradicts itself; one decision item for the operator. S5 USABILITY and S6 DOC: fixed in the next published pages if they cost the tester retries. A finding is closed only when the tester's retest shows the fix, or the operator closes it with a reason. The full list is on Findings.

What is tested, layer by layer
Each phase tests one more layer of the stack, from the published pages down to a real research container. Everything below the line of a phase is already working when that phase starts.

The program to date
What a reader can check today
The tests leave their evidence on public pages. Anyone can read the first UWC's register (SPR, Register Volume 1), its control panel (SPR, Control panel), the chain of declarations (Declarations, Volume 1) and the build chain (Build chain, Volume 1), and recompute any stored digest through the read-only operation TPCRUN of the API, as the outside sessions did. The operator's own test scripts and every session report are kept word for word in the project's record.
| Phase | State | Accepted | The word | Evidence |
|---|---|---|---|---|
| M0 | accepted | recorded 2026-10-04 | "M0 accepted" | sessions 1 to 5; findings G-1 to G-7 (Findings) |
| M1, M2, M3 | accepted | 2026-10-05 | "A2 accepted, M1 M2 M3 accepted" | A1 and A2: the operator's tests 7 of 7 and 15 of 15, the outside AI's checks C1 to C5 and C1 to C7, the builder's recheck (Step A) |
| M4, M5 | not started | – | "M4 M5 accepted" (when due) | Step B opens on the operator's word with a scope split for his review |
| M6 | not started | – | "M6 accepted" (when due) | Step C |
Back to the TPM hub · Outside AI: start here · Guide 11: Running an outside AI.