Skip to content

docs: state the idea — domain transition, silent failure, and the 007 dual - #53

Merged
hyperpolymath merged 5 commits into
mainfrom
docs/state-the-idea
Aug 7, 2026
Merged

docs: state the idea — domain transition, silent failure, and the 007 dual#53
hyperpolymath merged 5 commits into
mainfrom
docs/state-the-idea

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

The clearest statement of what this repo is for existed in exactly one place: a dated entry in DESIGN.md from 2026-06-18, filed as an implementation decision. The README said "a repo-native semantic overlay MVP for tracing how claims move from source evidence/specification to target conclusions" — true, but too abstract to build from. ARCHITECTURE.md is template boilerplate ("Separation of Concerns", "Each module has a single responsibility") that describes no repo in particular, with an empty ## Directory Structure heading.

That gap has costs. Someone with only the README to go on cannot tell what a profile is supposed to do — which is very likely why examples/same-cube/ ended up vendored inside this repo and the profile named after a claim rather than its target corpus.

What this states, that was previously only implicit

The idea. A claim can hold on both sides of a domain transition and still not mean the same thing on both sides. The invariant is not "true here and true there" — it is "the same claim here and there". That path is the thing that must be invariant.

Why it needs tooling at all. The failure is silent by construction: cross-domain equality is not expressible from inside either domain. A test in domain A checks A against itself; a test in B checks B against itself. Every per-domain test can pass forever while the load-bearing claim is already broken — and everything looks green, because each side really is internally consistent.

The worked example, promoted out of the decision log: AffineScript's faces all lower to one canonical form; per-face snapshot tests catch drift within a face and can never compare face A's cube against face B's. The cross-face equality is the load-bearing claim, and no per-face test can even express it.

The dual with 007. Named explicitly, because the two repos are halves of one concern and currently read as unrelated:

Syntax Semantics Silent failure
Invariant Path different must be the same forms diverge in meaning while each stays self-consistent
007 / hermeneutic the same may be read differently one form carries two readings; the wrong one is assumed

Many forms, one meaning against one form, many meanings.

The profile rule. A profile is a lens onto a corpus that lives elsewhere; it names a target by path and does not vendor it — see profiles/pmpl.md, which points at the palimpsest-license tree and copies nothing. A profile that carries a copy of its target drifts from the real thing and starts grounding a claim about a stale fixture, which is this tool's own failure mode turned inward.

Known deviation, flagged inline rather than silently fixed

examples/same-cube/ vendors an AffineScript corpus, and the profile is called faces where the other five are named for their target repo (echidna, panll, hypatia, pmpl, standards-docs). Both are noted in the layout section pointing at the follow-up issue — a docs PR should not quietly change behaviour.

🤖 Generated with Claude Code

… dual

The clearest articulation of what this repo is for existed in exactly one
place: a dated entry in DESIGN.md from 2026-06-18. The README said
'semantic overlay for tracing how claims move from source to target',
which is true but too abstract to build from, and ARCHITECTURE.md is
template boilerplate ('Separation of Concerns', 'Each module has a single
responsibility') that says nothing about this repo.

State it properly: a claim can hold on BOTH sides of a domain transition
and still not MEAN the same thing on both sides. The invariant is not
'true here and true there' but 'the same claim here and there'. The
failure is silent by construction — cross-domain equality is not
expressible from inside either domain, so every per-domain test can pass
forever while the load-bearing claim is already broken.

Also names the dual explicitly: 007's hermeneutic semantics is the mirror
case (same syntax, different readings) where this is many syntaxes, one
meaning. Anyone working on one should read the other.

And states the profile rule that was only implicit: a profile is a lens
onto a corpus that lives elsewhere and does NOT vendor it (see pmpl).
examples/same-cube violates this today; flagged inline.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@gitar-bot

gitar-bot Bot commented Aug 5, 2026

Copy link
Copy Markdown

Note

Automatic reviews are paused because your trial's included automatic processing has been used for this period. Upgrade now, or comment "Gitar review" to run a review anytime.
Learn more

Code Review ✅ Approved

Documentation update clarifying the core concepts of domain transition, silent cross-domain failures, and the 007 dual across the README and architectural guides. No issues found.

Auto-approved and auto-merge armed: No blocking issues found.
Please see Auto-approve Docs for details on setting custom approval criteria. — merges when pipeline and required approvals pass.

Options

Display: compact → Showing less information.

Comment with these commands to change the behavior for this request:

Compact
gitar display:verbose         

Important

Your trial ends in 5 days — upgrade now to keep code review, CI analysis, auto-apply, custom automations, and more.

Was this helpful? React with 👍 / 👎 | Gitar

@gitar-bot
gitar-bot Bot enabled auto-merge (squash) August 5, 2026 00:29
gitar-bot[bot]
gitar-bot Bot previously approved these changes Aug 5, 2026

@gitar-bot gitar-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gitar has auto-approved this PR and enabled auto-merge (configure)

@gitar-bot gitar-bot Bot added the gitar-approved Added by Gitar label Aug 5, 2026
…not-paraphrase

The manifest is the universal AI entry point, and its purpose field said
'monorepo for heuristic extraction and classification, provides a shared
CLI'. That describes the plumbing. An agent reading it learns nothing
about domain transitions or claim identity, so it reads the code and
invents its own account — which is how this idea has been re-derived and
distorted repeatedly, each restatement plausible and each drifting
further.

Add a core-idea block carrying the canonical statement, why the failure
is silent by construction, the faces/cube worked example, the explicit
dual with 007, the profile vendor-nothing rule, and the known deviation
(issue #54).

Marked DO NOT PARAPHRASE: quote or link, and if you think it is wrong,
argue the point rather than silently improving the wording. The purpose
field now says outright that reading only it is how the idea gets lost.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
hyperpolymath added a commit that referenced this pull request Aug 5, 2026
…ure (#56)

**This repo has had no working CI.** All 16 workflows return
`startup_failure` in 0s; the last 30 runs are `startup_failure` without
a single exception.

That has a consequence worth stating before anything else: **the two
open PRs here (#53, #55) have never been verified by anything.** Their
green-looking absence of failures is an absence of checks.

## Cause

Workflow-lockfile enforcement is active on this account, and this repo
had no `.github/workflows/actions.lock`.

## The cure, in four steps

Proven on haec#50 and trope-particularity-workbench#45. It takes four
steps because **each one's failure is invisible until the previous is
fixed** — they surface strictly one at a time:

1. **`gh actions-lock`** — generates the lockfile, normalises pins to
readable tags.
2. **Hoist SPDX back to line 1.** `actions-lock` inserts its own banner
as line 1, and the workflow linter requires the SPDX header there — so
the tool that cures the startup failures reddens every workflow file
unless this is undone in the same commit.
3. **Hand-author an empty `[]` lockfile entry per reusable caller** (6
here). `gh actions-lock` **skips reusable-workflow callers**, so without
this they remain `startup_failure` while everything else goes green —
which reads as a partial fix rather than a missing step.
4. **Re-pin those callers** to standards `bd0df9ead7fa`, the commit that
made the governance check lockfile-aware. Verified present via the
commits API rather than copied.

## Expect failures

Nothing here has been checked in a long time. The first green run is a
**starting point, not a result** — some of what surfaces will be real
and long-standing. If two callers come back `startup_failure` after
this, the cause is permission escalation (a reusable requesting more
than its caller grants is rejected before any job starts, producing no
log); that was the last residual on tpw#45.

Found during the 2026-08-05 estate CI/CD census, which measured 8 repos
mostly dead and 47 partly dead out of 421.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Signed-off-by: Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
hyperpolymath and others added 2 commits August 5, 2026 09:38
…ayer broke (#55)

Stacked on #53 (it quotes the `(core-idea (statement …))` block that #53
introduces). Base retargets to `main` automatically when #53 merges.

## What this is

The three-layer claim-checking architecture (type / trope / knot)
invited an obvious attack: if Layer 1's diode makes every admissible
strand monotone in time, the configurations are braids rather than
knots, and Layer 3 looks like an optimizer rather than a layer.

I built the sharpest five-count case against Layer 3 I could, then had
it attacked adversarially, with a separate fact-check of the theorems it
relied on. **Three of the five counts broke** — two of them on checkable
errors in my own argument. This ADR records the surviving position.

## Why an ADR and not a `DESIGN.md` entry

Deliberate. The core idea of this repository was written down correctly,
and only, in a dated `DESIGN.md` entry (2026-06-18). It was accurate and
invisible: readers took the plumbing description from the manifest, went
to the code, and reconstructed the idea their own way. This record has
the same failure profile — a load-bearing conclusion that reverses a
plausible position — so it goes where it can be found.

This adds `docs/decisions/` (the estate norm, present in trope-checker,
typell, boj-server). The repo had no ADR infrastructure.

## The three counts that broke

**Count 1 — "topology cannot form" — wrong.** The diode constrains
*edges*, but it cannot constrain the Morse structure at *vertices*, and
Layer 2 mandates them. A merge is a local maximum of time along any
cycle through it; a split is a local minimum. So a confluence diamond is
a closed curve with one min and one max — the profile of a round circle
— and two of them link with **every edge strictly forward in time**. No
closure, no time-reversal. The supporting lemmas all fact-checked
correct; the false premise was *unpinned*: shared anchors and shared
conclusions identify endpoints, and Artin combing needs a free boundary.

**Count 2 — "the plane is notation" — falls to intrinsic linking.**
Conway–Gordon properties are fixed by incidence alone yet quantify over
all realizations. Drawing-invariant and epistemically contentful, and no
Layer 1 predicate quantifies over embeddings.

**Count 5 — "it is only a complexity switch" — falls to the doubling
attack.** Present one derivation twice, paraphrased, under distinct
labels. Label-honest (diode silent), well-founded, exogenously attested,
each copy individually warranted. It has an **identical pass/fail
profile to genuine two-witness corroboration on every subdiagram** — so
the exponential sweep cannot distinguish them even in principle — yet
corroboration weight is 2 vs 1. Worse, the sweep answers *its own*
robustness question wrongly without the identity quotient supplied as
input.

## The decision

Layer 3 is retained, with a restated charter: it adjudicates **identity
of an argument across presentations**, issuing equivalence certificates
(a move sequence whose every intermediate stays green) or obstruction
certificates. Reduction to an equivalence proof is not a demotion —
detection and equivalence-certification are dual.

And the dependency arrow was missing one direction. The design ran L1 →
L3 (temporality gives clean orientations). The missing arrow is **L3 →
L2**: overlapping presentations must be recognised as the same argument
*before* resource accounting, or L2 double-counts.

## ⚠ Two things recorded as open, not resolved

**The Layer 2 vocabulary does not match committed code.** Of the six
terms in play (strength, consistency, coherence,
resemblance-warrant-on-merge, p-residue, p-sufficiency), only
**p-sufficiency** is real — `floor(U) ⊑ acc(v)`. **`p-residue` does not
exist anywhere in the estate.** What is built in `trope-checker@69221ad`
is a six-coordinate `Grade`, nine `p-*` effects, a `Floor`, and a
witness-carrying `Verdict`. This matters because Count 3 read p-residue
as affine resource accounting — a term I could not ground — so the
reachability result should be re-derived against the actual grade
algebra. Also, `check-vocabulary.sh` hard-fails on entries outside the
nine.

**"Knot" is already taken — by a repo doing this exact job.** quandledb
hosts KRL (Knot Resolution Language) and 007 proves a knot composition
monoid with a real `unknot`. More interesting than a clash: QuandleDB
describes itself as *"the invariant/equivalence + semantic-identity
face"* — the charter this ADR assigns to Layer 3.

## Verification

- **Quote check**: the canonical `(statement …)` is reproduced verbatim
— diffed character-by-character against `0-AI-MANIFEST.a2ml`, identical.
- `asciidoctor -o /dev/null docs/decisions/*.adoc` — parses clean, no
warnings.
- `reuse lint` — none of the new files flagged; missing-info count
unchanged from baseline (1, pre-existing).
- Every cross-repo `file:line` citation re-resolved against a recorded
SHA.
- No code touched.

Note: `trope-checker` has two working copies at different commits
(`hyper-repos` @ `69221ad`, `_TROPES _SET` @ `680fc20`). Citations use
the former and record the SHA.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
@@ -0,0 +1,704 @@
// SPDX-License-Identifier: CC-BY-SA-4.0
…#60)

Stacked on #53. Retargets to `main` automatically when that merges.

## The correction that drove this

The **three-layer claim checker** is this repository's principal subject
— and it was barely documented, while the AffineScript same-cube example
was over-represented relative to it. `faces` is one profile of six, a
lens onto a corpus that lives elsewhere: a good demonstration of the
idea in miniature, not the subject. This PR fixes that proportion.

## Human

**`ARCHITECTURE.md` was template boilerplate** describing `src/`,
`tests/`, `config/` and `README.adoc` — none of which match this repo —
duplicating the real `docs/ARCHITECTURE.md`, and saying *nothing
whatever* about the three layers. (Closed PR #58 independently spotted
this as "drop false ARCHITECTURE"; it did not land, so the problem
persisted.)

Rewritten in two parts: **Part I** the layer architecture — Layer 1
(`type`) and what the diode actually buys, with its three open problems
(epistemic vs ontic clock, partial-order time, composition-forgery as
holonomy); Layer 2 (`trope`) as actually built in
`trope-checker`/`hermeneia`, affine with a guarded contraction rule;
Layer 3 (`sortal`), the doubling attack, and the `L3 -> L2` dependency
arrow. **Part II** the shipping extractor/classifier.

**`README.md` had drifted from the tool.** It said every face's lowering
"must normalise to the same canonical text"; the verifier now compiles
each face to typed-wasm and compares `sha256`, keeping text diffs as a
diagnostic only. The README asserted something that held on both sides
of a transition while no longer meaning the same thing — **this
repository's own failure mode, turned inward.**

## Machine

`0-AI-MANIFEST.a2ml`: real structure (it omitted `docs/decisions/`,
`proofs/`, `examples/`, `src/ui/`); new `(architecture …)` block with
the three layers, dependency order, doubling attack, decided-not-built
status and the `L1`/`L2`/`L3` numbering hazard; new `(debt …)` block;
ADR-0001 in milestones. **The do-not-paraphrase `(core-idea)` block is
untouched.**

**Wiki** was a one-line stub → `Home` + `Three-Layers` (pushed
separately — wikis are their own git repo).

## Debt — new `docs/DEBT.md`

| | Dimension | Open | Worst |
|---|---|---|---|
| A | Architecture | 3 | **HIGH** |
| C | CI/CD | 3 | MEDIUM |
| L | Licence | 3 | MEDIUM |
| D | Docs | 3 | MEDIUM |
| P | Proof | 2 | MEDIUM |
| K | Code | 1 | LOW |

**The headline finding went stale mid-audit, and that is recorded rather
than hidden.** C1 was filed CRITICAL — no lockfile, every workflow
`startup_failure` on every branch, `main` never green. **PR #56 fixed it
while this was being written.** Re-measured: 10 workflows green on
`main` including Rust CI, CodeQL and Secret Scanner. C1 is now RESOLVED
with the history kept, and the residue split into C2 (Scorecard still
`startup_failure`), C3 (two workflows failing on *content*, untriaged —
invisible until the lockfile landed), C4 (no proof gate).

Other findings:

- **L1** — GitHub reported **no licence**. Cause found: `LICENSE`
deviated from canonical MPL-2.0 by a **trailing space** (line 38) and
`http` vs `https` (line 360). Replaced with the canonical text.
- **A1–A3** — Layer 1 has no substrate anywhere; Layer 3's equivalence
side does not exist; Layer 2's vocabulary does not match its
implementation (**`p-residue` exists in no repository**).
- **P1** — `SameCube.agda` is genuinely good (`--safe`, zero postulates,
zero holes) but **ungated**.

`docs/tech-debt-2026-05-26.md`'s "RESOLVED" banner was **partly wrong**
and is corrected in place: licence was not actually detected, and proof
debt was half closed.

## Repo metadata (applied via API, not in this diff)

- **Description** was `Dual-use claim-grounder (Phase A in progress)` —
vague and stale. Now states what the tool does and its governance role.
- **Topics** were `development, hyperpolymath, open-source, rust,
software, tooling` — owner name, generic words, and a language GitHub
detects itself. Replaced with eight concept-level ones:
`claim-checking`, `argumentation`, `semantic-drift`, `provenance`,
`cross-domain-equivalence`, `architecture-decision-records`,
`formal-methods`, `static-analysis`.

## Verification

- `0-AI-MANIFEST.a2ml` parens and quotes balance
- `reuse lint` missing-info count **unchanged** from baseline (1,
pre-existing) — verified by stashing and re-running
- every path cited in `ARCHITECTURE.md` exists on disk
- CI state re-measured per workflow before publishing the claim
- no code touched

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
@hyperpolymath
hyperpolymath merged commit 31cedad into main Aug 7, 2026
28 of 29 checks passed
@hyperpolymath
hyperpolymath deleted the docs/state-the-idea branch August 7, 2026 12:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gitar-approved Added by Gitar

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants