Skip to content

Commit 8457868

Browse files
afflomclaude
andcommitted
Bump version to 0.4.3
Aligns uor-foundation / uor-foundation-sdk with the wiki's post-v0.4.2 amendments — closes every gap the ADR-035 + ADR-036 reframe introduced: - `PrismModel<H, B, A, R>`: tighten the third substrate parameter to `A: AxisTuple + Hasher` (per wiki ADR-036). Resolver-bound ψ-Term fold-rules consume the canonical hash axis type-associatedly via `<A as Hasher>::initial()`. - `prism_model!` / `verb!` ψ-residuals discipline (wiki ADR-035): the closure-body parser rejects ψ-residual emissions at proc-macro expansion. Four rejection paths: * `first_admit(...)` → `Term::FirstAdmit` (search-based admission). * `hash(...)` → `Term::AxisInvocation` (verb-body axis dispatch; hash invocations belong in resolver bodies, ADR-036). * `<=`, `<`, `>=`, `>` → `Term::Application { Le|Lt|Ge|Gt }` (byte-comparison residuals of search-based admission). * `concat(...)` → `Term::Application { Concat }` (byte-shape residual of byte-aware admission). Each rejection emits a closure-violation error citing the ψ-residual category, architectural rationale, and the canonical ψ-chain alternative (G21..G29). `Term::FirstAdmit`, `Term::AxisInvocation`, and `PrimitiveOp::{Le|Lt|Ge|Gt|Concat}` remain in the substrate for non-verb-body contexts (conformance generators, trace replay). - Receiver-shape compatibility checks for G21..G29 (wiki ADR-035): the emitter tags each TermSpec with its produced shape (`PsiShape::Byte` / `SimplicialComplex` / `ChainComplex` / `HomologyGroups` / `CochainComplex` / `CohomologyGroups` / `PostnikovTower` / `HomotopyGroups`) and rejects ψ-chain operand-shape mismatches at expansion. `chain_complex(input)` (byte instead of simplicial-complex) fails with a precise receiver-shape violation pointing at the operand span. - Smoke test corpus updates: * Retired the G16 `FirstAdmitModel` regression (the lowering it pinned is now a closure violation per the ψ-residuals discipline). * Added `prism_model_arenas_carry_zero_psi_residuals_per_adr_035`: walks every Route arena emitted by the prism_model! corpus and asserts no ψ-residual Term variant slipped through. Wiki TR-14 (structured-error requirements: rejected variant + offending span + ψ-residual category + architectural reason + recommended restructuring path) and TR-15 (RESOLVER_ABSENT runtime path as the load-bearing resolver-absence reporter) are both satisfied by the existing surface plus the new rejection paths above. All quality gates green: fmt, clippy --all-targets -D warnings, workspace tests (every crate), conformance (543 passed, 0 failures, 0 gaps). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent bfb6b8a commit 8457868

10 files changed

Lines changed: 605 additions & 384 deletions

File tree

Cargo.lock

Lines changed: 13 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ members = [
1818
resolver = "2"
1919

2020
[workspace.package]
21-
version = "0.4.2"
21+
version = "0.4.3"
2222
edition = "2021"
2323
rust-version = "1.83"
2424
license = "Apache-2.0"

codegen/src/pipeline.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2996,7 +2996,12 @@ fn emit_prism_model(f: &mut RustFile) {
29962996
f.line("where");
29972997
f.line(" H: crate::HostTypes,");
29982998
f.line(" B: crate::HostBounds,");
2999-
f.line(" A: crate::pipeline::AxisTuple,");
2999+
// Wiki ADR-036: the trait's A parameter carries the `AxisTuple + Hasher`
3000+
// composition — `AxisTuple` for substitution-axis dispatch (ADR-030) and
3001+
// `Hasher` so resolver-bound ψ-Term fold-rules per ADR-035 can invoke
3002+
// `<A as Hasher>::initial()` at evaluation time (parameterizes the eight
3003+
// resolver traits per ADR-036).
3004+
f.line(" A: crate::pipeline::AxisTuple + crate::enforcement::Hasher,");
30003005
f.line(" R: crate::pipeline::ResolverTuple,");
30013006
f.line("{");
30023007
f.indented_doc_comment("Input feature type — a [`ConstrainedTypeShape`] impl declared in");

0 commit comments

Comments
 (0)