Skip to content

ShadowGraph v0.41.0 — Technical Preview

Pre-release
Pre-release

Choose a tag to compare

@LiLara-AI LiLara-AI released this 20 Sep 17:17
a264c86

Technical Preview / Early Access — not Beta, not Stable, not Production Ready.
Install from GitHub. The package remains private: true and is not published to npm.

ShadowGraph 0.41.0 keeps the decision-first graph and the scoped temporal memory from 0.40.0, and adds first-class explainable reconsideration built on the same condition evaluator review() already uses.

Install

npm install --global github:LiLara-AI/shadowgraph#v0.41.0
shadowgraph setup
shadowgraph doctor

First-class explainable reconsideration

review() answered one question — which decisions are due — and said nothing about the decisions it passed over. A caller could not tell "checked, and nothing fired" from "could not check." reconsider() answers both.

Verdict When Completeness
review_recommended At least one relevant rule definitely fired complete, or partial when something else could not be settled
unchanged Evaluation was complete and nothing fired always complete
manual_review Nothing definitely fired, but something could not be settled always partial

Each decision carries the evidence behind all three outcomes: triggeredRules, triggeredBy, groundedConditions, rulesNotEvaluated, contestedConditions, affectedAlternatives and factsConsidered.

Complete versus partial evaluation

unchanged is reported only with evaluationCompleteness: complete. That pairing is the contract's promise, and it is why an unevaluable condition can never be mistaken for a healthy decision.

The mixed case — one rule fires while another is unknown — is review_recommended and partial, so neither the breach nor the unevaluated condition hides the other. contestedConditions is reported apart from rulesNotEvaluated because the evaluator did reach a verdict there, but it withholds completeness all the same: a verdict resting on facts that disagree is exactly the silent pass the contract exists to prevent.

decisionId fails closed. An unknown id, an id belonging to another project, and a closed decision are each an error rather than an empty result. Key matching is literal: a near-miss key is unknown, never a match.

One shared three-valued condition evaluator

Reconsideration is a projection of the same pass review() runs, not a second evaluation. One pass, one evaluator, one set of three-valued verdicts — true, false, unknown — so the two routes cannot disagree about whether a stored rule fires, does not fire, or cannot be evaluated. Agreement is proven operator by operator from the canonical RULE_OPERATORS export rather than a second list that could drift.

Reconsideration across MCP, HTTP and CLI

shadowgraph_reconsider in both MCP modes, plus POST /reconsider and shadowgraph reconsider.

  • Full mode: 28 tools (29 with an optional verifier configured)
  • Compact mode: 14 tools — recommended, same full-fidelity stored graph

Counts are derived from the tool catalogue and asserted by npm run check:mcp, not restated by hand.

Runtime-authoritative MCP session provenance

sessionId was caller-owned in every direction: two unrelated clients could claim the same one, and a client that sent none left a null where the grouping belonged. The MCP server now mints one id per process and records it on every write it performs, so writes from one MCP session are attributable to that session by construction rather than by assertion.

A caller-supplied sessionId is still accepted — never an error, so no existing client breaks — but superseded, because asserted provenance does not outrank observed provenance. This covers the per-operation sessionId inside an applyMemoryPlan batch too. actor and client are untouched, CLI and HTTP callers are unaffected, and no migration is involved.

Benchmark v1.1 infrastructure and preserved evidence

The v1.1 harness, its frozen preregistration and amendment chain, adapter and probe infrastructure, and a sanitized evidence record are tracked so the methodology can be read and reproduced. "v1.1" names the benchmark methodology and candidate only — it is not a product release, and it carries no result. Raw benchmark output stays untracked, asserted by the test suite against both the Git index and the working tree.

Honest limits

  • The package remains private: true and is NOT published to npm. This tag and release publish no package.
  • No comparative benchmark result exists. The seven-arm comparative run measured zero arms because no common local/free LLM and embedding endpoint was available. No arm was scored, no arm was ranked, no arm is rank-eligible.
  • The Phase-D decision-review diagnostic did NOT demonstrate a decision-quality benefit, and is not offered as evidence of one. The single acceptance run was explicitly non-scored and is valid for diagnostics only; it supports no comparison between arms.
  • No claim that ShadowGraph outperformed the control or any other arm.
  • No token, cost, latency or performance superiority claim.
  • No ranking or best claim, or any equivalent overall-superiority wording.
  • No human third-party security audit claim. An AI-assisted independent review passed on 2026-08-30 with no unresolved findings; it is a control, not a substitute. That gate remains open.
  • Historical negative findings remain preserved in the repository as recorded — including that a substantial share of units the harness counted as measured did not produce a usable measurement under the frozen preregistration text. They were not rescored, reinterpreted, or removed.
  • Semantic retrieval requires supplied embeddings or an explicitly configured endpoint; lexical fallback is never labelled semantic. Remote embeddings require an explicit privacy opt-in. Confidence calibration remains unresolved.

The only preregistered wording permitted for the current benchmark evidence:

Comparative benchmark infrastructure was executed, but no arm was measured because no common local/free LLM and embedding endpoint was available. No comparative performance, quality, token, cost, or 'best' claim is supported.


Full detail: RELEASE_NOTES.md · CHANGELOG.md · SECURITY.md