sum-engine 0.6.0__tar.gz → 0.7.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sum_engine-0.6.0/sum_engine.egg-info → sum_engine-0.7.0}/PKG-INFO +50 -7
- {sum_engine-0.6.0 → sum_engine-0.7.0}/README.md +49 -6
- {sum_engine-0.6.0 → sum_engine-0.7.0}/pyproject.toml +1 -1
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_cli/main.py +514 -2
- {sum_engine-0.6.0 → sum_engine-0.7.0/sum_engine.egg-info}/PKG-INFO +50 -7
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine.egg-info/SOURCES.txt +10 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/ensemble/live_llm_adapter.py +217 -8
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/ensemble/llm_dispatch.py +20 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/infrastructure/jose_envelope.py +101 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/render_receipt/verifier.py +11 -1
- sum_engine-0.7.0/sum_engine_internal/transform_receipt/__init__.py +55 -0
- sum_engine-0.7.0/sum_engine_internal/transform_receipt/format.py +215 -0
- sum_engine-0.7.0/sum_engine_internal/transform_receipt/sign.py +50 -0
- sum_engine-0.7.0/sum_engine_internal/transform_receipt/verifier.py +132 -0
- sum_engine-0.7.0/sum_engine_internal/transforms/__init__.py +104 -0
- sum_engine-0.7.0/sum_engine_internal/transforms/_base.py +203 -0
- sum_engine-0.7.0/sum_engine_internal/transforms/compose.py +304 -0
- sum_engine-0.7.0/sum_engine_internal/transforms/extract.py +406 -0
- sum_engine-0.7.0/sum_engine_internal/transforms/share.py +231 -0
- sum_engine-0.7.0/sum_engine_internal/transforms/slider.py +380 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/LICENSE +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/setup.cfg +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_cli/__init__.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_cli/audit_log.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine.egg-info/dependency_links.txt +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine.egg-info/entry_points.txt +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine.egg-info/requires.txt +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine.egg-info/top_level.txt +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/__init__.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/adapters/__init__.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/adapters/format_pivot.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/agent_surface/__init__.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/agent_surface/bind.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/agent_surface/mcp_bind.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/algorithms/__init__.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/algorithms/causal_discovery.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/algorithms/chunked_corpus.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/algorithms/minhash.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/algorithms/predicate_canon.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/algorithms/semantic_arithmetic.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/algorithms/syntactic_sieve.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/algorithms/zk_semantics.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/compliance/__init__.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/compliance/_predicates.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/compliance/eu_ai_act_article_12.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/compliance/gdpr_article_30.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/compliance/hipaa_164_312_b.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/compliance/iso_27001_8_15.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/compliance/pci_dss_4_req_10.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/compliance/report.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/compliance/soc_2_cc_7_2.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/ensemble/__init__.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/ensemble/automated_scientist.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/ensemble/autonomous_agent.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/ensemble/causal_triggers.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/ensemble/confidence_calibrator.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/ensemble/data/__init__.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/ensemble/data/common_english_2000.txt +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/ensemble/data/common_english_5000.txt +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/ensemble/epistemic_arbiter.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/ensemble/epistemic_loop.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/ensemble/extraction_validator.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/ensemble/gauge_orchestrator.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/ensemble/llm_entailment.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/ensemble/mass_semantic_engine.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/ensemble/ouroboros.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/ensemble/s25_interventions.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/ensemble/semantic_dedup.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/ensemble/slider_renderer.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/ensemble/tome_generator.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/ensemble/tome_sliders.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/ensemble/vector_bridge.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/ensemble/venn_abers.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/evidence/__init__.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/evidence/chain.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/graph_store/__init__.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/graph_store/base.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/graph_store/egglog_store.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/graph_store/unionfind_store.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/infrastructure/__init__.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/infrastructure/akashic_ledger.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/infrastructure/canonical_codec.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/infrastructure/jcs.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/infrastructure/key_manager.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/infrastructure/p2p_mesh.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/infrastructure/prov_o.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/infrastructure/provenance.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/infrastructure/rate_limiter.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/infrastructure/resource_guards.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/infrastructure/scheme_registry.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/infrastructure/state_encoding.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/infrastructure/telemetry.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/infrastructure/tome_parser.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/infrastructure/verifiable_credential.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/infrastructure/zig_bridge.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/mcp_server/__init__.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/mcp_server/__main__.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/mcp_server/errors.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/mcp_server/server.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/merkle_sidecar/__init__.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/merkle_sidecar/tree.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/render_receipt/__init__.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/research/__init__.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/research/bootstrap/__init__.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/research/bootstrap/multiplier_bootstrap.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/research/conformal/__init__.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/research/conformal/entropy_baseline.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/research/conformal/split_conformal.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/research/lsh/__init__.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/research/lsh/bundle_index.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/research/mmd/__init__.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/research/mmd/baseline.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/research/mmd/mmd.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/research/robust_pca/__init__.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/research/robust_pca/axiom_embedding.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/research/robust_pca/pcp.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/research/sequential/__init__.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/research/sequential/sprt.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/research/sheaf_laplacian.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/research/sheaf_laplacian_v2.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/research/sheaf_laplacian_v3.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/research/sheaf_laplacian_v32.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/research/smt_consistency/__init__.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/research/smt_consistency/consistency.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/research/smt_consistency/predicate_library.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/research/spectral_entropy/__init__.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/research/spectral_entropy/vn_entropy.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/trust_root/__init__.py +0 -0
- {sum_engine-0.6.0 → sum_engine-0.7.0}/sum_engine_internal/trust_root/verifier.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sum-engine
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.7.0
|
|
4
4
|
Summary: SUM — bidirectional knowledge distillation with optional cryptographic attestation. Pipe prose, get a CanonicalBundle (HMAC / Ed25519 / W3C VC 2.0), verify anywhere.
|
|
5
5
|
Author: ototao
|
|
6
6
|
License: Apache-2.0
|
|
@@ -68,9 +68,15 @@ Dynamic: license-file
|
|
|
68
68
|
[](https://www.python.org/downloads/)
|
|
69
69
|
[](LICENSE)
|
|
70
70
|
|
|
71
|
-
> **
|
|
71
|
+
> **SUM lets people and agents transform knowledge without losing the ability to verify what changed, what stayed the same, who signed it, and what remains unproven.**
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
Every transformation — extract triples from prose, render a tome at a controlled slider position, compose bundles across documents, share a render — emits a cryptographically-signed receipt that any third party can verify offline. The receipt attests *that the transformation happened and what its inputs were*. Separate per-axis benchmarks attest *how much the transformation preserved meaning*. Both are kept honest by separate proof discipline — and the project never blurs the line between them.
|
|
74
|
+
|
|
75
|
+
*Live trust loop:* https://sum-demo.ototao.workers.dev — three runtimes (Python, Node, modern browsers) produce byte-identical Ed25519 signatures over the same JCS-canonical bytes; verify offline against `/.well-known/jwks.json`. Mechanically proven; locked in CI on every PR.
|
|
76
|
+
|
|
77
|
+
**Built for:** journalists working under deepfake-era citation requirements, academic survey writers who need provenance back to source PDFs, agentic-AI builders who need their agents to pass verifiable evidence and not just messages, and regulated-domain content (EU AI Act Article 12, FTC AI disclosure, HIPAA, SOC 2, PCI DSS) where "we say it's true" isn't enough.
|
|
78
|
+
|
|
79
|
+
The cryptographic side is **mechanically proven** — three independent verifier implementations agreeing byte-for-byte on every signed bundle, locked in CI on every PR. The semantic side (extraction quality, slider fact preservation) is **empirically measured** with explicit per-corpus numbers and explicit per-corpus boundaries. [`docs/PROOF_BOUNDARY.md`](docs/PROOF_BOUNDARY.md) is the arbiter.
|
|
74
80
|
|
|
75
81
|
Headline supporting numbers (each links to its source of truth):
|
|
76
82
|
|
|
@@ -112,14 +118,29 @@ A minimal Node verifier using `jose` + `canonicalize` is in [`docs/RENDER_RECEIP
|
|
|
112
118
|
| Surface | Status | Verifies |
|
|
113
119
|
|---|---|---|
|
|
114
120
|
| `pip install 'sum-engine[sieve]'` — `sum attest` / `sum verify` / `sum render` / `sum resolve` / `sum ledger` / `sum inspect` / `sum schema` | shipped on PyPI ≥ 0.4.1 | structural reconstruction; HMAC-SHA256 + Ed25519 signatures (W3C VC 2.0 `eddsa-jcs-2022`); bidirectional `sum attest` ↔ `sum render` symmetry from the shell |
|
|
115
|
-
| Cloudflare Worker at `sum-demo.ototao.workers.dev` | shipped | `/api/render` → tome + `render_receipt`;
|
|
121
|
+
| Cloudflare Worker at `sum-demo.ototao.workers.dev` | shipped | `/api/render` → tome + `render_receipt`; `/api/transform` → generic transform-registry dispatch + `sum.transform_receipt.v1`; `/api/complete` → LLM proxy; `/api/qid` → Wikidata resolver; `/.well-known/jwks.json` + `/.well-known/revoked-kids.json` → trust-loop endpoints. Public LLM-axis routes are rate-limited per IP — see [`docs/PUBLIC_API_RATE_LIMITS.md`](docs/PUBLIC_API_RATE_LIMITS.md) (5/day operator-keyed demo; 100/hr with BYO key via `X-Render-LLM-Key-Anthropic` / `-OpenAI`). |
|
|
116
122
|
| Single-file browser demo (`single_file_demo/index.html`) | shipped | paste prose → in-browser attest → CanonicalBundle JSON; same bytes verify under `node standalone_verifier/verify.js` (Chrome / Firefox / Safari with WebCrypto Ed25519 support) |
|
|
117
123
|
| Cross-runtime trust triangle | locked by CI (`make xruntime`) | K1 / K1-mw / K2 / K3 / K4 — Python ↔ Node ↔ Browser agree byte-for-byte on valid bundles. `make xruntime-adversarial` adds A1–A6 rejection-class equivalence. |
|
|
118
|
-
| 5-axis slider rendering surface | density actioned deterministically; length / formality / audience / perspective LLM-conditioned
|
|
124
|
+
| 5-axis slider rendering surface | density actioned deterministically; length / formality / audience / perspective LLM-conditioned. Two dispatch paths: Worker `/api/render` (Anthropic + Cloudflare AI Gateway optional) producing `sum.render_receipt.v1`, OR Python `sum transform apply slider` (OpenAI via `OPENAI_API_KEY`) producing `sum.transform_receipt.v1` | bench: median LLM-axis fact preservation 1.000, p10 0.769 (long, n=16) / 0.818 (short, n=8), order preservation 1.000 wherever measurable. Tightening worktrail at [`docs/BENCH_HARDENING_FROM_QCVV.md`](docs/BENCH_HARDENING_FROM_QCVV.md) adds iteration-stability + DKW worst-case bounds + capability-region headlines |
|
|
119
125
|
| MCP server (`sum-mcp` console script) | shipped | five tools (`extract` / `attest` / `verify` / `inspect` / `schema`) exposed over stdio; bundles attested via MCP verify byte-identically through the CLI / Node / browser verifiers |
|
|
126
|
+
| Transform substrate (`sum.transform_receipt.v1` + registry) | shipped (CLI in repo HEAD; PyPI catch-up tag pending) | `sum transform list` / `sum transform apply <name>` — three registered transforms (`slider` / `extract` / `compose`); receipts via Ed25519 / JCS / detached JWS just like render-receipts; 20-fixture cross-runtime K-matrix locks accept + reject across Python ↔ Node ↔ browser; T4 `source_chain_hash` binds receipts to source byte ranges; T5 `ShareableRender` round-trips signed renders for offline verification; T6 multi-school extract runs two extractors in tandem for adversarial-divergence detection. Wire spec at [`docs/TRANSFORM_RECEIPT_FORMAT.md`](docs/TRANSFORM_RECEIPT_FORMAT.md); design at [`docs/TRANSFORM_REGISTRY.md`](docs/TRANSFORM_REGISTRY.md). |
|
|
127
|
+
| Replay-defense window (`signed_at_out_of_window`) | shipped | opt-in `max_age_seconds` parameter across all four verifier surfaces (Python render / Python transform / JS render / JS transform). Default-off preserves archival use; receivers opt in per use-case (agent-swarm 60s, real-time 600s, newsletter 1d, legal-discovery no window). |
|
|
128
|
+
| `sum verify --explain` layered output | shipped | Per-dimension report (`sum.verify_explained.v1`): cryptographic integrity / canonical reconstruction / axiom consistency / extraction provenance / source evidence coverage / semantic preservation / truth of content. Each carries `epistemic_status` (`provable` / `certified` / `empirical-benchmark` / `not-asserted`). Truth of content is ALWAYS `not_asserted` — locked by test. |
|
|
129
|
+
| Negative-control corpus (T5 of bench-hardening) | shipped | 20 hand-authored documents across 5 failure modes (ambiguous coref / predicate-alias / contradictions / entity-resolution-adversarial / non-extractable). Runner exits 1 if observed failures don't match annotations. Baseline at [`fixtures/bench_receipts/negative_control_2026-05-17.json`](fixtures/bench_receipts/negative_control_2026-05-17.json). |
|
|
130
|
+
| Compliance validators (six regimes) | shipped | `sum compliance check --regime <id> --audit-log <path>` — EU AI Act Article 12, GDPR Article 30, HIPAA § 164.312(b), ISO/IEC 27001 A.8.15, SOC 2 CC 7.2, PCI DSS v4.0 Req 10. All six produce the same `sum.compliance_report.v1` schema; per-regime docs at `docs/COMPLIANCE_*.md`. |
|
|
120
131
|
|
|
121
132
|
The slider's product claim — *axis changes do not lose facts* — is the load-bearing empirical result. It is verified by NLI audit on every embedding-flagged "loss" cell; full attribution in [`docs/SLIDER_CONTRACT.md`](docs/SLIDER_CONTRACT.md).
|
|
122
133
|
|
|
134
|
+
## Strategic context
|
|
135
|
+
|
|
136
|
+
The operational compass — read in this order if you want the project's intent + how it operates + where it's going:
|
|
137
|
+
|
|
138
|
+
- [`docs/CHARTER_2026-05-17.md`](docs/CHARTER_2026-05-17.md) — intent, the Why, strategy, objectives, success criteria, constraints, and the operational loop. The compass every other doc resolves to.
|
|
139
|
+
- [`docs/PRODUCT_DELIBERATION_2026-05-14.md`](docs/PRODUCT_DELIBERATION_2026-05-14.md) — three-option strategic analysis + grant-outcome decision tree.
|
|
140
|
+
- [`docs/ZENITH_FRAMING_2026-05-16.md`](docs/ZENITH_FRAMING_2026-05-16.md) — destination framing (SUM as chain-of-custody for AI-transformed knowledge) plus three new concepts (Perspective Receipts, Trust Profiles, Epistemic Nutrition Label) on the design queue.
|
|
141
|
+
- [`docs/BENCH_HARDENING_FROM_QCVV.md`](docs/BENCH_HARDENING_FROM_QCVV.md) — five-task empirical-benchmark hardening plan (T1–T5; T5 shipped, T1–T4 queued).
|
|
142
|
+
- [`docs/DOGFOOD_QUICKSTART.md`](docs/DOGFOOD_QUICKSTART.md) — five-minute guide to running SUM on your own writing.
|
|
143
|
+
|
|
123
144
|
### LLM narrative round-trip — closed across measured corpora (2026-04-28)
|
|
124
145
|
|
|
125
146
|
The hardest measurement in `PROOF_BOUNDARY.md` is the full LLM narrative round-trip (`text → LLM-extract → axioms → LLM-generate → prose' → LLM-extract → axioms'`). The unprompted-pipeline baseline on `seed_v1` was **drift = 107.75% / exact-match recall = 0.12** — facts preserved, keys not.
|
|
@@ -230,7 +251,29 @@ Below the slider sits the substrate that earlier phases shipped and verified. Po
|
|
|
230
251
|
- **Bundle public-key attestation (provable).** Ed25519-signed CanonicalBundles are tamper-detectable by any third party in any of the three runtimes. [`docs/PROOF_BOUNDARY.md`](docs/PROOF_BOUNDARY.md) §1.3.1.
|
|
231
252
|
- **Merkle hash-chain integrity (provable, including under concurrent writers).** [`docs/PROOF_BOUNDARY.md`](docs/PROOF_BOUNDARY.md) §1.7.
|
|
232
253
|
- **Extraction F1 (empirical-benchmark).** 1.000 on `seed_v1` (50 simple-SVO docs); 0.762 with precision 1.000 on `seed_v2` (20-doc difficulty corpus). Every remaining `seed_v2` failure is a recall miss, not a truth inversion. [`docs/PROOF_BOUNDARY.md`](docs/PROOF_BOUNDARY.md) §2.1.
|
|
233
|
-
- **
|
|
254
|
+
- **168 numbered features**, each with a reproducible verification command, in [`docs/FEATURE_CATALOG.md`](docs/FEATURE_CATALOG.md).
|
|
255
|
+
|
|
256
|
+
### Research substrate (under `sum_engine_internal/research/`)
|
|
257
|
+
|
|
258
|
+
Less-surfaced but shipped:
|
|
259
|
+
|
|
260
|
+
- **MinHash-LSH bundle similarity index** (`research/lsh/`) — near-duplicate bundle detection at scale.
|
|
261
|
+
- **Robust PCA corruption score** (`research/robust_pca/`) — `corruption_score` field in bundle metadata; flags adversarially-perturbed bundles.
|
|
262
|
+
- **Sequential & conformal-prediction** (`research/sequential/`, `research/conformal/`) — bench-side confidence bounds with documented coverage guarantees.
|
|
263
|
+
- **MMD distribution distance** (`research/mmd/`) — `axiom_distribution_mmd` field on bundles; surfaces when an attested bundle is structurally unlike its baseline corpus.
|
|
264
|
+
- **Spectral entropy** (`research/spectral_entropy/`) — axiom-graph entropy on every bundle, with confidence interval.
|
|
265
|
+
- **Bootstrap multiplier spike detection** (`research/bootstrap/`) — see [`docs/MULTIPLIER_BOOTSTRAP_SPIKE_FINDINGS.md`](docs/MULTIPLIER_BOOTSTRAP_SPIKE_FINDINGS.md).
|
|
266
|
+
- **SMT consistency checking** (`research/smt_consistency/`) — z3-backed `axiom_consistency_check` on every bundle.
|
|
267
|
+
- **Sheaf-Laplacian hallucination detection** — see [`docs/SHEAF_HALLUCINATION_DETECTOR.md`](docs/SHEAF_HALLUCINATION_DETECTOR.md) (research direction).
|
|
268
|
+
|
|
269
|
+
### Other substrate-adjacent surfaces
|
|
270
|
+
|
|
271
|
+
- **Trust-root manifest** (`sum_engine_internal/trust_root/`) — operator-issued signed manifest binding kid lifecycle, revocation policy, and verifier expectations.
|
|
272
|
+
- **Merkle sidecar format** (`sum_engine_internal/merkle_sidecar/`) — see [`docs/MERKLE_SIDECAR_FORMAT.md`](docs/MERKLE_SIDECAR_FORMAT.md).
|
|
273
|
+
- **Evidence-chain layer** (`sum_engine_internal/evidence/`) — substrate behind `source_chain_hash` (T4).
|
|
274
|
+
- **Algorithm registry** — see [`docs/ALGORITHM_REGISTRY.md`](docs/ALGORITHM_REGISTRY.md) (the in-tree list of permitted signing algs; crypto-agility gate).
|
|
275
|
+
- **Audit log format** — every CLI operation can emit `sum.audit_log.v1` events; see [`docs/AUDIT_LOG_FORMAT.md`](docs/AUDIT_LOG_FORMAT.md).
|
|
276
|
+
- **Agent surface** (`sum_engine_internal/agent_surface/`) — see [`docs/AGENT_SURFACE_FINDINGS.md`](docs/AGENT_SURFACE_FINDINGS.md).
|
|
234
277
|
|
|
235
278
|
---
|
|
236
279
|
|
|
@@ -277,7 +320,7 @@ Source anchoring in the bundle schema, bundle explorer / viewer, `sum verify --e
|
|
|
277
320
|
|
|
278
321
|
```bash
|
|
279
322
|
make install # editable install with sieve + dev extras
|
|
280
|
-
make test # full pytest run (
|
|
323
|
+
make test # full pytest run (2000+ tests)
|
|
281
324
|
make xruntime # cross-runtime K1/K1-mw/K2/K3/K4 (Python ↔ Node)
|
|
282
325
|
make xruntime-adversarial # rejection-matrix A1–A6
|
|
283
326
|
make fortress # 21-check pure-math invariants
|
|
@@ -5,9 +5,15 @@
|
|
|
5
5
|
[](https://www.python.org/downloads/)
|
|
6
6
|
[](LICENSE)
|
|
7
7
|
|
|
8
|
-
> **
|
|
8
|
+
> **SUM lets people and agents transform knowledge without losing the ability to verify what changed, what stayed the same, who signed it, and what remains unproven.**
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
Every transformation — extract triples from prose, render a tome at a controlled slider position, compose bundles across documents, share a render — emits a cryptographically-signed receipt that any third party can verify offline. The receipt attests *that the transformation happened and what its inputs were*. Separate per-axis benchmarks attest *how much the transformation preserved meaning*. Both are kept honest by separate proof discipline — and the project never blurs the line between them.
|
|
11
|
+
|
|
12
|
+
*Live trust loop:* https://sum-demo.ototao.workers.dev — three runtimes (Python, Node, modern browsers) produce byte-identical Ed25519 signatures over the same JCS-canonical bytes; verify offline against `/.well-known/jwks.json`. Mechanically proven; locked in CI on every PR.
|
|
13
|
+
|
|
14
|
+
**Built for:** journalists working under deepfake-era citation requirements, academic survey writers who need provenance back to source PDFs, agentic-AI builders who need their agents to pass verifiable evidence and not just messages, and regulated-domain content (EU AI Act Article 12, FTC AI disclosure, HIPAA, SOC 2, PCI DSS) where "we say it's true" isn't enough.
|
|
15
|
+
|
|
16
|
+
The cryptographic side is **mechanically proven** — three independent verifier implementations agreeing byte-for-byte on every signed bundle, locked in CI on every PR. The semantic side (extraction quality, slider fact preservation) is **empirically measured** with explicit per-corpus numbers and explicit per-corpus boundaries. [`docs/PROOF_BOUNDARY.md`](docs/PROOF_BOUNDARY.md) is the arbiter.
|
|
11
17
|
|
|
12
18
|
Headline supporting numbers (each links to its source of truth):
|
|
13
19
|
|
|
@@ -49,14 +55,29 @@ A minimal Node verifier using `jose` + `canonicalize` is in [`docs/RENDER_RECEIP
|
|
|
49
55
|
| Surface | Status | Verifies |
|
|
50
56
|
|---|---|---|
|
|
51
57
|
| `pip install 'sum-engine[sieve]'` — `sum attest` / `sum verify` / `sum render` / `sum resolve` / `sum ledger` / `sum inspect` / `sum schema` | shipped on PyPI ≥ 0.4.1 | structural reconstruction; HMAC-SHA256 + Ed25519 signatures (W3C VC 2.0 `eddsa-jcs-2022`); bidirectional `sum attest` ↔ `sum render` symmetry from the shell |
|
|
52
|
-
| Cloudflare Worker at `sum-demo.ototao.workers.dev` | shipped | `/api/render` → tome + `render_receipt`;
|
|
58
|
+
| Cloudflare Worker at `sum-demo.ototao.workers.dev` | shipped | `/api/render` → tome + `render_receipt`; `/api/transform` → generic transform-registry dispatch + `sum.transform_receipt.v1`; `/api/complete` → LLM proxy; `/api/qid` → Wikidata resolver; `/.well-known/jwks.json` + `/.well-known/revoked-kids.json` → trust-loop endpoints. Public LLM-axis routes are rate-limited per IP — see [`docs/PUBLIC_API_RATE_LIMITS.md`](docs/PUBLIC_API_RATE_LIMITS.md) (5/day operator-keyed demo; 100/hr with BYO key via `X-Render-LLM-Key-Anthropic` / `-OpenAI`). |
|
|
53
59
|
| Single-file browser demo (`single_file_demo/index.html`) | shipped | paste prose → in-browser attest → CanonicalBundle JSON; same bytes verify under `node standalone_verifier/verify.js` (Chrome / Firefox / Safari with WebCrypto Ed25519 support) |
|
|
54
60
|
| Cross-runtime trust triangle | locked by CI (`make xruntime`) | K1 / K1-mw / K2 / K3 / K4 — Python ↔ Node ↔ Browser agree byte-for-byte on valid bundles. `make xruntime-adversarial` adds A1–A6 rejection-class equivalence. |
|
|
55
|
-
| 5-axis slider rendering surface | density actioned deterministically; length / formality / audience / perspective LLM-conditioned
|
|
61
|
+
| 5-axis slider rendering surface | density actioned deterministically; length / formality / audience / perspective LLM-conditioned. Two dispatch paths: Worker `/api/render` (Anthropic + Cloudflare AI Gateway optional) producing `sum.render_receipt.v1`, OR Python `sum transform apply slider` (OpenAI via `OPENAI_API_KEY`) producing `sum.transform_receipt.v1` | bench: median LLM-axis fact preservation 1.000, p10 0.769 (long, n=16) / 0.818 (short, n=8), order preservation 1.000 wherever measurable. Tightening worktrail at [`docs/BENCH_HARDENING_FROM_QCVV.md`](docs/BENCH_HARDENING_FROM_QCVV.md) adds iteration-stability + DKW worst-case bounds + capability-region headlines |
|
|
56
62
|
| MCP server (`sum-mcp` console script) | shipped | five tools (`extract` / `attest` / `verify` / `inspect` / `schema`) exposed over stdio; bundles attested via MCP verify byte-identically through the CLI / Node / browser verifiers |
|
|
63
|
+
| Transform substrate (`sum.transform_receipt.v1` + registry) | shipped (CLI in repo HEAD; PyPI catch-up tag pending) | `sum transform list` / `sum transform apply <name>` — three registered transforms (`slider` / `extract` / `compose`); receipts via Ed25519 / JCS / detached JWS just like render-receipts; 20-fixture cross-runtime K-matrix locks accept + reject across Python ↔ Node ↔ browser; T4 `source_chain_hash` binds receipts to source byte ranges; T5 `ShareableRender` round-trips signed renders for offline verification; T6 multi-school extract runs two extractors in tandem for adversarial-divergence detection. Wire spec at [`docs/TRANSFORM_RECEIPT_FORMAT.md`](docs/TRANSFORM_RECEIPT_FORMAT.md); design at [`docs/TRANSFORM_REGISTRY.md`](docs/TRANSFORM_REGISTRY.md). |
|
|
64
|
+
| Replay-defense window (`signed_at_out_of_window`) | shipped | opt-in `max_age_seconds` parameter across all four verifier surfaces (Python render / Python transform / JS render / JS transform). Default-off preserves archival use; receivers opt in per use-case (agent-swarm 60s, real-time 600s, newsletter 1d, legal-discovery no window). |
|
|
65
|
+
| `sum verify --explain` layered output | shipped | Per-dimension report (`sum.verify_explained.v1`): cryptographic integrity / canonical reconstruction / axiom consistency / extraction provenance / source evidence coverage / semantic preservation / truth of content. Each carries `epistemic_status` (`provable` / `certified` / `empirical-benchmark` / `not-asserted`). Truth of content is ALWAYS `not_asserted` — locked by test. |
|
|
66
|
+
| Negative-control corpus (T5 of bench-hardening) | shipped | 20 hand-authored documents across 5 failure modes (ambiguous coref / predicate-alias / contradictions / entity-resolution-adversarial / non-extractable). Runner exits 1 if observed failures don't match annotations. Baseline at [`fixtures/bench_receipts/negative_control_2026-05-17.json`](fixtures/bench_receipts/negative_control_2026-05-17.json). |
|
|
67
|
+
| Compliance validators (six regimes) | shipped | `sum compliance check --regime <id> --audit-log <path>` — EU AI Act Article 12, GDPR Article 30, HIPAA § 164.312(b), ISO/IEC 27001 A.8.15, SOC 2 CC 7.2, PCI DSS v4.0 Req 10. All six produce the same `sum.compliance_report.v1` schema; per-regime docs at `docs/COMPLIANCE_*.md`. |
|
|
57
68
|
|
|
58
69
|
The slider's product claim — *axis changes do not lose facts* — is the load-bearing empirical result. It is verified by NLI audit on every embedding-flagged "loss" cell; full attribution in [`docs/SLIDER_CONTRACT.md`](docs/SLIDER_CONTRACT.md).
|
|
59
70
|
|
|
71
|
+
## Strategic context
|
|
72
|
+
|
|
73
|
+
The operational compass — read in this order if you want the project's intent + how it operates + where it's going:
|
|
74
|
+
|
|
75
|
+
- [`docs/CHARTER_2026-05-17.md`](docs/CHARTER_2026-05-17.md) — intent, the Why, strategy, objectives, success criteria, constraints, and the operational loop. The compass every other doc resolves to.
|
|
76
|
+
- [`docs/PRODUCT_DELIBERATION_2026-05-14.md`](docs/PRODUCT_DELIBERATION_2026-05-14.md) — three-option strategic analysis + grant-outcome decision tree.
|
|
77
|
+
- [`docs/ZENITH_FRAMING_2026-05-16.md`](docs/ZENITH_FRAMING_2026-05-16.md) — destination framing (SUM as chain-of-custody for AI-transformed knowledge) plus three new concepts (Perspective Receipts, Trust Profiles, Epistemic Nutrition Label) on the design queue.
|
|
78
|
+
- [`docs/BENCH_HARDENING_FROM_QCVV.md`](docs/BENCH_HARDENING_FROM_QCVV.md) — five-task empirical-benchmark hardening plan (T1–T5; T5 shipped, T1–T4 queued).
|
|
79
|
+
- [`docs/DOGFOOD_QUICKSTART.md`](docs/DOGFOOD_QUICKSTART.md) — five-minute guide to running SUM on your own writing.
|
|
80
|
+
|
|
60
81
|
### LLM narrative round-trip — closed across measured corpora (2026-04-28)
|
|
61
82
|
|
|
62
83
|
The hardest measurement in `PROOF_BOUNDARY.md` is the full LLM narrative round-trip (`text → LLM-extract → axioms → LLM-generate → prose' → LLM-extract → axioms'`). The unprompted-pipeline baseline on `seed_v1` was **drift = 107.75% / exact-match recall = 0.12** — facts preserved, keys not.
|
|
@@ -167,7 +188,29 @@ Below the slider sits the substrate that earlier phases shipped and verified. Po
|
|
|
167
188
|
- **Bundle public-key attestation (provable).** Ed25519-signed CanonicalBundles are tamper-detectable by any third party in any of the three runtimes. [`docs/PROOF_BOUNDARY.md`](docs/PROOF_BOUNDARY.md) §1.3.1.
|
|
168
189
|
- **Merkle hash-chain integrity (provable, including under concurrent writers).** [`docs/PROOF_BOUNDARY.md`](docs/PROOF_BOUNDARY.md) §1.7.
|
|
169
190
|
- **Extraction F1 (empirical-benchmark).** 1.000 on `seed_v1` (50 simple-SVO docs); 0.762 with precision 1.000 on `seed_v2` (20-doc difficulty corpus). Every remaining `seed_v2` failure is a recall miss, not a truth inversion. [`docs/PROOF_BOUNDARY.md`](docs/PROOF_BOUNDARY.md) §2.1.
|
|
170
|
-
- **
|
|
191
|
+
- **168 numbered features**, each with a reproducible verification command, in [`docs/FEATURE_CATALOG.md`](docs/FEATURE_CATALOG.md).
|
|
192
|
+
|
|
193
|
+
### Research substrate (under `sum_engine_internal/research/`)
|
|
194
|
+
|
|
195
|
+
Less-surfaced but shipped:
|
|
196
|
+
|
|
197
|
+
- **MinHash-LSH bundle similarity index** (`research/lsh/`) — near-duplicate bundle detection at scale.
|
|
198
|
+
- **Robust PCA corruption score** (`research/robust_pca/`) — `corruption_score` field in bundle metadata; flags adversarially-perturbed bundles.
|
|
199
|
+
- **Sequential & conformal-prediction** (`research/sequential/`, `research/conformal/`) — bench-side confidence bounds with documented coverage guarantees.
|
|
200
|
+
- **MMD distribution distance** (`research/mmd/`) — `axiom_distribution_mmd` field on bundles; surfaces when an attested bundle is structurally unlike its baseline corpus.
|
|
201
|
+
- **Spectral entropy** (`research/spectral_entropy/`) — axiom-graph entropy on every bundle, with confidence interval.
|
|
202
|
+
- **Bootstrap multiplier spike detection** (`research/bootstrap/`) — see [`docs/MULTIPLIER_BOOTSTRAP_SPIKE_FINDINGS.md`](docs/MULTIPLIER_BOOTSTRAP_SPIKE_FINDINGS.md).
|
|
203
|
+
- **SMT consistency checking** (`research/smt_consistency/`) — z3-backed `axiom_consistency_check` on every bundle.
|
|
204
|
+
- **Sheaf-Laplacian hallucination detection** — see [`docs/SHEAF_HALLUCINATION_DETECTOR.md`](docs/SHEAF_HALLUCINATION_DETECTOR.md) (research direction).
|
|
205
|
+
|
|
206
|
+
### Other substrate-adjacent surfaces
|
|
207
|
+
|
|
208
|
+
- **Trust-root manifest** (`sum_engine_internal/trust_root/`) — operator-issued signed manifest binding kid lifecycle, revocation policy, and verifier expectations.
|
|
209
|
+
- **Merkle sidecar format** (`sum_engine_internal/merkle_sidecar/`) — see [`docs/MERKLE_SIDECAR_FORMAT.md`](docs/MERKLE_SIDECAR_FORMAT.md).
|
|
210
|
+
- **Evidence-chain layer** (`sum_engine_internal/evidence/`) — substrate behind `source_chain_hash` (T4).
|
|
211
|
+
- **Algorithm registry** — see [`docs/ALGORITHM_REGISTRY.md`](docs/ALGORITHM_REGISTRY.md) (the in-tree list of permitted signing algs; crypto-agility gate).
|
|
212
|
+
- **Audit log format** — every CLI operation can emit `sum.audit_log.v1` events; see [`docs/AUDIT_LOG_FORMAT.md`](docs/AUDIT_LOG_FORMAT.md).
|
|
213
|
+
- **Agent surface** (`sum_engine_internal/agent_surface/`) — see [`docs/AGENT_SURFACE_FINDINGS.md`](docs/AGENT_SURFACE_FINDINGS.md).
|
|
171
214
|
|
|
172
215
|
---
|
|
173
216
|
|
|
@@ -214,7 +257,7 @@ Source anchoring in the bundle schema, bundle explorer / viewer, `sum verify --e
|
|
|
214
257
|
|
|
215
258
|
```bash
|
|
216
259
|
make install # editable install with sieve + dev extras
|
|
217
|
-
make test # full pytest run (
|
|
260
|
+
make test # full pytest run (2000+ tests)
|
|
218
261
|
make xruntime # cross-runtime K1/K1-mw/K2/K3/K4 (Python ↔ Node)
|
|
219
262
|
make xruntime-adversarial # rejection-matrix A1–A6
|
|
220
263
|
make fortress # 21-check pure-math invariants
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "sum-engine"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.7.0"
|
|
8
8
|
description = "SUM — bidirectional knowledge distillation with optional cryptographic attestation. Pipe prose, get a CanonicalBundle (HMAC / Ed25519 / W3C VC 2.0), verify anywhere."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { text = "Apache-2.0" }
|