The Principia Machina/Inputs/Refusal messages: Difference between revisions
m 1 revision imported |
DeltaS Zero (talk | contribs) Help batch (D185.1 (d)): the tutorial and inputs redraft of 2026-09-26 with its PENDING lines (items D176-D181 open); abbreviations expanded at first use (the user's directive, 2026-09-26) |
(No difference)
| |
Revision as of 01:00, 27 September 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) |
Public Recorder inputs: a help set for the people who put things into The Principia Machina - authors of a new UWC, operators, and the declaring authority. It explains; the specification governs. Start at the index; for a guided walk from a blank file to a declared UWC, follow the tutorial. Agents read the agent-facing page instead.
Purpose
Every message the draft checks can return, what it means, and how to fix it.
Explains: TPS 0.2.0 (proposed; revision 5 of the tree, imported 2026-09-26, not yet declared; TPS 0.1.0 was declared final on 2026-09-22), whose sections 2.2 to 2.5 now carry the zone schemas at schema 0.4.0 with the optional declared form (records D92.1, D98.1, D99.1, D100.1, D103.1-D105.1, D106.1-D108.1 and D132.1); TPC-PY as built at increment 9 (tpc_zone 0.4.0, tpc_units 0.1.0, tpc_tests 0.2.0, tpc_form 0.1.0; no TPC-PY version is declared yet) with check_draft 0.4.0; the messages as TPC-PY (tpc_zone 0.4.0, tpc_units 0.1.0, tpc_tests 0.2.0, tpc_form 0.1.0) and check_draft 0.4.0 print them; TPX will print the same problems. Where this page and the specification differ, the specification governs.
How to read a message
Each problem is one line. It begins with the component it is about, so you can find it in your file:
LAW:EOM_X,CONSTANT:x_maxand so on: a TPK entry, by kind and name.ENV:,SIGNATURE:,TRANSFORMATION:,ENTRY:: parts of the TrM.PARAMETERS,CONSTANT:,YARDSTICK:: parts of the TMS.TPK:,TrM:,TMS:: the zone as a whole.IC1:toIC4(c):,IC4(a):andCODOMAIN:: the isomorphism checks, which name the entry, signature or quantity inside the message.- A message ending (T2), (T3), (T4), (T5 b), (T5 c) or (T6) comes from a kernel test.
- A line beginning
inspectionis not a problem: it names a check that stays with the declaring authority because an entry carries no declared form.
A name that cannot be read is shown as ?. All problems in a zone are reported together, sorted alphabetically, each once, so fix them all before you run the check again. Any character the text rules refuse is shown in a message as <U+XXXX>, never as itself, so a message cannot carry hidden text.
In the tables, C is the component, F a field name, N a name, and other italic letters the value quoted.
The file
| Message | Meaning | Fix |
|---|---|---|
DRAFT: cannot be read: duplicate key K |
the key appears twice in one object | delete one of the two; decide which value you meant |
DRAFT: cannot be read: reason |
the file is not valid JSON; the reason gives the line and column | fix the syntax at that place: a missing comma, quote or bracket is usual |
DRAFT: cannot be read: the draft must be one JSON object |
the file holds a list or a single value | wrap the zones in one object: {"TPK": ..., "TrM": ..., "TMS": ...}
|
DRAFT: unknown zone Z |
a top-level key other than TPK, TrM or TMS | remove it, or correct its spelling (case matters) |
Z MISSING (not checked) |
the zone is not in the file | none needed while you work zone by zone; all three must be present to pass |
Any entry, in any zone
| Message | Meaning | Fix |
|---|---|---|
C: missing field F |
a required field is absent | add it; the zone pages list the required fields |
C: unknown field F |
the kind has no such field | remove it, or correct its spelling |
C: mutable field F is not permitted in the TFK |
a status field (STATE, SCRUTINY, RIDER, NOTE, CHECKS_OWED, RECORDS) | remove it; status lives in register records |
C: field F has the wrong type |
a string where a list or number belongs, or the reverse | decimals in quotes, N_X and S_MAX without, REFS, OVER, BEARS and KEY as lists |
C: field F contains disallowed character U+XXXX |
an invisible or control character | retype the text; see Text and numbers |
C: field F has duplicate entries |
a name appears twice in REFS, OVER or BEARS | list each name once |
C: DIMENSION D is not a dimension |
the dimension does not parse | write base and exponent with a space between tokens: L1 T-1
|
C: UNIT U is not a unit |
the unit does not parse: a slash, a caret, two spaces, or an exponent of five digits | symbols with exponents, single spaces: kg m s-2
|
C: UNIT U: X is not a unit symbol |
a symbol outside the SI list | use an SI symbol; see Text and numbers |
C: UNIT U: X takes no prefix |
a prefix on min, h, d, ha, au, deg or arcmin | remove the prefix, or use the SI unit: ks for a thousand seconds
|
C: UNIT U: X is refused, reason |
degC, Da, Np, B or dB | use K for a temperature difference; state other values in an accepted unit |
C: UNIT U: an exponent is out of range |
an exponent beyond 9999, after repeated symbols merge | write the unit plainly |
C: F V is not a decimal |
VALUE, UNCERTAINTY or K does not parse | digits, an optional point and fraction, an optional exponent; no commas or spaces |
C: NAME N is not an identifier |
a name with a space, a hyphen, a non-ASCII letter or a leading digit | letters, digits and underscore, not starting with a digit |
part is not a list |
a kind or part that must be a list is something else | put its entries in [ ]
|
part: entry is not an object |
a list member is not { } |
write each entry as an object |
TPK: zone is not an object (also TrM, TMS) |
the zone is a list or a value | write the zone as { }
|
The declared forms
An EQUATION on a LAW, a CONDITION on a BOUNDARY, and FORM and IMAGE_FORM on a SIGNATURE are optional (TPS 2.2). Where one is present, these can come back. The first four are part of T1 and stop the kernel's run like any T1 problem.
| Message | Meaning | Fix |
|---|---|---|
C: F does not parse: reason |
the form breaks the grammar: an unknown function, two operators in a row, a chained ^, no = in an EQUATION, D in a CONDITION, and so on; the reason gives the position |
rewrite it in the grammar of TPS 2.2: a*(-b), x^(-1), (a^2)^3
|
C: F names N, which is not in REFS |
the form uses a name the entry's REFS does not list | add it to REFS, or correct the form |
C: REFS N is not named in F |
REFS lists a name the form does not use (the variable of a derivative counts as used) | remove it from REFS, or correct the form |
SIGNATURE:N: FORM requires IMAGE_FORM (or the reverse) |
only one of the pair is present | give both, or neither |
SIGNATURE:N: FORM names X, which is not in OVER; OVER X is not named in FORM; IMAGE_FORM names Q, which is not in the ENVIRONMENT INVENTORY |
the signature's form and its OVER, or its image and the inventory, disagree | make them agree |
LAW:N: EQUATION sides have dimensions D1 and D2 (T4) |
the two sides of the law are not the same kind of quantity | find the slip: a factor too many or too few |
LAW:N: EQUATION reason (T4) |
another dimensional fault: + or - joining two dimensions, a function of a quantity that is not dimensionless, a derivative whose variable is not T1, division by a zero |
correct the equation; D(x, t) needs t of DIMENSION T1 |
BOUNDARY:N: CONDITION uses operation with no guard guard (T6) |
a partial operation, such as / on x_max, without the conjunct that keeps it defined |
add the guard as an and beside the comparison, or rewrite without the operation
|
BOUNDARY:N: CONDITION uses tan on E, which is not total (T6) |
tan is never total in a predicate | rewrite without tan |
BOUNDARY:N: CONDITION reason (T6) |
a comparison between two different dimensions, or another dimensional fault | make both sides of each comparison the same kind of quantity |
No check compares a form with its prose. A STATEMENT that says one thing and an EQUATION that says another pass every message here; the declaring authority reads for it.
The Prime Kernel
| Message | Meaning | Fix |
|---|---|---|
TPK: unknown kind K |
a key other than the six kinds | use DOF (degree of freedom), CONSTANT, LAW, ASSUMPTION, CONSTRAINT or BOUNDARY |
TPK: duplicate name N |
two entries share a name, perhaps in different kinds | rename one; names are unique across the TPK |
C: cites itself |
an entry's REFS or TARGET names the entry | cite the DOF or constants instead |
C: REFS R does not resolve |
no entry has that name | correct the name, or add the missing DOF or constant |
C: REFS R is a KIND, not a DOF or CONSTANT |
REFS names a law, assumption, constraint or boundary | cite only DOF and constants |
C: TARGET T is not a DOF |
a constraint acts on something other than a DOF | name the DOF it removes or fixes |
C: ACTION A is not REMOVE or FIX |
an unknown action | use REMOVE or FIX, in capitals |
C: FIX requires VALUE |
a FIX constraint without the value it fixes | add VALUE |
C: FIX requires UNIT |
a FIX constraint without the unit of its value | add UNIT, with the TARGET's dimension |
C: REMOVE forbids VALUE |
a REMOVE constraint with a value | remove VALUE, or change the action to FIX |
C: REMOVE forbids UNIT |
a REMOVE constraint with a unit | remove UNIT, or change the action to FIX |
C: UNIT U has dimension D1, not D2 |
a constant's unit measures something else | use a unit of the constant's dimension |
C: UNIT U has dimension D1, not D2 of TARGET T |
a FIX constraint's unit does not fit its DOF | use a unit of the DOF's dimension |
C: VALUE requires UNIT |
a constant with a value and no unit | add UNIT |
C: UNIT requires VALUE |
a constant with a unit and no value | add VALUE, or remove UNIT |
C: UNCERTAINTY requires VALUE |
an uncertainty without a value | add VALUE |
C: UNCERTAINTY U is negative |
a negative uncertainty | state its magnitude |
The Translation Manifold
| Message | Meaning | Fix |
|---|---|---|
TrM: missing part P / TrM: unknown part P |
HEADER or ENTRIES absent, or an extra part | the TrM has exactly HEADER and ENTRIES |
TrM: HEADER is not an object |
HEADER is a list or a value | write it as { } with its three parts
|
TrM HEADER: missing part P / unknown part P |
a header part absent, or an extra one | the header has ENVIRONMENT_INVENTORY, SIGNATURE and TRANSFORMATIONS |
ENV:Q: ENVIRONMENT_QUANTITY Q is not an identifier |
an inventory name that is not an identifier | letters, digits and underscore |
TrM: duplicate environment quantity Q |
an inventory name appears twice | list each quantity once |
SIGNATURE:N: OVER D is not a TPK DOF |
a signature acts on a name that is not a kernel DOF | name kernel DOF only |
TrM: duplicate signature name N (also transformation, entry) |
two members share a name | rename one |
ENTRY:N: DOF D is not a TPK DOF |
the entry identifies something the kernel does not have | name a kernel DOF |
ENTRY:N: ENVIRONMENT_QUANTITY Q is not in the ENVIRONMENT INVENTORY |
the entry names a quantity the header does not list | add it to the inventory, or correct the name |
ENTRY:N: DOMAIN is empty (also FALSIFIER) |
the field is blank or only spaces | state it; every entry needs both |
ENTRY:N: FALSIFIER_CLASS F0 is inadmissible |
an entry declares no falsifier | state a falsifier and its class |
ENTRY:N: FALSIFIER_CLASS X is not one of F1 F2 F3 |
an unknown class | use F1, F2 or F3 |
ENTRY:N: BEARS B is not a TPK LAW or CONSTRAINT |
BEARS names a DOF, constant, assumption or boundary, or an unknown name | name kernel laws and constraints only |
The Measure Set
| Message | Meaning | Fix |
|---|---|---|
TMS: missing part PARAMETERS / TMS: unknown part P |
PARAMETERS absent, or an extra part | the TMS has PARAMETERS and, if needed, CONSTANTS and YARDSTICKS |
TMS: PARAMETERS is not an object |
PARAMETERS is a list or a value | write it as { }
|
PARAMETERS: STEP_CONVENTION is empty |
the convention is blank | state what counts as one step |
PARAMETERS: K V is not a positive decimal in double range |
K is zero, negative, or too small or too large for a double | give a positive decimal of ordinary size |
PARAMETERS: N_X must be at least n / at most n |
N_X outside its range (zone schemas 4.2) | choose a value inside it |
PARAMETERS: S_MAX must be at least n / at most n |
S_MAX outside its range | choose a value inside it |
PARAMETERS: IC2_POLICY V is not GAP or REJECT |
an unknown policy | use GAP or REJECT, or leave it out |
PARAMETERS: PROMOTION_FLOOR V is not F1, F2 or F3 |
an unknown floor | use F1, F2 or F3, or leave it out |
TMS: duplicate constant name N (also yardstick) |
two members share a name | rename one |
The kernel tests
T2 and T5 run as the kernel is entered, once it passes T1, and T4 and T6 with them where forms are declared (above); T3 runs at the final pass, over the constraints and over the laws.
| Message | Meaning | Fix |
|---|---|---|
ASSUMPTION:N: PROPOSITION joins claims with "W" (T2) |
the proposition is joined at its top level by and, but, whereas or as well as (any case) | split it into one assumption per claim; if the word does not join claims, rephrase: "x lies between 0 and 1" becomes "0 < x < 1" |
ASSUMPTION:N: PROPOSITION joins claims with "&" (T2) |
an ampersand at top level; the logical-and sign gives the same line with U+2227 in place of "&" | split it into one assumption per claim |
ASSUMPTION:N: PROPOSITION has a semicolon (T2) |
a semicolon at top level | split it, or put the second part in brackets if it only qualifies the first |
ASSUMPTION:N: PROPOSITION has more than one sentence (T2) |
a full stop, ! or ? followed by a space and a capital letter; also after an abbreviation such as "e.g." | one sentence per assumption; write "for example" for "e.g." before a capital |
ASSUMPTION:N: PROPOSITION is a list (T2) |
a new line beginning with -, *, +, a bullet or a number | one assumption per list item |
DOF:D: named by no LAW (T5 c) |
no law's REFS names the DOF, so it is idle | add the law that governs it, or delete the DOF |
CONSTRAINT:N: TARGET T is named by no LAW, so no law leaves it free (T5 b) |
the constraint acts on a DOF no law uses | correct the TARGET, or add the law |
CONSTRAINT:N1 and CONSTRAINT:N2: T is both removed and fixed (T3) |
one constraint removes the DOF and another fixes it | keep one of them |
CONSTRAINT:N1 and CONSTRAINT:N2: T fixed at V1 U1 and at V2 U2 (T3) |
two FIX constraints give one DOF different values, compared in SI | keep one value |
CONSTRAINT:N1 and CONSTRAINT:N2: the two FIX values of T cannot be compared: units of different kind: K1 and K2 (T3) |
the units have one dimension and a different kind, such as Hz and rad s-1 | write both values in units of one kind, or keep one constraint |
CONSTRAINT:N1 and CONSTRAINT:N2: the two FIX values of T cannot be compared (T3) |
a value too large or too small to convert | write the values at ordinary size, or keep one constraint |
LAW:N and CONSTRAINT:C: N evaluates V1 = V2 under the fixed values (T3) |
every name in the law has a value - a constant with a VALUE, or a DOF under a FIX - and the law, evaluated in SI, is false | the law and the fixed values contradict each other: correct the law, the constant or the constraint; often a force is missing (see tutorial step 6) |
LAW:N: N evaluates V1 = V2 under the declared values (T3) |
the same, with only constants' values | correct the law or the constants |
LAW:N1 and LAW:N2: the left side L is equated to R1 and to R2 (T3) |
two laws give one left side, as written, two different right sides | keep one law, or combine them |
LAW:N: the two sides of EQUATION cannot be compared: units of different kind: K1 and K2 (T3) |
the values have one dimension and a different kind, such as Hz and rad s-1 | write the values in units of one kind |
LAW:N: EQUATION cannot be evaluated ...: reason (T3) |
the evaluation fails: a division by zero, ln or sqrt outside its domain, or a result that is not finite | correct the law or the values |
T3: S_MAX is not a declared depth of at least 1 |
the Measure Set gives T3 no depth | declare S_MAX in PARAMETERS |
The isomorphism checks
They run as the manifold is entered, once it and the kernel pass their structure checks. Every line but the untied-DOF line refuses the manifold.
| Message | Meaning | Fix |
|---|---|---|
IC1: environment quantity Q is identified by no entry |
the inventory lists a quantity no entry uses | add the entry that identifies it, or remove it from the inventory |
IC2: DOF D is untied |
no entry identifies the DOF. Not a problem: a named gap, held for the final pass | add an entry; or leave it, and IC2_POLICY decides at the final pass |
IC2: DOF D is untied and IC2_POLICY is REJECT |
the Measure Set refuses untied DOF | add the entry, or change the policy to GAP |
IC3: DOF D is identified with inequivalent quantities Q1, Q2 (entries) |
two entries tie one DOF to two different quantities | keep one entry for the DOF |
IC3: environment quantity Q is identified with DOF D1, D2 (entries) |
two entries tie one quantity to two DOF | keep one entry for the quantity |
IC4(b): ENTRY:N: DIMENSION D1 differs from DOF X's D2 |
the entry's dimension is not its DOF's | correct the entry's DIMENSION |
IC4(b): ENTRY:N: DIMENSION D1 differs from environment quantity Q's D2 |
the entry's dimension is not its quantity's | correct the entry's or the inventory's DIMENSION |
IC4(c): ENTRY:N: BEARS LAW:L, which names DOF D that no entry identifies |
the entry carries a law about a DOF with no entry | add an entry for that DOF, or stop bearing the law |
IC4(c): ENTRY:N: BEARS CONSTRAINT:C, whose TARGET T no entry identifies |
the entry carries a constraint on a DOF with no entry | add an entry for that DOF, or stop bearing the constraint |
IC4(a): SIGNATURE:N: FORM under the entries reads X, not IMAGE_FORM Y |
the signature's FORM, with each DOF replaced by the quantity its entry names, is not its IMAGE_FORM | correct the IMAGE_FORM, the FORM, or the entries' quantities |
IC4(a): SIGNATURE:N: DOF D untied, not decided |
a DOF of the FORM has no entry, so the signature cannot be read. Not a problem: IC2's gap | give the DOF an entry, or leave the gap to IC2_POLICY |
CODOMAIN: ENTRY:N identifies DOF D, which CONSTRAINT:C removes |
an entry for a DOF the kernel removes | delete the entry |
Lines that report the run
| Message | Meaning | Fix |
|---|---|---|
IC1-IC4 not run: the TPK does not pass T1 (or is missing) |
the checks need a kernel that passes T1 | fix the kernel first |
IC1-IC4 PASS with n untied DOF, held for the final pass |
the manifold passes; the named gaps follow on the next lines | nothing yet; IC2_POLICY decides at the final pass |
and n untied DOF, held for the final pass |
the same, after a refusal | fix the problems above; the gaps are settled at the final pass |
T4 NO FORM (by inspection), T6 NO FORM (by inspection) |
no law carries an EQUATION, or no boundary a CONDITION, so the test has nothing to read | nothing; the lines below list what the declaring authority inspects instead |
inspection LAW:N: no EQUATION; T4 and T3 over this law by inspection |
this law has no declared form | nothing, or add an EQUATION |
inspection BOUNDARY:N: no CONDITION; T6 totality by inspection |
this boundary has no declared form | nothing, or add a CONDITION |
inspection SIGNATURE:N: no FORM; IC4 (a) by inspection |
this signature has no declared pair | nothing, or add FORM and IMAGE_FORM |
FINAL not run: a zone is missing |
the final pass needs all three zones | add the missing zone |
FINAL not run: it runs once every check above passes |
an earlier check refused something | fix what is refused above |
FINAL T3 (constraints and laws) and IC2 PASS, admitted with n named gap(s) (IC2_POLICY GAP) |
the draft passes; the gaps stay named on the UWC | nothing; or add the missing entries |
Yardsticks
The first eight come from the key rules at entry; the last three from running the yardstick on the synthetic record suite, which happens only when the Measure Set has passed.
| Message | Meaning | Fix |
|---|---|---|
YARDSTICK:N: KEY is empty |
the key has no terms | begin with SR1
|
YARDSTICK:N: KEY must begin with SR1 |
the first term is not SR1 | put SR1 first
|
YARDSTICK:N: SR1 may appear only as the first term |
SR1 appears again later | remove the later SR1 |
YARDSTICK:N: term t is not well-formed |
the term does not parse: a space, an unknown atom, an atom twice in one WSUM, or a missing * |
see the term table on Yardsticks |
YARDSTICK:N: constant c is not a TMS constant |
a weight names no constant | declare it under CONSTANTS |
YARDSTICK:N: KEY ranks a record higher when an assumption is added (SR9 C2) |
the key prefers records with more assumptions | make the first A-dependent term increase with A, or move the rule into a LIMITING case with its DOMAIN |
YARDSTICK:N LIMITING D: DOMAIN is empty |
a limiting case has a blank domain | state where it applies |
YARDSTICK:N: duplicate limiting DOMAIN D |
two limiting cases share a domain | merge them, or make the domains distinct |
YARDSTICK N: REFUSED, FIELD terms await the record field schema (C-16) |
the evaluator cannot run a FIELD term yet | do not use FIELD terms until C-16 lands |
YARDSTICK N: REFUSED, weight c is not a finite double |
a weight is too large to compute with | use a weight of ordinary size |
YARDSTICK N: REFUSED, a yardstick value is not finite |
the weights overflow on the test records | use smaller weights |
The end of the output
When every check passes, the final pass included, the checker prints the four digests and the inspections still owed to the declaring authority, then:
Advisory result (TPC-PY: tpc_zone 0.4.0, tpc_units 0.1.0, tpc_tests 0.2.0, tpc_form 0.1.0; schema 0.4.0). TPX decides at the gate.
The exit status is 0 only when all three zones are present and every check passes. A named gap under IC2_POLICY GAP passes.
Non-goals
A clean result is not a certificate. It says the draft is well-formed under the checks that exist; the inspections listed at the end of a passing run are still owed, and TPX decides at the gate. No message ever says what the kernel leaves out: a force you did not declare is absent, not refused.
Worked example
The kernel below (examples/spring_mistakes_tpk.json) has six mistakes: a status field, a name with a space, a dimension without the space between its tokens, a REFS name that does not exist, a unit of time on a constraint that fixes a length, and a boundary REFS that follows the misspelled name. The declared forms report two of them more than once:
TPK REFUSED, 9 problems
ASSUMPTION:A_kpos: mutable field STATE is not permitted in the TFK
BOUNDARY:B_small: CONDITION names x_max, which is not in REFS
BOUNDARY:B_small: REFS x max is not named in CONDITION
CONSTANT:x max: NAME x max is not an identifier
CONSTRAINT:C_NOZ: UNIT s has dimension T1, not L1 of TARGET z
DOF:v: DIMENSION LT-1 is not a dimension
LAW:EOM_X: EQUATION names k_s, which is not in REFS
LAW:EOM_X: REFS k does not resolve
LAW:EOM_X: REFS k is not named in EQUATION
TrM MISSING (not checked)
TMS MISSING (not checked)
FINAL not run: a zone is missing
Advisory result (TPC-PY: tpc_zone 0.4.0, tpc_units 0.1.0, tpc_tests 0.2.0, tpc_form 0.1.0; schema 0.4.0). TPX decides at the gate.
The fixes are on tutorial step 6.
Governing sections: TPS 5.5, 2.2, 2.3 and 2.4; zone schemas 8.1.
Previous: Text and numbers. Next: The calculator.