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
23 changes: 23 additions & 0 deletions docs/post-merge-reconciliation-2026-08-03.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Post-merge reconciliation — 2026-08-03

This repair exists because website PRs #35 and #36 merged with eleven unresolved review findings.

## Repairs

- Site-wide Markdown downloads preserve headings, links, lists, emphasis, code, and destinations.
- PDF exports remove the copied heading from the body so the synthetic title is not duplicated.
- Four Cuts `.m-title` and `.ref-title` vocabulary participates in labels and filenames.
- Linked cards reserve vertical space for the three export controls.
- Gonol receipt download waits for the current debounced and asynchronous state and intercepts the superseded downloader.
- Browser textarea CRLF/CR normalization is declared as information loss; no exact original-byte claim remains.
- Portable receipts use the merged strict UCNS schema, producer Git blob, complete false non-transfer boundary, derived-layer visibility, full-state SHA-256 receipt identity, and declared occurrence-vector dimension names.

## Producer identities

- UCNS machine contract: `9025957b4063c4748429cb56b52d3c9a56157c42`, blob `fdb94ff829a42c267de5f00f2a752550352a444d`.
- Strict receipt schema: `cfad06cf41bd1cc82861f08f6076f0d398a0089b`, blob `569ff5ce8a891a879314f2845905b7c9b8bc085c`, SHA-256 `2b15b1fbc517fdf11e617da8d31ae542cb6f240755ba12390a5bbc7d81034d56`.
- UCNS producer merge: `67964aac4cd34a0f6c3f83fd0da2dabef65b6c9d`.

## hmmm

The companion reconciliation layer is deliberately narrow: it converts the already-published browser representation into the strict portable receipt contract without claiming that the unresolved continuous Möbius frame, seven-form geometry, higher-gonol composition, English lexical floor, or embedding law has been supplied.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,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/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": "node --test tests/aicontext.test.mjs tests/edcm-mathematics.test.mjs tests/gonol-relationships.test.mjs tests/post-merge-reconciliation.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",
Expand Down
51 changes: 41 additions & 10 deletions scripts/check-gonol-relationship-display-drift.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
// 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
// summary: verify the website consumes the exact merged UCNS relationship-display contract and strict receipt schema
// owner: Erin Spencer
// public_surface: validateGonolRelationshipPublication
// internal_surface: readJson, sha256, assert
Expand All @@ -11,17 +11,17 @@
// 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
// tests: tests/gonol-relationships.test.mjs, tests/post-merge-reconciliation.test.mjs
// rollout: merged producer consumer with strict portable receipts
// 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
// unresolved: 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
// given: the local UCNS display contract and strict receipt schema are validated
// then: repository, commits, paths, blobs, SHA-256 values, primitive range, Public Gonol fixture, and unresolved standings match the declared publication pin
// class: evidence
// since: 2026-08-03
//
Expand All @@ -30,6 +30,12 @@
// then: unresolved geometry and represented-only comparison remain explicit without a consumer default
// class: safety
// since: 2026-08-03
//
// id: website_gonol_portable_receipt_is_strict
// given: a relationship receipt leaves the browser page
// then: producer blob, candidate identity, pair order, display policy, losses, hmmm, and every non-transfer boundary remain schema-required
// class: evidence
// since: 2026-08-03
// === END CONTRACTS ===

import { createHash } from 'node:crypto';
Expand Down Expand Up @@ -60,6 +66,7 @@ export function validateGonolRelationshipPublication() {

assert(publication.source.repository === 'The-Interdependency/ucns', 'source repository changed');
assert(publication.source.commit === '9025957b4063c4748429cb56b52d3c9a56157c42', 'source commit changed');
assert(publication.source.merged_by === '67964aac4cd34a0f6c3f83fd0da2dabef65b6c9d', 'producer merge identity 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');
Expand Down Expand Up @@ -90,12 +97,36 @@ export function validateGonolRelationshipPublication() {
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(publication.receipt_schema.source_commit === 'cfad06cf41bd1cc82861f08f6076f0d398a0089b', 'strict schema source commit changed');
assert(publication.receipt_schema.merged_by === '67964aac4cd34a0f6c3f83fd0da2dabef65b6c9d', 'strict schema merge identity changed');
assert(publication.receipt_schema.blob === '569ff5ce8a891a879314f2845905b7c9b8bc085c', 'strict schema blob changed');
assert(publication.receipt_schema.sha256 === '2b15b1fbc517fdf11e617da8d31ae542cb6f240755ba12390a5bbc7d81034d56', 'strict schema declared digest changed');
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');

const required = new Set(receiptSchema.required || []);
for (const field of ['candidate_identity', 'non_transfer', 'joint_context', 'provenance', 'information_loss', 'hmmm']) {
assert(required.has(field), `strict receipt no longer requires ${field}`);
}
const provenanceRequired = new Set(receiptSchema.properties?.provenance?.required || []);
assert(provenanceRequired.has('contract_blob'), 'portable provenance no longer requires producer blob');
assert(receiptSchema.$defs?.operand?.properties?.native_scale?.properties?.numeric_rank?.const === null, 'numeric scale rank became available without a scale law');
assert(receiptSchema.$defs?.displayPolicy?.properties?.parameters?.required?.includes('derived_layers_visible'), 'derived-layer visibility is not receipt-bearing');
assert(receiptSchema.$defs?.pairAB && receiptSchema.$defs?.pairBC && receiptSchema.$defs?.pairCA, 'declared pair identities are not fixed');

const nonTransferRequired = new Set(receiptSchema.$defs?.nonTransfer?.required || []);
for (const field of [
'authority_transfer', 'semantic_authority_transfer', 'proof_status_transfer',
'certification_status_transfer', 'measurement_status_transfer', 'empirical_status_transfer',
'completion_status_transfer', 'embedding_status_transfer', 'producer_authentication_transfer'
]) {
assert(nonTransferRequired.has(field), `non-transfer boundary missing: ${field}`);
assert(receiptSchema.$defs.nonTransfer.properties[field].const === false, `non-transfer boundary is not false: ${field}`);
assert(publication[field] === false || (field === 'producer_authentication_transfer' && publication.producer_authenticated === false), `publication boundary changed: ${field}`);
}

assert(publication.publication_status === 'merged-producer-reconciled-consumer', 'publication status is not reconciled');
assert(publication.producer_authenticated === false, 'content identity cannot claim producer authentication');

return {
Expand All @@ -108,5 +139,5 @@ export function validateGonolRelationshipPublication() {

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}`);
console.log(`gonol relationship publication: contract ${result.contractSha256}; strict schema ${result.receiptSchemaSha256}; primitives ${result.primitiveArities.join('/')}; Public Gonol ${result.publicGonolArity}`);
}
13 changes: 10 additions & 3 deletions src/_data/gonol_relationship_publication.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"source": {
"repository": "The-Interdependency/ucns",
"commit": "9025957b4063c4748429cb56b52d3c9a56157c42",
"merged_by": "67964aac4cd34a0f6c3f83fd0da2dabef65b6c9d",
"path": "docs/gonol-relationship-display-v1.json",
"blob": "fdb94ff829a42c267de5f00f2a752550352a444d",
"sha256": "d1ac67d4a5d5b4cd0622056af94b24a1404f1f5c7d7dfeb59ee28e5edb73aad5",
Expand All @@ -10,15 +11,21 @@
"receipt_schema": {
"path": "/assets/data/gonol-relationship-receipt-v1.schema.json",
"source_path": "docs/gonol-relationship-receipt-v1.schema.json",
"blob": "d83e4423612160a8a500e4d5bc4a9379bd4260b8",
"sha256": "a6565d92e233768fd306f21f2a40a0f38867b32c5740e26fd299c0e23af1d9bf"
"source_commit": "cfad06cf41bd1cc82861f08f6076f0d398a0089b",
"merged_by": "67964aac4cd34a0f6c3f83fd0da2dabef65b6c9d",
"blob": "569ff5ce8a891a879314f2845905b7c9b8bc085c",
"sha256": "2b15b1fbc517fdf11e617da8d31ae542cb6f240755ba12390a5bbc7d81034d56"
},
"producer_pr": "https://github.com/The-Interdependency/ucns/pull/168",
"publication_status": "dependent-draft-consumer",
"publication_status": "merged-producer-reconciled-consumer",
"authority_transfer": false,
"semantic_authority_transfer": false,
"proof_status_transfer": false,
"certification_status_transfer": false,
"measurement_status_transfer": false,
"empirical_status_transfer": false,
"completion_status_transfer": false,
"embedding_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