From 136ce167d24f4df45bdf3b61204c470b783799f5 Mon Sep 17 00:00:00 2001 From: Erin Spencer Date: Sat, 1 Aug 2026 23:15:52 -0700 Subject: [PATCH 1/2] publish EDCM mathematics artifact --- README.md | 1 + The-Interdependency.github.io_msdmd.ts | 162 ++++++++++++ package.json | 2 +- src/_data/edcm_mathematics.js | 338 +++++++++++++++++++++++++ src/artifacts/edcm-mathematics.njk | 62 +++++ src/artifacts/index.njk | 5 +- tests/accessibility.spec.mjs | 2 +- tests/edcm-mathematics.test.mjs | 89 +++++++ tests/generated-site.test.mjs | 14 +- tests/site.spec.mjs | 13 + 10 files changed, 684 insertions(+), 4 deletions(-) create mode 100644 src/_data/edcm_mathematics.js create mode 100644 src/artifacts/edcm-mathematics.njk create mode 100644 tests/edcm-mathematics.test.mjs diff --git a/README.md b/README.md index d43e86f..7cce013 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,7 @@ This site displays exact, provenance-bearing chapter snapshots. It does not merg - Every public organization repository receives a generated project page. - `.interdependency/project.yml` supplies reviewed project purpose, maturity, relationships, and links. - `fallback/` is a dependency-free emergency edition. +- `src/artifacts/edcm-mathematics.njk` publishes the source-attributed EDCM v0.3.1 architecture at `/artifacts/edcm-mathematics/`; use it for the recovered design record, never as a measurement result. - `artifacts/four-cuts-1.html` is deliberately published at `/artifacts/four-cuts/` through Eleventy passthrough. - `_site/build.json` publishes the site commit and canonical source identity for live deployment verification. diff --git a/The-Interdependency.github.io_msdmd.ts b/The-Interdependency.github.io_msdmd.ts index 5a9a83c..469d468 100644 --- a/The-Interdependency.github.io_msdmd.ts +++ b/The-Interdependency.github.io_msdmd.ts @@ -551,6 +551,59 @@ export default defineMsdmdCollection({ "file": "scripts/write-build-info.mjs", "id": "public_build_identity" }, + { + "block": "CONTRACTS", + "fields": { + "class": "correctness", + "given": "the structured record is rendered through the site Markdown and math pipeline", + "then": "substrate, mirror, product, sequence, residue, readout, equivalence, carrier, mass, and epoch relations remain present as static mathematics" + }, + "file": "src/_data/edcm_mathematics.js", + "id": "edcm_artifact_math_contact_preserved" + }, + { + "block": "CONTRACTS", + "fields": { + "class": "evidence", + "given": "the EDCM mathematics artifact is published", + "then": "the named conversation, public EDCM commit, file path, blob, license, retrieval method, and missing transcript identity remain visible" + }, + "file": "src/_data/edcm_mathematics.js", + "id": "edcm_artifact_source_identity_visible" + }, + { + "block": "CONTRACTS", + "fields": { + "class": "safety", + "given": "recovered architecture and UCNS substrate mathematics appear on the website", + "then": "canon, theorem, proof, measurement, empirical, authentication, and runtime status do not transfer to the publication" + }, + "file": "src/_data/edcm_mathematics.js", + "id": "edcm_artifact_status_does_not_transfer" + }, + { + "block": "MODULE_BUILD", + "fields": { + "admin_only": "false", + "auth_boundary": "none", + "internal_surface": "canonicalJson, workGraphIdentity, record_markdown", + "module_kind": "schema", + "module_name": "edcm-mathematics", + "network_boundary": "none", + "owner": "Erin Spencer", + "public_surface": "edcm_mathematics, /artifacts/edcm-mathematics/", + "rollback": "remove this data module, its route, its index card, and its contract checks together", + "rollout": "loaded by Eleventy and linked from /artifacts/", + "since": "2026-08-02", + "storage_boundary": "none", + "summary": "Carries the recovered EDCM\u2013UCNS v0.3.1 mathematical architecture, its source identities, and its non-transfer boundaries into one public artifact.", + "tests": "tests/edcm-mathematics.test.mjs, tests/generated-site.test.mjs", + "unresolved": "immutable transcript export identity", + "user_data_boundary": "none" + }, + "file": "src/_data/edcm_mathematics.js", + "id": "edcm_mathematics_public_artifact_record" + }, { "block": "BOUNDARIES", "fields": { @@ -846,6 +899,45 @@ export default defineMsdmdCollection({ "file": "tests/aicontext.test.mjs", "id": "check_ai_context_stable_person_identity" }, + { + "block": "CHECKS", + "fields": { + "call": "self::checkMathContactPreserved", + "cleanup": "none", + "mutates": "none", + "proves": "edcm_artifact_math_contact_preserved", + "requires": "node", + "timeout": "10" + }, + "file": "tests/edcm-mathematics.test.mjs", + "id": "check_edcm_artifact_math_contact_preserved" + }, + { + "block": "CHECKS", + "fields": { + "call": "self::checkSourceIdentityVisible", + "cleanup": "none", + "mutates": "none", + "proves": "edcm_artifact_source_identity_visible", + "requires": "node", + "timeout": "10" + }, + "file": "tests/edcm-mathematics.test.mjs", + "id": "check_edcm_artifact_source_identity_visible" + }, + { + "block": "CHECKS", + "fields": { + "call": "self::checkStatusDoesNotTransfer", + "cleanup": "none", + "mutates": "none", + "proves": "edcm_artifact_status_does_not_transfer", + "requires": "node", + "timeout": "10" + }, + "file": "tests/edcm-mathematics.test.mjs", + "id": "check_edcm_artifact_status_does_not_transfer" + }, { "block": "CHECKS", "fields": { @@ -1138,6 +1230,69 @@ export default defineMsdmdCollection({ "source_id": "check_ai_context_stable_person_identity", "to": "node" }, + { + "from": "check_edcm_artifact_math_contact_preserved", + "kind": "calls", + "source_block": "CHECKS", + "source_id": "check_edcm_artifact_math_contact_preserved", + "to": "self::checkMathContactPreserved" + }, + { + "from": "check_edcm_artifact_math_contact_preserved", + "kind": "claims_proves", + "source_block": "CHECKS", + "source_id": "check_edcm_artifact_math_contact_preserved", + "to": "edcm_artifact_math_contact_preserved" + }, + { + "from": "check_edcm_artifact_math_contact_preserved", + "kind": "requires", + "source_block": "CHECKS", + "source_id": "check_edcm_artifact_math_contact_preserved", + "to": "node" + }, + { + "from": "check_edcm_artifact_source_identity_visible", + "kind": "calls", + "source_block": "CHECKS", + "source_id": "check_edcm_artifact_source_identity_visible", + "to": "self::checkSourceIdentityVisible" + }, + { + "from": "check_edcm_artifact_source_identity_visible", + "kind": "claims_proves", + "source_block": "CHECKS", + "source_id": "check_edcm_artifact_source_identity_visible", + "to": "edcm_artifact_source_identity_visible" + }, + { + "from": "check_edcm_artifact_source_identity_visible", + "kind": "requires", + "source_block": "CHECKS", + "source_id": "check_edcm_artifact_source_identity_visible", + "to": "node" + }, + { + "from": "check_edcm_artifact_status_does_not_transfer", + "kind": "calls", + "source_block": "CHECKS", + "source_id": "check_edcm_artifact_status_does_not_transfer", + "to": "self::checkStatusDoesNotTransfer" + }, + { + "from": "check_edcm_artifact_status_does_not_transfer", + "kind": "claims_proves", + "source_block": "CHECKS", + "source_id": "check_edcm_artifact_status_does_not_transfer", + "to": "edcm_artifact_status_does_not_transfer" + }, + { + "from": "check_edcm_artifact_status_does_not_transfer", + "kind": "requires", + "source_block": "CHECKS", + "source_id": "check_edcm_artifact_status_does_not_transfer", + "to": "node" + }, { "from": "check_llms_markdown_examples_ignored", "kind": "calls", @@ -1264,6 +1419,13 @@ export default defineMsdmdCollection({ "source_id": "distributed_textbook_fetch", "to": "Erin Spencer" }, + { + "from": "edcm_mathematics_public_artifact_record", + "kind": "owns", + "source_block": "MODULE_BUILD", + "source_id": "edcm_mathematics_public_artifact_record", + "to": "Erin Spencer" + }, { "from": "generated_content_gate", "kind": "owns", diff --git a/package.json b/package.json index 88b3842..4506af4 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "validate": "node scripts/validate-content.mjs && node scripts/verify-generated-routes.mjs && node scripts/verify-article-canon.mjs", "build": "npm run validate && eleventy && pagefind --site _site && node scripts/write-build-info.mjs", "pretest": "node scripts/prepare-tests.mjs", - "test": "node --test tests/aicontext.test.mjs tests/llms-build.test.mjs tests/canon-parser.test.mjs tests/canon-integrity.test.mjs tests/textbook-integrity.test.mjs tests/math-rendering.test.mjs tests/narratives.test.mjs tests/offline-project-snapshot.test.mjs tests/repo-coverage.test.mjs tests/research-ledger.test.mjs tests/works-registry.test.mjs tests/site-contract.test.mjs", + "test": "node --test tests/aicontext.test.mjs tests/edcm-mathematics.test.mjs tests/llms-build.test.mjs tests/canon-parser.test.mjs tests/canon-integrity.test.mjs tests/textbook-integrity.test.mjs tests/math-rendering.test.mjs tests/narratives.test.mjs tests/offline-project-snapshot.test.mjs tests/repo-coverage.test.mjs tests/research-ledger.test.mjs tests/works-registry.test.mjs tests/site-contract.test.mjs", "test:generated": "node --test tests/generated-site.test.mjs tests/textbook-generated.test.mjs tests/math-generated.test.mjs && node tests/links.test.mjs", "test:browser": "playwright test", "test:e2e": "playwright test tests/site.spec.mjs", diff --git a/src/_data/edcm_mathematics.js b/src/_data/edcm_mathematics.js new file mode 100644 index 0000000..4e91c06 --- /dev/null +++ b/src/_data/edcm_mathematics.js @@ -0,0 +1,338 @@ +import { createHash } from 'node:crypto'; + +// === MODULE_BUILD === +// id: edcm_mathematics_public_artifact_record +// module_name: edcm-mathematics +// module_kind: schema +// summary: Carries the recovered EDCM–UCNS v0.3.1 mathematical architecture, its source identities, and its non-transfer boundaries into one public artifact. +// owner: Erin Spencer +// public_surface: edcm_mathematics, /artifacts/edcm-mathematics/ +// internal_surface: canonicalJson, workGraphIdentity, record_markdown +// auth_boundary: none +// storage_boundary: none +// network_boundary: none +// user_data_boundary: none +// admin_only: false +// tests: tests/edcm-mathematics.test.mjs, tests/generated-site.test.mjs +// rollout: loaded by Eleventy and linked from /artifacts/ +// rollback: remove this data module, its route, its index card, and its contract checks together +// since: 2026-08-02 +// unresolved: immutable transcript export identity +// === END MODULE_BUILD === +// Usage: cite the public route for the recovered architecture; cite a separate, exact EDCM result record for any measurement claim. Correct source mathematics in The-Interdependency/edcm before updating this publication consumer. +// Limits: this is a conversation-derived design record corroborated by an immutable EDCM handoff. It is not a transcript export, current UCNS canon, theorem proof, EDCM result, or empirical validation. + +// === CONTRACTS === +// id: edcm_artifact_source_identity_visible +// given: the EDCM mathematics artifact is published +// then: the named conversation, public EDCM commit, file path, blob, license, retrieval method, and missing transcript identity remain visible +// class: evidence +// +// id: edcm_artifact_status_does_not_transfer +// given: recovered architecture and UCNS substrate mathematics appear on the website +// then: canon, theorem, proof, measurement, empirical, authentication, and runtime status do not transfer to the publication +// class: safety +// +// id: edcm_artifact_math_contact_preserved +// given: the structured record is rendered through the site Markdown and math pipeline +// then: substrate, mirror, product, sequence, residue, readout, equivalence, carrier, mass, and epoch relations remain present as static mathematics +// class: correctness +// === END CONTRACTS === + +function canonicalJson(value) { + if (Array.isArray(value)) return `[${value.map(canonicalJson).join(',')}]`; + if (value && typeof value === 'object') { + return `{${Object.keys(value).sort().map(key => `${JSON.stringify(key)}:${canonicalJson(value[key])}`).join(',')}}`; + } + return JSON.stringify(value); +} + +const workGraphIdentity = Object.freeze({ + repositories: [ + { + repository: 'conversation/EDCM-UCNS-SITREP', + commit: 'hmmm', + authority: 'ratified design conversation and associated edcmucns.md record', + relation: 'provenance source; immutable transcript export not recovered' + }, + { + repository: 'The-Interdependency/edcm', + commit: 'ee20db72dde75f602ccf590a64047117f6bca87d', + authority: 'EDCM measurement architecture and result contracts', + relation: 'immutable public corroborating source and correction target' + }, + { + repository: 'The-Interdependency/skill-lib', + commit: '2b24be24947223b86440f59f1bd9766130f9cc11', + authority: 'publication, domain, evidence, and boundary discipline', + relation: 'build-doctrine source' + }, + { + repository: 'The-Interdependency/The-Interdependency.github.io', + commit: 'a7586523cfe6f2b47fd6e112eb07ce078ee4267e', + authority: 'presentation only', + relation: 'publication consumer base' + } + ], + boundaries: { + authority_transfer: false, + proof_status_transfer: false, + measurement_status_transfer: false, + semantic_mapping: 'declared mapping', + agent_scope: 'public-artifact-publication', + hmmm: [ + 'The immutable export identity for the conversation titled EDCM UCNS SITREP was not available in the recovered conversation index.' + ] + } +}); + +const workGraphSha256 = createHash('sha256').update(canonicalJson(workGraphIdentity)).digest('hex'); + +const recordMarkdown = String.raw` +## Mathematical record + +This section preserves the mathematical structure recovered from the conversation-associated design record. Editorial explanations are labeled. The equations are architecture, not observed results. + +### 1. UCNS substrate read by EDCM + +The recovered design record names a UCNS carrier object + +\[ +G = \left(n_{\mathrm{dec}}, n_{\min}, \Theta^+, \Theta^-, F^+, F^-\right). +\] + +The ordered anchor sequences live on the lifted angular domain + +\[ +\Theta^\pm \in \left(\mathbb{R}/4\pi\mathbb{Z}\right)^L, +\qquad +F^\pm \in \{0,1\}^L. +\] + +The indexed source material does not unambiguously define \(n_{\mathrm{dec}}\); its meaning is therefore **hmmm** here. The minimum carrier \(n_{\min}\), ordered positive anchors \(\Theta^+\), and positive face sequence \(F^+\) are the geometry compared by the recovered equivalence rule. + +The mirror is derived, not independently trusted: + +\[ +\left(\Theta^+\right)^*_j = -\theta_{L-1-j} \pmod{4\pi}. +\] + +The face mirror reverses order only. Negative branches are regenerated from the positive branch. Normalization shifts the first anchor to zero, reduces angles modulo \(4\pi\), recomputes \(n_{\min}\), and regenerates mirrors. + +### 2. Product, zero, unit, and chronological append + +The recovered product \(\boxtimes\) is order-sensitive and non-commutative. It expands host blocks, recursively combines payloads, combines faces by XOR, and multiplies lengths: + +\[ +L_{A\boxtimes B} = L_A L_B. +\] + +Its carrier is recomputed by least common multiple over the contributing carriers. The external zero \(\mathbf{0}\) is an absorber; the geometric unit \(\mathbf{1}\) is an identity. + +Dialogue windows do **not** use that product. They use chronological sequence append: + +\[ +A \boxplus B = \operatorname{SeqAppend}(A,B), +\qquad +L_{A\boxplus B} = L_A + L_B. +\] + +Sequence append keeps absolute lattice positions origin-anchored, concatenates \(F\), regenerates mirrors, and recomputes the carrier as the least common multiple over host anchors in scope. In general, + +\[ +A \boxplus B \not\equiv B \boxplus A. +\] + +### 3. Family gauge and the non-origin residue law + +The v0.3.1 family-to-prime gauge is + +\[ +P\mapsto3,\quad K\mapsto5,\quad Q\mapsto7,\quad T\mapsto13,\quad S\mapsto29. +\] + +For the \(m_f\)-th bone in family \(f\), with family prime \(p_f\), use + +\[ +r_f(m)=1+\left((m_f-1)\bmod(p_f-1)\right), +\qquad +\theta=2\pi\frac{r_f(m)}{p_f}. +\] + +Residues cycle through \(1,\ldots,p_f-1\). Thus family-signature bones never land at \(\theta=0\); zero angle is reserved for an explicit origin/datum role. Family angles label operator families. They are not cadence measurements. + +The recovered face policy assigns \(f=1\) to negative-pole bones and \(f=0\) otherwise. A polarity audit compares the bone-face subsequence only. + +### 4. What an EDCM measurement depends on + +The central architecture equation is + +\[ +M_{\mathrm{EDCM}} += +\operatorname{readout}\!\left( +G_{\mathrm{UCNS}}, +\Pi_{\mathrm{provenance}}, +\mathrm{payloads}, +\mathrm{field\_state}, +\mathrm{policy\_manifest} +\right). +\] + +|∆|Same geometry is not sufficient for the same EDCM reading.|∆| Geometry, readout-bearing provenance, in-scope payload identity, field-chain state, and policy-manifest identity remain distinct inputs. + +The two recovered equivalence tiers are: + +~~~text +ucns_carrier_equivalent(a, b): + compares n_min, Θ⁺, F⁺ + ignores witness, payloads, manifest + +edcm_measurement_equivalent(a, b, readout_scope): + requires ucns_carrier_equivalent + + same in-scope provenance hash + + same in-scope payload hash + + same field-chain state where applicable + + same policy-manifest hash +~~~ + +The minimum closed readout-scope registry separates: + +- **operator_scope** — geometry and family witness; mass \(L_{\mathrm{op}}\); +- **payload_scope** — payload carriers and hashes, excluding operator mass; +- **cadence_scope** — flesh/cadence carriers, allowing composite lattices and excluding \(n_{\mathrm{family}}\); +- **field_scope** — the ConstraintField / FieldMotion hash chain; +- **bridge_scope** — witness/geometry diagnostics plus manifest and epoch boundaries. + +Registry extension requires a manifest revision and an epoch break. + +### 5. Roles, mass, and carriers + +The anchor roles are **origin**, **bone**, and **cadence**. Origin anchors have \(\theta=0\) and face \(0\). Bone anchors never occupy \(\theta=0\). Cadence admission from real transcript text remained unimplemented in the recovered v0.3.1 boundary. + +The host and operator masses are distinct: + +\[ +L_{\mathrm{geo}} = \text{all host anchors, including datum anchors}, +\qquad +L_{\mathrm{op}} = \text{family-signature bone anchors only}. +\] + +Field load is a density, not either mass: + +\[ +\lambda_{\mathrm{field}}(W) += +\frac{\operatorname{raised\_field\_count}(W)}{\mathrm{TOK}}. +\] + +The carrier names preserve scope: + +- \(n_{\mathrm{host\_total}}\): all host-level anchors in scope; +- \(n_{\mathrm{family}}\): family-signature bone anchors; +- \(n_{\mathrm{cadence}}\): cadence-motion anchors; +- \(n_{\mathrm{payload}}(s)\): payload subobjects read by scope \(s\). + +Only \(n_{\mathrm{family}}\) carries the recovered claim that carrier factorization corresponds to the active family set. Payload carriers are epicyclic subobjects and do not automatically enter host \(n_{\min}\). + +### 6. Absence is not zero + +The recovered turn type is + +\[ +\operatorname{OperatorTurn} += +\operatorname{Present}(G,\Pi) +\;\mid\; +\operatorname{AbsentOperatorGeometry}(e_{\mathrm{content\ lens}}). +\] + +A no-bone turn is neither the unit nor zero. It produces **NA** for operator readouts and remains available to the Content layer: + +\[ +\mathrm{NA} \ne 0. +\] + +### 7. Witness consistency + +The architecture names the validator + +\[ +\operatorname{witness\_geometry\_consistent} +\left(G_{\mathrm{UCNS}},\Pi_{\mathrm{provenance}},\mathrm{policy\_manifest}\right). +\] + +It checks origin angle and face, exclusion of origin anchors from operator mass, family-to-prime and residue agreement, payload targets, stable turn/source canonicalization, and typed absent operator geometry. A mismatch emits a Bridge diagnostic; provenance cannot silently override inconsistent geometry. + +### 8. Epoch law + +The policy manifest is part of measurement identity. If its hash changes, the chain cannot continue as though nothing changed: + +~~~text +seal current chain segment +log old_manifest, new_manifest, boundary_window +open new epoch sealed with new manifest hash +~~~ + +Cross-epoch comparisons are Bridge lensing events, not raw deltas. Adoption of v0.3.1 was itself an epoch break because the ordinal-to-angle rule changed. + +### 9. Mathematical firewall and frontier gates + +UCNS proof status applies only to the carrier geometry it actually proves. EDCM validity applies to a measurement function over geometry plus provenance. No EDCM measurement claim inherits proof status from its substrate. + +The recovered architecture leaves these empirical gates non-operational until named falsifiers and tests exist: + +- contact convergence; +- residual primality / \(\mathrm{DA}_{\mathrm{geom}}\) correlation; +- cadence-anchor admission from real transcript text; +- corpus parallel-run conclusions; +- operating-state empirical validity. + +No placeholder number, heuristic, language-model judgment, architectural equation, or UCNS theorem may impersonate a result from those gates. +`; + +const edcmMathematics = Object.freeze({ + schema: 'interdependentway.artifact.edcm-mathematics/1.0.0', + '@id': 'https://interdependentway.org/artifacts/edcm-mathematics/#record', + title: 'EDCM mathematics: recovered architecture record', + route: '/artifacts/edcm-mathematics/', + classification: { + architecture: 'ratified-and-frozen-v0.3.1', + empirical_measurement: 'frontier', + implementation: 'gated-on-tests-and-readout-scope-registry', + website_role: 'publication-consumer', + current_ucns_canon: false, + theorem_or_proof: false, + edcm_result: false, + runtime_status: false + }, + source: { + conversation_title: 'EDCM UCNS SITREP', + conversation_design_event: '2026-07-06', + conversation_follow_up: '2026-07-15', + immutable_transcript_export: 'hmmm', + associated_record: 'edcmucns.md — design canon v0.3.1', + recovery_method: 'named conversation index plus immutable public EDCM handoff cross-check', + retrieved_at: '2026-08-02', + public_corroborating_source: { + repository: 'The-Interdependency/edcm', + path: 'docs/codex_edcmucns_v031_handoff.md', + commit: 'ee20db72dde75f602ccf590a64047117f6bca87d', + blob: '457758fecb257532757657db4f119a52f850f318', + license: 'MPL-2.0', + url: 'https://github.com/The-Interdependency/edcm/blob/ee20db72dde75f602ccf590a64047117f6bca87d/docs/codex_edcmucns_v031_handoff.md' + } + }, + work_graph: { + schema: 'the-interdependency.stack-manifest', + version: '1.0.0', + work_graph_sha256: workGraphSha256, + ...workGraphIdentity + }, + record_markdown: recordMarkdown, + hmmm: 'The exact immutable transcript export remains unresolved. The public EDCM handoff corroborates the recovered architecture, but it does not authenticate or replace the original conversation.' +}); + +export default function loadEdcmMathematics() { + return structuredClone(edcmMathematics); +} diff --git a/src/artifacts/edcm-mathematics.njk b/src/artifacts/edcm-mathematics.njk new file mode 100644 index 0000000..fa0225a --- /dev/null +++ b/src/artifacts/edcm-mathematics.njk @@ -0,0 +1,62 @@ +--- +layout: layouts/base.njk +title: "EDCM mathematics: recovered architecture record" +description: A source-attributed public artifact preserving the recovered EDCM–UCNS v0.3.1 mathematical architecture and its non-transfer boundaries. +permalink: /artifacts/edcm-mathematics/ +--- + +
+

Recovered mathematical record · conversation-derived

+

{{ edcm_mathematics.title }}

+
+ ratified architecture v0.3.1 + empirical frontier + not a measurement result +
+

A public, inspectable rendering of the EDCM mathematics recovered from the “EDCM UCNS SITREP” thread and checked against the immutable EDCM implementation handoff.

+
+ +
+

Source and status boundary

+

The conversation associated edcmucns.md with a ratified and frozen v0.3.1 architecture. Empirical measurement remained frontier, and implementation remained gated on tests plus the closed readout_scope registry.

+

The website publishes this record; it does not become the source of EDCM mathematics, current UCNS canon, a theorem proof, a result record, or evidence of a running system.

+

The recovered mathematical record is bracketed with | below because it is generated from prior conversational context. Editorial orientation remains outside those bars.

+
+
Conversation
{{ edcm_mathematics.source.conversation_title }}
+
Conversation identity
{{ edcm_mathematics.source.immutable_transcript_export }} — no immutable transcript export was present in the recovered index
+
Public cross-check
{{ edcm_mathematics.source.public_corroborating_source.repository }}:{{ edcm_mathematics.source.public_corroborating_source.path }}
+
Commit
{{ edcm_mathematics.source.public_corroborating_source.commit }}
+
Blob
{{ edcm_mathematics.source.public_corroborating_source.blob }}
+
License
{{ edcm_mathematics.source.public_corroborating_source.license }}
+
Work graph
{{ edcm_mathematics.work_graph.work_graph_sha256 }}
+
+

Open the exact EDCM handoff

+
+ +
+

Plain orientation · editorial companion

+

What the architecture is saying

+
+

Geometry is the carrier

UCNS supplies an ordered geometric object. EDCM does not treat that object alone as a measurement.

+

Provenance is an input

Who or what produced an occurrence, its order, payload, field state, and governing manifest can change the readout even when geometry is unchanged.

+

Absence stays absent

A turn with no operator geometry yields NA, not zero. Missing measurement cannot be made numerically convenient without changing the claim.

+
+
+ +

|

+
+{{ edcm_mathematics.record_markdown | markdown | safe }} +
+

|

+ +
+

Usage guidance

+
    +
  1. Cite this page when referring to the recovered v0.3.1 architecture and its status boundary.
  2. +
  3. Cite the exact EDCM handoff above when source identity matters.
  4. +
  5. For any measurement claim, cite a separate EDCM result record containing the actual input scope, manifest identity, computation, and output. This artifact is not that record.
  6. +
  7. Route corrections to The-Interdependency/edcm first; then update this publication consumer without transferring authority.
  8. +
+
+ +

hmmm

{{ edcm_mathematics.hmmm }}

diff --git a/src/artifacts/index.njk b/src/artifacts/index.njk index c7b11a1..c5938f2 100644 --- a/src/artifacts/index.njk +++ b/src/artifacts/index.njk @@ -4,5 +4,8 @@ title: Artifacts description: Public visual studies, interactive explainers, compact publications, and experiments from The Interdependency. ---

Public artifacts

Things made to be used, tested, and shared

Artifacts inherit the site’s navigation, epistemic labels, accessibility floor, and fallback discipline while keeping the visual character required by their subject.

-
Data visualization

Four Cuts of the Same Country

Wealth and federal income tax shown through four honest but non-identical cuts, with incompatible seams left visible rather than falsely aligned.

+
+ Recovered architecture

EDCM mathematics

The source-attributed v0.3.1 architecture recovered from the “EDCM UCNS SITREP” thread, with its mathematical firewall and unresolved transcript identity kept visible.

+ Data visualization

Four Cuts of the Same Country

Wealth and federal income tax shown through four honest but non-identical cuts, with incompatible seams left visible rather than falsely aligned.

+

hmmm

Additional infographics, experiments, and compact publications will enter this index only after their source and status metadata are declared.

diff --git a/tests/accessibility.spec.mjs b/tests/accessibility.spec.mjs index a9e7e23..47f7065 100644 --- a/tests/accessibility.spec.mjs +++ b/tests/accessibility.spec.mjs @@ -14,7 +14,7 @@ if (!firstLabUnit) throw new Error(`missing Lab canon unit ${articleLab[0].unit_ for (const route of [ '/', '/home/', '/preamble/', '/chapters/', '/chapters/chapter-zero/', '/chapters/chapter-seven/', '/articles/', '/articles/article-two/', '/narratives/', '/narratives/jack-and-diane/', '/way/', '/lab/', `/lab/${firstLabUnit.routeSlug}/`, '/projects/', - '/research/method/' + '/artifacts/edcm-mathematics/', '/research/method/' ]) { test(`${route} has no serious or critical automated accessibility violations`, async ({ page }) => { await page.goto(route); diff --git a/tests/edcm-mathematics.test.mjs b/tests/edcm-mathematics.test.mjs new file mode 100644 index 0000000..8e07c93 --- /dev/null +++ b/tests/edcm-mathematics.test.mjs @@ -0,0 +1,89 @@ +// Usage: run `node --test tests/edcm-mathematics.test.mjs`; these checks preserve source identity, epistemic boundaries, and mathematical contact without claiming the equations are true or empirically validated. +import { createHash } from 'node:crypto'; +import test from 'node:test'; +import assert from 'node:assert/strict'; +import loadEdcmMathematics from '../src/_data/edcm_mathematics.js'; + +const artifact = loadEdcmMathematics(); + +function canonicalJson(value) { + if (Array.isArray(value)) return `[${value.map(canonicalJson).join(',')}]`; + if (value && typeof value === 'object') { + return `{${Object.keys(value).sort().map(key => `${JSON.stringify(key)}:${canonicalJson(value[key])}`).join(',')}}`; + } + return JSON.stringify(value); +} + +// === CHECKS === +// id: check_edcm_artifact_source_identity_visible +// proves: edcm_artifact_source_identity_visible +// call: self::checkSourceIdentityVisible +// requires: node +// timeout: 10 +// mutates: none +// cleanup: none +// +// id: check_edcm_artifact_status_does_not_transfer +// proves: edcm_artifact_status_does_not_transfer +// call: self::checkStatusDoesNotTransfer +// requires: node +// timeout: 10 +// mutates: none +// cleanup: none +// +// id: check_edcm_artifact_math_contact_preserved +// proves: edcm_artifact_math_contact_preserved +// call: self::checkMathContactPreserved +// requires: node +// timeout: 10 +// mutates: none +// cleanup: none +// === END CHECKS === + +export function checkSourceIdentityVisible() { + assert.equal(artifact.source.conversation_title, 'EDCM UCNS SITREP'); + assert.equal(artifact.source.immutable_transcript_export, 'hmmm'); + assert.equal(artifact.source.public_corroborating_source.repository, 'The-Interdependency/edcm'); + assert.equal(artifact.source.public_corroborating_source.path, 'docs/codex_edcmucns_v031_handoff.md'); + assert.equal(artifact.source.public_corroborating_source.commit, 'ee20db72dde75f602ccf590a64047117f6bca87d'); + assert.equal(artifact.source.public_corroborating_source.blob, '457758fecb257532757657db4f119a52f850f318'); + assert.equal(artifact.source.public_corroborating_source.license, 'MPL-2.0'); + + const { work_graph_sha256: digest, schema, version, ...identity } = artifact.work_graph; + assert.equal(schema, 'the-interdependency.stack-manifest'); + assert.equal(version, '1.0.0'); + assert.equal(createHash('sha256').update(canonicalJson(identity)).digest('hex'), digest); +} + +export function checkStatusDoesNotTransfer() { + assert.equal(artifact.classification.current_ucns_canon, false); + assert.equal(artifact.classification.theorem_or_proof, false); + assert.equal(artifact.classification.edcm_result, false); + assert.equal(artifact.classification.runtime_status, false); + assert.equal(artifact.work_graph.boundaries.authority_transfer, false); + assert.equal(artifact.work_graph.boundaries.proof_status_transfer, false); + assert.equal(artifact.work_graph.boundaries.measurement_status_transfer, false); + assert.match(artifact.record_markdown, /No EDCM measurement claim inherits proof status/); + assert.match(artifact.record_markdown, /No placeholder number, heuristic, language-model judgment/); +} + +export function checkMathContactPreserved() { + for (const contact of [ + 'G =', + '4\\pi\\mathbb{Z}', + '\\boxtimes', + '\\operatorname{SeqAppend}', + 'r_f(m)=1+', + 'M_{\\mathrm{EDCM}}', + 'ucns_carrier_equivalent', + 'edcm_measurement_equivalent', + 'L_{\\mathrm{geo}}', + '\\lambda_{\\mathrm{field}}', + '\\mathrm{NA} \\ne 0', + 'seal current chain segment' + ]) assert.ok(artifact.record_markdown.includes(contact), `missing mathematical contact: ${contact}`); +} + +test('EDCM artifact preserves exact source identity', checkSourceIdentityVisible); +test('EDCM artifact prevents status transfer', checkStatusDoesNotTransfer); +test('EDCM artifact preserves mathematical contact', checkMathContactPreserved); diff --git a/tests/generated-site.test.mjs b/tests/generated-site.test.mjs index e7e35c3..40e4a45 100644 --- a/tests/generated-site.test.mjs +++ b/tests/generated-site.test.mjs @@ -34,12 +34,13 @@ export async function checkAiContextPublicDiscovery() { // Usage: run only after Eleventy has generated _site, normally through npm run test:generated or npm run check. test('generated deployment artifact contains the unified routes', async () => { - const [splash, home, preamble, chapters, artifacts, fourCuts, fallback, articles, narratives, jackAndDiane] = await Promise.all([ + const [splash, home, preamble, chapters, artifacts, edcmMathematics, fourCuts, fallback, articles, narratives, jackAndDiane] = await Promise.all([ readFile('_site/index.html', 'utf8'), readFile('_site/home/index.html', 'utf8'), readFile('_site/preamble/index.html', 'utf8'), readFile('_site/chapters/index.html', 'utf8'), readFile('_site/artifacts/index.html', 'utf8'), + readFile('_site/artifacts/edcm-mathematics/index.html', 'utf8'), readFile('_site/artifacts/four-cuts/index.html', 'utf8'), readFile('_site/fallback/index.html', 'utf8'), readFile('_site/articles/index.html', 'utf8'), @@ -65,6 +66,17 @@ test('generated deployment artifact contains the unified routes', async () => { assert.match(chapters, /The Interdependency Textbook/); assert.match(chapters, /Chapters Zero through Seven/); assert.match(artifacts, /Artifacts/); + assert.match(artifacts, /href="\/artifacts\/edcm-mathematics\/"/); + assert.match(edcmMathematics, /EDCM mathematics: recovered architecture record/); + assert.match(edcmMathematics, /ratified architecture v0\.3\.1/); + assert.match(edcmMathematics, /not a measurement result/); + assert.match(edcmMathematics, /ee20db72dde75f602ccf590a64047117f6bca87d/); + assert.match(edcmMathematics, /457758fecb257532757657db4f119a52f850f318/); + assert.match(edcmMathematics, /aria-label="Start of recovered conversational context">\|<\/p>/); + assert.match(edcmMathematics, /aria-label="End of recovered conversational context">\|<\/p>/); + assert.match(edcmMathematics, / { + await page.goto('/artifacts/edcm-mathematics/'); + await expect(page.locator('h1')).toHaveText('EDCM mathematics: recovered architecture record'); + await expect(page.locator('.status-risk')).toHaveText('not a measurement result'); + await expect(page.locator('body')).toContainText('EDCM UCNS SITREP'); + await expect(page.locator('body')).toContainText('ee20db72dde75f602ccf590a64047117f6bca87d'); + await expect(page.locator('.textbook-chapter math').first()).toBeVisible(); + expect(await page.locator('.textbook-chapter math').count()).toBeGreaterThanOrEqual(20); + await expect(page.locator('script[src*="temml"], script[src*="katex"], script[src*="mathjax"]')).toHaveCount(0); + await expect(page.locator('.hmmm')).toContainText('exact immutable transcript export remains unresolved'); +}); + test('all eight Rights Article Labs are linked from the Way tree and expose the shared contact structure', async ({ page }) => { await page.goto('/way/'); for (const record of labRoutes) await expect(page.locator(`a[href="${record.route}"]`)).toHaveCount(1); From 444718ad62eb47427610acef4fe5dbfeafbc2b87 Mon Sep 17 00:00:00 2001 From: Erin Spencer Date: Sun, 2 Aug 2026 01:47:50 -0700 Subject: [PATCH 2/2] Pin website mathematics to EDCM reference --- .eleventy.js | 3 + README.md | 2 +- The-Interdependency.github.io_msdmd.ts | 120 ++- package.json | 3 +- scripts/check-edcm-reference-drift.mjs | 47 + src/_data/edcm_mathematics.js | 360 ++----- src/_data/edcm_mathematics_reference.md | 1295 +++++++++++++++++++++++ src/artifacts/edcm-mathematics.njk | 68 +- src/artifacts/index.njk | 2 +- tests/edcm-mathematics.test.mjs | 112 +- tests/generated-site.test.mjs | 18 +- tests/site.spec.mjs | 16 +- 12 files changed, 1581 insertions(+), 465 deletions(-) create mode 100644 scripts/check-edcm-reference-drift.mjs create mode 100644 src/_data/edcm_mathematics_reference.md diff --git a/.eleventy.js b/.eleventy.js index ff847de..51fb6bb 100644 --- a/.eleventy.js +++ b/.eleventy.js @@ -24,6 +24,9 @@ export default function configureEleventy(eleventyConfig) { eleventyConfig.addFilter('where', (items, key, value) => (items || []).filter(item => item?.[key] === value)); eleventyConfig.addFilter('statusClass', value => `status-${String(value || 'hmmm').toLowerCase().replace(/[^a-z0-9]+/g, '-')}`); eleventyConfig.addFilter('markdown', value => md.render(String(value || ''))); + eleventyConfig.addFilter('edcmMarkdown', value => md.render(String(value || '')) + .replace(/]*\btabindex=)([^>]*)>/g, '
')
+    .replace(/]*\btabindex=)(?=[^>]*\bdisplay="block")/g, ' `${JSON.stringify(key)}:${canonicalJson(value[key])}`).join(',')}}`;
-  }
-  return JSON.stringify(value);
-}
-
-const workGraphIdentity = Object.freeze({
-  repositories: [
-    {
-      repository: 'conversation/EDCM-UCNS-SITREP',
-      commit: 'hmmm',
-      authority: 'ratified design conversation and associated edcmucns.md record',
-      relation: 'provenance source; immutable transcript export not recovered'
-    },
-    {
-      repository: 'The-Interdependency/edcm',
-      commit: 'ee20db72dde75f602ccf590a64047117f6bca87d',
-      authority: 'EDCM measurement architecture and result contracts',
-      relation: 'immutable public corroborating source and correction target'
-    },
-    {
-      repository: 'The-Interdependency/skill-lib',
-      commit: '2b24be24947223b86440f59f1bd9766130f9cc11',
-      authority: 'publication, domain, evidence, and boundary discipline',
-      relation: 'build-doctrine source'
-    },
-    {
-      repository: 'The-Interdependency/The-Interdependency.github.io',
-      commit: 'a7586523cfe6f2b47fd6e112eb07ce078ee4267e',
-      authority: 'presentation only',
-      relation: 'publication consumer base'
-    }
-  ],
-  boundaries: {
-    authority_transfer: false,
-    proof_status_transfer: false,
-    measurement_status_transfer: false,
-    semantic_mapping: 'declared mapping',
-    agent_scope: 'public-artifact-publication',
-    hmmm: [
-      'The immutable export identity for the conversation titled EDCM UCNS SITREP was not available in the recovered conversation index.'
-    ]
-  }
+const SOURCE = Object.freeze({
+  repository: 'The-Interdependency/edcm',
+  path: 'docs/EDCM_MATHEMATICS.md',
+  commit: '2f09f9af10ef950ce68c765bcbed7dca83625c65',
+  blob: 'c2e059de15c4ef2c5fa9368c63363b606e503206',
+  sha256: '889336c7c723d6e013188e1b3f969f98aeca88e3075b8ce2e67bc87e897e724f',
+  license: 'MPL-2.0',
+  url: 'https://github.com/The-Interdependency/edcm/blob/2f09f9af10ef950ce68c765bcbed7dca83625c65/docs/EDCM_MATHEMATICS.md'
 });
 
-const workGraphSha256 = createHash('sha256').update(canonicalJson(workGraphIdentity)).digest('hex');
-
-const recordMarkdown = String.raw`
-## Mathematical record
-
-This section preserves the mathematical structure recovered from the conversation-associated design record. Editorial explanations are labeled. The equations are architecture, not observed results.
-
-### 1. UCNS substrate read by EDCM
-
-The recovered design record names a UCNS carrier object
-
-\[
-G = \left(n_{\mathrm{dec}}, n_{\min}, \Theta^+, \Theta^-, F^+, F^-\right).
-\]
-
-The ordered anchor sequences live on the lifted angular domain
-
-\[
-\Theta^\pm \in \left(\mathbb{R}/4\pi\mathbb{Z}\right)^L,
-\qquad
-F^\pm \in \{0,1\}^L.
-\]
-
-The indexed source material does not unambiguously define \(n_{\mathrm{dec}}\); its meaning is therefore **hmmm** here. The minimum carrier \(n_{\min}\), ordered positive anchors \(\Theta^+\), and positive face sequence \(F^+\) are the geometry compared by the recovered equivalence rule.
-
-The mirror is derived, not independently trusted:
-
-\[
-\left(\Theta^+\right)^*_j = -\theta_{L-1-j} \pmod{4\pi}.
-\]
-
-The face mirror reverses order only. Negative branches are regenerated from the positive branch. Normalization shifts the first anchor to zero, reduces angles modulo \(4\pi\), recomputes \(n_{\min}\), and regenerates mirrors.
-
-### 2. Product, zero, unit, and chronological append
-
-The recovered product \(\boxtimes\) is order-sensitive and non-commutative. It expands host blocks, recursively combines payloads, combines faces by XOR, and multiplies lengths:
-
-\[
-L_{A\boxtimes B} = L_A L_B.
-\]
-
-Its carrier is recomputed by least common multiple over the contributing carriers. The external zero \(\mathbf{0}\) is an absorber; the geometric unit \(\mathbf{1}\) is an identity.
-
-Dialogue windows do **not** use that product. They use chronological sequence append:
-
-\[
-A \boxplus B = \operatorname{SeqAppend}(A,B),
-\qquad
-L_{A\boxplus B} = L_A + L_B.
-\]
-
-Sequence append keeps absolute lattice positions origin-anchored, concatenates \(F\), regenerates mirrors, and recomputes the carrier as the least common multiple over host anchors in scope. In general,
-
-\[
-A \boxplus B \not\equiv B \boxplus A.
-\]
-
-### 3. Family gauge and the non-origin residue law
-
-The v0.3.1 family-to-prime gauge is
-
-\[
-P\mapsto3,\quad K\mapsto5,\quad Q\mapsto7,\quad T\mapsto13,\quad S\mapsto29.
-\]
-
-For the \(m_f\)-th bone in family \(f\), with family prime \(p_f\), use
-
-\[
-r_f(m)=1+\left((m_f-1)\bmod(p_f-1)\right),
-\qquad
-\theta=2\pi\frac{r_f(m)}{p_f}.
-\]
-
-Residues cycle through \(1,\ldots,p_f-1\). Thus family-signature bones never land at \(\theta=0\); zero angle is reserved for an explicit origin/datum role. Family angles label operator families. They are not cadence measurements.
-
-The recovered face policy assigns \(f=1\) to negative-pole bones and \(f=0\) otherwise. A polarity audit compares the bone-face subsequence only.
-
-### 4. What an EDCM measurement depends on
-
-The central architecture equation is
-
-\[
-M_{\mathrm{EDCM}}
-=
-\operatorname{readout}\!\left(
-G_{\mathrm{UCNS}},
-\Pi_{\mathrm{provenance}},
-\mathrm{payloads},
-\mathrm{field\_state},
-\mathrm{policy\_manifest}
-\right).
-\]
+const referenceBytes = readFileSync(new URL('./edcm_mathematics_reference.md', import.meta.url));
+const referenceMarkdown = referenceBytes.toString('utf8');
 
-|∆|Same geometry is not sufficient for the same EDCM reading.|∆| Geometry, readout-bearing provenance, in-scope payload identity, field-chain state, and policy-manifest identity remain distinct inputs.
-
-The two recovered equivalence tiers are:
-
-~~~text
-ucns_carrier_equivalent(a, b):
-  compares n_min, Θ⁺, F⁺
-  ignores witness, payloads, manifest
-
-edcm_measurement_equivalent(a, b, readout_scope):
-  requires ucns_carrier_equivalent
-  + same in-scope provenance hash
-  + same in-scope payload hash
-  + same field-chain state where applicable
-  + same policy-manifest hash
-~~~
-
-The minimum closed readout-scope registry separates:
-
-- **operator_scope** — geometry and family witness; mass \(L_{\mathrm{op}}\);
-- **payload_scope** — payload carriers and hashes, excluding operator mass;
-- **cadence_scope** — flesh/cadence carriers, allowing composite lattices and excluding \(n_{\mathrm{family}}\);
-- **field_scope** — the ConstraintField / FieldMotion hash chain;
-- **bridge_scope** — witness/geometry diagnostics plus manifest and epoch boundaries.
-
-Registry extension requires a manifest revision and an epoch break.
-
-### 5. Roles, mass, and carriers
-
-The anchor roles are **origin**, **bone**, and **cadence**. Origin anchors have \(\theta=0\) and face \(0\). Bone anchors never occupy \(\theta=0\). Cadence admission from real transcript text remained unimplemented in the recovered v0.3.1 boundary.
-
-The host and operator masses are distinct:
-
-\[
-L_{\mathrm{geo}} = \text{all host anchors, including datum anchors},
-\qquad
-L_{\mathrm{op}} = \text{family-signature bone anchors only}.
-\]
-
-Field load is a density, not either mass:
-
-\[
-\lambda_{\mathrm{field}}(W)
-=
-\frac{\operatorname{raised\_field\_count}(W)}{\mathrm{TOK}}.
-\]
-
-The carrier names preserve scope:
-
-- \(n_{\mathrm{host\_total}}\): all host-level anchors in scope;
-- \(n_{\mathrm{family}}\): family-signature bone anchors;
-- \(n_{\mathrm{cadence}}\): cadence-motion anchors;
-- \(n_{\mathrm{payload}}(s)\): payload subobjects read by scope \(s\).
-
-Only \(n_{\mathrm{family}}\) carries the recovered claim that carrier factorization corresponds to the active family set. Payload carriers are epicyclic subobjects and do not automatically enter host \(n_{\min}\).
-
-### 6. Absence is not zero
-
-The recovered turn type is
-
-\[
-\operatorname{OperatorTurn}
-=
-\operatorname{Present}(G,\Pi)
-\;\mid\;
-\operatorname{AbsentOperatorGeometry}(e_{\mathrm{content\ lens}}).
-\]
-
-A no-bone turn is neither the unit nor zero. It produces **NA** for operator readouts and remains available to the Content layer:
-
-\[
-\mathrm{NA} \ne 0.
-\]
-
-### 7. Witness consistency
-
-The architecture names the validator
-
-\[
-\operatorname{witness\_geometry\_consistent}
-\left(G_{\mathrm{UCNS}},\Pi_{\mathrm{provenance}},\mathrm{policy\_manifest}\right).
-\]
-
-It checks origin angle and face, exclusion of origin anchors from operator mass, family-to-prime and residue agreement, payload targets, stable turn/source canonicalization, and typed absent operator geometry. A mismatch emits a Bridge diagnostic; provenance cannot silently override inconsistent geometry.
-
-### 8. Epoch law
-
-The policy manifest is part of measurement identity. If its hash changes, the chain cannot continue as though nothing changed:
-
-~~~text
-seal current chain segment
-log old_manifest, new_manifest, boundary_window
-open new epoch sealed with new manifest hash
-~~~
-
-Cross-epoch comparisons are Bridge lensing events, not raw deltas. Adoption of v0.3.1 was itself an epoch break because the ordinal-to-angle rule changed.
-
-### 9. Mathematical firewall and frontier gates
-
-UCNS proof status applies only to the carrier geometry it actually proves. EDCM validity applies to a measurement function over geometry plus provenance. No EDCM measurement claim inherits proof status from its substrate.
-
-The recovered architecture leaves these empirical gates non-operational until named falsifiers and tests exist:
-
-- contact convergence;
-- residual primality / \(\mathrm{DA}_{\mathrm{geom}}\) correlation;
-- cadence-anchor admission from real transcript text;
-- corpus parallel-run conclusions;
-- operating-state empirical validity.
+function gitBlobSha1(bytes) {
+  const header = Buffer.from(`blob ${bytes.length}\0`, 'utf8');
+  return createHash('sha1').update(header).update(bytes).digest('hex');
+}
 
-No placeholder number, heuristic, language-model judgment, architectural equation, or UCNS theorem may impersonate a result from those gates.
-`;
+const observedSha256 = createHash('sha256').update(referenceBytes).digest('hex');
+const observedBlob = gitBlobSha1(referenceBytes);
+if (observedSha256 !== SOURCE.sha256 || observedBlob !== SOURCE.blob) {
+  throw new Error(
+    `EDCM reference drift: expected sha256=${SOURCE.sha256} blob=${SOURCE.blob}; ` +
+    `observed sha256=${observedSha256} blob=${observedBlob}`
+  );
+}
 
 const edcmMathematics = Object.freeze({
-  schema: 'interdependentway.artifact.edcm-mathematics/1.0.0',
+  schema: 'interdependentway.artifact.edcm-mathematics/2.0.0',
   '@id': 'https://interdependentway.org/artifacts/edcm-mathematics/#record',
-  title: 'EDCM mathematics: recovered architecture record',
+  title: 'EDCM mathematical reference',
   route: '/artifacts/edcm-mathematics/',
-  classification: {
-    architecture: 'ratified-and-frozen-v0.3.1',
-    empirical_measurement: 'frontier',
-    implementation: 'gated-on-tests-and-readout-scope-registry',
-    website_role: 'publication-consumer',
-    current_ucns_canon: false,
-    theorem_or_proof: false,
-    edcm_result: false,
-    runtime_status: false
-  },
-  source: {
-    conversation_title: 'EDCM UCNS SITREP',
-    conversation_design_event: '2026-07-06',
-    conversation_follow_up: '2026-07-15',
-    immutable_transcript_export: 'hmmm',
-    associated_record: 'edcmucns.md — design canon v0.3.1',
-    recovery_method: 'named conversation index plus immutable public EDCM handoff cross-check',
-    retrieved_at: '2026-08-02',
-    public_corroborating_source: {
-      repository: 'The-Interdependency/edcm',
-      path: 'docs/codex_edcmucns_v031_handoff.md',
-      commit: 'ee20db72dde75f602ccf590a64047117f6bca87d',
-      blob: '457758fecb257532757657db4f119a52f850f318',
-      license: 'MPL-2.0',
-      url: 'https://github.com/The-Interdependency/edcm/blob/ee20db72dde75f602ccf590a64047117f6bca87d/docs/codex_edcmucns_v031_handoff.md'
-    }
+  publication_role: 'commit-pinned reproduction',
+  authority: 'The-Interdependency/edcm source modules and CANON.md',
+  source: SOURCE,
+  observed: {
+    blob: observedBlob,
+    sha256: observedSha256,
+    utf8_bytes: referenceBytes.length
   },
-  work_graph: {
-    schema: 'the-interdependency.stack-manifest',
-    version: '1.0.0',
-    work_graph_sha256: workGraphSha256,
-    ...workGraphIdentity
+  status_transfer: {
+    authority: false,
+    canon: false,
+    proof: false,
+    theorem: false,
+    measurement: false,
+    empirical: false,
+    runtime: false
   },
-  record_markdown: recordMarkdown,
-  hmmm: 'The exact immutable transcript export remains unresolved. The public EDCM handoff corroborates the recovered architecture, but it does not authenticate or replace the original conversation.'
+  reference_markdown: referenceMarkdown,
+  hmmm: 'The exact commit and content identities detect copy drift; they do not authenticate the producer. Every mathematical unresolved boundary remains inside the reproduced EDCM reference.'
 });
 
 export default function loadEdcmMathematics() {
diff --git a/src/_data/edcm_mathematics_reference.md b/src/_data/edcm_mathematics_reference.md
new file mode 100644
index 0000000..c2e059d
--- /dev/null
+++ b/src/_data/edcm_mathematics_reference.md
@@ -0,0 +1,1295 @@
+# EDCM mathematical reference
+
+Version: 0.1.0
+
+Date: 2026-08-02
+
+Status: complete compiled reference for the mathematics currently declared or
+implemented in this repository; not a joint UCNS–EDCM canon selection
+
+## Authority and scope
+
+This document is the human-readable copy of the current Energy–Dissonance
+Circuit Model mathematics. Its scope is exact:
+
+- `edcm/measurement/` is the maintained implementation authority for the
+  frozen baseline candidate `edcm-measurement-v1`;
+- `edcm/ucns_objects.py` is the implemented EDCM signed-axis construction
+  layer, not formal UCNS geometry;
+- `edcm/edcmucns/` is the implemented v0.3.1 EDCM architecture layer; its
+  historical “design canon” label does not override the current pre-canon
+  status in `CANON.md` or make its local carriers formal UCNS geometry;
+- `edcm/ucns_edcm_experiments*.py` contains noncanonical joint experiment
+  candidates;
+- `edcm/goal_vector_experiment.py` contains the controlled goal-vector
+  candidate;
+- `edcm/measurement/canon/data/*_v1.json` supplies frozen marker data, not
+  empirically validated universal language laws;
+- `CANON.md` governs epistemic status and the proof/measurement firewall.
+
+The Interdependent Way textbook is a normative and explanatory artifact. It
+may publish a source-pinned copy of this reference, but it does not redefine
+EDCM mathematics. If a copied equation disagrees with the exact EDCM source
+identified above, the copy has drifted.
+
+The repository and source distribution include this file. The runtime wheel
+remains code-focused; installed-wheel behavior is defined by the owning source
+modules and packaged frozen data.
+
+“Complete” here means that every mathematical surface presently declared or
+implemented by EDCM is indexed below, including its unresolved boundaries. It
+does not mean the model is empirically validated, mathematically final, or
+joint canon.
+
+## Status vocabulary
+
+| Status | Meaning |
+|---|---|
+| implemented baseline candidate | Executed by `edcm/measurement/` and preserved by integrity gates |
+| implemented EDCM construction | Executed by EDCM, but not formal UCNS geometry |
+| experiment candidate | Versioned, executable, and falsifiable; no canon selection |
+| represented evidence | Exact source or structural observation retained without an EDCM measurement claim |
+| `NA` | Required evidence, context, geometry, or authority is unavailable; never numeric zero |
+| hmmm | An unresolved constraint carried forward rather than guessed |
+
+The baseline's numeric functions may return `0` for a measured zero or no
+marker hit inside their declared domain. Missing adapters, absent evidence,
+disabled axes, and unavailable geometry are represented outside that numeric
+domain as typed `NA`.
+
+## 1. Transcript and round domain
+
+Let a transcript be an ordered sequence of turns
+
+$$
+T=(u_1,u_2,\ldots,u_m),\qquad
+u_i=(a_i,x_i),
+$$
+
+where $a_i$ is the speaker identifier and $x_i$ is the exact turn text.
+Turn order and multiplicity are load-bearing.
+
+The maintained parser supports two round partitions:
+
+- `cycle`: the first observed speaker is the anchor; a new round begins when
+  that speaker regains the floor after at least one other speaker has spoken;
+- `pairs`: consecutive pairs of turns form rounds, with a final singleton
+  permitted.
+
+For round $t$, let $y_t$ be the single space-joined text of its turns and let
+$B_t=(b_{t,1},\ldots,b_{t,n_t})$ be the lowercase token sequence produced by
+the baseline tokenizer. Let $A_t=B_{t-1}$ when a previous round exists and the
+empty sequence otherwise.
+
+The rule-based parser separately classifies frozen-canon “bone” tokens and
+unmatched “flesh” tokens. Bone counts are audit continuity data; the current
+behavioral metric vector is computed from round text, token statistics,
+markers, and prior-round context rather than from a bones-only operator.
+
+## 2. Common operators and text statistics
+
+### Clamp
+
+$$
+\operatorname{clamp}(z)=\min(1,\max(0,z)).
+$$
+
+### Type–token ratio and repetition
+
+For token sequence $B$ with $n=|B|$ and vocabulary $V(B)$:
+
+$$
+\operatorname{TTR}(B)=
+\begin{cases}
+0,&n=0,\\
+\dfrac{|V(B)|}{n},&n>0,
+\end{cases}
+$$
+
+$$
+\operatorname{Rep}(B)=1-\operatorname{TTR}(B).
+$$
+
+Consequently, the historical baseline returns `1` for repetition on an empty
+token sequence through `1 - TTR`; normal round computation does not emit an
+empty parsed round.
+
+### Shannon entropy
+
+For empirical token probabilities $p_v$:
+
+$$
+H(B)=-\sum_{v\in V(B)}p_v\log_2 p_v,
+$$
+
+with $H(\varnothing)=0$.
+
+### Repeated n-gram density
+
+Let $G_n(B)$ be the ordered list of all length-$n$ n-grams, and $f(g)$ the
+frequency of $g$ in that list:
+
+$$
+\operatorname{RepN}_n(B)=
+\begin{cases}
+0,&|G_n(B)|=0,\\
+\dfrac{\sum_{g:f(g)>1}(f(g)-1)}{|G_n(B)|},&\text{otherwise}.
+\end{cases}
+$$
+
+The maintained baseline uses $n=3$.
+
+### Pattern density
+
+For a regular-expression marker pattern $r$ and raw text $x$:
+
+$$
+\rho_r(x)=
+\begin{cases}
+0,&|x|=0,\\
+1000\dfrac{\#\operatorname{matches}(r,x)}{|x|},&|x|>0.
+\end{cases}
+$$
+
+Matches follow Python `re.findall` behavior; despite an older docstring, the
+implementation does not add lookahead to make arbitrary patterns overlap.
+
+### Novelty
+
+$$
+\operatorname{Nov}(B\mid A)=
+\begin{cases}
+0,&|B|=0,\\
+\dfrac{\sum_{b\in B}\mathbf 1[b\notin V(A)]}{|B|},&|B|>0.
+\end{cases}
+$$
+
+Token occurrences, not only unique types, contribute to the numerator.
+
+### Bag-of-words cosine similarity
+
+Let $c_A$ and $c_B$ be aligned count vectors over $V(A)\cup V(B)$:
+
+$$
+\operatorname{cos}(A,B)=
+\begin{cases}
+0,&A=\varnothing\ \text{or}\ B=\varnothing,\\
+\dfrac{c_A\cdot c_B}{\|c_A\|_2\|c_B\|_2},&\text{otherwise}.
+\end{cases}
+$$
+
+### Jaccard similarity
+
+$$
+J(X,Y)=
+\begin{cases}
+0,&X\cup Y=\varnothing,\\
+\dfrac{|X\cap Y|}{|X\cup Y|},&\text{otherwise}.
+\end{cases}
+$$
+
+### Correction fidelity
+
+For original response $A$, new response $B$, and correction/target $C$:
+
+$$
+\operatorname{CF}(A,B,C)
+=0.5J(V(C),V(B))+0.5\left(1-\operatorname{cos}(A,B)\right).
+$$
+
+### Per-100 normalization
+
+$$
+\operatorname{per100}(z,B)=
+\begin{cases}
+0,&|B|=0,\\
+100z/|B|,&|B|>0.
+\end{cases}
+$$
+
+## 3. Maintained baseline vector
+
+For each round, the baseline emits
+
+$$
+M_t=(C_t,R_t,F_t,E_t,D_t,N_t,I_t,O_t,L_t,P_t,\kappa_t).
+$$
+
+Except for $O_t\in[-1,1]$, the metric components and state are clamped to
+$[0,1]$.
+
+Let $h_X(y_t)$ be the number of matches from the first frozen marker category
+for metric $X\in\{C,R,I\}$. With $n_t=|B_t|$:
+
+$$
+C_t=\operatorname{clamp}\left(
+\frac{h_C(y_t)}{\max(1,n_t/10)}\right),
+$$
+
+$$
+R_t=\operatorname{clamp}\left(
+\frac{h_R(y_t)}{\max(1,n_t/10)}\right),
+$$
+
+$$
+I_t=\operatorname{clamp}\left(
+\frac{h_I(y_t)}{\max(1,n_t/10)}\right).
+$$
+
+### Fixation
+
+$$
+F_t=\operatorname{clamp}\left(
+0.30\operatorname{Rep}(B_t)
++0.30\operatorname{RepN}_3(B_t)
++0.40(1-\operatorname{Nov}(B_t\mid A_t))
+\right).
+$$
+
+### Loop risk used by escalation
+
+$$
+R_{\mathrm{loop},t}=\operatorname{clamp}\left(
+0.50\operatorname{Rep}(B_t)
++0.30\operatorname{RepN}_3(B_t)
++0.20\operatorname{cos}(A_t,B_t)
+\right).
+$$
+
+### Escalation
+
+For the first round, the loop term is explicitly set to zero. Otherwise:
+
+$$
+E_t=\operatorname{clamp}(0.60R_t+0.40R_{\mathrm{loop},t}).
+$$
+
+### Deflection
+
+$$
+D_t=
+\begin{cases}
+0,&t=1,\\
+\operatorname{clamp}(1-\operatorname{cos}(B_t,A_t)),&t>1.
+\end{cases}
+$$
+
+This is a lexical proxy, not full semantic deflection.
+
+### Noise
+
+Let $\widehat H_t=\operatorname{clamp}(H(B_t)/10)$:
+
+$$
+N_t=\operatorname{clamp}\left(
+0.60\operatorname{Rep}(B_t)+0.40(1-\widehat H_t)
+\right).
+$$
+
+### Confidence polarity
+
+Let $o_t$ and $u_t$ be overconfidence and under-confidence marker hits:
+
+$$
+O_t=
+\begin{cases}
+0,&o_t+u_t=0,\\
+2\dfrac{o_t}{o_t+u_t}-1,&o_t+u_t>0.
+\end{cases}
+$$
+
+Positive is overconfident, negative is under-confident. This baseline zero is
+a within-domain no-hit value; it must not be reused as typed absence.
+
+### Coherence loss
+
+The implementation supplies a first-round novelty default of $0.5$:
+
+$$
+L_t=\operatorname{clamp}\left(
+0.50\operatorname{Rep}(B_t)+0.50(1-\nu_t)
+\right),
+$$
+
+where
+
+$$
+\nu_t=
+\begin{cases}
+0.5,&t=1,\\
+\operatorname{Nov}(B_t\mid A_t),&t>1.
+\end{cases}
+$$
+
+### Progress proxy
+
+Let
+
+$$
+g_t=
+\begin{cases}
+0.5,&H(B_{t-1})=0,\\
+\operatorname{clamp}\left(
+\dfrac{H(B_t)-H(B_{t-1})}{\max(H(B_{t-1}),10^{-9})}
+\right),&H(B_{t-1})>0.
+\end{cases}
+$$
+
+Then
+
+$$
+P_t=\operatorname{clamp}(0.60\nu_t+0.40g_t).
+$$
+
+$P$ is the baseline's health-oriented component. It is a lexical proxy, not
+an externally validated measure of beneficial progress.
+
+## 4. Dissonance and circuit recurrence
+
+The baseline's round dissonance energy is the unweighted mean
+
+$$
+\mathcal E_t
+=\operatorname{clamp}\left(
+\frac{C_t+R_t+F_t+E_t+N_t+I_t+L_t}{7}
+\right).
+$$
+
+$D_t$, $O_t$, $P_t$, and $\kappa_t$ do not enter this mean. The term “energy”
+denotes a dimensionless model quantity; it is not measured in joules and does
+not establish a physical-energy claim.
+
+With persistence $\alpha=0.85$ and maximum resolution rate
+$\delta_{\max}=0.30$ by default:
+
+$$
+g_t=\delta_{\max}\max(0,1-\mathcal E_t),
+$$
+
+$$
+\delta_t=\min(\delta_{\max},g_t),
+$$
+
+$$
+\kappa_t=\operatorname{clamp}\left(
+\alpha\kappa_{t-1}+\mathcal E_t-\delta_t
+\right),\qquad \kappa_0=0.
+$$
+
+Because $\mathcal E_t\in[0,1]$, the current implementation has
+$\delta_t=g_t$. The public `energy_step` returns $(\mathcal E_t,\kappa_t)$;
+the accepted legacy `prev_energy` argument is ignored.
+
+## 5. Auxiliary risk proxies
+
+These are implemented functions but are not all invoked by the default
+round-vector path.
+
+### Broken return
+
+$$
+R_{\mathrm{broken}}(A,B,C)=\operatorname{clamp}\left(
+0.55\operatorname{cos}(A,B)+0.45(1-J(V(C),V(B)))
+\right).
+$$
+
+### Escalation or shutdown risk
+
+For refusal density $\rho_R$ and hedge density $\rho_H$, both measured per
+1,000 characters:
+
+$$
+R_{\mathrm{esc}}=\operatorname{clamp}\left(
+0.45R_{\mathrm{broken}}+0.35\frac{\rho_R}{5}
++0.20\frac{\rho_H}{5}
+\right).
+$$
+
+### Stagnation
+
+For caller-supplied gain $G\in[0,1]$:
+
+$$
+R_{\mathrm{stag}}=\operatorname{clamp}\left(
+0.45\frac{\rho_R}{5}
++0.35(1-\operatorname{Nov}(B\mid A))
++0.20(1-G)
+\right).
+$$
+
+### Fixation and loop
+
+$R_{\mathrm{fix}}$ is exactly the $F_t$ equation in section 3.
+$R_{\mathrm{loop}}$ is the loop equation used by $E_t$.
+
+These values are bounded behavioral proxies. Their names do not establish
+diagnosis, intention, morality, consciousness, or external truth.
+
+## 6. Agent-facing projections
+
+The implemented Layer-3 vector is
+
+$$
+A_t=(CM_t,DA_t,DRIFT_t,DVG_t,INT_t,TBF_t)\in[0,1]^6.
+$$
+
+The exact linear projections are
+
+$$
+CM_t=\operatorname{clamp}(0.50C_t+0.50I_t),
+$$
+
+$$
+DA_t=\operatorname{clamp}(0.40\kappa_t+0.40E_t+0.20R_t),
+$$
+
+$$
+DRIFT_t=\operatorname{clamp}(0.50L_t+0.50(1-P_t)),
+$$
+
+$$
+DVG_t=\operatorname{clamp}(0.50D_t+0.50N_t),
+$$
+
+$$
+INT_t=\operatorname{clamp}(0.50E_t+0.50F_t).
+$$
+
+### Turn-balance Gini
+
+Let $x_1\le\cdots\le x_n$ be total token counts by speaker in the round and
+$S=\sum_i x_i$. For $n\le1$ or $S=0$, $TBF_t=0$. Otherwise:
+
+$$
+G=\frac{2\sum_{i=1}^{n}ix_i}{nS}-\frac{n+1}{n},
+$$
+
+$$
+TBF_t=\operatorname{clamp}\left(\frac{G}{(n-1)/n}\right).
+$$
+
+Higher $TBF$ means greater token-share imbalance. “Fairness” here names this
+specific distributional proxy; it does not measure social or substantive
+fairness.
+
+## 7. Alerts and risk crosswalk
+
+Alerts fire only when the metric is strictly greater than its threshold:
+
+| Alert | Metric | Threshold |
+|---|---:|---:|
+| `ALERT_CM_HIGH` | $CM$ | 0.70 |
+| `ALERT_DA_RISING` | $DA$ | 0.60 |
+| `ALERT_DRIFT` | $DRIFT$ | 0.50 |
+| `ALERT_DVG_HIGH` | $DVG$ | 0.60 |
+| `ALERT_INT_HIGH` | $INT$ | 0.70 |
+| `ALERT_TBF_SKEW` | $TBF$ | 0.40 |
+
+The implemented nonnumeric crosswalk is:
+
+| Risk | Associated alerts |
+|---|---|
+| $R_{\mathrm{fix}}$ | `ALERT_INT_HIGH`, `ALERT_DRIFT` |
+| $R_{\mathrm{esc}}$ | `ALERT_DA_RISING`, `ALERT_CM_HIGH` |
+| $R_{\mathrm{stag}}$ | `ALERT_DRIFT`, `ALERT_DA_RISING` |
+| $R_{\mathrm{loop}}$ | `ALERT_INT_HIGH` |
+
+Thresholds and crosswalks are version-1 candidate policy, not empirically
+selected universal constants.
+
+## 8. Matrix identity and present duplication
+
+`edcm/measurement/metrics/matrix.py` declares `MATRIX_VERSION = "1.0"`, the
+Layer-0-to-Layer-1 weight dictionary, projections, thresholds, and crosswalk.
+The runtime formulas for the Layer-1 metrics remain hardcoded in
+`compute.py`; the matrix itself states that it is documentation-shaped rather
+than the runtime source of those calculations. This document therefore records
+the executed `compute.py` equations above and treats the matrix as a
+versioned intended mirror.
+
+For any matrix dictionary $Q$, `freeze(Q)` computes
+
+$$
+\operatorname{id}(Q)=
+\operatorname{SHA256}(\operatorname{canonicalJSON}(Q))[0:16],
+$$
+
+then attaches that hexadecimal prefix as `_sha256`. `diff` reports every
+changed `(metric, primitive)` coefficient pair.
+
+hmmm: the declared matrix and the executed Layer-1 equations still have two
+maintenance locations. Making the matrix the runtime source requires a
+separate versioned migration and equivalence tests.
+
+## 9. Signed-ternary EDCM construction
+
+An enabled metric axis is
+
+$$
+X=(s,m),\qquad s\in\{-1,0,+1\},\quad m\in[0,1].
+$$
+
+Typed absence is
+
+$$
+X=NA\iff enabled=false\land s=null\land m=null.
+$$
+
+Therefore
+
+$$
+NA\ne(0,0).
+$$
+
+The implemented grains are token, turn, round, session, and archive.
+
+### Constraint field
+
+Let a `ConstraintField` contain raised-field count $r\ge0$, contact direction
+$c$, contact magnitude $m_c$, resolution state $z$, and resolution magnitude
+$m_z$. Presence is
+
+$$
+present\iff r>0.
+$$
+
+If $r=0$, contact, resolution, $R$, $D$, $I$, and resistance-$L$ readouts are
+all `NA`.
+
+Contact direction is mapped as
+
+$$
+toward\mapsto+1,\qquad against\mapsto-1,\qquad away\mapsto0.
+$$
+
+Resolution is mapped as
+
+$$
+closed\mapsto+1,\qquad open\mapsto-1,\qquad unresolved\mapsto0.
+$$
+
+For a present field, the behavioral readout signs are:
+
+| Contact | $R$ refusal/resistance | $D$ deflection/return | $L_{resistance}$ |
+|---|---:|---:|---:|
+| `against` | +1 | 0 | +1 |
+| `toward` | -1 | -1 | -1 |
+| `away` | 0 | +1 | 0 |
+| omitted | 0 | 0 | 0 |
+
+Each receives magnitude $\operatorname{clamp}(m_c)$. The $I$ readout uses the
+resolution sign and magnitude $\operatorname{clamp}(m_z)$.
+
+### Field motion
+
+For axis reads $q_1,\ldots,q_n$, let
+
+$$
+\bar q=\frac1n\sum_i q_i.
+$$
+
+A present `FieldMotion` emits
+
+$$
+s=\operatorname{sign}(\bar q),\qquad
+m=\min(1,|\bar q|).
+$$
+
+An empty read list on a present motion emits $(0,0)$; an absent motion emits
+`NA`. The three right-angle readouts are:
+
+- recurrence reads $\rightarrow F$ fixation/release;
+- intensity reads $\rightarrow E$ escalation/de-escalation;
+- scope reads $\rightarrow O_{scope}$ expansion/contraction.
+
+All three share the same ordered transition parent
+`previous_field_hash->current_field_hash` while preserving distinct metric
+identities. The field and transition hashes are deterministic content
+identifiers, not formal UCNS objects or signed authentication.
+
+The exact `ConstraintField` content identity is the first 16 hexadecimal
+characters of SHA-256 over the UTF-8 pipe-joined sequence
+
+$$
+(schema\_id,grain,raised\_field\_count,contact,contact\_magnitude,
+resolution,resolution\_magnitude,witness).
+$$
+
+The field reader retains `previous_field_hash->current_field_hash` and appends
+`#` plus the first 16 hexadecimal characters of SHA-256 over Python `repr` of
+the motion-presence flag and the three exact read tuples. This is a
+runtime-language identity contract, not a portable canonical-JSON signature.
+
+The axis registry also names $C,R,D,I,F,E,O_{scope},O_{confidence},L_{load},
+L_{loss},L_{resistance},N,P,\kappa$ and the six projections. Registration does
+not make an axis canonical.
+
+## 10. Implemented v0.3.1 architecture layer
+
+`edcm/edcmucns/` implements the v0.3.1 identity and composition architecture.
+Its source docstrings preserve the historical label “ratified as architecture
+(frozen design canon).” Under the repository-wide status authority in
+`CANON.md`, that label is scoped to this implemented architecture: it is not a
+joint UCNS–EDCM canon selection, formal UCNS geometry, or empirical
+measurement validation.
+
+The architecture declares the measurement dependency
+
+$$
+M_{EDCM}=\operatorname{readout}
+\left(G_{carrier},\Pi_{provenance},payloads,field\_state,policy\_manifest\right).
+$$
+
+`G_carrier` here is the EDCM-local `Window` construction described below. The
+implementation does not construct or validate the six-field formal UCNS
+object reproduced by the earlier design handoff.
+
+### Manifest and family gauge
+
+The exact v0.3.1 family-to-prime gauge is
+
+$$
+P\mapsto3,\qquad K\mapsto5,\qquad Q\mapsto7,\qquad
+T\mapsto13,\qquad S\mapsto29.
+$$
+
+`PolicyManifest` requires this exact gauge and the residue-rule identity
+`non_origin_residue_v031`. Its canonical JSON contains the gauge and seven
+policy-version fields. The manifest identity is
+
+$$
+h_{manifest}=\operatorname{SHA256}(\operatorname{UTF8}(J_{manifest})).
+$$
+
+The polarity, bone-emission, payload-governance, lens-readout, and
+training-update version strings are architecture identifiers. The contact
+predicate remains explicitly `v031-frontier-unimplemented`; the strings do
+not establish that the named empirical policies are validated.
+
+The ordered readout-bearing witness fields are `family`, `ordinal_m_f`,
+`residue_r_f`, `turn_id`, `speaker_or_source`, `surface_form`, `role`,
+`constraint_governance`, and `payload_attachment`. A witness hash is SHA-256
+over their sorted-key compact JSON object; an ordered bundle hash is SHA-256
+over the compact JSON array of those objects. Decorative witness fields never
+enter either identity. The bundle order is chronological and readout-bearing.
+
+### Non-origin residue and anchors
+
+For one-based ordinal $m\ge1$ and family prime $p\ge2$:
+
+$$
+r(m,p)=1+((m-1)\bmod(p-1)),
+$$
+
+$$
+\theta_{bone}(m,p)=\frac{r(m,p)}{p}
+$$
+
+as an exact fraction of a turn in $[0,1)$. Bone residues therefore cycle
+through $1,\ldots,p-1$ and never land at the origin. An origin anchor has
+
+$$
+\theta=0,\qquad face=0,\qquad lattice\_n=1,
+$$
+
+and carries no family, ordinal, or residue metadata. Bone faces are exactly
+$-1$ or $+1$.
+
+An explicitly caller-constructed cadence fixture uses
+
+$$
+\theta_{cadence}(m,n)=\frac{m\bmod n}{n}.
+$$
+
+Cadence admission from transcript text is not implemented. The source also
+retains an exact `hmmm`: when $m\bmod n=0$, the cadence helper returns the
+datum angle even though non-origin `Anchor` validation rejects that collision.
+
+### Mass, carriers, shares, and field load
+
+For a window $W$ with host anchors $A(W)$, bone anchors $B(W)$, cadence
+anchors $C(W)$, and payloads $P(W)$:
+
+$$
+L_{geo}(W)=|A(W)|,
+\qquad
+L_{op}(W)=|B(W)|.
+$$
+
+The implemented carrier functions are least common multiples over their
+declared scopes, with the empty least common multiple equal to one:
+
+$$
+n_{host}(W)=\operatorname{lcm}\{a.lattice\_n:a\in A(W)\},
+$$
+
+$$
+n_{family}(W)=\operatorname{lcm}\{a.lattice\_n:a\in B(W)\},
+$$
+
+$$
+n_{cadence}(W)=\operatorname{lcm}\{a.lattice\_n:a\in C(W)\},
+$$
+
+$$
+n_{payload}(W)=\operatorname{lcm}\{p.reduced\_carrier:p\in P(W)\}.
+$$
+
+Only $n_{family}$ carries the architecture's active-family factor claim.
+Payload carriers do not automatically enter $n_{host}$.
+
+For family $f$, the operator share is
+
+$$
+share_f(W)=
+\begin{cases}
+\text{absent from the returned map},&L_{op}(W)=0,\\
+\dfrac{|\{a\in B(W):a.family=f\}|}{L_{op}(W)},&L_{op}(W)>0.
+\end{cases}
+$$
+
+Shares after chronological append are derived from summed counts, never by
+averaging the two input share maps.
+
+Field load remains separate from both masses:
+
+$$
+\lambda_{field}(W)=
+\begin{cases}
+NA,&TOK(W)\le0,\\
+\dfrac{raised\_field\_count(W)}{TOK(W)},&TOK(W)>0.
+\end{cases}
+$$
+
+The Python value for this typed absence is `None`, not numeric zero.
+
+### Turn and payload absence
+
+The implemented turn sum type is
+
+$$
+OperatorTurn=Present(Window)\mid AbsentOperatorGeometry(ContentLensEvent).
+$$
+
+A no-bone turn emits `AbsentOperatorGeometry`. Its operator-presence readout
+is `NA`; a present turn emits $(+1,1)$. A no-bone turn is neither the geometric
+unit nor numeric zero and remains available to the content layer.
+
+For payload $p$:
+
+$$
+p.reduced\_carrier=
+\begin{cases}
+1,&p.status=closed,\\
+p.carrier\_n,&p.status=open.
+\end{cases}
+$$
+
+Its content identity is SHA-256 over the exact UTF-8 string
+
+$$
+payload\_id\;|\;carrier\_n\;|\;status\;|\;tension\;|\;content.
+$$
+
+This delimiter-based identity is the implemented contract; it is not silently
+re-described as canonical JSON.
+
+The architecture-only kappa ledger is
+
+$$
+\kappa_{balance}(W)=
+\sum_{p\in P(W):p.status\ne closed}p.tension.
+$$
+
+A nonzero balance emits a `kappa_leak` diagnostic. This placeholder is not the
+maintained baseline circuit recurrence in section 4 and makes no empirical
+stored-tension claim.
+
+### Chronological append and reserved interaction product
+
+For windows sealed under the same manifest, `SeqAppend` is exact tuple
+concatenation of anchors, witnesses, payloads, and field-chain entries, with
+token and raised-field counts added:
+
+$$
+L(A\boxplus B)=L(A)+L(B),
+\qquad
+F(A\boxplus B)=F(A)\mathbin{\|}F(B).
+$$
+
+Appending windows with different manifest hashes raises `EpochBreakError`.
+The reserved interaction product returns a non-window signature with
+
+$$
+L(A\boxtimes B)=L(A)L(B).
+$$
+
+The current implementation does not implement the earlier handoff's payload
+product, XOR face product, mirror construction, or external zero/unit algebra.
+Those equations therefore must not be reconstructed by a publication
+consumer as current EDCM implementation.
+
+### Exact implemented equivalence
+
+The local carrier-equivalence predicate is
+
+$$
+A\equiv_{carrier}B
+\iff
+n_{host}(A)=n_{host}(B)
+\land
+sort\{(\theta_a,face_a):a\in A\}
+=sort\{(\theta_b,face_b):b\in B\}.
+$$
+
+It ignores witnesses, payloads, and manifest identity. It compares sorted
+angle-face pairs rather than chronological anchor order. Chronological
+testimony order remains readout-bearing in the ordered witness-bundle hash.
+The module preserves this split as `hmmm`; a website must not silently replace
+it with a stronger ordered UCNS equivalence claim.
+
+EDCM measurement equivalence first requires carrier equivalence and equal
+manifest hashes. It then applies one closed readout scope:
+
+| Scope | Additional exact comparison |
+|---|---|
+| `operator_scope` | ordered readout-bearing witness-bundle hash |
+| `payload_scope` | sorted `(content_hash, reduced_carrier)` tuples |
+| `cadence_scope` | cadence carrier plus ordered cadence `(lattice_n, ordinal, theta)` tuples |
+| `field_scope` | exact field-chain tuple |
+| `bridge_scope` | no additional identity comparison; validator diagnostics remain observational |
+
+The `bridge_scope` diagnostic vocabulary remains unresolved and growing. No
+runtime scope-registration surface exists; extending the registry requires a
+manifest revision and epoch break.
+
+### Validation, polarity, and epochs
+
+`witness_geometry_consistent` checks origin constraints, nonzero bone phases,
+one-to-one bone/witness pairing, exact gauge and residue agreement, stable NFC
+canonicalization of turn/source ids, and existing payload targets. A mismatch
+emits a Bridge diagnostic rather than an alternate reading.
+
+`gauge_audit` considers bone faces only. No differences passes; a difference
+at every paired face is reported as `gauge_mismatch`; a partial difference or
+different face-sequence length is `measurement_divergence`. This is a
+diagnostic classification, not proof of empirical equivalence.
+
+The window identity used in epoch chains hashes, in order:
+
+- serialized anchor role, family, lattice, ordinal, angle, and face values;
+- the ordered witness-bundle hash;
+- sorted payload content hashes;
+- the exact field-chain tuple; and
+- the manifest hash.
+
+The five components are pipe-joined before SHA-256. Anchor records are
+semicolon-joined; payload content hashes are sorted then comma-joined; field
+chain entries retain their exact order. These identities detect implementation
+drift but do not authenticate a producer.
+
+A manifest rotation seals the old segment and records old manifest, new
+manifest, and optional boundary-window identities before opening the new
+segment. Cross-epoch comparison emits `cross_epoch_lens`; it is not a raw
+delta. Adoption of `non_origin_residue_v031` is itself recorded as an epoch
+break.
+
+### v0.3.1 unresolved boundary
+
+The following remain non-operational `NotImplementedError` surfaces with
+named falsifiers: contact convergence, residual-primality / $DA_{geom}$
+correlation, and cadence admission from transcript text. Corpus parallel-run
+conclusions and operating-state empirical validity also remain frontier.
+
+Additional source-level `hmmm` boundaries remain visible:
+
+- `constraint_governance` is an opaque readout-bearing string;
+- the cadence origin collision described above is unresolved;
+- `bridge_scope` compares manifest/carrier identity while its diagnostic
+  vocabulary is still growing;
+- the kappa ledger reads open-payload tension only;
+- bone emission from raw text is outside this encoder and is identified only
+  by the manifest's upstream emission-policy version; and
+- v0.3.1 carrier equivalence sorts angle-face pairs while witness identity
+  retains chronology.
+
+## 11. Controlled goal-vector candidate
+
+For a declared goal with $d$ components, each available component state is
+`toward` $(+1,1)$ or `away` $(-1,1)$. An unavailable component is `NA`; a turn
+that makes no claim about a component is `no-claim`. Both unavailable states
+carry null sign and magnitude rather than numeric zero.
+
+Let $T_t$, $A_t$, and $U_t$ be the counts of toward, away, and `NA` component
+states after turn $t$, so $T_t+A_t+U_t=d$. The declared-loss scalar projection
+is
+
+$$
+q_t=\frac{T_t-A_t}{d},\qquad q_0=0.
+$$
+
+The complete component state remains authority-bearing evidence. $q_t$ is not
+sufficient to reconstruct which components produced the value.
+
+Motion is
+
+$$
+\Delta q_t=q_t-q_{t-1}.
+$$
+
+For a sequence $z_1,\ldots,z_n$, the candidate uses population variance
+
+$$
+\operatorname{Var}(z)=\frac1n\sum_{i=1}^{n}(z_i-\bar z)^2,
+\qquad
+\bar z=\frac1n\sum_{i=1}^{n}z_i.
+$$
+
+Thus
+
+$$
+V_{motion}=\operatorname{Var}(\Delta q_1,\ldots,\Delta q_n),
+$$
+
+$$
+V_{trajectory}=\operatorname{Var}(q_1,\ldots,q_n).
+$$
+
+A terminal state is `candidate-complete` exactly when all $d$ components are
+toward and the contradiction ledger has no active entry. Formal completion
+remains `NA`.
+
+Contradiction status is procedural over declared fixture claims:
+
+- a claim opposing the prior component sign creates a contradiction;
+- it is `resolved` only when that opposing claim is explicitly declared a
+  revision;
+- otherwise it remains `active`;
+- no claim about dishonesty, intention, diagnosis, morality, consciousness,
+  or external truth follows.
+
+The sealed v0.1.0 fixture produced:
+
+| Case | $q_n$ | $V_{motion}$ | $V_{trajectory}$ | Active contradictions |
+|---|---:|---:|---:|---:|
+| contradiction resolved | $1$ | $1/8$ | $5/32$ | 0 |
+| contradiction active after reordering | $1/2$ | $9/64$ | $11/256$ | 1 |
+
+This is controlled candidate-measured evidence: eight supported findings, zero
+falsified findings, and no canon selection.
+
+## 12. Initial joint experiment candidate
+
+The historical v0.1 experiment also retains a transparent, noncanonical
+sequence candidate. For each turn $i$, phrase-hit signals
+$c_i,r_i,z_i\in[0,1]$ represent constraint, refusal, and resolution; $p_i=1$
+when the normalized turn has appeared earlier in the same case and $0$
+otherwise.
+
+$$
+pressure_i=0.35c_i+0.35r_i+0.20p_i,
+$$
+
+$$
+release_i=0.55z_i,
+$$
+
+$$
+\tau_i=\operatorname{clamp}(0.72\tau_{i-1}+pressure_i-release_i),
+\qquad \tau_0=0.
+$$
+
+The reported constraint, refusal, resolution, and repetition pressures are
+their arithmetic means over turns. Final tension is $\tau_n$.
+
+Three support assignments were tested:
+
+$$
+\mu_{unit}=1,
+$$
+
+$$
+\mu_{token}=\max(1,\operatorname{tokenCount}),
+$$
+
+$$
+\mu_{pressure}=1+c_i+r_i+z_i+p_i.
+$$
+
+The experiment exposes all three UCNS product-character candidates
+(`cell-support-geometric-mean`, `cell-support-maximum`,
+`cell-support-minimum`) and all three faithful-breadth candidates
+(`cell-log-support`, `cell-detail`, `retained-presence`) under each support
+assignment. Their definitions and authority belong to the experiment-pinned
+UCNS producer; EDCM records their readouts and comparisons without adopting a
+winner.
+
+Ordered-sequence, unordered-multiset, and set projections are compared. A
+projection is incompatible for a named EDCM readout only when it declares two
+cases equivalent while that readout materially differs under the declared
+comparison policy. This is scoped falsification, not universal rejection.
+
+### v0.2 occurrence, coverage, and latency candidate
+
+Unlike v0.1, v0.2 does not clamp phrase occurrences to one. For turn $i$, let
+$c_i$ be total constraint-phrase occurrences, $f_i$ the number of distinct
+constraint phrase families hit, $r_i$ refusal occurrences, $z_i$ resolution
+occurrences, and $p_i$ the repeated-turn indicator.
+
+$$
+pressure_i=0.30c_i+0.55r_i+0.20p_i,
+$$
+
+$$
+release_i=0.65z_i,
+$$
+
+$$
+\tau_i=\max(0,0.78\tau_{i-1}+pressure_i-release_i),
+\qquad \tau_0=0.
+$$
+
+The candidate records occurrence totals, family-hit totals, refusal rate,
+terminal tension, peak tension, and tension area
+
+$$
+Area=\sum_{i=1}^{n}\tau_i.
+$$
+
+If first pressure occurs at zero-based event index $j$ and the first resolution
+observed once pressure has occurred is at $k$, resolution latency is $k-j$.
+It is `-1` when either event
+is absent. If pressure occurs but resolution does not, the comparison horizon
+is $n+1$ rather than `-1`.
+
+Its support assignments are
+
+$$
+\mu_{unit}=1,
+\qquad
+\mu_{token}=\max(1,\operatorname{tokenCount}),
+$$
+
+$$
+\mu_{occurrence}=1+c_i+r_i+z_i+p_i,
+$$
+
+$$
+\mu_{dissonance}=1+c_i+r_i+p_i.
+$$
+
+### v0.3 assertion and local-scope candidate
+
+v0.3 emits an ordered event sequence from nonoverlapping phrase spans.
+Each event retains kind, family, speaker, source position, polarity, quotation,
+hypothetical, conditional, attribution, retraction, ownership, and active
+flags. The implemented active predicate for a mention is
+
+$$
+active=\neg negated\land\neg quoted\land\neg hypothetical\land\neg retracted.
+$$
+
+Attribution and conditionality remain separately counted; they do not by
+themselves make the event inactive. An owned refusal additionally requires a
+refusal event, first-person `I` evidence, and neither quotation nor attribution.
+
+Let $a_i$ be active pressure after event $i$. An active constraint or refusal
+increments pressure by one; a repair event resets it to zero:
+
+$$
+a_i=
+\begin{cases}
+0,&event_i=repair,\\
+a_{i-1}+1,&event_i\text{ is an active constraint or refusal},\\
+a_{i-1},&\text{otherwise}.
+\end{cases}
+$$
+
+The candidate reports $a_n$, $\max_i a_i$, $\sum_i a_i$, exact event counts,
+and the index distance from first active pressure to first later repair, or
+`-1` if either is absent.
+
+For event complexity
+
+$$
+k_i=\mathbf1[negated]+\mathbf1[quoted]+\mathbf1[hypothetical]
++\mathbf1[conditional]+\mathbf1[attributed]+\mathbf1[retracted],
+$$
+
+the support policies are
+
+$$
+\mu_{mention}=1,
+$$
+
+$$
+\mu_{scope}=1+k_i,
+$$
+
+$$
+\mu_{active}=1+2\mathbf1[event_i\text{ is an active constraint or refusal}].
+$$
+
+These are deterministic synthetic-scope rules, not a general semantic parser.
+
+### v0.4 discourse-graph candidate
+
+v0.4 is a finite, bounded graph-state experiment. A case contains ordered
+discourse nodes, positive reference expressions, and declared relations.
+Candidate resolvers select targets by explicit label or ordinal, nearest
+compatible prior node, nearest same-speaker prior node, all compatible family
+nodes, or every ambiguity-preserving singleton alternative. Only nodes earlier
+than the reference are eligible. Ambiguity expansion is capped at 32 generated
+interpretations and then deduplicated by exact interpretation digest.
+
+The node-state transition is
+
+$$
+\operatorname{transition}(s,r)=
+\begin{cases}
+retracted,&r\in\{retracts,repairs\},\\
+suspended,&r=suspends,\\
+active,&r\in\{resumes,activates\},\\
+inactive\_condition,&r=deactivates,\\
+s,&\text{otherwise}.
+\end{cases}
+$$
+
+A `contradicts` edge increments the target's contradiction count without
+changing its state. A reference with no selected target remains positive
+unresolved-reference evidence.
+
+Across admissible interpretations, the readout reports the number of
+alternatives, number of distinct state signatures minus one, minima and maxima
+of active/suspended/retracted/contradiction/unresolved/edge counts, declared
+target hits and misses, per-node active/retracted bounds, and per-speaker active
+bounds. Minima encode what holds across every retained interpretation; maxima
+encode what occurs in at least one retained interpretation.
+
+Graph support is:
+
+$$
+\mu_{node-reference}=\mu_{node-edge}=1
+$$
+
+for nodes, while `state-detail` uses
+
+$$
+\mu_{node,state}=1+\mathbf1[active]+\mathbf1[contradictions>0],
+$$
+
+$$
+\mu_{reference,state}=1+\mathbf1[unresolved].
+$$
+
+Each retained graph or quote edge has support one under `node-edge` and
+`state-detail`. Exact ordered labeled, labeled multigraph, unlabeled
+multigraph, flat node multiset, and active-state summary views explicitly list
+their information losses.
+
+The v0.2–v0.4 complete executable definitions and sealed results remain
+versioned in `edcm/ucns_edcm_experiments_v2.py` through
+`edcm/ucns_edcm_experiments_v4.py` and `experiments/results/`. None replaces
+the maintained baseline equations or selects joint canon.
+
+## 13. Exact UCNS observation boundary
+
+The current profile supplies exact ordered word-gonol observations with one
+unit of support per speaker turn. It retains exact Unicode source values,
+carrier assignments, SPACE boundaries, multiplicity, and turn order.
+
+It does not currently supply an EDCM equation for:
+
+- formal Möbius coordinates;
+- word-to-turn-to-dialogue higher-gonol composition;
+- lawful scalar projection into EDCM axes;
+- formal completion;
+- measurement validity.
+
+Those quantities are `NA`, not zero. A UCNS observation digest establishes
+deterministic content identity under its schema; it is not signed producer
+authentication and transfers no theorem or proof status into EDCM.
+
+## 14. Identity and reproducibility mathematics
+
+EDCM evidence records use canonical JSON bytes
+
+$$
+J(x)=\operatorname{UTF8}(\operatorname{JSON}(x;
+sort\_keys=true,separators=(\texttt{,},\texttt{:}),ensure\_ascii=false)).
+$$
+
+Content identity is
+
+$$
+d(x)=\operatorname{SHA256}(J(x)).
+$$
+
+For a self-digesting report, `report_digest` is removed before computing
+$d(x)$ and then attached to the report. The immutable evidence file also has a
+SHA-256 over its exact serialized bytes. These identities detect drift; they
+do not prove truth, authorship, or empirical validity.
+
+For `edcm.shared-stack-result/1.2.0`, `epoch_identity` is $d(x)$ over the
+METAPAT canon/provenance digests, UCNS profile identity/scope/source/options,
+EDCM manifest hash, and selected semantic-authority, UCNS-profile, and
+measurement implementations. `result_identity` is $d(x)$ over that epoch
+identity plus source evidence, the complete UCNS profile observation, EDCM
+readouts, factorization evidence, and status evidence. Geometry absence remains
+a typed compartment and does not become a fabricated geometry identity.
+
+## 15. What is not yet mathematics
+
+The following are deliberately not filled with convenient equations:
+
+- an empirically calibrated mapping from language to every EDCM axis;
+- a validated threshold or coefficient selection procedure;
+- a canonical global objective or optimization function;
+- a numeric `hmmm` penalty or hidden uncertainty scalar;
+- METAPAT semantic labels converted directly into measured values;
+- formal UCNS geometry or completion inferred from observation identity;
+- real-dialogue goal authority inferred by the model;
+- physical-energy units or conservation claims;
+- diagnosis, intention, morality, consciousness, or external truth.
+
+`hmmm` is a boundary object carrying unresolved constraints and provenance. It
+is not silently mapped to zero, averaged away, or inserted as an unvalidated
+term in an objective function.
+
+## Usage guidance
+
+For the maintained baseline:
+
+```bash
+python -m edcm.integrity
+python -m pytest -q
+```
+
+For the controlled goal-vector candidate:
+
+```bash
+python -m edcm.goal_vector_experiment \
+  --ucns-source-root /path/to/ucns-at-a98c9e6c69804a8a08d0786b1d8b450bb2c49a97 \
+  --output /tmp/goal-vector.json
+```
+
+When changing any equation, coefficient, threshold, state domain, tokenizer,
+marker source, round boundary, or projection:
+
+1. change the owning source and its tests;
+2. update this reference in the same change;
+3. version any changed candidate or evidence schema;
+4. preserve old sealed reports unchanged;
+5. rerun integrity, metadata, complete tests, build, and wheel checks;
+6. record falsified and unresolved consequences rather than rewriting them.
+
+A textbook or website copy must cite the EDCM repository path and exact commit
+from which it was copied and must label itself non-authoritative.
+
+## hmmm
+
+The maintained baseline now has one complete mathematical reference, but its
+coefficients remain candidate policy and the Layer-1 matrix still duplicates
+runtime equations. Independent semantic annotation, calibrated outcome data,
+formal higher-gonol composition, signed producer records, external holdout
+custody, and the first joint canon decision remain unresolved.
diff --git a/src/artifacts/edcm-mathematics.njk b/src/artifacts/edcm-mathematics.njk
index fa0225a..e6703cd 100644
--- a/src/artifacts/edcm-mathematics.njk
+++ b/src/artifacts/edcm-mathematics.njk
@@ -1,61 +1,39 @@
 ---
 layout: layouts/base.njk
-title: "EDCM mathematics: recovered architecture record"
-description: A source-attributed public artifact preserving the recovered EDCM–UCNS v0.3.1 mathematical architecture and its non-transfer boundaries.
+title: "EDCM mathematical reference"
+description: An exact commit-pinned, non-authoritative reproduction of the EDCM mathematical reference.
 permalink: /artifacts/edcm-mathematics/
 ---
 
-
-

Recovered mathematical record · conversation-derived

-

{{ edcm_mathematics.title }}

-
- ratified architecture v0.3.1 - empirical frontier - not a measurement result -
-

A public, inspectable rendering of the EDCM mathematics recovered from the “EDCM UCNS SITREP” thread and checked against the immutable EDCM implementation handoff.

- -
-

Source and status boundary

-

The conversation associated edcmucns.md with a ratified and frozen v0.3.1 architecture. Empirical measurement remained frontier, and implementation remained gated on tests plus the closed readout_scope registry.

-

The website publishes this record; it does not become the source of EDCM mathematics, current UCNS canon, a theorem proof, a result record, or evidence of a running system.

-

The recovered mathematical record is bracketed with | below because it is generated from prior conversational context. Editorial orientation remains outside those bars.

+ + +
+{{ edcm_mathematics.reference_markdown | edcmMarkdown | safe }} +
+ +
+

Source identity and drift boundary

-
Conversation
{{ edcm_mathematics.source.conversation_title }}
-
Conversation identity
{{ edcm_mathematics.source.immutable_transcript_export }} — no immutable transcript export was present in the recovered index
-
Public cross-check
{{ edcm_mathematics.source.public_corroborating_source.repository }}:{{ edcm_mathematics.source.public_corroborating_source.path }}
-
Commit
{{ edcm_mathematics.source.public_corroborating_source.commit }}
-
Blob
{{ edcm_mathematics.source.public_corroborating_source.blob }}
-
License
{{ edcm_mathematics.source.public_corroborating_source.license }}
-
Work graph
{{ edcm_mathematics.work_graph.work_graph_sha256 }}
+
Repository
{{ edcm_mathematics.source.repository }}
+
Path
{{ edcm_mathematics.source.path }}
+
Commit
{{ edcm_mathematics.source.commit }}
+
Git blob
{{ edcm_mathematics.source.blob }}
+
SHA-256
{{ edcm_mathematics.source.sha256 }}
+
License
{{ edcm_mathematics.source.license }}
-

Open the exact EDCM handoff

+

Open the exact EDCM reference

-
-

Plain orientation · editorial companion

-

What the architecture is saying

-
-

Geometry is the carrier

UCNS supplies an ordered geometric object. EDCM does not treat that object alone as a measurement.

-

Provenance is an input

Who or what produced an occurrence, its order, payload, field state, and governing manifest can change the readout even when geometry is unchanged.

-

Absence stays absent

A turn with no operator geometry yields NA, not zero. Missing measurement cannot be made numerically convenient without changing the claim.

-
-
- -

|

-
-{{ edcm_mathematics.record_markdown | markdown | safe }} -
-

|

-

Usage guidance

    -
  1. Cite this page when referring to the recovered v0.3.1 architecture and its status boundary.
  2. -
  3. Cite the exact EDCM handoff above when source identity matters.
  4. -
  5. For any measurement claim, cite a separate EDCM result record containing the actual input scope, manifest identity, computation, and output. This artifact is not that record.
  6. -
  7. Route corrections to The-Interdependency/edcm first; then update this publication consumer without transferring authority.
  8. +
  9. Cite the EDCM repository, path, and commit above when mathematical or status authority matters.
  10. +
  11. Correct equations, labels, provenance identities, and unresolved boundaries in The-Interdependency/edcm first.
  12. +
  13. Update this copy only by changing the pinned commit, Git blob, SHA-256, and reproduced bytes together, then run npm run check:edcm-reference.
diff --git a/src/artifacts/index.njk b/src/artifacts/index.njk index c5938f2..4812fd9 100644 --- a/src/artifacts/index.njk +++ b/src/artifacts/index.njk @@ -5,7 +5,7 @@ description: Public visual studies, interactive explainers, compact publications ---

Public artifacts

Things made to be used, tested, and shared

Artifacts inherit the site’s navigation, epistemic labels, accessibility floor, and fallback discipline while keeping the visual character required by their subject.

hmmm

Additional infographics, experiments, and compact publications will enter this index only after their source and status metadata are declared.

diff --git a/tests/edcm-mathematics.test.mjs b/tests/edcm-mathematics.test.mjs index 8e07c93..4063f69 100644 --- a/tests/edcm-mathematics.test.mjs +++ b/tests/edcm-mathematics.test.mjs @@ -1,89 +1,87 @@ -// Usage: run `node --test tests/edcm-mathematics.test.mjs`; these checks preserve source identity, epistemic boundaries, and mathematical contact without claiming the equations are true or empirically validated. +// Usage: run `node --test tests/edcm-mathematics.test.mjs`; these checks bind the publication copy to one exact EDCM commit/blob without claiming the source is true or empirically validated. import { createHash } from 'node:crypto'; +import { readFileSync } from 'node:fs'; import test from 'node:test'; import assert from 'node:assert/strict'; import loadEdcmMathematics from '../src/_data/edcm_mathematics.js'; const artifact = loadEdcmMathematics(); +const copiedBytes = readFileSync(new URL('../src/_data/edcm_mathematics_reference.md', import.meta.url)); -function canonicalJson(value) { - if (Array.isArray(value)) return `[${value.map(canonicalJson).join(',')}]`; - if (value && typeof value === 'object') { - return `{${Object.keys(value).sort().map(key => `${JSON.stringify(key)}:${canonicalJson(value[key])}`).join(',')}}`; - } - return JSON.stringify(value); +function gitBlobSha1(bytes) { + const header = Buffer.from(`blob ${bytes.length}\0`, 'utf8'); + return createHash('sha1').update(header).update(bytes).digest('hex'); } // === CHECKS === -// id: check_edcm_artifact_source_identity_visible -// proves: edcm_artifact_source_identity_visible -// call: self::checkSourceIdentityVisible +// id: check_edcm_reference_source_pin_visible +// proves: edcm_reference_source_pin_visible +// call: self::checkSourcePinVisible // requires: node // timeout: 10 // mutates: none // cleanup: none // -// id: check_edcm_artifact_status_does_not_transfer -// proves: edcm_artifact_status_does_not_transfer -// call: self::checkStatusDoesNotTransfer +// id: check_edcm_reference_bytes_reproduced +// proves: edcm_reference_bytes_reproduced +// call: self::checkReferenceBytesReproduced // requires: node // timeout: 10 // mutates: none // cleanup: none // -// id: check_edcm_artifact_math_contact_preserved -// proves: edcm_artifact_math_contact_preserved -// call: self::checkMathContactPreserved +// id: check_edcm_reference_status_does_not_transfer +// proves: edcm_reference_status_does_not_transfer +// call: self::checkStatusDoesNotTransfer // requires: node // timeout: 10 // mutates: none // cleanup: none // === END CHECKS === -export function checkSourceIdentityVisible() { - assert.equal(artifact.source.conversation_title, 'EDCM UCNS SITREP'); - assert.equal(artifact.source.immutable_transcript_export, 'hmmm'); - assert.equal(artifact.source.public_corroborating_source.repository, 'The-Interdependency/edcm'); - assert.equal(artifact.source.public_corroborating_source.path, 'docs/codex_edcmucns_v031_handoff.md'); - assert.equal(artifact.source.public_corroborating_source.commit, 'ee20db72dde75f602ccf590a64047117f6bca87d'); - assert.equal(artifact.source.public_corroborating_source.blob, '457758fecb257532757657db4f119a52f850f318'); - assert.equal(artifact.source.public_corroborating_source.license, 'MPL-2.0'); - - const { work_graph_sha256: digest, schema, version, ...identity } = artifact.work_graph; - assert.equal(schema, 'the-interdependency.stack-manifest'); - assert.equal(version, '1.0.0'); - assert.equal(createHash('sha256').update(canonicalJson(identity)).digest('hex'), digest); +export function checkSourcePinVisible() { + assert.equal(artifact.source.repository, 'The-Interdependency/edcm'); + assert.equal(artifact.source.path, 'docs/EDCM_MATHEMATICS.md'); + assert.equal(artifact.source.commit, '2f09f9af10ef950ce68c765bcbed7dca83625c65'); + assert.equal(artifact.source.blob, 'c2e059de15c4ef2c5fa9368c63363b606e503206'); + assert.equal(artifact.source.sha256, '889336c7c723d6e013188e1b3f969f98aeca88e3075b8ce2e67bc87e897e724f'); + assert.equal(artifact.source.license, 'MPL-2.0'); + assert.equal(artifact.source.url, `https://github.com/${artifact.source.repository}/blob/${artifact.source.commit}/${artifact.source.path}`); } -export function checkStatusDoesNotTransfer() { - assert.equal(artifact.classification.current_ucns_canon, false); - assert.equal(artifact.classification.theorem_or_proof, false); - assert.equal(artifact.classification.edcm_result, false); - assert.equal(artifact.classification.runtime_status, false); - assert.equal(artifact.work_graph.boundaries.authority_transfer, false); - assert.equal(artifact.work_graph.boundaries.proof_status_transfer, false); - assert.equal(artifact.work_graph.boundaries.measurement_status_transfer, false); - assert.match(artifact.record_markdown, /No EDCM measurement claim inherits proof status/); - assert.match(artifact.record_markdown, /No placeholder number, heuristic, language-model judgment/); +export function checkReferenceBytesReproduced() { + const sha256 = createHash('sha256').update(copiedBytes).digest('hex'); + const blob = gitBlobSha1(copiedBytes); + assert.equal(sha256, artifact.source.sha256); + assert.equal(blob, artifact.source.blob); + assert.equal(artifact.observed.sha256, artifact.source.sha256); + assert.equal(artifact.observed.blob, artifact.source.blob); + assert.equal(artifact.observed.utf8_bytes, copiedBytes.length); + assert.equal(artifact.reference_markdown, copiedBytes.toString('utf8')); + + for (const authoritativeContact of [ + 'Status: complete compiled reference', + '`CANON.md` governs epistemic status', + '## 3. Maintained baseline vector', + '## 10. Implemented v0.3.1 architecture layer', + '## 14. Identity and reproducibility mathematics', + '## 15. What is not yet mathematics', + '## hmmm' + ]) assert.ok(artifact.reference_markdown.includes(authoritativeContact), `missing exact EDCM contact: ${authoritativeContact}`); } -export function checkMathContactPreserved() { - for (const contact of [ - 'G =', - '4\\pi\\mathbb{Z}', - '\\boxtimes', - '\\operatorname{SeqAppend}', - 'r_f(m)=1+', - 'M_{\\mathrm{EDCM}}', - 'ucns_carrier_equivalent', - 'edcm_measurement_equivalent', - 'L_{\\mathrm{geo}}', - '\\lambda_{\\mathrm{field}}', - '\\mathrm{NA} \\ne 0', - 'seal current chain segment' - ]) assert.ok(artifact.record_markdown.includes(contact), `missing mathematical contact: ${contact}`); +export function checkStatusDoesNotTransfer() { + assert.equal(artifact.publication_role, 'commit-pinned reproduction'); + assert.equal(artifact.authority, 'The-Interdependency/edcm source modules and CANON.md'); + for (const [status, transfers] of Object.entries(artifact.status_transfer)) { + assert.equal(transfers, false, `${status} status must not transfer`); + } + assert.match(artifact.reference_markdown, /not a joint UCNS–EDCM canon selection/); + assert.match(artifact.reference_markdown, /not formal UCNS geometry/); + assert.match(artifact.reference_markdown, /Those quantities are `NA`, not zero/); + assert.doesNotMatch(artifact.reference_markdown, /Theta\^\\pm \in/); } -test('EDCM artifact preserves exact source identity', checkSourceIdentityVisible); -test('EDCM artifact prevents status transfer', checkStatusDoesNotTransfer); -test('EDCM artifact preserves mathematical contact', checkMathContactPreserved); +test('EDCM reference exposes its exact producer pin', checkSourcePinVisible); +test('EDCM reference bytes match the pinned SHA-256 and Git blob', checkReferenceBytesReproduced); +test('EDCM reference publication prevents status transfer', checkStatusDoesNotTransfer); diff --git a/tests/generated-site.test.mjs b/tests/generated-site.test.mjs index 40e4a45..790f43a 100644 --- a/tests/generated-site.test.mjs +++ b/tests/generated-site.test.mjs @@ -67,15 +67,17 @@ test('generated deployment artifact contains the unified routes', async () => { assert.match(chapters, /Chapters Zero through Seven/); assert.match(artifacts, /Artifacts/); assert.match(artifacts, /href="\/artifacts\/edcm-mathematics\/"/); - assert.match(edcmMathematics, /EDCM mathematics: recovered architecture record/); - assert.match(edcmMathematics, /ratified architecture v0\.3\.1/); - assert.match(edcmMathematics, /not a measurement result/); - assert.match(edcmMathematics, /ee20db72dde75f602ccf590a64047117f6bca87d/); - assert.match(edcmMathematics, /457758fecb257532757657db4f119a52f850f318/); - assert.match(edcmMathematics, /aria-label="Start of recovered conversational context">\|<\/p>/); - assert.match(edcmMathematics, /aria-label="End of recovered conversational context">\|<\/p>/); + assert.match(edcmMathematics, /EDCM mathematical reference/); + assert.match(edcmMathematics, /Commit-pinned reproduction/); + assert.match(edcmMathematics, /not a joint UCNS–EDCM canon selection/); + assert.match(edcmMathematics, /2f09f9af10ef950ce68c765bcbed7dca83625c65/); + assert.match(edcmMathematics, /c2e059de15c4ef2c5fa9368c63363b606e503206/); + assert.match(edcmMathematics, /889336c7c723d6e013188e1b3f969f98aeca88e3075b8ce2e67bc87e897e724f/); + assert.match(edcmMathematics, /Implemented v0\.3\.1 architecture layer/); assert.match(edcmMathematics, /]*display="block"/); + assert.match(edcmMathematics, /
/);
+  assert.match(edcmMathematics, /NA/);
   assert.match(edcmMathematics, /hmmm/);
   assert.match(fourCuts, /Wealth and tax/);
   assert.match(fallback, /Emergency static edition/);
diff --git a/tests/site.spec.mjs b/tests/site.spec.mjs
index 279e14e..fd95697 100644
--- a/tests/site.spec.mjs
+++ b/tests/site.spec.mjs
@@ -28,7 +28,7 @@ const routes = [
   ['/source/', /Source/],
   ['/projects/', /Projects/],
   ['/artifacts/', /Artifacts/],
-  ['/artifacts/edcm-mathematics/', /recovered architecture record/],
+  ['/artifacts/edcm-mathematics/', /EDCM mathematical reference/],
   ['/research/method/', /Legislation is not science/],
   ['/fallback/', /Emergency static edition/]
 ];
@@ -131,14 +131,16 @@ test('living narratives keep fiction and adulthood boundaries visible', async ({
 
 test('EDCM mathematics stays source-bound and renders without a runtime math dependency', async ({ page }) => {
   await page.goto('/artifacts/edcm-mathematics/');
-  await expect(page.locator('h1')).toHaveText('EDCM mathematics: recovered architecture record');
-  await expect(page.locator('.status-risk')).toHaveText('not a measurement result');
-  await expect(page.locator('body')).toContainText('EDCM UCNS SITREP');
-  await expect(page.locator('body')).toContainText('ee20db72dde75f602ccf590a64047117f6bca87d');
+  await expect(page.locator('h1')).toHaveText('EDCM mathematical reference');
+  await expect(page.locator('body')).toContainText('Commit-pinned reproduction');
+  await expect(page.locator('body')).toContainText('2f09f9af10ef950ce68c765bcbed7dca83625c65');
+  await expect(page.locator('body')).toContainText('c2e059de15c4ef2c5fa9368c63363b606e503206');
+  await expect(page.locator('body')).toContainText('Implemented v0.3.1 architecture layer');
+  await expect(page.locator('body')).toContainText('not a joint UCNS–EDCM canon selection');
   await expect(page.locator('.textbook-chapter math').first()).toBeVisible();
-  expect(await page.locator('.textbook-chapter math').count()).toBeGreaterThanOrEqual(20);
+  expect(await page.locator('.textbook-chapter math').count()).toBeGreaterThanOrEqual(50);
   await expect(page.locator('script[src*="temml"], script[src*="katex"], script[src*="mathjax"]')).toHaveCount(0);
-  await expect(page.locator('.hmmm')).toContainText('exact immutable transcript export remains unresolved');
+  await expect(page.locator('.hmmm')).toContainText('content identities detect copy drift');
 });
 
 test('all eight Rights Article Labs are linked from the Way tree and expose the shared contact structure', async ({ page }) => {