NOESIS-ΣA constrained inference research prototype
A Python research codebase exploring iterative latent-state updates, typed evidence graphs, configurable output, and witness or cryptographic verification. This review describes source modules and integration gaps; it does not establish an importable end-to-end system, model quality, convergence, or operational readiness.
The repository README makes broad performance, stability, and capability claims that this source review cannot verify. The pinned source tree is not a self-contained end-to-end checkout: core context and verifier paths import missing External modules. The default fused low-rank operator is symmetric and starts at zero, graph extraction is heuristic, the neural emitter checkpoint is absent, and the receipt-creation module imported by the engine is missing. No training run, benchmark, security audit, or test execution is claimed here. The project security policy says not to use it in production.
Test totals are static source counts under Tests/, not passing results. Version is declared as 0.1.0a1 in pyproject.toml. The public project describes its lifecycle as Alpha Experimental in the security policy.
Code organization and integration boundaries
A fixed-width latent-state research pipeline
The source combines a numerical state-update engine, a rule-based typed-graph builder, and a configurable text-output path. It is not evidenced here as a trained token-predicting language model or a demonstrated alternative to an LLM. The native emitter checkpoint is absent; Phase A creates a template summary and the decoder uses its expression or stub fallback. The intended model direction is research scope, not a measured capability claim.
u = normalize(sum_i w_i * z_i)
Each text source is encoded to 128 values, projected to the configured state width with a deterministic seeded matrix, then weight-summed and normalized. The encoder import is missing in this snapshot, so this describes the source implementation, not a runnable input path. fusion.py
Integration contract: ContextBundle.state_dim defaults to 1024 while EngineParams.from_env can default to 128. Callers must set matching dimensions; the reviewed code does not establish one shared default.
OPEN COPYABLE MERMAID SOURCE / SAME SOURCE MAP
flowchart LR
request[Request and evidence bundle]
fusion[Weighted context fusion]
loop[CognitionLoop]
osc[OperatorSplitEngine]
graph[Phase A GraphExtractor]
decoder[Decoder expression or stub fallback]
request -. encoder import absent .-> fusion
fusion -. required import unavailable .-> loop
loop --> osc --> graph --> decoder
subgraph verifier[Separate explicit verifier surface]
witness[Witness and citations] --> spans[SpanStore and restricted AST]
spans -. external security import absent .-> verdict[pass / fail / unsure]
end
artifacts[Optional snapshot signing and encryption]Context assembly
fusion.py defines weighted context projection, but imports External.Sim.Encoders.text_encoder, absent from this source tree. CognitionLoop imports fusion at module load, so the loop is not self-contained in this checkout.
State evolution
The intended loop combines context, a fused low-rank update, an ICNN gradient iteration (or linear damping), and projection. The fused operator initializes at zero; missing External modules block the integrated context path.
Typed graph extraction
The checked tree has no trained extractor checkpoint, so CognitionLoop selects its Phase A rule-based extractor. It builds intent, evidence, plan, reasoning, and output nodes; reasoning uses trajectory-norm extrema and output is template-based.
Output selection
The expression layer renders graph fields. The learned emitter is attempted only when its checkpoint is available; otherwise the decoder uses a fallback renderer or stub. No emitter checkpoint is in this tree.
Witness -> span store and policy -> restricted expression checks -> pass, fail, or unsure. The span store imports a missing encryption module, and this is not shown as an automatic gate on every generated response.
Snapshot save/load supports optional signing and encryption. Receipt verification code exists, but the receipt-creation import used by the engine is absent from this snapshot. Cryptographic verification authenticates signed bytes; it does not prove that an answer is true.
Source links: cognitive loop, context fusion, graph extractor, decoder routing, witness verifier.
The active operator path needs a precise description
OperatorSplitEngine initializes the fused path and conservative_update prefers it. The fused LowRankK uses a symmetric parameterization, so describing the default path as skew-symmetric would be inaccurate. The design vocabulary is related to classical operator-splitting work such as Lions & Mercier (1979), but this finite update has not been shown to meet those algorithms' assumptions or convergence results.OperatorSplitEngine then applies an outer per-sample L2-ball projection after the ICNN iteration. If the ICNN is absent, the source uses a scalar damping fallback.The ICNN iteration stops at the configured iteration limit or a delta tolerance. Without an attached ICNN, code uses y / (1 + 0.1 * dt). This is a discrete implementation description; it is not a proof of convergence, energy descent for the combined update, or bounded error. The missing context-fusion import prevents establishing the complete cognition loop from this tree.
grad Phi(x) = W^T*(a*sigmoid(W*x+b)) + D*x + R*(R^T*x) + c
This follows the ICNN construction family described by Amos, Xu & Kolter (2017); the code structure supports convexity of Phi under its parameterization, not a global stability claim for NOESIS.
Core/OSC/k_lowrank.py implements K = U diag(omega) U^T, which is symmetric. Its omega_raw parameters start at zero, so the initial fused operator is zero. The included EP trainer updates ICNN parameters only; no in-repository optimizer for this fused operator was found in the reviewed snapshot. The separate legacy path constructs K = U V^T - V U^T or antisymmetrizes a dense matrix, but conservative_update prefers the fused operator. Constructor-supplied legacy K_matrix/K_U/K_V therefore do not control this active path. Reconcile the code and description before making stability claims.
For context, antisymmetric recurrent dynamics are studied in Chang et al. (ICLR 2019). That paper is related research, not evidence that the active NOESIS operator has the same properties.
This norm-preservation identity applies to the continuous linear flow with a genuinely skew-symmetric K. The active fused K is symmetric, and the implemented step also includes clipping, an ICNN gradient update, and an outer projection, so the identity is not a stability result for this system. The parameter cap bounds the diagonal coefficients; it bounds ||K|| only while the trainable basis U remains orthonormal, which the checked code does not enforce after updates.
- - Default loop configuration allows up to 100 steps, injects context during the first 8, and only checks for early stopping after step 20; a short caller override can end sooner.
- - No trained graph-extractor checkpoint is present in this snapshot, so CognitionLoop selects Phase A: trajectory-norm extrema create reasoning nodes without semantic decoding of latent vectors.
- - Output nodes are assembled from the request and source counts. A graph support edge is not proof that its text is factually correct.
- - The loop's max-norm “guard” logs a warning; the engine's separate projection is the actual norm-limiting operation.
INTENT stores the request. FACT nodes carry SIM, WKS, or world-model text and a source reference. Optional PLAN nodes come from supplied skill procedures. REASONING nodes mark trajectory-norm extrema. OUTPUT is a count-and-mode template. UNCERTAIN is conditional on confidence below 0.6; the built-in fact defaults are 0.75–0.85.
INTENT → REASONING causes; FACT → REASONING supports (up to two reasoning nodes); REASONING → OUTPUT implies; INTENT → OUTPUT supports; FACT → OUTPUT cites. If plans are supplied, INTENT → PLAN decomposes into and PLAN → OUTPUT implies. These are structural labels created by code, not semantic proofs.
The source also defines a checkpoint-gated TrainedGraphExtractor described as DEQ-based. With its weights absent, the loop selects the Phase A heuristic above. The current bounded iteration and delta threshold are not DEQ root-finding or implicit differentiation; Bai, Kolter & Koltun (2019) is included as a comparison, not as a claim of reproduced results.
A trainer exists; a trained public model is not evidenced
EquilibriumPropagation runs a free phase and a nudged phase, estimates parameter gradients from their difference, and calls the supplied optimizer. This follows an Equilibrium Propagation-style design associated with Scellier & Bengio (2017). Finite iteration and beta settings make this a method to evaluate, not a reproduced theoretical or benchmark result.Advance the initial state with the engine; detach the resulting state.
Run the configured nudged phase toward a target with beta; detach that state.
Compute ICNN parameter gradients at both states and divide their difference by beta.
Assign those gradients to the supplied optimizer and step it; report target MSE.
The code shows the training method in ep_trainer.py. The reviewed repository snapshot does not establish a reproducible trained checkpoint, training corpus/split, or measured evaluation result. The emitter config advertises a 24-layer, 1024-wide network, but its referenced .pt checkpoint is absent from this tree; its runtime falls back when that artifact is unavailable. The trained graph-extractor checkpoint is also absent, so the current loop uses the rule-based extractor. See decoder configuration, decoder loading, and extractor selection.
Checks are narrow, explicit, and separately invoked
pass, fail, or unsure; that is not a semantic fact-checker for unrestricted model prose.Statements, source IDs and byte/character spans, optional hashes, policy mode.
SpanStore resolves bounded ranges from SIM or WKS sources.
AST nodes and operations outside the allow-list are rejected.
Registered helpers check span presence, counts, numeric rules and references.
Policy returns pass/fail/unsure and records errors/details.
External.Output.receipts, the module imported by the engine hook and several source tests, is absent from the reviewed tree. The hook catches and logs that import failure; working receipt creation is therefore not established by this snapshot. A valid signature authenticates signed bytes under a key, not the truth of evidence or model behavior. Compare the primitives with RFC 8032 and NIST SP 800-38D. The project security policy labels these areas research-grade, says authentication/authorization is not implemented, and states that a formal security audit has not been performed.A reviewable experiment plan
01 / Resolve the operator contract
Choose whether the fused operator should be skew-symmetric or symmetric, align implementation, class names, and docs, then add invariant tests for the selected contract. Report the effective operator and projection per run.
02 / Freeze a small task suite
Create synthetic tasks with known targets and source spans, publish generator/version/seed, freeze train/validation/test splits, and include negative and ambiguous evidence cases.
03 / Compare controlled baselines
Use matched initialization, parameter budget, compute, and seeds. Compare no-state, damping-only, fused-K, skew-K, ICNN, and template output paths; report all runs and failures.
04 / Score verifier behavior
Measure precision/recall and false-pass rate at each policy, span/hash mismatch handling, abstention rate, and robustness to altered or missing citations.
05 / Measure dynamics
Report convergence fraction, step count, residual norm, state norm, sensitivity to dt and beta, finite-value failures, and variation across initial states and seeds.
06 / Publish reproducibly
Record code SHA, environment lock, hardware, configs, datasets, checkpoints and hashes. Separate training, tuning and held-out results; publish scripts and raw result tables.
Research background and technical standards
Related architecture for the constrained convex potential. Convexity of this component does not establish convergence or correctness of the complete NOESIS loop.
The implemented trainer uses free and nudged phases with a finite-difference parameter update. The paper is related work; this page does not claim reproduced paper results.
Related work for antisymmetric dynamics. In the checked NOESIS snapshot, the default fused low-rank implementation is symmetric; see the implementation note below.
Primary specification for Ed25519, used by optional receipt and snapshot signing paths.
Specification for AES-GCM, used by optional snapshot encryption. Using a standard primitive is not a security audit or safe key-management design.
Foundational operator-splitting research related to the design vocabulary. NOESIS uses a finite discrete composition with clipping, gradient steps, and projection; this code is not shown to implement the paper's convergence-guaranteed algorithms.
A useful comparison for fixed-point neural models. NOESIS's current cognition loop uses bounded finite iteration and a state-delta stopping rule; it does not implement DEQ root-finding or implicit differentiation in the reviewed active path.