Spaces:
Running
Running
| // SPDX-License-Identifier: Apache-2.0 | |
| // © 2026 Lutar, Stephen P. — SZL Holdings | |
| // ORCID: 0009-0001-0110-4173 | |
| // | |
| // Layer 6 — a11oy policy gate for LambdaCategoryComposability (TH4) | |
| // | |
| // *** STAGED — ADVISORY ONLY *** | |
| // Lean status: conjectured (pending Lutar/LaxFunctor.lean) | |
| // This gate issues warnings but does NOT block production by default. | |
| // | |
| // Policy rationale: | |
| // The Λ-Category is a monoidal category; the gate function Λ is a monoidal | |
| // functor. Gate composition is a natural transformation. TH1 (composability) | |
| // follows as a corollary. This gate validates that parallel receipt evaluation | |
| // (monoidal product) preserves the gate semantics. | |
| // | |
| // Lean theorem cited: `lambdaCategoryComposability` (TH4) | |
| // Lean file: Lutar/LaxFunctor.lean (pending — conjectured) | |
| // Lean commit SHA: 1dca00032dfc9aa8559cc6c2e4b63192fcf52371 | |
| // | |
| // References: | |
| // Zenodo: https://doi.org/10.5281/zenodo.20119582 | |
| // INNOVATIONS.md §4 TH4: Λ-Category composability theorem | |
| export interface LambdaCategoryComposabilityGateConfig { | |
| /** If true, deny on composition failure. Default: false (advisory). */ | |
| enforced?: boolean; | |
| } | |
| export interface LambdaCategoryComposabilityGateOpts { | |
| /** Λ score of receipt r1. */ | |
| lambdaR1: number; | |
| /** Λ score of receipt r2. */ | |
| lambdaR2: number; | |
| /** Λ score of composed receipt r1⊗r2 (monoidal product). */ | |
| lambdaComposed: number; | |
| } | |
| export interface LambdaCategoryComposabilityDecision { | |
| allow: boolean; | |
| rationale: string; | |
| formula: string; | |
| leanTheorem: string; | |
| leanFile: string; | |
| leanCommitSha: string; | |
| severity: 'advisory' | 'error'; | |
| staged: boolean; | |
| monoidalValid: boolean; | |
| lambdaScore: number; | |
| } | |
| const LEAN_THEOREM = "lambdaCategoryComposability"; | |
| const LEAN_FILE = "Lutar/LaxFunctor.lean"; | |
| const LEAN_COMMIT = "1dca00032dfc9aa8559cc6c2e4b63192fcf52371"; | |
| // ── Inline formula ──────────────────────────────────────────────────────────── | |
| // TH4: Λ monoidal: Λ(r1⊗r2) ≥ min(Λ(r1), Λ(r2)) [lax functor inequality] | |
| export function lambdaCategoryComposabilityGate( | |
| config: LambdaCategoryComposabilityGateConfig = {} | |
| ): (opts: LambdaCategoryComposabilityGateOpts) => LambdaCategoryComposabilityDecision { | |
| const enforced = config.enforced ?? false; | |
| return function gate(opts: LambdaCategoryComposabilityGateOpts): LambdaCategoryComposabilityDecision { | |
| const { lambdaR1, lambdaR2, lambdaComposed } = opts; | |
| for (const [name, v] of [['lambdaR1', lambdaR1], ['lambdaR2', lambdaR2], ['lambdaComposed', lambdaComposed]] as [string, number][]) { | |
| if (!Number.isFinite(v) || v < 0 || v > 1) throw new Error(`LambdaCategoryComposabilityGate: ${name} must be in [0,1]`); | |
| } | |
| // Lax functor: composed ≥ min(r1, r2) (may need additional witness for strict equality) | |
| const minComponent = Math.min(lambdaR1, lambdaR2); | |
| const monoidalValid = lambdaComposed >= minComponent - 1e-9; | |
| const severity = enforced ? 'error' as const : 'advisory' as const; | |
| const allow = monoidalValid || !enforced; | |
| const lambdaScore = lambdaComposed; | |
| const stagedNote = enforced ? '' : ' [STAGED-ADVISORY]'; | |
| const rationale = monoidalValid | |
| ? `LambdaCategoryComposability (TH4): Λ(r1⊗r2)=${lambdaComposed.toFixed(4)} ≥ min(${lambdaR1.toFixed(4)},${lambdaR2.toFixed(4)})=${minComponent.toFixed(4)}. Monoidal functor property holds.${stagedNote} Lean: ${LEAN_THEOREM} @${LEAN_COMMIT.slice(0, 12)}` | |
| : `LambdaCategoryComposability (TH4): Λ(composed)=${lambdaComposed.toFixed(4)} < min=${minComponent.toFixed(4)} — lax functor violation.${stagedNote} Lean: ${LEAN_THEOREM} @${LEAN_COMMIT.slice(0, 12)}`; | |
| return { allow, rationale, formula: "LambdaCategoryComposability", leanTheorem: LEAN_THEOREM, leanFile: LEAN_FILE, leanCommitSha: LEAN_COMMIT, severity, staged: !enforced, monoidalValid, lambdaScore }; | |
| }; | |
| } | |