# Stack A duplex — structural acceptance matrix

Version: `1.2.0-TESTS-STACK-A-DUPLEX-FINAL-QA`

Status: `CANONICAL-EXTENSION TEST SPECIFICATION / NON-RUNTIME / HUMAN VISUAL REVIEW SEPARATE`

Authority: `USER / HUMAN CANONICAL DECISION`, constrained by the five AGLA class laws and the registered Stack A artifacts.

These tests verify the expanded AGLA Figura A contract. They do not claim that the duplex wheel is the literal drawing documented by the locally preserved *Ars Brevis* account, do not execute an OPERA, do not admit an input, and do not complete the pending human visual audit.

## I. Source and authority boundary

| ID | Requirement | Expected |
|---|---|---|
| `SRC-01-ARS-BREVIS-FIRST-FIGURE` | the locally preserved *Ars Brevis* account presents nine absolute principles on its first wheel | no retroactive claim that its documented figure already contained the duplex |
| `SRC-02-RECIPROCAL-PREDICATION` | `bonitas est magna` and `magnitudo est bona` remain the source bridge | reciprocal carrier addressability; no equality of results |
| `SRC-03-ABSTRACTUM-CONCRETUM` | `bonitas ad bonum` and `magnitudo ad magnum` remain the lexical bridge | abstract and concrete forms stay typed and distinct |
| `SRC-04-LOCAL-DOUBLE-RING-WITNESS` | the local unattributed and undated image displays the inner citation series | `PROVENANCE_INCOMPLETE`; no chronology, manuscript, date, shelfmark, or Bruno claim is invented |
| `SRC-05-AGLA-EXTENSION` | the duplex and its OPERA binding are identified as a human AGLA extension | historical motivation does not impersonate source transcription |
| `SRC-06-FIGURA-III-BOUNDARY` | Figura III camerae remain Stack G objects | Stack A materializes zero camerae |

## II. Identity and lexicon

| ID | Requirement | Expected |
|---|---|---|
| `ID-01-NINE-DIGNITIES` | B,C,D,E,F,G,H,I,K identify the absolute canon | exactly 9 dignity identities |
| `ID-02-EIGHTEEN-LOCI` | every dignity has one ABS locus and one CON locus | exactly 18 loci without dignity inflation |
| `ID-03-CONCRETUM-SERIES` | inner citation forms are BONUM, MAGNUM, DURANS, POTENS, SAPIENS, VOLENS, VIRTUOSUM, VERUM, GLORIOSUM | exact order and spelling |
| `ID-04-DURANS` | D uses `Durans` in the inner wheel | `Durabilis` remains a separately typed contextual/correlative legacy form |
| `ID-05-CITATION-VS-SURFACE` | fixed citation form and grammatical surface realization are separate | `Magnum` may realize as `magna` without changing identity |
| `ID-06-NOTATION-SEPARATION` | ABS/CON form identity is separate from A/T/Q/S `FORMAL/LOCAL` status | no carrier-namespace reuse |

## III. ROTAS structure

| ID | Requirement | Expected |
|---|---|---|
| `ROTAS-01-TWO-WHEELS` | one ROTA owns an ABS wheel and a CON wheel | exactly 2 ordered wheels |
| `ROTAS-02-CYCLE-ORDER` | both wheels preserve B→C→D→E→F→G→H→I→K | cycle order is render/neighborhood traversal only |
| `ROTAS-03-NINE-AXES` | `ABS_X → CON_X` exists for every token | exactly 9 homologous axes; both BCD rings retain their own typed cycle |
| `ROTAS-04-AXIS-BOUNDARY` | an axis is type/provenance/participation structure | never identity, self-predication, inference, proposition, or result |
| `ROTAS-05-PAIR-KEYS` | every unordered off-diagonal pair has one key | exactly 36 unique pair keys; a key has no independent truth/result/camera state |
| `ROTAS-06-PAIR-NOT-CAMERA` | a pair key groups reciprocal carriers | it is never a camera; any mapping to a distinct G-owned object is supplied by Stack G or an explicit adapter, and an unbound pair key remains lawful |
| `ROTAS-07-CARRIERS` | every ordered off-diagonal `ABS_i → CON_j` is addressable | exactly 72 unique carriers; no diagonal carrier |
| `ROTAS-08-RECIPROCALS` | every pair key groups `i→j` and `j→i` | exactly two distinct reverse carriers |
| `ROTAS-09-DEGREE` | each ABS locus supplies eight outgoing carriers and each CON locus receives eight | 8-out / 8-in for every selector |
| `ROTAS-10-ADDRESS-NOT-TRUTH` | carrier existence is empty structural availability | no topology, inference, proposition, admission, or result assertion |
| `ROTAS-11-ANGULAR-INDEPENDENCE` | non-adjacent carriers are addressable | angular adjacency neither admits nor blocks predication |
| `ROTAS-12-LINK-TOTAL` | axes plus predication carriers are counted separately | 9 + 72 = 81 inter-wheel addresses |
| `ROTAS-13-CYCLE-SERIALIZATION` | both nine-step ring cycles are mathematical render/traversal relations | explicit edge objects and steps derived from ordered locus refs are equivalent serializations, never inference surfaces |

## IV. AREPO and contraction levels

| ID | Requirement | Expected |
|---|---|---|
| `AREPO-01-TYPED-INPUT` | bindings are conditional on REFERENCE_ONLY/L0, directed off-diagonal L1/L2 predication, and L2 external application | only fields required by the selected mode/level are compulsory; unresolved required identity blocks or degrades explicitly |
| `AREPO-02-L0` | L0 denotes absolute reference | emits no carrier state and implies no populated inner result |
| `AREPO-03-L1` | L1 denotes subalternate principial predication | principial subject required; external subject optional |
| `AREPO-04-L2` | L2 denotes singular applied contraction | external subject and provenance required |
| `AREPO-05-DIRECTION` | reverse direction is independently admitted | no admission/result equality is inferred |
| `AREPO-06-VISUAL-NONEVIDENCE` | line, color, radius, focus and label are presentation | never execution evidence |
| `AREPO-07-MODE-LEVEL-MATRIX` | every OPERA declares `mode_matrix`; L0 selects only `REFERENCE_ONLY`, while L1/L2 select only the provider's full or selected carrier modes | Base/Ax use `FULL_72`; Minor uses `FULL_BCD`; no executing mode is legal at L0 |

## V. OPERA execution and state

| ID | Requirement | Expected |
|---|---|---|
| `OPERA-01-PRIMARY-KEY` | result state is keyed by carrier, context and execution | no overwrite by predicate token or by another session |
| `OPERA-02-BASE-SCOPE` | Base declares `EXECUTION_MODE` | REFERENCE_ONLY, FULL_72, and SELECTED_SET behavior is explicit |
| `OPERA-03-MINOR-SCOPE` | Minor contains B,C,D only | 3 axes, 3 pair keys, 6 carriers; E–K are `OUT_OF_SCOPE` |
| `OPERA-04-AX-SCOPE` | Ax covers the full matrix and declares `EXECUTION_MODE` | 72 carrier-capable predicate-column evaluations; L0 executes none |
| `OPERA-05-REVERSE` | a reverse carrier has its own state/ref | reverse may be unevaluated or differ |
| `OPERA-06-DERIVED-VIEWS` | contracted-locus, subject, predicate and pair summaries derive from primary carrier results | no nine-slot collapse; pair key has no state |
| `OPERA-07-ABSOLUTE-NONDERIVATION` | ACT/AGENT and BCD inheritance constrain contracted evaluation aggregates | no formula derives the absolute identities E–K |
| `OPERA-08-LOCAL-AUTHORITY` | every OPERA authority declaration is `TENET A / AREPO A` | T/K/E/I remain dependencies or carriers only |
| `OPERA-09-AX-DEDUPLICATED` | the embedded BCD engine occurs once in Ax | one begin/header and one closure |
| `OPERA-10-LEXICAL-DRIFT` | `Potentia`, `POTENTIA_RESULT`, and `Voluntarius` are absent | use Potestas and Volens |
| `OPERA-11-SAPIENTIA-SEED` | F declares Sapientia and Sapiens | noun/lexical-lemma pair is complete |
| `OPERA-12-DIMENSION-BOUNDARY` | five analytic `EVALUATION_DIMENSIONS` are distinct from nine structural `ROTA_A.AXIS.*` objects | no axis is executed as a predication |
| `OPERA-13-FULL-PAYLOAD` | every carrier result exposes direction, typed loci, level, evaluation dimensions, evidence, justification, AREPO trace, reverse refs, and circular-validation membership | no summary substitutes for the carrier payload |
| `OPERA-14-NO-LOCUS-PRIMARY-STATE` | every L1/L2 execution is an off-diagonal carrier evaluation | contracted-locus summaries are derived BY_PREDICATE views; no carrier-free dignity-contraction mode or locus truth store exists |
| `OPERA-15-LOCKED-PHRASES` | all nine TENET definitiones occur in the Ax templates | every sentence shaped as a locked dignity definition must equal one of the nine canonical phrases; stale paraphrases fail |
| `OPERA-16-COMMON-ENVELOPE` | Base, Minor and Ax expose the same typed execution identity, carrier-primary store and derived-view surface | every envelope contains `EXECUTION_IDENTITY`, composite-key `CARRIER_RESULTS`, `PAIR_VIEWS`, `BY_SUBJECT`, `BY_PREDICATE`, `CONTRACTED_LOCUS_SUMMARY_MAP`, and `CIRCULAR_VALIDATION` |
| `OPERA-17-CIRCULAR-ENVELOPE` | circular validation is embedded in each provider result and derived from carrier results | carrier payloads expose `CIRCULAR_CHECK_REF`; the envelope exposes carrier, reciprocal-pair, contracted-locus aggregate and global-cycle checks plus flags |
| `OPERA-18-CARRIER-PRIMARY` | `CARRIER_RESULTS[carrier_id,context_id,execution_id]` is the only primary L1/L2 state store | pair, subject, predicate, contracted-locus and circular summaries explicitly declare derivation from carrier results |

## VI. SATOR and aliases

| ID | Requirement | Expected |
|---|---|---|
| `SATOR-01-RING-ROLES` | output discloses outer absolute and inner contracted roles | no reading as eighteen dignities |
| `SATOR-02-CARRIER-TRACE` | output includes variant/version/schema, canonical subject/predicate locus refs, carrier/direction, level, context/execution, realization and AREPO trace | visible carrier is not narrated as conclusion and OPERA field identity is preserved |
| `SATOR-03-PAIR-BOUNDARY` | pair key and optional `G_CAMERA_REF` are distinct fields | pair key is never called a camera |
| `SATOR-04-MODE-SCOPE-TRACE` | every L1/L2 output preserves `EXECUTION_MODE` and `EXECUTED_SCOPE` | Base/Ax `FULL_72` and Minor `FULL_BCD` cannot collapse into an untyped full/selected result |
| `ALIAS-01-TYPED-GRAMMAR` | ABS, CON, AXIS, PRED and PAIR aliases resolve by typed grammar | noun/adjective/citation form does not collapse to one untyped principium |
| `ALIAS-02-BARE-A` | bare `A` remains the integral PRE marker | it is not a default OPERA alias |
| `ALIAS-03-CONTRACTED-LABEL-COVERAGE` | all nine inner labels are recognized in their token families before typed resolution | BONUM, MAGNUM, DURANS, POTENS, SAPIENS, VOLENS, VIRTUOSUM, VERUM and GLORIOSUM resolve to CON loci only when the expected form type is explicit |

## VII. Vector and representation bridge

| ID | Requirement | Expected |
|---|---|---|
| `VEC-01-ADDITIVE-LINEAGE` | v0.3 is additive | authoring SVG and v0.2 semantic artifacts remain byte-preserved |
| `VEC-02-DECLARED-SCHEMA-BOUNDARIES` | all five v0.3 schemas parse and enforce the object boundaries they explicitly declare | structural JSON validates separately from AREPO/human review; no broader closure is claimed for intentionally open payload/value surfaces |
| `VEC-03-COUNTS` | source JSON, SVG and manifest agree on 2/9/9/9/36/72/0 | no count drift |
| `VEC-04-ENDPOINTS` | carriers run from an ABS anchor to a CON anchor | old inner-to-inner witness geometry is not misrepresented as the operative carrier |
| `VEC-05-STATE-BOUNDARY` | OPERA appears only as a referenced, session-bound overlay | vector geometry does not execute |
| `VEC-06-STATUS` | mechanical validation may pass while visual audit remains pending | `HUMAN_REVIEW_REQUIRED / NON-RUNTIME / NO RELEASE` |
| `VEC-07-CITATION-FORM` | contracted citation form is not globally typed as grammatical neuter | surface morphology remains separately realizable |
| `VEC-08-CARRIER-DERIVED-LOCUS-SUMMARY` | `carrier_result_records` is the primary store and every non-empty contracted-locus summary is a read-only `BY_PREDICATE` view | each non-empty summary names one or more source `[carrier_id,context_id,execution_id]` keys targeting that locus and sharing its context/execution; an empty summary has none |

## VIII. Negative fixtures

The validator or an admitted implementation must reject or expose:

- `PRED(i,i)`;
- an axis used as a proposition or result;
- a pair key typed as a camera;
- ABS and CON IDs collapsed;
- eighteen objects narrated as eighteen dignities;
- carrier presence used as truth or execution evidence;
- reverse result inferred from the forward result;
- a surface realization replacing the citation-form ID;
- L2 without an external subject and provenance;
- result state without carrier/context/execution identity;
- a primary contracted-locus result or carrier-free dignity-contraction execution;
- a non-empty contracted-locus summary without source carrier composite keys, or whose source carrier targets another locus/session;
- any executable token named `DIGNITY_CONTRACTION` or primary store named `CONTRACTED_LOCUS_STATE`;
- `FULL_DUPLEX` as a mode alias instead of the provider-specific `FULL_72` or `FULL_BCD`;
- L0 paired with a carrier-executing mode, or L1/L2 paired with `REFERENCE_ONLY`;
- a unary evaluation of an ABS dignity instead of an admitted off-diagonal carrier evaluation;
- a bare `B = C`-style state or a bare `B: B_RESULT`-style primary/legacy result key;
- an analytic heading called `AXIS` that can collide with structural `ROTA_A.AXIS.*` identity;
- a carrier payload without `CIRCULAR_CHECK_REF`;
- a pair/locus/circular summary that is not explicitly derived from the carrier-primary store;
- result without AREPO and OPERA trace;
- angular distance used as an admission gate;
- E–K absolute identities described as generated by BCD;
- unversioned replacement of the authoring SVG or v0.2 lineage.

## IX. Execution

From `02_STACK_A`:

```powershell
& '.\VALIDATE_STACK_A_DUPLEX.ps1'
```

Use `-SkipVectorValidator` only for a focused textual check. A passing result means structural conformance to this specification; it does not promote the vector candidate, complete human review, or execute Stack A.

The specification table IDs are part of the validation surface and must remain globally unique.

## X. Correlativa typed-profile tests

| Test ID | Expected result | Assertion |
|---|---|---|
| `A-CORR-01-GENERIC-POSITIONS` | PASS | Generic positions are exactly ACTIVE, PASSIVITY, ACT. |
| `A-CORR-02-CONTEXTUAL-ROLES` | PASS | AGENT/PATIENT occur only as contextual role bindings. |
| `A-CORR-03-FOURFOLD-DISTINCTION` | PASS | Name, number, proper reason, and relation remain distinct. |
| `A-CORR-04-INDEPENDENT-AXES` | PASS | Properness, provenance, contraction, participation, and convertibility remain independent. |
| `A-CORR-05-NO-DERIVED-APPROPRIATED` | REJECT | DERIVED does not entail APPROPRIATED. |
| `A-CORR-06-NO-PARTIAL-APPROPRIATED` | REJECT | PARTIAL does not entail APPROPRIATED. |
| `A-CORR-07-RESOLUTION-DISCLOSURE` | PASS | Every result exposes subject, resolution, evidence, provenance, and unresolved plurality. |
| `A-CORR-08-TYPED-DESCENT` | PASS | Descent edges carry an explicit relation type and evidence. |
| `A-CORR-09-DURATIO-HOLD` | REJECT | Duratio/Aeternitas is not silently resolved. |
| `A-CORR-10-AX-HEURISTIC-BOUNDARY` | PASS | Ax allocation remains U1/R1 heuristic and non-source. |
