Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .eleventy.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,22 @@ import { installMathRenderer } from './scripts/markdown-math.mjs';
// entrypoint: npm run build
// tests: tests/site-contract.test.mjs, tests/math-rendering.test.mjs, tests/narratives.test.mjs, tests/generated-site.test.mjs
// === END MODULE_BUILD ===

// === CONTRACTS ===
// id: website_gonol_contract_has_one_exact_public_copy
// given: the commit-pinned UCNS gonol relationship contract enters the Eleventy data graph
// then: the same source bytes are copied to the public data route without runtime fetching or schema shadowing
// class: evidence
// since: 2026-08-03
// === END CONTRACTS ===
// Usage: run `npm run build`; Eleventy emits the static site, copies root machine instructions, and preserves dependency-free public reading paths.

export default function configureEleventy(eleventyConfig) {
const md = installMathRenderer(markdownIt({ html: false, linkify: true, typographer: true }));
eleventyConfig.setLibrary('md', md);
eleventyConfig.addPassthroughCopy({
'src/assets': 'assets',
'src/_data/gonol_relationship_display.json': 'assets/data/gonol-relationship-display-v1.json',
'CNAME': 'CNAME',
'llms.txt': 'llms.txt',
'artifacts/four-cuts-1.html': 'artifacts/four-cuts/index.html',
Expand Down
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,19 @@
"build:llms": "node scripts/build-llms.mjs --apply",
"check:llms": "node scripts/build-llms.mjs --check",
"check:edcm-reference": "node scripts/check-edcm-reference-drift.mjs",
"check:gonol-relationships": "node scripts/check-gonol-relationship-display-drift.mjs",
"prevalidate": "npm run refresh:data",
"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/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": "node --test tests/aicontext.test.mjs tests/edcm-mathematics.test.mjs tests/gonol-relationships.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",
"test:a11y": "playwright test tests/accessibility.spec.mjs",
"test:links": "node tests/links.test.mjs",
"test:performance": "node scripts/performance-placeholder.mjs",
"check": "npm run audit:workflows && npm run check:llms && npm run check:edcm-reference && npm run build && npm test && npm run test:generated",
"check": "npm run audit:workflows && npm run check:llms && npm run check:edcm-reference && npm run check:gonol-relationships && npm run build && npm test && npm run test:generated",
"refresh:works": "node scripts/fetch-works.mjs"
},
"dependencies": {
Expand Down
112 changes: 112 additions & 0 deletions scripts/check-gonol-relationship-display-drift.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
// === MODULE_BUILD ===
// id: gonol_relationship_display_drift_check
// module_name: check-gonol-relationship-display-drift
// module_kind: validator
// summary: verify the website consumes one exact commit-pinned UCNS relationship-display contract and receipt schema
// owner: Erin Spencer
// public_surface: validateGonolRelationshipPublication
// internal_surface: readJson, sha256, assert
// auth_boundary: none
// storage_boundary: read-only repository files
// network_boundary: none; validation never follows a moving branch
// user_data_boundary: none
// admin_only: false
// tests: tests/gonol-relationships.test.mjs
// rollout: dependent publication consumer of the draft UCNS relationship-display contract
// rollback: remove the artifact page, pinned data, validator, and route tests together
// since: 2026-08-03
// unresolved: producer merge order, seven-gonol geometry, continuous frame, English lexical floor, and embedding law
// === END MODULE_BUILD ===

// === CONTRACTS ===
// id: website_gonol_contract_pin_is_exact
// given: the local UCNS display contract and receipt schema are validated
// then: repository, commit, path, blob, SHA-256, primitive range, Public Gonol fixture, and unresolved standings match the declared publication pin
// class: evidence
// since: 2026-08-03
//
// id: website_gonol_consumer_does_not_select_geometry
// given: primitive seven or a missing comparison policy is inspected
// then: unresolved geometry and represented-only comparison remain explicit without a consumer default
// class: safety
// since: 2026-08-03
// === END CONTRACTS ===

import { createHash } from 'node:crypto';
import { readFileSync } from 'node:fs';

const CONTRACT_PATH = 'src/_data/gonol_relationship_display.json';
const PUBLICATION_PATH = 'src/_data/gonol_relationship_publication.json';
const RECEIPT_SCHEMA_PATH = 'src/assets/data/gonol-relationship-receipt-v1.schema.json';

function sha256(bytes) {
return createHash('sha256').update(bytes).digest('hex');
}

function readJson(path) {
return JSON.parse(readFileSync(path, 'utf8'));
}

function assert(condition, message) {
if (!condition) throw new Error(`gonol relationship publication drift: ${message}`);
}

export function validateGonolRelationshipPublication() {
const contractBytes = readFileSync(CONTRACT_PATH);
const schemaBytes = readFileSync(RECEIPT_SCHEMA_PATH);
const contract = JSON.parse(contractBytes.toString('utf8'));
const publication = readJson(PUBLICATION_PATH);
const receiptSchema = JSON.parse(schemaBytes.toString('utf8'));

assert(publication.source.repository === 'The-Interdependency/ucns', 'source repository changed');
assert(publication.source.commit === '9025957b4063c4748429cb56b52d3c9a56157c42', 'source commit changed');
assert(publication.source.path === 'docs/gonol-relationship-display-v1.json', 'source path changed');
assert(publication.source.blob === 'fdb94ff829a42c267de5f00f2a752550352a444d', 'source blob changed');
assert(sha256(contractBytes) === publication.source.sha256, 'contract byte digest changed');
assert(publication.source.sha256 === 'd1ac67d4a5d5b4cd0622056af94b24a1404f1f5c7d7dfeb59ee28e5edb73aad5', 'declared contract digest changed');

assert(contract.schema_id === 'ucns.gonol-relationship-display', 'contract schema id changed');
assert(contract.schema_version === '0.1.0', 'contract schema version changed');
assert(contract.selection_effect === 'none', 'consumer cannot select the contract');
assert(JSON.stringify(contract.primitive_arities) === '[1,2,3,7]', 'primitive range changed');

const primitives = new Map(contract.primitives.map(primitive => [primitive.arity, primitive]));
assert(primitives.get(1)?.projection_id === 'figure-eight-centerline', 'single projection changed');
assert(primitives.get(2)?.visible_boundary_intersections === 2, 'vesica intersection count changed');
assert(primitives.get(2)?.scope_circle?.radius === 1.5, 'vesica scope radius changed');
assert(primitives.get(2)?.relationship_circle?.radius === 0.5, 'vesica relationship radius changed');
assert(JSON.stringify(primitives.get(3)?.pairwise_vesicas) === '[["A","B"],["B","C"],["C","A"]]', 'triquetra pair order changed');
assert(primitives.get(3)?.each_vesica_retained === true, 'triquetra must retain each vesica');
assert(primitives.get(7)?.geometry_standing === 'hmmm-unresolved', 'seven geometry must remain unresolved');
assert(primitives.get(7)?.pairing_plan_required === true, 'seven requires an explicit pairing plan');

const tokens = contract.public_gonol.tokens;
assert(tokens.length === 157, 'Public Gonol arity changed');
assert(new Set(tokens).size === 157, 'Public Gonol tokens are not unique');
assert(tokens[0] === ' ', 'Public Gonol origin changed');
assert(tokens.indexOf('0') === 139, 'digit zero position changed');
assert(sha256(Buffer.from(JSON.stringify(tokens))) === contract.public_gonol.sha256, 'Public Gonol source-compatible digest changed');
assert(contract.public_gonol.space_manifestation_code_points.length === 25, 'SPACE manifestation pin changed');
assert(new Set(contract.public_gonol.space_manifestation_code_points).size === 25, 'SPACE manifestation pin is not unique');
assert(contract.public_gonol.space_manifestation_code_points.includes('U+0020'), 'U+0020 origin manifestation missing');

assert(sha256(schemaBytes) === publication.receipt_schema.sha256, 'receipt schema byte digest changed');
assert(receiptSchema.properties?.schema_id?.const === 'ucns.gonol-relationship-receipt', 'receipt schema identity changed');
assert(receiptSchema.properties?.schema_version?.const === '0.1.0', 'receipt schema version changed');
assert(publication.authority_transfer === false, 'publication cannot receive authority');
assert(publication.measurement_status_transfer === false, 'publication cannot receive measurement status');
assert(publication.empirical_status_transfer === false, 'publication cannot receive empirical status');
assert(publication.producer_authenticated === false, 'content identity cannot claim producer authentication');

return {
contractSha256: publication.source.sha256,
receiptSchemaSha256: publication.receipt_schema.sha256,
primitiveArities: contract.primitive_arities,
publicGonolArity: tokens.length
};
}

const result = validateGonolRelationshipPublication();
if (process.argv[1]?.endsWith('check-gonol-relationship-display-drift.mjs')) {
console.log(`gonol relationship publication: pinned ${result.contractSha256}; primitives ${result.primitiveArities.join('/')}; Public Gonol ${result.publicGonolArity}`);
}
140 changes: 140 additions & 0 deletions src/_data/gonol_relationship_display.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
{
"schema_id": "ucns.gonol-relationship-display",
"schema_version": "0.1.0",
"authority": "Erin Spencer",
"recorded_on": "2026-08-03",
"record_status": "authority-declared-option-preserving-proposal",
"selection_effect": "none",
"primitive_arities": [1, 2, 3, 7],
"scale_contract": {
"admission": "any-declared-native-scale",
"display_policy_id": "ucns.display.relation-equalized",
"display_policy_version": "0.1.0",
"display_radius": 1,
"native_scale_retained": true,
"visible_radius_represents_native_scale": false,
"comparison_policy_default": null,
"comparison_policy_required_for_result": true,
"information_loss": [
"native-scale magnitude is not encoded by visible radius",
"continuous Mobius band width and local-frame motion are not encoded by the centerline projection"
]
},
"primitives": [
{
"arity": 1,
"primitive_id": "single-mobius",
"projection_id": "figure-eight-centerline",
"operand_count": 1,
"pairwise_receipt_count": 0,
"geometry_standing": "declared-static-projection",
"path": {
"parameter": "t in [0, 2*pi)",
"x": "sin(t)",
"y": "sin(t)*cos(t)"
},
"crossing_semantics": "two traversal occurrences at one projected coordinate; not a vertex, seam, second gonol, or Structural Null",
"continuous_frame_required_for_motion": true
},
{
"arity": 2,
"primitive_id": "vesica-mobius",
"projection_id": "equal-circle-vesica-piscis",
"operand_count": 2,
"pairwise_receipt_count": 1,
"geometry_standing": "declared-static-projection",
"operand_radius": 1,
"centers": [
{"operand_slot": "A", "x_exact": "-1/2", "y_exact": "0", "x_binary64": -0.5, "y_binary64": 0},
{"operand_slot": "B", "x_exact": "1/2", "y_exact": "0", "x_binary64": 0.5, "y_binary64": 0}
],
"center_distance": 1,
"visible_boundary_intersections": 2,
"intersection_points_exact": [
{"x": "0", "y": "sqrt(3)/2"},
{"x": "0", "y": "-sqrt(3)/2"}
],
"pairwise_vesicas": [["A", "B"]],
"scope_circle": {"center": "operand midpoint", "radius": 1.5},
"relationship_circle": {"center": "operand midpoint", "radius": 0.5},
"derived_circle_semantics": "display layers only; no implicit operand, gonol, vertex, or Structural Null promotion"
},
{
"arity": 3,
"primitive_id": "triquetra-retained-vesicas",
"projection_id": "equilateral-three-circle-triquetra",
"operand_count": 3,
"pairwise_receipt_count": 3,
"geometry_standing": "declared-static-projection",
"operand_radius": 1,
"centers": [
{"operand_slot": "A", "x_exact": "-1/2", "y_exact": "-sqrt(3)/6", "x_binary64": -0.5, "y_binary64": -0.28867513459481287},
{"operand_slot": "B", "x_exact": "1/2", "y_exact": "-sqrt(3)/6", "x_binary64": 0.5, "y_binary64": -0.28867513459481287},
{"operand_slot": "C", "x_exact": "0", "y_exact": "sqrt(3)/3", "x_binary64": 0, "y_binary64": 0.5773502691896257}
],
"pairwise_vesicas": [["A", "B"], ["B", "C"], ["C", "A"]],
"each_vesica_retained": true,
"coordinate_coincidences_merge_occurrences": false,
"joint_overlap_semantics": "joint context; not an implicit fourth pair, gonol, or vertex"
},
{
"arity": 7,
"primitive_id": "full-ucns-seven",
"projection_id": null,
"operand_count": 7,
"pairwise_receipt_count": null,
"geometry_standing": "hmmm-unresolved",
"pairing_plan_required": true,
"forbidden_implicit_substitutions": ["flower-of-life", "heptagon", "complete-graph", "seven-circle-rosette"]
}
],
"public_gonol": {
"id": "public-gonol-157",
"arity": 157,
"token_identity": "unicode-code-point",
"source_repository": "The-Interdependency/a0-betatest",
"source_commit": "7af8debf6ef3905f01baff02b43d8c3bee16ccbc",
"source_path": "backend/interdependent_lib/gonal/gonal.py",
"sha256": "55d10c84529a4d7bc7714786357e977b68d9df2ac3f73d20e229580b552c2ef5",
"origin_position": 0,
"origin_token": " ",
"digit_zero_position": 139,
"normalization": "none-preserve-source",
"space_manifestation_code_points": [
"U+0009", "U+000A", "U+000B", "U+000C", "U+000D", "U+0020", "U+0085", "U+00A0",
"U+1680", "U+2000", "U+2001", "U+2002", "U+2003", "U+2004", "U+2005", "U+2006",
"U+2007", "U+2008", "U+2009", "U+200A", "U+2028", "U+2029", "U+202F", "U+205F", "U+3000"
],
"space_semantics": "source-preserved boundary and superpositioned nesting interface; not a word-gonol vertex",
"occurrence_address_vector": ["source_ordinal", "unicode_scalar_value", "carrier_position_or_null"],
"vector_standing": "identity-and-address-evidence-not-geometric-embedding",
"tokens": [
" ", "A", "!", "\"", "B", "#", "$", "C", "%", "(", "D", "&", "'", "E", "1", "*",
"F", "+", "[", "G", ",", "-", "H", ".", "/", "I", "3", "{", "J", ":", ";", "K",
"=", "?", "L", "<", "@", "M", "5", "\\", "N", "^", "_", "O", "‘", "`", "P", "|",
"~", "Q", "7", "…", "R", "“", "—", "S", "–", "·", "T", "°", "«", "U", "9", "±",
"V", "×", "÷", "W", "√", "∂", "X", "∫", "∑", "Y", "∏", "∇", "Z", "∞", "≈", "≠",
"a", "≤", "≥", "b", "→", "←", "c", ")", "↑", "d", "↓", "2", "e", "↔", "⊕", "f",
"]", "⊗", "g", "⊙", "⊘", "h", "∈", "4", "i", "}", "∉", "j", "⊂", "⊃", "k", "⊆",
">", "l", "⊇", "6", "m", "∩", "∪", "n", "∧", "’", "o", "∨", "¬", "p", "∀", "8",
"q", "∃", "”", "r", "⊢", "⊨", "s", "∴", "∵", "t", "»", "0", "u", "≡", "ψ", "v",
"φ", "ω", "w", "α", "β", "x", "γ", "δ", "y", "λ", "π", "z", "σ"
]
},
"receipt_schema": "ucns.gonol-relationship-receipt/0.1.0",
"nonclaims": [
"not a complete UCNSObject",
"not a selected Mobius embedding or continuous motion law",
"not canonical structural or numerical comparison",
"not a higher-gonol composition law",
"not a completed English lexical-floor embedding",
"not proof, measurement, empirical, certification, or producer-authentication evidence"
],
"hmmm": [
"continuous local-frame geometry across the Mobius band",
"seven-gonol display geometry and pairing plan",
"promotion law for derived scope or relationship circles",
"cross-scope and higher-gonol composition",
"English root policy, lexical source completion, and hyperdimensional embedding law"
]
}
24 changes: 24 additions & 0 deletions src/_data/gonol_relationship_publication.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"source": {
"repository": "The-Interdependency/ucns",
"commit": "9025957b4063c4748429cb56b52d3c9a56157c42",
"path": "docs/gonol-relationship-display-v1.json",
"blob": "fdb94ff829a42c267de5f00f2a752550352a444d",
"sha256": "d1ac67d4a5d5b4cd0622056af94b24a1404f1f5c7d7dfeb59ee28e5edb73aad5",
"url": "https://github.com/The-Interdependency/ucns/blob/9025957b4063c4748429cb56b52d3c9a56157c42/docs/gonol-relationship-display-v1.json"
},
"receipt_schema": {
"path": "/assets/data/gonol-relationship-receipt-v1.schema.json",
"source_path": "docs/gonol-relationship-receipt-v1.schema.json",
"blob": "d83e4423612160a8a500e4d5bc4a9379bd4260b8",
"sha256": "a6565d92e233768fd306f21f2a40a0f38867b32c5740e26fd299c0e23af1d9bf"
},
"producer_pr": "https://github.com/The-Interdependency/ucns/pull/168",
"publication_status": "dependent-draft-consumer",
"authority_transfer": false,
"proof_status_transfer": false,
"measurement_status_transfer": false,
"empirical_status_transfer": false,
"producer_authenticated": false,
"hmmm": "The seven-gonol geometry, continuous moving frame, cross-scope composition, completed English lexical floor, root policy, and hyperdimensional embedding law remain unresolved."
}
Loading
Loading