Skip to content

Remove the extracted lithoglyph tree — it existed in two places - #58

Merged
hyperpolymath merged 1 commit into
mainfrom
chore/submodule-extracted-dbs
Jul 27, 2026
Merged

Remove the extracted lithoglyph tree — it existed in two places#58
hyperpolymath merged 1 commit into
mainfrom
chore/submodule-extracted-dbs

Conversation

@hyperpolymath

@hyperpolymath hyperpolymath commented Jul 27, 2026

Copy link
Copy Markdown
Owner

Closes the defect the extraction existed to fix. hyperpolymath/lithoglyph#4 merged on 2026-07-21, but the 819 files it imported were left here as well, so the whole database existed twice with no canonical copy.

1878 → 1058 tracked files. lithoglyph/ is now a pointer README.

Nothing is lost, and that is checkable

Every removed file is preserved at its original path in the annotated tag split-history/lithoglyph, which is on origin:

$ git ls-tree -r split-history/lithoglyph --name-only | wc -l
819
$ git checkout split-history/lithoglyph -- <path>   # recover anything

⚠️ Never prune that tag, the _split_lithoglyph branch, or their glyphbase/gnpl equivalents. The imports into the standalone repos were squash merges, so these refs hold the only granular history that exists.

Destinations verified live before removing: lithoglyph 700KB, glyphbase 238KB, gnpl 330KB — all populated. The nested lithoglyph/glyphbase/ (130 files) and lithoglyph/gql-dt/ (125) were confirmed byte-identical to their own repos during the #4 import. lithoglyph/core-factor/gql* was superseded rather than migrated (see #56) and is not "pending".

Documentation corrected, rather than the code bent to fit it

REGISTRY.adoc claimed "verisimdb and lithoglyph are git submodules of this coordination repo". That was never true of eithergit ls-files --stage shows both as ordinary tracked files, not gitlinks, and no .gitmodules has ever existed here.

I was going to add submodules to make the sentence true. That would force submodules: recursive into every workflow touching the tree — real cost for a coordination repo that only needs to point at its members. The sentence now says what the repo does. verisimdb/ is still 714 tracked files awaiting the same extraction.

CLAUDE.md's transitional note listed lithoglyph/ among directories "being extracted". It's done; the note says so and points at the tag.

placement-guard: lithoglyph/ promoted from warning to error

The GRANDFATHER list exempts legacy database directories from failing the guard — they warn instead — because they held content not yet moved. lithoglyph/ no longer does.

Leaving it grandfathered would mean a new file there raised only a warning, letting the duplication this PR removes grow back silently. It's out of the list, so it now fails. Move each directory out as its extraction completes.

Also: .github/workflows/instant-sync.yml removed

Malformed YAML on origin/main before this branchexpected <block end>, but found '-' at line 15 — so it produced a startup_failure on every push and no check run. It is also one of the two workflows rsr-template-repo deleted upstream in 09f94c5. Dead and unparseable.

All 12 remaining workflows parse.

Related: the stuck rebase and the mangled remote

Both resolved outside this PR, on the local checkout:

  • Origin was mangled to git@github.com:hyperpolymath/lithoglyph-reassembly.git — a repo that does not exist. That was a worktree name leaking into .git/config, which worktrees share with the main checkout. Reset to nextgen-databases (HTTPS — SSH port 22 is unreachable from this host).
  • An interactive rebase was stuck mid-flight, conflicted on lithoglyph/MOVED.md, with three "Mistral Vibe" sweeps queued. Aborted, and main reset to origin/main. All four commits are preserved on backup/sweeps-mistral-vibe-nextgen.

The sweeps were re-measured rather than trusted, and each confirmed the earlier ruling to drop them: sweep2 adds a mise.toml with 31 latest pins; sweep3 adds a 661-line AGPL-3.0 text to an MPL-2.0 repo; sweep4 has real files but names metadatastician as owner/funding in a hyperpolymath repo, plus an ARCHITECTURE.md describing a layout this project doesn't have. 2393737 is superseded by #56.

🤖 Generated with Claude Code


CI: 3 failures, all pre-existing — verified, not assumed

governance / Language / package anti-pattern policy, Validate K9 contracts and Validate A2ML manifests all fail on this branch. All three already fail on main — checked directly with gh run list --branch main — so none is a regression from this PR.

The anti-pattern gate is the interesting one, and this PR substantially improves it without closing it:

.res files tracked count
origin/main (before) 140
this branch (after) 44

96 of the 140 were the duplicated Lithoglyph copy. What remains is verisimdb/ (40) and typeql-experimental/ (4) — both still-pending extractions, both out of scope here. Also remaining: 0 .ts/.tsx, 1 package.json.

So the gate stays red, but for a 69%-smaller and correctly-attributed reason. It closes when verisimdb/ gets the same treatment this PR gives lithoglyph/.

The log also shows the gate's own AffineScript drift-check is inert on the runner — ::notice::affinescript compiler unavailable on runner — skipping drift check — which is the same affinescript#56 blocker recorded in RESCRIPT-TS-AFFINESCRIPT-MIGRATION.adoc.

Closes the defect the extraction existed to fix. hyperpolymath/lithoglyph#4
merged on 2026-07-21, but the 819 files it imported were left here as well, so
the whole database existed twice with no canonical copy.

  1878 -> 1058 tracked files. lithoglyph/ is now a pointer README.

== Nothing is lost, and that is checkable

Every removed file is preserved at its original path in the annotated tag
`split-history/lithoglyph`, which is on origin:

    $ git ls-tree -r split-history/lithoglyph --name-only | wc -l
    819

Recover any file with `git checkout split-history/lithoglyph -- <path>`. Never
prune that tag, the `_split_lithoglyph` branch, or their glyphbase/gnpl
equivalents — the imports into the standalone repos were squash merges, so these
refs hold the only granular history that exists.

Destinations verified live before removing: lithoglyph 700KB, glyphbase 238KB,
gnpl 330KB, all populated. The nested lithoglyph/glyphbase/ (130 files) and
lithoglyph/gql-dt/ (125) were confirmed byte-identical to their own repos during
the #4 import. lithoglyph/core-factor/gql* was superseded rather than migrated —
see #56 — and is not "pending".

== Documentation corrected rather than the code bent to fit it

REGISTRY.adoc claimed "verisimdb and lithoglyph are git submodules of this
coordination repo". That was never true of either: both were ordinary tracked
files, not gitlinks, and no .gitmodules has ever existed here. Rather than add
submodule machinery to make a stale sentence true — which would force
`submodules: recursive` into every workflow touching the tree — the sentence now
says what the repo does. verisimdb/ is still 714 tracked files awaiting the same
extraction.

CLAUDE.md's transitional note listed lithoglyph/ among directories "being
extracted". It is done; the note now says so and points at the tag.

== placement-guard: lithoglyph/ promoted from warning to error

The GRANDFATHER list exempted legacy database directories from failing the
guard, warning instead, because they held content not yet moved. lithoglyph/ no
longer does. Leaving it grandfathered would mean a new file there raised only a
warning — letting the duplication this commit removes grow back silently. It is
out of the list, so it now fails. Move each directory out as its extraction
completes.

== Also removed: .github/workflows/instant-sync.yml

Malformed YAML on origin/main before this branch — `expected <block end>, but
found '-'` at line 15 — so it produced a startup_failure on every push and no
check run. It is also one of the two workflows rsr-template-repo deleted
upstream in 09f94c5. Dead and unparseable; removed. All 12 remaining workflows
parse.
@hyperpolymath
hyperpolymath merged commit c42ed14 into main Jul 27, 2026
20 of 23 checks passed
@hyperpolymath
hyperpolymath deleted the chore/submodule-extracted-dbs branch July 27, 2026 13:30
hyperpolymath added a commit that referenced this pull request Jul 27, 2026
…ml (#59)

Follow-up to #58, which merged while these were in flight.

## 1. Both dogfood validators pointed at repositories that do not exist

```
##[error]Unable to resolve action hyperpolymath/k9-validate-action,
         repository not found
```

`gh api` returns **404** for both `hyperpolymath/k9-validate-action` and
`hyperpolymath/a2ml-validate-action`. Neither has ever existed, so
**neither job has ever validated anything** — both failed at *Set up
job*, pinned to a SHA in a repository that isn't there.

The canonical implementations are RSR template files. Installed from
`rsr-template-repo` `origin/main` (byte-identical to the copies
lithoglyph already carries) and wired in directly — they take the same
`INPUT_PATH`/`INPUT_STRICT` interface the actions were passed.

| validator | result |
|---|---|
| A2ML | 0 errors, 3 warnings → **pass** |
| K9 | 1 error → **a real finding**, see below |

## 2. The K9 error was a validator limitation, not a bad file

```
verisimdb/connectors/test-infra/deploy.k9.ncl:1
Pedigree block missing 'name' field
```

The file is **correct**. It builds the pedigree separately and attaches
it:

```nickel
let component_pedigree = {
  metadata = { name = "verisimdb-test-infra", version = "0.1.0", ... },
} in
{ pedigree = component_pedigree, ... }
```

The validator is line-oriented: it starts brace-counting at `pedigree =
...`, but `pedigree = component_pedigree,` carries **no brace**, so
depth never rises, the block reads as empty and `name` is invisible.

Rewriting the file to satisfy a grep would have been the wrong direction
— and especially here: this is a **Hunt-level** component that spawns
seven database containers and binds eleven ports. It's the last file to
restructure casually.

So the validator now resolves a **one-hop** `let` indirection. Proved it
fixes the scanner rather than blinding it:

| | |
|---|---|
| name present | 0 errors, exit 0 |
| name removed | `Pedigree block missing 'name' field`, **exit 1** |

One hop only — chasing aliases needs a real evaluator, and `nickel
typecheck` is unavailable because the mandatory `K9!` magic line isn't
valid Nickel. **Belongs upstream in `rsr-template-repo`**; the same fix
is applied to lithoglyph's copy in its PR #9 so the two stay identical
(`02845a4c`).

## 3. `boj-build.yml` used `secrets` in a job-level `if:` —
startup_failure

Every push produced a **0-second failed run named after the file path**
rather than the workflow's `name:`, with no jobs and no check run.

```yaml
if: ${{ vars.BOJ_SERVER_URL != '' || secrets.BOJ_SERVER_URL != '' }}
```

**`secrets` is not available in a job-level conditional** — GitHub
exposes that context only in `env:`, `with:` and step-level expressions.
The file is valid YAML (`yaml.safe_load` parses it happily), so nothing
local caught it and the workflow linter didn't either. Actions rejected
the whole file at load time.

Pre-existing on `main`, not introduced by #58.

The guard was redundant as well as fatal — the step already does `if [
-z "$BOJ_URL" ]; then … exit 0`, and resolves the secret in `env:` where
that context is legal. The workflow's own header calls it "a no-op if
BOJ_SERVER_URL is not set"; now it actually is one.

## 4. `verisimdb/playground/package.json` removed

`deno.json` sits beside it carrying every task and dependency, with
`node build.mjs` correctly rewritten to `deno run -A build.mjs`. Nothing
references the `package.json`. npm manifests are banned estate-wide.

## Verification

| Check | Result |
|---|---|
| `validate-a2ml.sh` | **PASS** (was: job never ran) |
| `validate-k9.sh` | **PASS** (was: job never ran) |
| K9 still fails on a real fault | **exit 1** ✅ |
| `boj-build.yml` parses + no `secrets` in job `if:` | **PASS** |
| Actions resolving | **all** |
| `package.json` / `.ts` / `.tsx` | **0 / 0 / 0** |

## Still red, and honestly so

**`Language / package anti-pattern policy`** — 44 `.res` files remain:
`verisimdb/` (40) and `typeql-experimental/` (4). Both are legacy
directories awaiting the same extraction `lithoglyph/` just completed,
and porting their ReScript is the AffineScript migration proper, blocked
upstream on `affinescript#56`.

#58 already took that count from **140 → 44** by removing the duplicated
Lithoglyph tree. The gate is correct; the work it asks for is a project,
not a fix.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant