diff --git a/White-Paper.html b/White-Paper.html index 2e328c7..10adfb4 100644 --- a/White-Paper.html +++ b/White-Paper.html @@ -1,117 +1,131 @@ -Delta Atlas - White Paper +Delta Atlas - Project Guide and Evidence Boundaries +
-

Delta Atlas — White Paper

-

The living, plain-English ledger of what this project is, what each piece does, and how it keeps itself honest. This page is kept current on purpose: if you are a person, start here; if you are an AI model about to write or reason about this project, load this page first and use these exact meanings — every definition here matches the Resilience Ledger, and paraphrasing them from memory is how drift starts.

+

Delta Atlas — Project Guide and Evidence Boundaries

+

A dated, maintained public guide to what the project currently contains, what its tools can establish, and where evidence is still incomplete. This page is explanatory, not an authority receipt or a replacement for the linked source records.

+
-
- -
- The whole thing in five sentences. Delta Atlas is one machine wearing different clothes: every tool takes a claim (what a document, plan, or AI decision log says is true), holds it against a witness (something independently checkable), and records the difference in a ledger that only ever grows. Everything runs on your own device — no account, no network call, no AI model at runtime — so the answer is the same for everyone, every time, and nothing you paste ever leaves your machine. The tools don't understand meaning; they read structure, the way a spell-checker reads spelling, and a human always makes the final call — we check for identity, not virtue: whether a thing matches its own stated reference, never whether it is good. Underneath them is one idea, the Resilience Ledger (its next edition carries the name The Witness Ledger): systems stay trustworthy by bending without breaking, checking themselves against something outside themselves, and coming back to center. The project runs its own development through the same tools and rules it offers you — every change is logged, every mistake is mended in the open. +
+
+ The whole project in five sentences. Delta Atlas is a collection of deterministic, browser-side tools and recorded data snapshots for examining stated structure in AI plans, traces, frameworks, and terminology. Each tool applies explicit rules to supplied text; it does not understand meaning, observe the outside world, or authorize action. With the same pinned engine, snapshot, and input, tested behavior is reproducible within the stated scope, but different public pages still contain different snapshots. User text is processed locally by these tools and is not sent to an AI model or application API; Cloudflare may separately receive ordinary request metadata and page-performance or visit measurements (opens in a new tab). A human remains responsible for interpreting every flag, checking primary sources, and deciding what happens next.
-

Legend — the tools you click

+

Public tools and their bounded roles

-
Start herethe two-minute guide for someone brand new to AI words.
-
Ask (home search)type a question, get a sourced plain-English answer. A deterministic search engine, not a chatbot — if a word isn't in the model, it says exactly which one is missing instead of guessing.
-
Explorebrowse all 439 terms and how they connect — what defends against what, what needs what.
-
Quick checkcompares a one-line goal against its parts in about a minute: do the parts actually serve the goal?
-
Gap Checkreads a plan or policy and flags what's missing: unhandled risks, ungoverned autonomy, vague words doing load-bearing work.
-
Framework Auditscores each part of a framework: does it act, can it be tested, does it survive having its buzzwords removed?
-
Priority Tracerreads an AI agent's decision log and flags the moment a goal quietly climbs over a rule it was supposed to obey. Also credits where the rule held. Its word lists are versioned, shown in the tool, and privately extendable (see the seed frame below).
-
Continuity Auditreads an operations manual for resilience: can the goal survive a key person out, a vendor failing, an emergency — plus risks with no stated control and single points of failure with no documented backup.
-
The Cadence Dialthe first explorable lesson: how often to check on anything. Physics measured three zones (freeze, harm, free drift) — interactive dial, locate-your-own-loops worksheet, primary sources cited.
-
The Basinthe second explorable lesson: resilience as two separate quantities, return time and basin width (Holling 1973), with a live kick-the-ball simulation, tipping points, and critical-slowing early warning. Sources cited, fidelity marked.
-
Primitives · Field · Ground Truththe structures under the vocabulary, an instrument view, and a dashboard of how well-sourced each term is.
+
Start herea two-minute orientation to common AI terms.
+
Ask (home search)a deterministic lookup over a 435-term embedded snapshot. It can return recorded source labels, but those labels are not complete per-term source receipts.
+
Explorebrowses and filters the same 435-term public snapshot. The candidate source inventory contains 439 records; the data-sync baseline records the four missing IDs and status differences.
+
Quick checkcompares a short goal with its stated parts. It is a structural prompt, not a correctness or safety judgment.
+
Gap Checkapplies fixed phrase and structure rules to a plan or policy. The current embedded snapshot has 433 terms; a flag points to text for human review.
+
Framework Auditchecks whether stated framework parts are actionable and testable. Its score is a heuristic over text, not enforcement or certification.
+
Priority Tracerflags recorded language associated with a goal outranking a stated rule, and marks language associated with the rule holding. Its labeled fixtures bound what has been tested.
+
Continuity Auditchecks an operations document for named risks without stated controls and single points of failure without documented backup.
+
The Cadence Dialan interactive analogy grounded in specific quantum Zeno and anti-Zeno experiments. Applying that shape to software or human monitoring is a design hypothesis, not a transferred physical law.
+
The Basinan interactive dynamical-systems analogy separating return speed from disturbance tolerance. Early-warning signals are conditional indicators, not universal diagnoses.
+
Primitives · Field · Curationa separate 160-record primitives library, an experimental visualization, and a curation view built from an older vocabulary snapshot.
-

Legend — the ledger underneath (the exact meanings)

+

Ledger terms: archival source and current usage

- - - - + + + + + + +
Three functionsWhat each one does
AbsorbTakes a survivable hit and bends instead of breaking. It is a shock absorber for errors and costs — not "taking in information."
CheckCompares every claim against a reference that sits outside the system and is held still during the check — and is exactly as hard on claims it likes as on claims it doesn't.
ReturnComes back to baseline after a stop or a fix, keeping an append-only record so a real repair can always be told apart from damage.
The exact v0.5 function names. Aliases are preserved rather than silently substituted.
FunctionBounded meaning
Absorb load (alias: Buffer)Takes survivable error and deforms without ending the system. It is not a claim that every load is survivable.
Check against a fixed reference (alias: Floor)Compares a claim with a reference it did not generate and cannot edit during the check. This does not make the reference correct or independent by itself.
Reset to baseline (alias: Return)Records a recovery and stops a changed state from silently becoming the baseline. This is the exact v0.5 name; “Return” is its stated alias.
-
+

The archival v0.4 PDF (opens in a new tab) and v0.5 PDF (opens in a new tab) remain unchanged. v0.5 labels itself rolling, unsealed, and candidate; visual and text review confirms the names above. Both PDFs have known pagination defects where repeated table headers or continued rows crowd the page header; this guide does not hide or repair those archival bytes. No v0.6 or “Witness Ledger” artifact is present in this repository, so this page makes no claim that one exists or is scheduled.

+ +

Three drift labels used by the project

- - - - + + + + + + +
Three driftsWhat each one is
Content driftA claim wanders away from the reference. The easy one — checking against the reference catches it.
Thermal driftThe judge wears down under sustained load — every individual claim can still pass while the ability to tell signal from noise erodes. The slowest-recovering judge in any loop is the human, so protection is calibrated to the human. Rest fixes this; more checking does not.
Ordering driftThe priority flips: the goal quietly outranks the rule while every single step still looks fine. The rule gets reinterpreted, rewritten, or cited after the fact instead of obeyed. This is the hardest drift to see and the one the Priority Tracer hunts.
Project vocabulary, not universal or independently validated state classes.
LabelHow this project uses it
Content driftA recorded claim departs from its declared reference.
Thermal driftThe evaluator degrades under sustained load. The site currently offers no direct physiological or cognitive measurement of this condition.
Ordering driftA stated purpose is treated as outranking a stated constraint. The Tracer checks text patterns associated with this condition; it does not observe hidden priorities.
-

One more meaning that matters: the sovereign zero is the neutral center everything is measured from. It is unowned and returned-to — not incorruptible, not an untainted observer. Nothing here claims to be unfoolable; the claim is that fooling it can't happen silently.

-

Legend — the witness ladder (how independent is the check?)

+

Evidence status and witness boundaries

- - - - + + + + + + +
RungWhat the witness is, and its honest floor
Rung 1 — selfOne document held against its own internal structure (Gap Check, Framework Audit, Priority Tracer, Continuity Audit). Catches incoherence and gaps. Its floor, stated plainly: a coherent lie passes Rung 1.
Rung 2 — cross-artifactTwo independent artifacts diffed against each other (a live tool manifest against its pinned fingerprint; a plan against a hash-chained close). A lie now has to keep two books consistent, and the books do not share a pen.
Rung 3 — physicalA witness in a different substrate entirely (the power a chip draws while it works). Experimental; run, documented, and closed honestly in this repository — distinguishable is not tamper-proof, and the write-ups say so.
What each evidence layer can and cannot establish.
LayerSupported claim and ceiling
Self / one artifactCan expose internal gaps or contradictions under fixed rules. A coherent falsehood can pass.
Cross-artifactCan compare independently identified bytes, manifests, or receipts. Independence must be established; two files do not become independent merely because both exist.
Different substrateCan add an observation from a different measurement channel. The repository's power experiment is explicitly experimental and does not prove tamper resistance.
-

A rung may be cited as context for a higher rung, never as proof of it. And one design variable cuts across every rung: checking rhythm. Physics measured the tradeoff — constant watching freezes, rare watching drifts, and the rhythm in between can make things worse. That result, with sources, is the first explorable lesson: the Cadence Dial.

- -

Legend — the scripts (command line, zero installs beyond Node)

-
-
tracer-corpus.jsproves the Tracer still earns its labels: a fixed test corpus where a failing case changes the detector, never the label.
-
tracer-bench.jskeeps the measured speed limits reproducible and fails loudly if the engine ever gets slow in the dangerous way again.
-
delta-atlas-cli.jsthe checks for pipelines, or for an agent on its own output: trace a decision log or gapcheck a plan — findings, JSON, and an exit code. See llms.txt.
-
mend-gate.jsthe change register: every proposed change to this project, from any source, gets logged, gated, and sorted by a human with a written reason. Models may propose; only a person decides.
-
mcp-manifest-pin.jsfreezes an MCP server's tool descriptions in a fingerprint the day you approve them; if the server quietly changes the contract later, the change becomes visible and waits for your decision.
-
tracer-overlay.sample.jsthe seed frame: copy it to a private file, add your own domain's words, and the tools harden locally without ever leaking your additions — the public floor stays public, your tripwires stay yours.
-
+
Current vocabulary boundary. The candidate source file contains 439 records and labels all 439 “reviewed.” That label is not receipt-grade review evidence: reviewer identity, review date, exact locator, and digest are not consistently recorded per term. Ask, Explore, and Curation embed 435 records; Gap Check embeds 433. Until an owner accepts a materialization policy, this page reports both states and treats neither difference as silently resolved.
-

Legend — how the project governs itself

+

Scripts and governance surfaces

-
The registerproposals.json — every suggested change, its source, and its fate (folded or declined, reason attached).
-
The logsevery detector change, every outside review, and every correction is dated and reasoned in the calibration log. Silence in the log means nothing moved.
-
The seamsmistakes are mended in the open and left visible — a repair you can inspect is worth more than a surface that claims it never broke.
+
Corpus harnessesreplay labeled fixtures and reject known mutations. Passing proves only the specified cases for the checked bytes.
+
CLI toolsrun selected checks in a pipeline and return findings, JSON, and exit codes. An exit code is an operational result, not a truth certificate.
+
Append-only governancegovernance/ledger/events records decisions and evidence hashes; governance/ledger/checkpoints seals counted prefixes. Local hashing detects byte changes; without an external witness it does not prevent authorized history replacement.
+
Historical registerproposals.json and older calibration notes remain historical project artifacts. They are not the current acceptance authority.
+
The seamscorrections are appended and left inspectable— but publication, a hash, or a passing harness does not make a claim semantically true.
-
Honest limit, always in force: these tools read words and structure, not meaning. A flag is a pointer for a human to look at, never a verdict; a clean result is not a guarantee. Where lessons borrow from physics and mathematics, the mappings are organizing analogies with their fidelity marked — the same shape of tradeoff, not the same mathematics; a checked document is not a quantum system, and no page here will tell you otherwise. Deeper reading: README · State-Delta-Bridge (how changes are governed) · the calibration log · the Resilience Ledger paper (v0.5) in this folder; its next edition, The Witness Ledger (v0.6), is in preparation.
+

Primary sources behind the two analogies

+

The Cadence Dial and Basin pages apply these sources as explicitly bounded analogies. Primary-source DOI links below open in a new tab.

+ +
Claim ceiling. These sources establish results in their stated physical, experimental, ecological, or modeled domains. Delta Atlas uses them to motivate questions about observation, recovery, and disturbance. They do not prove that a particular monitoring schedule, “basin,” or warning signal transfers unchanged to AI systems, organizations, or people.
- This page's own little ledger (it practices what it preaches): -
+ This page's dated change record - - - - + + + + + + +
DateChangeReason
2026-07-02v1 established: five-sentence summary, tool legend, exact ledger meanings, script legend, self-governance legend.Requested by the author as the living plain-English front door — and as the reference to hand any AI model before it writes about this project, after a drafted white paper paraphrased the core definitions from memory and drifted on all six.
2026-07-10v2: one-engine summary (claim / witness / difference), identity-not-virtue, witness-ladder legend with each rung's honest floor, Continuity Audit and Cadence Dial added to the legend, physics-fidelity limit, Witness Ledger v0.6 noted as in preparation. Full restyle: forest ground, bronze titles, five tool pages joining the theme, ivy brightened and regenerated, every color pair contrast-checked; same-day contrast bugs (author's note, stat lines, search button) caught by a deterministic eval and screenshots, fixed, seams visible.Framework consolidated and the first explorable lesson shipped; the legend updates the same day it changes.
(next)(update whenever a tool, meaning, or rule changes — a legend that lags its map is drift wearing a helpful face)
Presentation history. Load-bearing repository decisions are recorded separately under governance/.
DateChangeReason
2026-07-02Initial plain-English project legend.Created an accessible front door to the tools and project terms.
2026-07-10Added tool, witness-ladder, and analogy summaries.Expanded the map as new public pages appeared.
2026-08-13Corrected privacy, reproducibility, snapshot, terminology, citation, and governance claims; added accessible structure and an explicit source list.Repository and production audits found that the July page overclaimed currentness, network isolation, uniform data, physical transfer, and evidence strength. The archival PDFs remain unchanged.
-
+ diff --git a/governance/contracts/public-explanation-surfaces.contract.v1.json b/governance/contracts/public-explanation-surfaces.contract.v1.json new file mode 100644 index 0000000..1fe42fc --- /dev/null +++ b/governance/contracts/public-explanation-surfaces.contract.v1.json @@ -0,0 +1,110 @@ +{ + "schema_version": "public-explanation-surfaces-contract.v1", + "contract_id": "public-explanation-surfaces-0001", + "classification": "PUBLIC", + "status": "PROPOSED_SOURCE_CLEANUP", + "mode": "PREPARE_ONLY", + "scope": { + "mutable_candidate_surfaces": [ + "index.html", + "White-Paper.html" + ], + "immutable_archival_artifacts": [ + "Resilience Ledger v0 4.pdf", + "Resilience Ledger v0 5.pdf" + ], + "verification_surface": "governance/harnesses/verify-public-explanation-surfaces.js", + "excluded_actions": [ + "MERGE", + "DEPLOYMENT", + "PDF_REVISION", + "SEMANTIC_DATA_MIGRATION", + "LIVE_STATE_ACCEPTANCE" + ] + }, + "source_profile": { + "hash_basis": { + "repository_text": "SHA-256 of UTF-8 bytes with CRLF normalized to LF", + "pdf": "SHA-256 of exact file bytes" + }, + "base_repository_commit": "3e809fc1596491cb252723d3ba694e7b73047f71", + "atlas_candidate_source": { + "path": "terms.enriched.json", + "sha256": "0a57277ffbdcfa00771ae05777f0c7b8782edeaee10b90ed5242430ecd4e2413", + "terms": 439, + "sources": 193, + "relations": 360, + "status_boundary": "REPOSITORY_LABEL_NOT_REVIEW_RECEIPT" + }, + "atlas_projection_baseline": { + "path": "governance/contracts/atlas-data-sync-baseline.md", + "sha256": "81e5a5fb1b5f84c23b45017a5e53dcc5347595f361aa76bd98b02d0694f0a1d6", + "ask_terms": 435, + "curation_terms": 435, + "explore_terms": 435, + "gap_check_terms": 433, + "projection_statuses": { + "ask": "177 reviewed, 258 candidate", + "curation": "177 reviewed, 258 candidate", + "explore": "177 reviewed, 258 candidate", + "gap_check": "177 reviewed, 256 candidate" + } + }, + "systems_primitives": { + "path": "primitives.json", + "sha256": "f0665f18d96b2084075d1b5bfb627e46f6f5f5ddfa4470aa2c997f3bbfefd457", + "records": 160 + }, + "resilience_ledger_v0_4": { + "path": "Resilience Ledger v0 4.pdf", + "sha256": "2543d21b5f7c29a50ae6a6769aa9af5611b60940a4373b0dc2077ce191c72f0b", + "artifact_status": "ARCHIVAL_UNCHANGED" + }, + "resilience_ledger_v0_5": { + "path": "Resilience Ledger v0 5.pdf", + "sha256": "65644b4d567d6937a34639f9724de2b072becb278792b7c1c2ef05f4b2c8672a", + "artifact_status": "ARCHIVAL_UNCHANGED", + "function_terms": [ + "Absorb load (alias: Buffer)", + "Check against a fixed reference (alias: Floor)", + "Reset to baseline (alias: Return)" + ] + } + }, + "presentation_invariants": [ + "The home surface identifies 439 as the declared candidate-source inventory and does not imply that every tool serves all 439 records.", + "The home and explanation surfaces keep the 435- and 433-record public projections and their legacy status-label mismatch visible through the recorded data-sync baseline.", + "The Systems Primitives card reports 160 records for the pinned primitives.json source.", + "No unsupported novelty, uniqueness, endorsement, universal correctness, or certification claim is presented.", + "Area labels are not presented as working filters unless a distinct filtered result is implemented and verified.", + "Local processing, Cloudflare Web Analytics, network, privacy, offline, and determinism claims remain scoped to tested code paths and named assets rather than stated absolutely.", + "Cadence and Basin mappings are labeled as bounded analogies and expose source links; the cited physical or ecological result is not generalized as a law for AI systems.", + "The ledger function is named Reset to baseline; Return is shown only as its v0.5 alias.", + "White-Paper.html describes itself as a maintained public guide, not as the sole canonical state or a peer-reviewed paper.", + "The v0.4 and v0.5 PDFs are labeled archival, are linked as exact artifacts, and remain byte-for-byte unchanged.", + "The guide discloses the observed archival PDF pagination defects without claiming to repair the unchanged bytes.", + "No future Witness Ledger or v0.6 artifact is asserted without a repository artifact and a separate source decision.", + "Governance copy points to append-only events and checkpoints without claiming that every historical project change was logged.", + "Primary content has a working skip target, one main landmark, one page heading, and scoped table headings or captions where tabular data is used." + ], + "acceptance_checks": [ + "PINNED_SOURCE_DIGESTS_MATCH", + "PINNED_COUNTS_MATCH", + "ARCHIVAL_PDF_BYTES_UNCHANGED", + "HTML_SEMANTIC_BOUNDARIES_MATCH", + "UNSUPPORTED_ABSOLUTE_CLAIMS_ABSENT", + "INLINE_SCRIPTS_PARSE", + "MUTATION_CANARIES_REJECTED", + "OWNER_MERGE_STILL_REQUIRED", + "PRODUCTION_DEPLOYMENT_NOT_ATTEMPTED" + ], + "claim_ceiling": [ + "FILE_DIGEST_BOUND_SOURCE_CANDIDATE_ONLY", + "NOT_SEMANTIC_TRUTH_OR_REVIEW_RECEIPT", + "NOT_PDF_CORRECTION_OR_ENDORSEMENT", + "NOT_PRIVACY_SECURITY_OR_ACCESSIBILITY_CERTIFICATION", + "NOT_LIVE_HEALTH_OR_PRODUCTION_IDENTITY", + "NOT_MERGE_OR_DEPLOYMENT_AUTHORITY", + "OWNER_MERGE_REQUIRED" + ] +} diff --git a/governance/decision-log/0011-public-explanation-surface-cleanup.md b/governance/decision-log/0011-public-explanation-surface-cleanup.md new file mode 100644 index 0000000..5c53b12 --- /dev/null +++ b/governance/decision-log/0011-public-explanation-surface-cleanup.md @@ -0,0 +1,51 @@ +# Decision 0011: Public explanation-surface cleanup + +Date: 2026-08-13 +Authority: repository owner authorization for the bounded public Atlas cleanup +Decision: **ACCEPT_WITH_LIMITS** +Mode: **PREPARE_ONLY** +Consequence class: C2 + +## Observation + +The merged Atlas repair is live, but the public home and `White-Paper.html` +still contain older explanatory copy that is not aligned with the repository's +recorded source boundaries. Examples include an unsupported novelty label, a +stale 150-primitives count, a 439-record claim applied to a 435-record +projection, absolute privacy and determinism language, an inverted +`Reset`/`Return` name, and future-edition language with no matching repository +artifact. + +The v0.4 and v0.5 Resilience Ledger PDFs are historical artifacts. Their +content and layout can be assessed and bounded, but this packet does not +silently revise them. + +## Accepted preparation + +- Correct only the public home and maintained explanation surface. +- Separate the declared 439-record candidate source from the 435- and + 433-record public projections recorded by the data-sync baseline. +- Derive the Systems Primitives count from the pinned 160-record JSON source. +- Remove unsupported novelty, universality, certification, and absolute + privacy or determinism claims. +- Keep Cadence and Basin cross-domain mappings explicitly bounded and linked to + their sources. +- Use the v0.5 source term `Reset to baseline`, with `Return` only as its alias. +- Link and label the v0.4 and v0.5 PDFs as archival artifacts while preserving + their exact bytes. +- Point self-governance language to the repository's append-only events and + checkpoints without claiming complete historical coverage. +- Repair the explanation surfaces' basic navigation and table semantics. +- Bind the resulting source candidate to deterministic checks and exact file + digests before presenting it for owner review. + +## Limits + +This decision accepts preparation of a file-digest-bound source candidate for +a public pull request. It does not accept the semantics of the 439-record +candidate inventory or any older projection, establish per-term review, +correct or endorse either archival PDF, validate every external citation, +certify accessibility, privacy, security, or offline behavior, establish live +health or production identity, authorize an agent merge, or authorize a +Cloudflare deployment. Owner merge remains required; production observation is +a separate event after any merge. diff --git a/governance/harnesses/run-all.js b/governance/harnesses/run-all.js index 0fc92ba..01f3f49 100644 --- a/governance/harnesses/run-all.js +++ b/governance/harnesses/run-all.js @@ -14,6 +14,7 @@ const scripts = [ 'verify-atlas-data-materialization.js', 'verify-atlas-runtime.js', 'verify-home-surface.js', + 'verify-public-explanation-surfaces.js', 'verify-atlas-foundational-repair.js', 'verify-six-signal-surface.js', 'verify-authority.js', diff --git a/governance/harnesses/verify-atlas-data-sync-v2.js b/governance/harnesses/verify-atlas-data-sync-v2.js index 093ae20..8d64e72 100644 --- a/governance/harnesses/verify-atlas-data-sync-v2.js +++ b/governance/harnesses/verify-atlas-data-sync-v2.js @@ -10,6 +10,7 @@ const fs = require('fs'); const path = require('path'); +const child = require('child_process'); const H = require('../../corpus-harness.js'); const L = require('../ledger/lib.js'); @@ -18,6 +19,7 @@ const V1_CONTRACT_PATH = path.join(L.repoRoot, 'governance', 'contracts', 'atlas const V1_CONTRACT_SHA256 = '45cb718d137cf38b15cd849475faabe10a10df155eff0db0bfb71dca62070821'; const CORRECTION_EVENT_PATH = path.join(L.repoRoot, 'governance', 'ledger', 'events', 'governance', '000008-atlas-data-sync-portability-corrected.json'); +const CORRECTION_RECORDING_COMMIT = '2a9e5f30451b1e5f3ac0c3cf86f9c4e5f96fa425'; const REQUIRED_PROJECTION_KEYS = ['expected', 'id', 'kind', 'path']; function readJson(relative) { @@ -28,8 +30,24 @@ function canonicalTextHash(text) { return L.sha256CanonicalTextBytes(Buffer.from(text, 'utf8')); } +function historicalBytes(relative) { + try { + return child.execFileSync('git', ['-c', `safe.directory=${L.repoRoot}`, 'show', + `${CORRECTION_RECORDING_COMMIT}:${relative}`], { + cwd: L.repoRoot, encoding: null, maxBuffer: 64 * 1024 * 1024, + stdio: ['ignore', 'pipe', 'pipe'] + }); + } catch (error) { + throw new Error(`${relative}: cannot resolve portability-correction evidence at its recording commit`); + } +} + function verifyCorrectionBindings() { const event = JSON.parse(fs.readFileSync(CORRECTION_EVENT_PATH, 'utf8')); + if (L.sha256CanonicalTextBytes(historicalBytes(path.relative(L.repoRoot, CORRECTION_EVENT_PATH).replace(/\\/g, '/'))) !== + L.sha256CanonicalTextBytes(fs.readFileSync(CORRECTION_EVENT_PATH))) { + throw new Error('portability correction event differs from its recording commit'); + } if (event.event_id !== 'evt_governance_atlas_data_sync_portability_correction_0008' || event.decision !== 'CORRECT' || event.payload?.semantic_data_changed !== false || event.payload?.data_migration !== 'DEFER') { @@ -41,12 +59,11 @@ function verifyCorrectionBindings() { ref.source_locator.split(/[\\/]/).includes('..')) { throw new Error(`${ref.ref_id}: unsafe or missing correction evidence locator`); } - const absolute = path.resolve(L.repoRoot, ref.source_locator); - if (!absolute.startsWith(`${path.resolve(L.repoRoot)}${path.sep}`) || !fs.existsSync(absolute)) { - throw new Error(`${ref.ref_id}: correction evidence file is missing or outside the repository`); + if (!path.resolve(L.repoRoot, ref.source_locator).startsWith(`${path.resolve(L.repoRoot)}${path.sep}`)) { + throw new Error(`${ref.ref_id}: correction evidence file is outside the repository`); } - if (L.sha256CanonicalTextBytes(fs.readFileSync(absolute)) !== ref.sha256) { - throw new Error(`${ref.ref_id}: correction evidence digest mismatch`); + if (L.sha256CanonicalTextBytes(historicalBytes(ref.source_locator)) !== ref.sha256) { + throw new Error(`${ref.ref_id}: historical correction evidence digest mismatch`); } } } diff --git a/governance/harnesses/verify-home-navigation-history.js b/governance/harnesses/verify-home-navigation-history.js index 08f6f10..37b8a4c 100644 --- a/governance/harnesses/verify-home-navigation-history.js +++ b/governance/harnesses/verify-home-navigation-history.js @@ -4,16 +4,31 @@ const fs = require('fs'); const path = require('path'); const vm = require('vm'); +const child = require('child_process'); const L = require('../ledger/lib.js'); const root = path.resolve(__dirname, '..', '..'); +const recordingCommit = '12b31befb0731a2e511672d108d9696c80f0f32b'; +const eventPath = 'governance/ledger/events/governance/000009-atlas-navigation-history-corrected.json'; +const contractPath = 'governance/contracts/atlas-navigation-history.contract.v1.json'; +const observationPath = 'governance/observations/2026-08-13-atlas-navigation-local-browser.json'; const source = fs.readFileSync(path.join(root, 'index.html'), 'utf8'); -const contract = JSON.parse(fs.readFileSync( - path.join(root, 'governance', 'contracts', 'atlas-navigation-history.contract.v1.json'), 'utf8')); -const event = JSON.parse(fs.readFileSync(path.join(root, 'governance', 'ledger', 'events', 'governance', - '000009-atlas-navigation-history-corrected.json'), 'utf8')); -const browserObservation = JSON.parse(fs.readFileSync(path.join(root, 'governance', 'observations', - '2026-08-13-atlas-navigation-local-browser.json'), 'utf8')); + +function historicalBytes(relative) { + try { + return child.execFileSync('git', ['-c', `safe.directory=${root}`, 'show', `${recordingCommit}:${relative}`], { + cwd: root, encoding: null, maxBuffer: 64 * 1024 * 1024, stdio: ['ignore', 'pipe', 'pipe'] + }); + } catch (error) { + throw new Error(`${relative}: cannot resolve navigation evidence at its recording commit`); + } +} + +const historicalEventBytes = historicalBytes(eventPath); +const currentEventBytes = fs.readFileSync(path.join(root, eventPath)); +const contract = JSON.parse(historicalBytes(contractPath).toString('utf8')); +const event = JSON.parse(currentEventBytes.toString('utf8')); +const browserObservation = JSON.parse(historicalBytes(observationPath).toString('utf8')); function extractFunction(text, name) { const start = text.indexOf(`function ${name}(`); @@ -244,6 +259,9 @@ function failuresFor(text) { } const errors = []; +if (L.sha256CanonicalTextBytes(currentEventBytes) !== L.sha256CanonicalTextBytes(historicalEventBytes)) { + errors.push('navigation correction event differs from its recording commit'); +} if (contract.schema_version !== 'atlas-navigation-history-contract.v1' || contract.status !== 'PROPOSED_CORRECTION' || !contract.claim_ceiling.includes('OWNER_MERGE_REQUIRED')) { @@ -255,7 +273,7 @@ if (event.event_id !== 'evt_governance_atlas_navigation_history_corrected_0009' errors.push('navigation correction event boundary is invalid'); } if (browserObservation.schema_version !== 'atlas-browser-observation.v1' || - browserObservation.subject.source_sha256 !== L.sha256CanonicalTextBytes(fs.readFileSync(path.join(root, 'index.html'))) || + browserObservation.subject.source_sha256 !== L.sha256CanonicalTextBytes(historicalBytes('index.html')) || browserObservation.subject.source_state !== 'UNCOMMITTED_WORKTREE_CANDIDATE' || browserObservation.instrument.profile_or_session_data_collected !== false || browserObservation.result !== 'MATCHED' || browserObservation.cases.some((item) => item.result !== 'MATCHED') || @@ -270,9 +288,12 @@ for (const reference of event.evidence_refs) { continue; } const absolute = path.resolve(root, locator); - if (!absolute.startsWith(`${root}${path.sep}`) || !fs.existsSync(absolute) || - L.sha256CanonicalTextBytes(fs.readFileSync(absolute)) !== reference.sha256) { - errors.push(`${reference.ref_id}: evidence digest mismatch`); + if (!absolute.startsWith(`${root}${path.sep}`)) { + errors.push(`${reference.ref_id}: evidence locator is outside the repository`); + continue; + } + if (L.sha256CanonicalTextBytes(historicalBytes(locator)) !== reference.sha256) { + errors.push(`${reference.ref_id}: historical evidence digest mismatch`); } } errors.push(...failuresFor(source)); @@ -284,7 +305,7 @@ const canaries = [ source.replace("replaceFrameLocation(frame,'about:blank')", "replaceFrameLocation(frame,'Delta-Atlas-GapCheck.html')"), source.replace("return Object.prototype.hasOwnProperty.call(NAV_ROUTES,h)?h:null;", 'return h||null;'), - source.replace("}catch(e){return false;}}\n frame.onload", "}catch(e){}}\n frame.onload"), + source.replace("}catch(e){return false;}}\n loading.textContent", "}catch(e){}}\n loading.textContent"), source.replace("if(!replaceFrameLocation(fr,'Agentic-AI-Governance-Chat.html#embed')){fr.onload=null; return;}", "fr.src='Agentic-AI-Governance-Chat.html#embed';"), source.replace("if(!replaceFrameLocation(fr,'about:blank')) return false;", @@ -294,7 +315,8 @@ const canaries = [ source.replaceAll("if(writeHistory!==false){try{history.back();}catch(e){}} return false;", 'return false;') ]; for (const [index, mutated] of canaries.entries()) { - if (failuresFor(mutated).length === 0) errors.push(`navigation mutation ${index + 1} was not rejected`); + if (mutated === source) errors.push(`navigation mutation ${index + 1} did not alter source`); + else if (failuresFor(mutated).length === 0) errors.push(`navigation mutation ${index + 1} was not rejected`); } if (errors.length) { diff --git a/governance/harnesses/verify-home-surface.js b/governance/harnesses/verify-home-surface.js index b95b592..68b70dd 100644 --- a/governance/harnesses/verify-home-surface.js +++ b/governance/harnesses/verify-home-surface.js @@ -23,6 +23,8 @@ check(/]*aria-label="Primary navigation"/.test(html), 'primary navigati check(/]*id="stage"/.test(html), 'semantic main exists'); check(/]*class="floor"/.test(html), 'semantic footer exists'); check((html.match(//.test(html) && /]*id="stage"[^>]*tabindex="-1"/.test(html), + 'skip link targets the focusable main landmark'); check(!/<(?:div|span|a)\b[^>]*\bonclick=/.test(html), 'no click-only div, span, or anchor controls remain'); check(!/nothing leaves it|no tracking/i.test(html), 'unsupported absolute privacy copy is absent'); check(/Cloudflare Web Analytics/.test(html) && /plan and search text are (?:analyzed|processed) locally/i.test(html) && @@ -34,6 +36,20 @@ check(/Object\.freeze\(\{/.test(html) && /NAV_ROUTES/.test(html) && /hasOwnPrope check(/Paste a plan into Gap Check/.test(html) && html.indexOf('Paste a plan into Gap Check') < html.indexOf('
'), 'primary plan action precedes optional sample'); check(/sample\.addEventListener\('toggle'/.test(html) && /data-src="Delta-Atlas-GapCheck\.html#embed"/.test(html), 'sample frame is opt-in'); check(/min-height:44px/.test(html) && /@media \(max-width:700px\)/.test(html), 'mobile touch and navigation rules exist'); +check(!/THE ONE NOBODY ELSE HAS/.test(html), 'unsupported competitive superlative is absent'); +check(/Candidate source inventory: 439 vocabulary records/.test(html) && /Ask and Explore snapshot: 435 records<\/b>/.test(html), + 'source inventory and embedded projection counts remain distinct'); +check(/160 recorded cross-domain primitives/.test(html), 'primitive count matches the recorded library'); +check(!/\b150 cross-domain primitives\b/.test(html), 'stale primitive count is absent'); +check(/These are the six topic filters available inside Explore/.test(html) && + (html.match(/
-
-
loading…
- +
+
Loading…
+
-
+

Delta Atlas

@@ -303,7 +300,7 @@

Delta Atlas

Check an AI plan, trace, or term against fixed, plain-language rules. The tools are deterministic and run in your browser.

Your plan and search text are analyzed locally. Atlas does not place submitted text in request URLs or send it to a model or API. Cloudflare may collect ordinary request metadata plus page-performance and visit measurements; read Cloudflare's RUM description (opens in a new tab). This browser may retain a one-use Quick handoff, missed-search history, or verification checklist.

-
+
@@ -313,7 +310,7 @@

Delta Atlas

Live · the real tool, running on your device
-
This sample names 2 gaps with no control present, and sees the controls that are there.
+
This fixed example shows how the tool separates named gaps from controls it can find. It is a demonstration, not a verdict.
@@ -328,7 +325,6 @@

Delta Atlas

-
THE ONE NOBODY ELSE HAS
I HAVE AN
Agent's trace
The Priority Tracer catches ordering drift: the moment a goal quietly climbs over a rule it was supposed to obey — and credits where the rule held.
@@ -337,7 +333,7 @@

Delta Atlas

I WANT THE
Words explained
-
439 terms defined by what they do, linked by shared function. Browse the map, or just ask the search above.
+
The candidate source inventory records 439 terms. The current Ask and Explore snapshot contains 435; the public data-sync baseline records the four-term gap.
@@ -347,17 +343,17 @@

Delta Atlas

Answer · fixed function-first engine
-
439 vocabulary records · 6 areas · 193 source records · all 439 currently carry the repository label reviewed · free to read
+
Candidate source inventory: 439 vocabulary records · 6 areas · 193 source records · Ask and Explore snapshot: 435 records · free to read
Get the app: Android — tap Install app above (or Chrome menu › Add to Home screen) · iPhone/iPad — in Safari tap Share › Add to Home Screen · Computer — in Chrome/Edge click the install icon at the right end of the address bar.
- Free. No app store or account. A successful install caches the declared core tools for offline use; optional assets and an existing browser cache can vary. Cloudflare Web Analytics measures page visits and performance separately from Atlas analysis input.
+ Free. No app store or account. A successful install pre-caches a defined subset of core routes and engines, not every page; optional assets and an existing browser cache can vary. Inspect the exact cache list (opens in a new tab). Cloudflare Web Analytics measures page visits and performance separately from Atlas analysis input.

Browse by area

-
Pick an area to read the terms inside it.
-
+
These are the six topic filters available inside Explore.
+
FoundationsWhat it's built from
Data & ProvenanceWhat it's anchored to
Agentic MechanicsHow it acts
Failure Modes & RisksWhat goes wrong
Control & SafetyHow it's constrained
Oversight & GovernanceWho's accountable

What is this?

@@ -372,13 +368,13 @@

Why not just ask a chatbot?

Why?

-

The field invents words faster than most people can learn them, and that gap quietly decides who gets to take part. Someone entering the AI workforce should be able to find out what "ontology gate," "guardrail," or "excessive agency" mean without a course and without spin.

+

The field invents words faster than most people can learn them, and that gap quietly decides who gets to take part. Someone entering the AI workforce should be able to find out what an Atlas-specific term such as "ontology gate," or a broader term such as "guardrail" or "excessive agency," means without a course and without spin.

This is open research: free to read, check, and build on. Helping people understand the work is part of doing the work.

What this doesn't do

-

Where it sits: this is the coherence check that runs before the enforcement layer, before you optimize, gate, or audit against your rules. It doesn't bind anything. It catches the incoherent spec before something else has to.

+

Where it sits: these tools compare stated text with explicit browser-side rules. They can point to missing or conflicting structure; they do not enforce policy, authorize an action, observe the outside world, or bind a system.

It does not certify anything. The groundedness score is a source-support heuristic, not a truth, confidence, acceptance, or safety result.

It is not legal, compliance, or professional advice, and it is not trying to out-dictionary the dictionary. It focuses on a deliberately selected subset of terms for understanding agentic AI.

@@ -398,21 +394,21 @@

Everyday tools

- +

General tool

Not about AI vocabulary. It checks any framework or plan for coherence, on any topic.
- - - + + +

For Evaluators

Deeper views for checking the work.
- +
@@ -420,18 +416,18 @@

Reference documents

Longer reads. These open in a new tab.
- How it worksOne engine, many checks — the whole toolset in plain English (opens in new tab) - White Paper (plain English)The living legend: every tool, the exact meanings, the rules (opens in new tab) - Delta Atlas CanonPortable spec that keeps any model on the same terms, to minimize uncontrolled drift (opens in new tab) - Glossary (text)The function-first glossary as a plain document (opens in new tab) - Portability & model-agnosticWhy it runs on any PC, no AI model needed (opens in new tab) - Framework designThe data model and sovereign-zero idea (opens in new tab) - Red-team reportThe honest weaknesses, treated as a feature (opens in new tab) - Coherence Ledger (method)The neutral method behind the Framework Audit (opens in new tab) + How it worksOne engine, many checks — the whole toolset in plain English (opens in new tab) + Project guide and evidence boundariesThe plain-English white paper, exact terms, citations, and current limits (opens in new tab) + Delta Atlas CanonPortable spec that keeps any model on the same terms, to minimize uncontrolled drift (opens in new tab) + Glossary (text)The function-first glossary as a plain document (opens in new tab) + Portability & model-agnosticWhy it runs on any PC, no AI model needed (opens in new tab) + Framework designThe data model and sovereign-zero idea (opens in new tab) + Red-team reportThe honest weaknesses, treated as a feature (opens in new tab) + Coherence Ledger (method)The neutral method behind the Framework Audit (opens in new tab)
-
THE FLOORlexicons versioned · corpus held fixed · every change logged with its reasonevery seam on record →
+
THE FLOORversioned lexicons · fixed test corpora · append-only governance for current load-bearing changesinspect the governance boundary →

How to read this honestly. The current dataset labels every definition reviewed, but the repository does not yet carry complete per-term review receipts. A term can be sourced and still be wrong. The tools run without an AI model; their labeled corpus tests pin specific behavior for the checked code and data. Definitions draw on government, standards bodies, academia, industry, and the security community. This is open research, and its unresolved seams stay visible.

Disclaimer. Independent educational research, provided as-is with no warranty of accuracy or fitness for any purpose. Not legal, compliance, or professional advice; verify against primary sources before relying on anything. Not affiliated with or endorsed by NIST, ISO/IEC, OWASP, Stanford HAI, MIT, NSA/CISA, or any cited organization; their names and materials remain the property of their owners. Content licensed CC BY 4.0. © 2026 Jake Tiller.

@@ -473,7 +469,8 @@

Reference documents var routeLabel=NAV_ROUTES[routePath]; if(!canReplaceFrameLocation(frame)) return false; if(writeHistory!==false){try{ history.pushState({route:routePath},'', '#'+encodeURIComponent(routePath)); }catch(e){return false;}} - frame.onload=function(){ loading.style.display='none'; }; + loading.textContent='Loading '+routeLabel+'\u2026'; + frame.onload=function(){ loading.style.display='none'; frame.focus(); }; if(!replaceFrameLocation(frame,routePath)){frame.onload=null; if(writeHistory!==false){try{history.back();}catch(e){}} return false;} home.style.display='none'; frame.style.display='block'; loading.style.display='block'; frame.title=routeLabel; setActive(routePath); document.title=routeLabel;