skynet-graph 1.2.0

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.
Files changed (213) hide show
  1. package/CONTRIBUTING.md +22 -0
  2. package/LICENSE +661 -0
  3. package/README.md +245 -0
  4. package/bin/sg +20 -0
  5. package/concepts/README.md +23 -0
  6. package/concepts/_substrate/Claim/Confidence/Trusted.json +6 -0
  7. package/concepts/_substrate/Claim/Confidence.json +10 -0
  8. package/concepts/_substrate/Claim/Freshness/Stale.json +7 -0
  9. package/concepts/_substrate/Claim/Freshness.json +5 -0
  10. package/concepts/_substrate/Claim/Verification/Refuted.json +6 -0
  11. package/concepts/_substrate/Claim/Verification.json +6 -0
  12. package/concepts/_substrate/Claim.json +4 -0
  13. package/concepts/_substrate/Frontier/InBeam.json +6 -0
  14. package/concepts/_substrate/Frontier/Stuck.json +6 -0
  15. package/concepts/_substrate/Frontier.json +5 -0
  16. package/concepts/_substrate/Intake/ToTask.json +22 -0
  17. package/concepts/_substrate/Intake/Typed.json +10 -0
  18. package/concepts/_substrate/Intake.json +27 -0
  19. package/concepts/_substrate/Task/Answer.json +12 -0
  20. package/concepts/_substrate/Task/Complexity/Atomic.json +5 -0
  21. package/concepts/_substrate/Task/Complexity/Compound/Expansion.json +7 -0
  22. package/concepts/_substrate/Task/Complexity/Compound.json +6 -0
  23. package/concepts/_substrate/Task/Complexity.json +6 -0
  24. package/concepts/_substrate/Task/EvalComplexity.json +13 -0
  25. package/concepts/_substrate/Task/ReportUp.json +6 -0
  26. package/concepts/_substrate/Task/Rollup.json +10 -0
  27. package/concepts/_substrate/Task.json +5 -0
  28. package/concepts/clinical/Diagnosis/Medication.json +6 -0
  29. package/concepts/clinical/Diagnosis.json +15 -0
  30. package/concepts/clinical/Observation/LabValue/OutOfRange.json +6 -0
  31. package/concepts/clinical/Observation/LabValue.json +5 -0
  32. package/concepts/clinical/Observation.json +6 -0
  33. package/concepts/common/Document/pathBasket.json +6 -0
  34. package/concepts/common/Document.json +3 -0
  35. package/concepts/common/Edge/Distance.json +13 -0
  36. package/concepts/common/Edge/Stay/LongStay.json +8 -0
  37. package/concepts/common/Edge/Stay.json +8 -0
  38. package/concepts/common/Edge/Travel/LongTravel.json +16 -0
  39. package/concepts/common/Edge/Travel/ShortTravel.json +11 -0
  40. package/concepts/common/Edge/Travel/targetNode.json +7 -0
  41. package/concepts/common/Edge/Travel.json +7 -0
  42. package/concepts/common/Edge.json +3 -0
  43. package/concepts/common/Vertice.json +3 -0
  44. package/concepts/supply/Fulfillment.json +10 -0
  45. package/concepts/supply/Inventory/Reorder.json +7 -0
  46. package/concepts/supply/Inventory.json +5 -0
  47. package/concepts/supply/Procurement/SupplierConfirm.json +6 -0
  48. package/concepts/supply/Procurement.json +8 -0
  49. package/concepts/supply/Transport.json +5 -0
  50. package/doc/API.md +556 -0
  51. package/doc/CAPABILITIES.md +373 -0
  52. package/doc/MODELISATION.md +511 -0
  53. package/doc/architecture.md +267 -0
  54. package/doc/concept-as-graph.md +379 -0
  55. package/doc/concept-learning.md +168 -0
  56. package/doc/creative-loop-map.md +202 -0
  57. package/doc/original-2016-doc.md +148 -0
  58. package/doc/usage.md +501 -0
  59. package/lib/authoring/abstract.js +401 -0
  60. package/lib/authoring/abstraction.js +190 -0
  61. package/lib/authoring/adapt.js +393 -0
  62. package/lib/authoring/ancestry.js +216 -0
  63. package/lib/authoring/author.js +147 -0
  64. package/lib/authoring/bounded-merge.js +57 -0
  65. package/lib/authoring/canon.js +158 -0
  66. package/lib/authoring/clock.js +123 -0
  67. package/lib/authoring/combinator.js +92 -0
  68. package/lib/authoring/compete.js +76 -0
  69. package/lib/authoring/compose-hotspot.js +314 -0
  70. package/lib/authoring/compress.js +279 -0
  71. package/lib/authoring/concept-net.js +254 -0
  72. package/lib/authoring/concepts.js +66 -0
  73. package/lib/authoring/context-project.js +277 -0
  74. package/lib/authoring/contract.js +476 -0
  75. package/lib/authoring/corpus-pack.js +125 -0
  76. package/lib/authoring/cost-probe.js +86 -0
  77. package/lib/authoring/crystallize.js +555 -0
  78. package/lib/authoring/dag-decompose.js +256 -0
  79. package/lib/authoring/dataset-adapter.js +253 -0
  80. package/lib/authoring/debug-provider.js +92 -0
  81. package/lib/authoring/decompose.js +343 -0
  82. package/lib/authoring/emittability.js +236 -0
  83. package/lib/authoring/equilibrium.js +160 -0
  84. package/lib/authoring/extract.js +153 -0
  85. package/lib/authoring/forest.js +55 -0
  86. package/lib/authoring/forge-fallback.js +116 -0
  87. package/lib/authoring/givens.js +121 -0
  88. package/lib/authoring/glossary.js +177 -0
  89. package/lib/authoring/grammar-graph.js +191 -0
  90. package/lib/authoring/granularity.js +80 -0
  91. package/lib/authoring/graph-net.js +108 -0
  92. package/lib/authoring/ground.js +148 -0
  93. package/lib/authoring/higher-order.js +85 -0
  94. package/lib/authoring/hotspot.js +132 -0
  95. package/lib/authoring/hysteresis.js +85 -0
  96. package/lib/authoring/index.js +106 -0
  97. package/lib/authoring/lattice-morphism.js +61 -0
  98. package/lib/authoring/lattice-pack.js +148 -0
  99. package/lib/authoring/leaf-io.js +77 -0
  100. package/lib/authoring/library.js +156 -0
  101. package/lib/authoring/lifecycle.js +92 -0
  102. package/lib/authoring/loop.js +193 -0
  103. package/lib/authoring/master-loop.js +132 -0
  104. package/lib/authoring/mdl.js +209 -0
  105. package/lib/authoring/memo-stability.js +122 -0
  106. package/lib/authoring/method-explorer.js +138 -0
  107. package/lib/authoring/method-pack.js +181 -0
  108. package/lib/authoring/method.js +202 -0
  109. package/lib/authoring/mine.js +510 -0
  110. package/lib/authoring/mount.js +119 -0
  111. package/lib/authoring/negotiate.js +100 -0
  112. package/lib/authoring/parametric.js +139 -0
  113. package/lib/authoring/reaggregate.js +75 -0
  114. package/lib/authoring/rebalance.js +157 -0
  115. package/lib/authoring/recall.js +135 -0
  116. package/lib/authoring/registry.js +350 -0
  117. package/lib/authoring/relearn.js +147 -0
  118. package/lib/authoring/retention.js +89 -0
  119. package/lib/authoring/segment-proxy.js +114 -0
  120. package/lib/authoring/serve-leaf.js +64 -0
  121. package/lib/authoring/slot-aware-serve.js +77 -0
  122. package/lib/authoring/sound-invoke.js +59 -0
  123. package/lib/authoring/split-serve.js +74 -0
  124. package/lib/authoring/ste.js +239 -0
  125. package/lib/authoring/stock.js +101 -0
  126. package/lib/authoring/store.js +94 -0
  127. package/lib/authoring/supervise.js +138 -0
  128. package/lib/authoring/support.js +131 -0
  129. package/lib/authoring/task-mirror.js +51 -0
  130. package/lib/authoring/typed-loop.js +160 -0
  131. package/lib/authoring/validate.js +569 -0
  132. package/lib/authoring/widen.js +88 -0
  133. package/lib/combos/appliance.js +189 -0
  134. package/lib/combos/critique.js +377 -0
  135. package/lib/combos/defaults.js +86 -0
  136. package/lib/combos/durable-runner.js +115 -0
  137. package/lib/combos/forge.js +209 -0
  138. package/lib/combos/index.js +86 -0
  139. package/lib/combos/learning-library.js +253 -0
  140. package/lib/combos/mixture-serve.js +193 -0
  141. package/lib/combos/plan-loop.js +192 -0
  142. package/lib/combos/proxy-cache.js +272 -0
  143. package/lib/combos/self-mod.js +94 -0
  144. package/lib/durable/audit.js +102 -0
  145. package/lib/durable/checkpoint-store.js +550 -0
  146. package/lib/durable/fold.js +62 -0
  147. package/lib/durable/interpreter.js +242 -0
  148. package/lib/durable/xlate.js +185 -0
  149. package/lib/graph/Graph.js +2486 -0
  150. package/lib/graph/expr.js +307 -0
  151. package/lib/graph/index.js +26 -0
  152. package/lib/graph/log.js +134 -0
  153. package/lib/graph/objects/Concept.js +382 -0
  154. package/lib/graph/objects/Entity.js +503 -0
  155. package/lib/graph/objects/Node.js +57 -0
  156. package/lib/graph/objects/PathMap.js +557 -0
  157. package/lib/graph/objects/Segment.js +100 -0
  158. package/lib/graph/tasks/stabilize.js +59 -0
  159. package/lib/graph/tasks/taskflow.js +247 -0
  160. package/lib/index.js +122 -0
  161. package/lib/load.js +132 -0
  162. package/lib/providers/backends.js +117 -0
  163. package/lib/providers/borderline.js +129 -0
  164. package/lib/providers/cache.js +226 -0
  165. package/lib/providers/canonicalize.js +198 -0
  166. package/lib/providers/constat.js +107 -0
  167. package/lib/providers/geo.js +53 -0
  168. package/lib/providers/index.js +116 -0
  169. package/lib/providers/intake.js +263 -0
  170. package/lib/providers/llm-local.js +88 -0
  171. package/lib/providers/llm.js +236 -0
  172. package/lib/providers/local-host.js +197 -0
  173. package/lib/providers/merge-consistency.js +162 -0
  174. package/lib/providers/nogood.js +149 -0
  175. package/lib/providers/reason-loop.js +223 -0
  176. package/lib/providers/semiring.js +285 -0
  177. package/lib/providers/solver-fork.js +163 -0
  178. package/lib/providers/stats.js +228 -0
  179. package/lib/providers/verify.js +120 -0
  180. package/lib/runtime/index.js +135 -0
  181. package/lib/runtime/invoke-pool.js +92 -0
  182. package/lib/runtime/protocol.js +210 -0
  183. package/lib/runtime/transport-socket.js +77 -0
  184. package/lib/runtime/worker-entry.js +31 -0
  185. package/lib/sg/cli.js +601 -0
  186. package/lib/sg/log-sinks.js +214 -0
  187. package/lib/sg/mcp.js +395 -0
  188. package/lib/sg/proxy-run.js +66 -0
  189. package/lib/sg/serve-demo.js +185 -0
  190. package/lib/sg/serve.js +205 -0
  191. package/lib/sg/trace.js +118 -0
  192. package/lib/studio/protocol.js +45 -0
  193. package/lib/studio/public/app.js +310 -0
  194. package/lib/studio/public/components/ConceptEditor.js +43 -0
  195. package/lib/studio/public/components/ConceptTree.js +43 -0
  196. package/lib/studio/public/components/CorpusPanel.js +68 -0
  197. package/lib/studio/public/components/ForkTree.js +36 -0
  198. package/lib/studio/public/components/GrammarGraph.js +99 -0
  199. package/lib/studio/public/components/GraphCanvas.js +156 -0
  200. package/lib/studio/public/components/Inspector.js +48 -0
  201. package/lib/studio/public/components/LearningPanel.js +85 -0
  202. package/lib/studio/public/components/PromptConsole.js +46 -0
  203. package/lib/studio/public/components/ProviderTrace.js +39 -0
  204. package/lib/studio/public/components/SessionSplit.js +47 -0
  205. package/lib/studio/public/components/TilingOverlay.js +40 -0
  206. package/lib/studio/public/components/Timeline.js +57 -0
  207. package/lib/studio/public/index.html +26 -0
  208. package/lib/studio/public/styles.css +185 -0
  209. package/lib/studio/public/ws.js +58 -0
  210. package/lib/studio/server.js +130 -0
  211. package/lib/studio/session.js +397 -0
  212. package/lib/studio/studio.js +149 -0
  213. package/package.json +42 -0
@@ -0,0 +1,373 @@
1
+ # Capabilities — what is measured, what is not
2
+
3
+ Every feature below carries a **maturity bar**, its **measured numbers**, its **limits**, a
4
+ **2–5 line way to use it**, and a plain-language explanation. The numbers come from GPU campaigns
5
+ with negative controls and deterministic re-runs; a standing house rule applies to this page as to
6
+ the README: **a refuted claim is removed the day it falls** — several refuted claims are listed
7
+ below on purpose, because knowing where the floor is *is* the product.
8
+
9
+ ## How to read the bars
10
+
11
+ The scale has six rungs. Nothing is at rung 6 yet — this library is pre-launch, and rung 6
12
+ (external replications) can only come after other people run it.
13
+
14
+ 1. coherent idea
15
+ 2. design with pre-registered kill-gates
16
+ 3. mechanics proven (harness, negative controls, deterministic re-run)
17
+ 4. measured at scale (campaigns, confidence intervals)
18
+ 5. product-integrated (library + surface + tests)
19
+ 6. field-adopted (external replications)
20
+
21
+ `[████████░░] 5/6 — product-integrated` therefore reads: *idea → design → mechanics → scale
22
+ measurement → shipped in the library behind a surface, with tests; not yet replicated externally.*
23
+
24
+ ## Where each capability is served
25
+
26
+ | Feature | library | `sg mcp` | dequantizer `serve` | dequantizer `mcp` |
27
+ |---|---|---|---|---|
28
+ | F1 low-quant repair | ✓ | `ask` / `hint` / `propose` | ✓ (OpenAI endpoint) | ✓ `ask` / `hint` / `propose` |
29
+ | F2 zoom | ✓ (bricks) | — (known gap, see F2) | — | — |
30
+ | F3 task memory | ✓ | `state_recall` / `plan_sync` | — | — |
31
+ | F4 think mode | ✓ | `propose` | — | `propose` |
32
+ | F5 critical mind | ✓ (C9) | `critique` | — | `critique` |
33
+ | F6 rooms | ✓ | `lattice_load` | rooms CLI | `lattice_load` |
34
+ | F7 substrate | ✓ (the engine itself) | — | — | — |
35
+
36
+ [skynet-dequantizer](https://github.com/9pings/skynet-dequantizer) is the ready-made appliance over
37
+ this library (an OpenAI-compatible local endpoint + `.sgc` rooms); everything else ships here.
38
+
39
+ ---
40
+
41
+ ## F1: Low-quant repair
42
+
43
+ `[████████░░] 5/6 — product-integrated` · missing rung: external replications (post-launch).
44
+
45
+ A menu of *certified* method shapes steers a heavily-quantized model's output, recovering most of
46
+ what compression broke — at zero big-model calls at runtime.
47
+
48
+ **Measured.** SQL, covered queries: low-quant 8→**63 %** (high-quant reference 46→92 %), N=201 ·
49
+ finance tables, traffic view: 7→**62 %** (20→78 %), N=120 · **zero big-model calls at runtime** ·
50
+ the forge held **0 false admissions** across 3 datasets × 2 forge models, and every stock ships
51
+ with a sha256 validation dossier.
52
+
53
+ **Limits (state them).** The guarantee is **at admission, not at execution**: at use time the stock
54
+ *orients* the model; a suggestion is not a correctness proof. A runtime "trusted answers"
55
+ cross-agreement tier was tested and **refuted** — it was removed. Forge yield is a per-domain
56
+ parameter, and amortization is a property of the domain's stereotypy.
57
+
58
+ **Against the existing landscape.** What you would reach for today: a bigger or higher-quant model
59
+ (needs the VRAM you don't have), grammar-constrained decoding (tested here — it *hurt* output
60
+ stability, so we use strong prompting with grammar as format-insurance only), or fine-tuning (cost,
61
+ and it moves the whole model). This instead keeps your hardware and steers with a *verified* method
62
+ vocabulary. We found no equivalent for the combination: an admission-gated stock (0 false
63
+ admissions measured) + per-completion provenance headers telling you which slice you can trust.
64
+
65
+ **How to use it, simply:**
66
+
67
+ ```bash
68
+ sg serve --frontier-model <path.gguf> --store ./stock.json # OpenAI-compatible → http://127.0.0.1:4747/v1
69
+ # point ANY OpenAI client's baseURL at it — a covered query is served from the verified stock
70
+ # at 0 frontier calls; the same lanes exist as MCP tools: ask + hint (SOFT) / propose (HARD)
71
+ ```
72
+
73
+ **In plain terms.** A heavily-compressed model is like a typist with worn-out keys: most sentences
74
+ come out mangled. The stock is a phrasebook of formulas that were *verified before being let in*;
75
+ when a request matches one, the model only has to fill in the blanks instead of improvising the
76
+ whole formula — and if nothing matches, the system says so instead of guessing.
77
+
78
+ ---
79
+
80
+ ## F2: Piece-by-piece zoom on big tasks
81
+
82
+ `[███████░░░] 4/6 — measured at scale` · missing rungs: rung 5 needs turnkey packaging — an MCP
83
+ tool exposing the zoom (the known product gap) and givens plumbing generalized beyond per-domain
84
+ wiring; rung 6 = external replications (post-launch).
85
+
86
+ The task becomes a typed DAG; each piece is served with only its bounded neighbourhood (parent
87
+ goal + resolved inputs + what to produce) — the model never sees the whole.
88
+
89
+ ```
90
+ the big task what the MODEL sees (one call)
91
+ ┌──────────────────┐
92
+ │ ~20 operations, │ typed cut ┌────────────────────────────────┐
93
+ │ tables, prose … │ ─────────────► │ parent goal (one line) │
94
+ └──────────────────┘ │ inputs: c1_1_net = 991.1 │
95
+ │ the GRAPH holds: │ (2007 net revenue) │
96
+ ▼ │ produce: decrease_amount │
97
+ plan · needs/produces · └────────────────────────────────┘
98
+ every solved value + provenance ~1 sticky note of context,
99
+ (never re-sent to the model) constant as the task grows
100
+ ```
101
+
102
+ **Measured.** Cross-domain at N=200/domain (560 tasks total): math word problems 16→**52 %**
103
+ (×3.25 [2.4–4.8]), financial-table QA 20→**50 %** (×2.54 [1.96–3.5]), bootstrap CIs · where the
104
+ lone model collapses, the pieces hold: deep tasks **0/33 whole vs 10/33 decomposed** · compound
105
+ ~20-operation "monster" tasks: whole-context floors at **0/20 across 3 configs**, a hierarchical
106
+ 2-level split reaches **73 % of sections** · robustness-to-form proven: the scaffold gain holds
107
+ across 4 wordings (K-paraphrase harness).
108
+
109
+ **Limits (state them).** The zoom pays **iff the task exceeds whole-task capacity** — it is neutral
110
+ inside that capacity (measured on simple lookups). The small model is **not** the task cutter
111
+ (measured limit). The givens plumbing (the injected base facts) is per-domain — hence "not
112
+ turnkey yet". And no MCP tool exposes this capability today.
113
+
114
+ **Against the existing landscape.** Same family as the decomposition planners (LLMCompiler, ReWOO,
115
+ plan-and-execute agents) — the deltas are the discipline, and they are measured: (i) pieces bind
116
+ through a **typed needs/produces contract**, not a free-text scratchpad the model re-reads whole;
117
+ (ii) per-piece context is **bounded and constant** — measured on a low-quant where the whole-task
118
+ baseline collapses (0/33 deep tasks) rather than on a frontier model that hides the effect;
119
+ (iii) the **neutral zone is published** (the zoom pays only past whole-task capacity — frameworks
120
+ rarely state where their scaffolding does nothing); (iv) the cutter/executor split is measured,
121
+ not assumed (the small model is *not* the task cutter).
122
+
123
+ **How to use it, simply:**
124
+
125
+ ```js
126
+ const { createPlanLoop } = require('skynet-graph').combos;
127
+ const { numberGivens, seedOf } = require('skynet-graph/lib/authoring/givens');
128
+ const loop = createPlanLoop({ decompose, serveLeaf }); // both injected — see lib/authoring/
129
+ const { answer, refused } = await loop.run(task, { givens: seedOf(numberGivens(task)) });
130
+ ```
131
+
132
+ The bricks live in `lib/authoring/`: `dag-decompose` (the typed cutter prompt + router),
133
+ `context-project` (the bounded projection; `stratComplete` is the stratified rendering that held on
134
+ the monster tasks), `givens` (the typed base-fact front door), `leaf-io` (typed leaf output or a
135
+ typed refusal — never carried garbage).
136
+
137
+ **In plain terms.** This is how a person works a file too big to hold in their head: a sticky-note
138
+ plan on the side, then one piece at a time, with only the two or three earlier results that piece
139
+ actually needs. The engine holds the plan and the results; the model only ever sees one sticky
140
+ note's worth of context.
141
+
142
+ ---
143
+
144
+ ## F3: Task memory that reopens
145
+
146
+ `[████████░░] 5/6 — product-integrated` (+ shipped demo) · missing rung: external replications
147
+ (post-launch).
148
+
149
+ Task state is typed facts with provenance under truth maintenance (JTMS): when a premise drifts,
150
+ its consequences retract in cascade, and a "done" step reopens itself with the reason attached.
151
+
152
+ **Measured.** A drifted premise retracts consequences in cascade and re-derives **selectively at 0
153
+ model calls**; a withdrawn value **reopens its dependent tasks with the reason** · crash-replay is
154
+ **bit-identical at 0 calls** · bounded-context recall **100 % at 894 constant tokens/call** vs 50 %
155
+ at 4 286 for a carry-everything baseline (PoC) · typed reuse: **6 calls vs 24**, with **12/12
156
+ correct on drift vs 0/12** for retrieve-nearest (stale).
157
+
158
+ **Against the existing landscape.** What you would reach for today: an agent scratchpad or to-do
159
+ framework (boxes only ever get *ticked*), vector / episodic memory (retrieves by surface
160
+ similarity — measured here serving a **stale** answer 12/12 times on a policy drift), or RAG over
161
+ notes (same failure class). **No market equivalent found**: task-reopen on premise drift was
162
+ checked twice against the market — no agent tool reopens a task whose premise drifted.
163
+
164
+ **How to use it, simply:**
165
+
166
+ ```js
167
+ const g = Graph.fromDirs({ concepts: './concepts', seed });
168
+ g.pushMutation({ $$_id: 'report', revenue: 913 }); // the premise drifts (an erratum lands)
169
+ // every fact derived from the old value retracts in cascade and re-derives selectively — 0 model calls
170
+ ```
171
+
172
+ Over MCP: `state_recall` reads the certified task state; `plan_sync` mirrors the graph plan — REOPEN
173
+ included — onto the host's own task list. The shipped replay is `examples/integrated-demo` (no GPU).
174
+
175
+ **In plain terms.** Think of a spreadsheet where deleting one cell greys out every formula that used
176
+ it — with the reason attached — instead of leaving stale numbers standing. Ordinary agent to-do
177
+ lists only ever tick boxes; this one un-ticks a box the moment the fact it rested on falls.
178
+
179
+ ---
180
+
181
+ ## F4: External think mode
182
+
183
+ `[████████░░] 5/6 — product-integrated` · missing rung: external replications (post-launch).
184
+
185
+ The model proposes; the graph refuses with the reason and enumerates the admissible options
186
+ (tested through its own gate, never guessed); the model revises — bounded, with honest refusal.
187
+
188
+ **Measured.** One dialogue round: 17/24 → **24/24** at **zero false admissions** · a forced write is
189
+ recorded **UNTRUSTED**, never admitted · honest refusal on over-constrained input.
190
+
191
+ **Against the existing landscape.** What you would reach for today: a model with a native think
192
+ mode, or a self-critique / reflection loop. The 2024-25 literature converges on the weakness we
193
+ also measured: **self-critique underperforms external feedback with localized blame** (Huang,
194
+ Kamoi, Tyen, Stechly — and our own refutation: a low-quant cannot audit itself, 3 forms tested).
195
+ This lane is that external feedback, structural: the gate **never yields**, the refusal carries a
196
+ typed blame + gate-*tested* options, and a forced write lands as UNTRUSTED provenance — a
197
+ discipline a prompt cannot provide, because a prompt can always be argued out of.
198
+
199
+ **How to use it, simply:**
200
+
201
+ ```bash
202
+ claude mcp add sg -- node bin/sg mcp --frontier-model <path.gguf> --stock ./methods.sgc
203
+ # HARD lane: `propose {shape}` → admitted through the gate, or refused with the reason + gate-tested
204
+ # options; `force:true` → recorded UNTRUSTED, never admission. SOFT lane: `hint` (advisory menu).
205
+ ```
206
+
207
+ Also wired in the dequantizer's `mcp` surface.
208
+
209
+ **In plain terms.** Like a chess coach who never moves the pieces for you: when you propose an
210
+ illegal move it says exactly *why* it is illegal and lists the legal ones, and you choose again.
211
+ Crucially, the coach cannot be bullied — a forced move is written down as untrusted, never played.
212
+
213
+ ---
214
+
215
+ ## F5: External critical mind
216
+
217
+ `[████████░░] 5/6 — product-integrated` (library + MCP, promoted 2026-07-13; the campaign numbers
218
+ themselves sit at rung 4 — measured) · missing rungs: form-robustness testing of the entry
219
+ templates, then external replications (post-launch).
220
+
221
+ C9: a question is split into declared viewpoints, each established through a **witness gate** over
222
+ a statement pool; missing theses are generated *anchored to pool witnesses only*; everything lands
223
+ in a typed ledger; the verdict is certification-aware — mechanical only where measurement says it
224
+ can be.
225
+
226
+ ```
227
+ your statements ("PRO: …" / "CON: …") your viewpoints (optional)
228
+ │ │
229
+ ▼ ▼
230
+ [statement POOL] ────► [declared VIEWPOINTS] ────► [WITNESS GATE]
231
+ no input? model- no input? model-named a point is established only
232
+ brainstormed — — frame DECLARED with a witness from the pool
233
+ frame FREE │
234
+
235
+ [anchored GENERATION of missing theses] ──► [typed LEDGER] ──► [VERDICT]
236
+ drafted only from pool witnesses; every entry mechanical at count margin ≥ 3
237
+ 0 fabrication across negative controls carries why (≥ 2 on a certified perimeter);
238
+ below → counts + honest UNDECIDED
239
+ ```
240
+
241
+ **Measured.** Disciplined piece-by-piece argument coverage **77 % vs 58 %** whole-context (48
242
+ arguments) · with a **certified perimeter**, weighing decisions go 12/24 → **24/24** (self-believed
243
+ coverage measured at ~106 % — the perimeter is what closes the illusion) · anchored generation of
244
+ missing theses: **0 fabrication across all negative controls** · anti-injection ledger: **8/8
245
+ retracted**, with JTMS cascade · **the measured decidability bound**: a verdict is mechanical at
246
+ count margin **≥ 3** (free/declared frames) or **≥ 2 on a certified perimeter** (24/24); below the
247
+ bound the output is counts + coverage + an honest **UNDECIDED** — never a fake weighing.
248
+
249
+ **Refuted and kept on the page** (tested, failed, removed from the claims): graded/prevalence
250
+ weighting under the precision cap; goal-criteria weighting for a low-quant judge (2 forms);
251
+ low-quant self-audit (3 forms).
252
+
253
+ **Benchmarked head-to-head against the model's own think mode** (N=24 composed perimeters, gold
254
+ hidden, every arm re-run bit-identical): on side-judgment over *unlabeled* statement pools, the
255
+ naive single call scores **13/24 (≈ chance)** and the same model with a native 1024-token think
256
+ budget **also scores 13/24** — each renders 11 confident wrong verdicts, zero refusals. The C9
257
+ combo on the same pools renders **0 wrong verdicts anywhere**: with a *declared* perimeter it
258
+ decides **24/24, all by mechanical count** (margins 3–6, witnesses 100 % in-pool); without one it
259
+ returns an honest UNDECIDED instead of a coin flip. (When the pool is pre-labeled, counting is
260
+ trivial for every arm — the critical mind's value is judgment + audit, not label-counting. The
261
+ declared perimeter is input the naive arms don't have: that is the product point — declare the
262
+ frame and a verdict becomes provable.) Cost: ~19 short calls ≈ 6 s per debate on the test GPU.
263
+
264
+ **Against the existing landscape.** What you would reach for today: LLM-as-judge (known to be
265
+ miscalibrated and gameable — the essay-scoring literature documents verbatim-anchoring as the
266
+ countermeasure, which is exactly what the witness gate hard-codes) or a debate prompt (no coverage
267
+ guarantee, no audit trail). The deltas here: coverage is **witness-gated 0-false**, the ledger is
268
+ the audit trail, and — we found no equivalent for this — the judge **declines by measured bound**:
269
+ below its own decidability margin it returns UNDECIDED instead of picking a winner.
270
+
271
+ **Limits (state them).** The entry templates (pool brainstorm, viewpoint naming) are not yet
272
+ form-robustness-tested; on FREE frames, coverage is relative to the pool — and the payload says so.
273
+
274
+ **How to use it, simply:**
275
+
276
+ ```js
277
+ const cm = Graph.combos.createCriticalMind({ ask });
278
+ const r = await cm.run({ topic, statements, viewpoints }); // ledger + per-side synthesis + verdict|UNDECIDED
279
+ ```
280
+
281
+ Over MCP (both `sg mcp` and the dequantizer's `mcp`): the `critique` tool. Its **iteration
282
+ contract**: OPEN points and an UNDECIDED verdict are a *typed data request* — the host gathers real
283
+ statements (web, docs, its own context) and calls `critique` again with `statements`; the frame
284
+ upgrades to MATERIAL and the margin can move honestly.
285
+
286
+ **In plain terms.** A debate moderator with one strict rule: no viewpoint counts unless it can
287
+ produce a witness statement actually on the table. Missing sides get drafted — but only from what
288
+ is on the table, never invented. And when the count is too close to call, it says "undecided"
289
+ instead of picking a winner, because that is what its own measurements say it can decide.
290
+
291
+ ---
292
+
293
+ ## F6: Local .sgc rooms
294
+
295
+ `[████████░░] 5/6 — product-integrated` · missing rung: external replications (post-launch).
296
+
297
+ Shareable certified-stock mini-repos: export a room, hand it over, import it — every load goes
298
+ **through the engine gates** (never a raw write). sha256 dossiers; no catalog, no subscription, no
299
+ egress by default.
300
+
301
+ **Against the existing landscape.** What you would reach for today: a prompt library / hub
302
+ (no admission gate — anything pasted in is trusted), a RAG index (retrieval, not certification),
303
+ or a hosted marketplace (accounts, egress, someone else's catalog). A room is a **local file you
304
+ own**: imports are dry-loaded through the same engine gates as everything else (a malformed bundle
305
+ is refused, never written), and `freeze` pins it under a sha256 dossier you can hand to a colleague.
306
+
307
+ **How to use it, simply:**
308
+
309
+ ```bash
310
+ skynet-dequantizer rooms list|import|export|freeze # your own shareable stock mini-repos
311
+ # in this repo, the MCP counterpart is `lattice_load` — learning through the version-gated
312
+ # admission; there is NO direct-write tool.
313
+ ```
314
+
315
+ **In plain terms.** Like sharing a folder of sheet music instead of subscribing to a streaming
316
+ service: a room is a small file of verified method stock you can freeze, checksum, and hand to a
317
+ colleague — and whatever comes in still has to pass the same admission gate as everything else.
318
+
319
+ ---
320
+
321
+ ## F7: The versionable reasoning substrate
322
+
323
+ `[████████░░] 5/6 — product-integrated` · missing rung: external replications (post-launch).
324
+
325
+ Use 1, standalone, no LLM required: a rule-driven knowledge graph with declarative concepts and
326
+ stabilization to a fixpoint. Every revision is snapshotted, which gives the control you have over
327
+ *code*, applied to *belief*:
328
+
329
+ - `rollbackTo(rev)` — rewind to any past revision, concept rules included;
330
+ - `diffRevisions(a, b)` — see exactly which beliefs changed between two points;
331
+ - `fork` / `merge` — branch a sub-world and merge back only a snapped interface;
332
+ - native cascading retraction — a falsified premise un-casts itself and its consequences.
333
+
334
+ **Against the existing landscape.** Classic rules engines (RETE-family) match and fire but do not
335
+ *version* belief; truth-maintenance systems (the JTMS lineage) retract but never shipped with
336
+ git-like tooling; event sourcing versions *events*, not the derived belief state plus the rules
337
+ that derived it. **No direct market equivalent found** for git-like control over belief state
338
+ (rollback / diff / fork / merge on *what the system currently holds true*, rules included) —
339
+ stated as a position we could not find matched, not as a grand claim.
340
+
341
+ **How to use it, simply:**
342
+
343
+ ```js
344
+ const revA = g.getCurrentRevision();
345
+ g.pushMutation(/* … grow the belief state … */);
346
+ g.diffRevisions(revA, g.getCurrentRevision()); // exactly which beliefs changed
347
+ g.rollbackTo(revA); // rewind data AND rules
348
+ ```
349
+
350
+ **In plain terms.** Git for beliefs: every state of "what the system currently holds true" is a
351
+ commit. You can diff two states to find where a conclusion went wrong, roll back to before a bad
352
+ fact landed, or branch a what-if world and merge back only its conclusion.
353
+
354
+ ---
355
+
356
+ ## The integrated demo
357
+
358
+ `[████████░░] 5/6 — product-integrated` (ships in this repo) · missing rung: external replications —
359
+ which is exactly what the replay is for.
360
+
361
+ All the capabilities above, assembled on one continuous run: a **9.5 GB quant** works a real
362
+ annual-report analysis end-to-end — typed plan, per-step gated admission with cell-level
363
+ provenance, an erratum retracting and re-deriving selectively at 0 calls, a withdrawn value
364
+ reopening its tasks, crash-replay bit-identical.
365
+
366
+ **How to run it, simply:**
367
+
368
+ ```bash
369
+ node examples/integrated-demo/run.js --replay # 7 checks, deterministic — no model, no GPU
370
+ ```
371
+
372
+ This is **the public verifiable**: the replay re-verifies its 7 checks bit-for-bit on any machine,
373
+ with no model and no GPU. Details and the live-run instructions: `examples/integrated-demo/README.md`.