Skip to content

docs+build: re-derive status from the code (λδ, bridge, CI, PWA) and fix the Justfile#46

Merged
hyperpolymath merged 2 commits into
mainfrom
topology-refresh
Jul 17, 2026
Merged

docs+build: re-derive status from the code (λδ, bridge, CI, PWA) and fix the Justfile#46
hyperpolymath merged 2 commits into
mainfrom
topology-refresh

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Why

TOPOLOGY.md predated the three LambdaDelta merges (#35, #36, #43) and never mentioned λδ. Because it is the status source, every downstream doc inherited its stale figures — including the wiki landed in #45. This re-derives the countable facts from the tree and corrects the cascade, then fixes the Justfile gaps found along the way.

TOPOLOGY was understating the project on six axes

Claim Reality
λδ absent entirely Built, not planned — reader, value model, evaluator + Budget sandbox, hygienic macros, multimethods, prelude, host seam. ~3,400 LOC excl. tests, ~64% of the core, its largest subsystem. Now its own dashboard row
"12 passing unit tests" 90 (81 unit + 3 exchange + 2 golden + 2 property + 2 doc)
WASM bridge "40%, in progress" Wired and exercisedMain.res loads the wasm at boot, WasmStore binds 21 of 31 exports, ui-ci runs a TEA↔WASM contract test against the real bundle
CI "10%, landing in a parallel workstream" rust-ci.yml + ui-ci.yml load-bearing since #22, SHA-pinned, green on main
Web/PWA "no service worker yet (planned)" Service worker + webmanifest + icon ship and are registered (Main.res:88, #27)
UI "no drag-and-drop; GraphView placeholder" Note drag implemented (View.res:397); GraphView renders a circular layout

Overall ~35% → ~65%. The critical path has moved off the WASM bridge onto the UI surface: 10 exports are unbound in ReScript, including both λδ entry points (lambdadeltaEval, evalLambdadelta) — the substrate is reachable from JS but nothing calls it.

Also corrects a mixed-basis error I introduced in #45: λδ was reported as "~76% of the core" by dividing 4,049 LOC (with tests) by 5,344 (without). Like-for-like it is 3,407/5,344 = ~64%.

Justfile

  • just test could not work on a clean checkout — the UI tests import generated *.res.js and the wasm bindings, so type-check failed with 4 TS2307 errors. Now test → build → build-wasm. Warm no-op costs ~0.45s, so it is not a tax on the inner loop; added test-rust for the Rust-only loop.
  • just check was weaker than CI (no --all-targets, no --features wasm, ran from core/) — it could pass locally while CI failed. Now mirrors rust-ci.yml exactly.
  • just doctor ignored the wasm toolchain — the one thing that actually blocks the browser build. Now checks the wasm32 target and compares the wasm-bindgen CLI against Cargo.lock, printing the exact fix command on drift.
  • crg-grade and crg-badge were dead on arrival — Make-style $$(...) under just/sh expanded $$ to the shell PID, so ( was a syntax error. They failed 100% of the time. Rewritten as bash shebang recipes.

Verification

  • just check — pass (now compiles the wasm feature, which the old one never did)
  • just test from a fully cleaned tree (no web/wasm, no *.res.js) — rebuilds and passes 90 Rust + 10 UI
  • just doctor, crg-grade (→ D), crg-badge — all run; doctor's FAIL path verified by hiding wasm-bindgen from PATH
  • asciidoctor renders README/ROADMAP/QUICKSTART-DEV clean; just wiki-sync dry still previews correctly

Deliberately not done — needs your call

  • READINESS.md grade D is probably stale. All three Path to C criteria now appear met (product CI on every PR ✅, UI tests in CI ✅, WASM bridge built + smoke-tested ✅). The grade is assigned by audit, so I corrected the facts and flagged a re-audit rather than self-promoting. just crg-badge publishes that letter, so the badge is currently understating the project.
  • must-spdx-headers is a broken gate (pre-existing, untouched here). It runs find . | head -20, so it checks an arbitrary, readdir-order-dependent fifth of the tree and walks vendored node_modules/. It currently fails on @rescript/react's own .res files — every tracked source file does have SPDX. Worse, contractile.just has drifted from its source: contractiles/must/Mustfile.a2ml contains no spdx-headers rule at all, and its no-hardcoded-paths rule (severity: critical) is missing from the generated file. The contractile tool isn't installed to regenerate, and this is your standards ecosystem — so I left it alone.

🤖 Generated with Claude Code

hyperpolymath and others added 2 commits July 17, 2026 00:18
… dead recipes

A clean checkout could not go straight to `just test`: the UI tests import
generated *.res.js and the wasm bindings, so type-checking failed with four
TS2307 errors. Declare the real dependencies (test -> build -> build-wasm).
Both builds are incremental; a warm no-op costs ~0.45s, so the chain is not a
tax on the inner loop. Add `test-rust` for the Rust-only loop.

`just check` ran a weaker clippy than rust-ci.yml (no --all-targets, no
--features wasm, and from core/ rather than the workspace root), so it could
pass locally while CI failed. Mirror the workflow exactly.

`just doctor` did not check the wasm toolchain — the one thing that actually
blocks the browser build. Check the wasm32 target and compare the wasm-bindgen
CLI against the wasm-bindgen crate in Cargo.lock, since a version mismatch
fails the build with a confusing schema error; report the exact fix command.

`crg-grade` and `crg-badge` were dead on arrival: they used Make-style `$$(...)`,
but just passes `$` through unescaped, so `$$` expanded to the shell PID and
`(` was a syntax error under sh. Both failed 100% of the time. Rewrite as bash
shebang recipes, matching the wiki-sync style already in this file.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…I, and PWA

TOPOLOGY.md predated the three LambdaDelta merges (#35, #36, #43) and never
mentioned λδ at all. Because it is the status source, every downstream doc
inherited its figures — including the wiki landed in #45. Re-derive the
countable facts from the tree and correct the cascade.

TOPOLOGY was understating the project on six axes:

- λδ substrate absent entirely. It is built, not planned: reader, value model,
  evaluator + Budget sandbox, hygienic macros, multimethods, prelude, and the
  notebook host seam — ~3,400 LOC excl. tests, ~64% of the core, its largest
  subsystem. Added as its own dashboard row.
- "12 passing unit tests" -> 90 (81 unit + 3 exchange + 2 golden + 2 property
  + 2 doc).
- WASM bridge "40%, in progress" -> wired and exercised. Main.res loads the
  wasm at boot, WasmStore binds 21 of 31 exports, and ui-ci runs a TEA<->WASM
  contract test against the real bundle.
- CI "10%, landing in a parallel workstream" -> rust-ci.yml and ui-ci.yml have
  been load-bearing since #22, SHA-pinned and green on main.
- Web/PWA "no service worker yet (planned)" -> service worker, webmanifest and
  icon ship and are registered in Main.res (#27).
- UI "no drag-and-drop; GraphView placeholder" -> note drag is implemented and
  GraphView renders a circular layout.

Overall ~35% -> ~65%. The critical path has moved off the WASM bridge and onto
the UI surface: 10 exports are unbound in ReScript, including both λδ entry
points, so the substrate is reachable from JS but nothing calls it.

Also corrects a mixed-basis error this author introduced in #45: λδ was
reported as "~76% of the core" by dividing 4,049 LOC (with tests) by 5,344
(without). Like-for-like it is 3,407/5,344 = ~64%.

READINESS: the facts were wrong (12 tests, "no UI tests yet", "product CI
landing"). Corrected. All three Path-to-C criteria now appear met; the grade is
assigned by audit, so it is left at D with a re-audit flag rather than
self-promoted — `just crg-badge` publishes that letter.

ROADMAP: every item in the "current sequencing" block has shipped. Marked done
and replaced with the actual next sequencing.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@sonarqubecloud

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown

🔍 Hypatia Security Scan

Findings: 68 issues detected

Severity Count
🔴 Critical 1
🟠 High 37
🟡 Medium 30

⚠️ Action Required: Critical security issues found!

View findings
[
  {
    "reason": "Issue in scorecard.yml",
    "type": "missing_workflow",
    "file": "scorecard.yml",
    "action": "create",
    "rule_module": "workflow_audit",
    "severity": "high"
  },
  {
    "reason": "Issue in boj-build.yml",
    "type": "missing_timeout_minutes",
    "file": "boj-build.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in casket-pages.yml",
    "type": "missing_timeout_minutes",
    "file": "casket-pages.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in casket-pages.yml",
    "type": "missing_timeout_minutes",
    "file": "casket-pages.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in codeql.yml",
    "type": "missing_timeout_minutes",
    "file": "codeql.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  }
]

Powered by Hypatia Neurosymbolic CI/CD Intelligence

@hyperpolymath
hyperpolymath marked this pull request as ready for review July 17, 2026 04:11
@hyperpolymath
hyperpolymath merged commit c7f6d83 into main Jul 17, 2026
27 checks passed
@hyperpolymath
hyperpolymath deleted the topology-refresh branch July 17, 2026 04:11
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