The self-hosted Actions runner is aarch64 (Apple M1 Linux); the CI toolchain
assumed x86_64, so every workflow has been failing at environment setup — on
main and every PR, not a code regression.
Two root causes, both arm64:
* pyrage==1.2.3 publishes no linux-aarch64 wheel, so uv fell back to an sdist
build and modern uv rejects pyrage's own pyproject.toml ("[project] without
project.version") — "TOML parse error at line 5". Bump to pyrage==1.2.4, the
first release shipping a cp39-abi3 manylinux_2_17_aarch64 wheel (x86_64 and
macOS wheels retained). No source build -> no parse error. Fixes smoke,
full-pytest, contemplation, ratify-proposal.
Verified: age/X25519 encrypt+decrypt round-trips on 1.2.4, and the committed
sealed-holdout artifacts (sealed under 1.2.3) still decrypt
(tests/test_holdout_encryption.py, tests/test_adr_0119_7_sealed_gsm8k.py —
7 passed). No ADR pins the patch version; only a size-tally doc referenced
it (updated).
* lane-shas used actions/setup-python@v5, which has no arm64 build for the
pinned 3.12.13 ("version '3.12.13' with architecture 'arm64' was not found"
-> "python: command not found"). Switch to astral-sh/setup-uv@v5 + uv (uv
provisions arm64 Python reliably), matching the other four workflows.
Files: pyproject.toml (pyrage 1.2.3->1.2.4), docs/model_dependency_size_tally.md,
.github/workflows/lane-shas.yml. uv.lock is gitignored (uv re-resolves per run).
Separate pre-existing issue (NOT addressed here): with setup fixed, lane-shas
now reaches its SHA check, where 2 demo lanes (demo_composition, public_demo)
drift from their pins. This is content drift on main, unrelated to the toolchain
(public_demo is a known wall-clock/env flake). Left for an explicit re-pin vs
degate decision rather than silently re-pinning.
Finding #20 (Super-Blueprint §3.2). surprise_residual was Euclidean Gram-Schmidt
on flat 32-coefficient vectors — metric-blind (it ignored the (+,+,+,+,-)
signature and the blade grade structure), so "inside the admissible span" was
judged by the wrong geometry.
Operator math (core/physics/surprise.py):
- Exact metric-orthogonal projection: solve the normal equations G c = r
(G_ij = cga_inner(b_i,b_j), r_i = cga_inner(b_i,x)) via lstsq, under cga_inner
(32-vec) / eta (5-vec).
- Fail-closed (typed SurpriseResidualError) on a metric-degenerate span, keyed on
rank(G) < rank(B) — a null direction with no reciprocal (lone n_o). Refines the
literal "rank(G) < k": mere linear dependence among non-null columns is admitted
(lstsq projects onto the span), so a redundant live basis [1, source] and the
non-degenerate pair {n_o, n_inf} are admitted; only a lone n_o is refused. The
disclosure names the Gram null-space direction (not just zero-diagonal columns).
- Reconciled productivity polarity: productive_transfer = low Procrustes AND low
surprise (was `sur_norm >= 0.0`, always true). High surprise routes to discovery
(split follow-up). Corrects the ledger's transfer/discovery conflation.
Adversarial verification (3 independent lenses) found, and this fixes:
- HIGH soundness hole: sur_norm was the reversion pseudo-norm, which VANISHES on
a nonzero metric-null residual (the n_o/n_inf light cone) -> false-zero surprise
-> an out-of-span light-cone probe was wrongly admitted as in-span. Now the
DEFINITE (Euclidean) norm of the residual: the projection stays metric-exact,
the magnitude is 0 iff nothing is unexplained.
- HIGH regression: the analogical-transfer harness called surprise_residual
OUTSIDE its try/except, so a degenerate source crashed the whole run. Now
guarded: records a refused case and continues.
- grade-support `allowed` -> exact-nonzero (removes a spurious-leak edge under
coefficient amplification of sub-tolerance grade dust).
DiscoveryCandidate wiring into the contemplation loop is split to its own
follow-up (a distinct cross-cutting surface). Off-serving (nothing in
serving/runtime imports core.physics.*). Tests: 15 behavioral tests
(metric-vs-Euclidean divergence, null-cone regression, null refusal +
combination-degenerate disclosure, 5-vector branch, polarity); 139-test physics
sweep green; ruff clean.
The Super-Blueprint §3.3 "grade-5 pseudoscalar alignment anchor" is
mathematically vacuous in odd-dimensional Cl(4,1) and cannot be built as
specified (3-agent R&D convergence — Opus/Grok/Terra — ratified):
- I₅ is central in odd dim → V·I₅·Ṽ = ±I₅ for every versor; orientation is
invariant by construction (nothing to block).
- Field-state versors are even → F[31] ≡ 0; the gated ⟨F·F̃⟩₅ = 0 for the
source and target of every transition. The gate compares 0 == 0.
- The "even-versor parity gate" repair is equally vacuous (even subalgebra is
closed under the sandwich; odd-grade mass ≡ 0 on the sanctioned path).
Removes the namesake rather than leaving it masking an absence:
- Delete _PSEUDOSCALAR_IDX + all F[31] reads (dead `ps` history element and
CoherenceResidual.pseudoscalar — both structural zeros).
- Rename telemetry channel pseudoscalar_floor → autonomy_floor (it was always
self.floor, the earned-autonomy ceiling).
- Bump telemetry schema goldtether_coherence_v1 → v2 (shape changed).
The integrity-anchor role is subsumed by versor closure + GoldTether harmonized
residual (#24) + biography/identity holonomy. Ledger §5 rewritten with the
vacuity proof, subsumption, and the reusable "would this gate ever fire on the
sanctioned construction path?" meta-criterion.
No serving/runtime path touched (core.physics.* is off-serving). Tests: 33 pass
/ 1 xfail (Cartan #2) across goldtether + fidelity + miner + transfer suites;
ruff clean.
Master honest ledger for the ADR-0238/0239/0240 skeleton: per-operator
blueprint spec, actual landed code, precise gap, reproducible evidence, and
what 'done right' requires. Tracks follow-ups #16-#21. Replaces the Mastery
Report framing with a verifiable spec-vs-impl record.
- Fixes skeptic gaps on empty fields in some smokes and fixture mismatch.
- Targeted tests green post-fix.
- Fresh captures have required non-empty data + documented skips.
- Add LexicalResolution dataclass + resolve_entry() in chat/pack_resolver.py
that returns language, root, morphology_id, gloss, semantic_domains from
he/grc/en packs (lru-cached, first-match, full depth support).
- Extend GraphNode (generate/graph_planner.py) with optional language/root/
morphology_id fields (defaults preserve all call sites). Update as_dict()
to include them conditionally. ground_graph() now propagates depth.
- Generalize enrichment in core/cognition/pipeline.py:
- Per-subject resolution map using depth packs.
- Enrich all matching nodes before ground (subject→node map).
- Pass depth alongside recalled_words to ground_graph().
- Consume depth on articulation side:
- realize_semantic() and render_semantic() now accept/use language+root
for etymological/Logos framing on Hebrew/Greek nodes (e.g. "אמת (Hebrew
root: א-מ-ן) is defined as..."). English unchanged.
- Enrich oov_geometric_context with node_depths for future geometric
anti-unification using roots.
- Extend recognition/connector.py to forward depth from EpistemicNode
paths into GraphNode.
- Add full Hebrew turn test under realizer_grounded_authority flag.
- Update related tests (semantic realizer, OOV context, surface resolution).
- Cleaned legacy type() hack immediately on discovery (hard-stop rule).
All targeted tests green (52+ in slices), broad relevant suite 581 passed.
Invariants preserved: versor only at owned boundaries, exact recall,
immutable updates, no new legacy parsers. 3 pillars upheld.
Work continues tomorrow from this checkpoint.
* feat(bench): add Apple UMA demo package builder
* test(bench): cover Apple UMA demo package builder
* docs(outreach): add Apple UMA demo package runbook
* feat(bench): harden Apple UMA demo package workflow
* feat(workbench-ui): add Apple UMA report card route
* feat(workbench-ui): register Apple UMA route
* feat(workbench-ui): expose Apple UMA route path
* feat(workbench-ui): wire Apple UMA report card into route registry
* test(workbench-ui): fix UI and keyboard tests for Apple UMA route integration
Adds ADR-0230 defining the immutable SealedPracticeTrace evidence
envelope after the Contract/Proof Replay Adapter in the residual-gated
practice loop. Docs-only; authorizes the inert shell implementation PR.