@cortexkit/opencode-magic-context 0.36.1 → 0.37.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.
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/project-security.d.ts +2 -1
- package/dist/config/project-security.d.ts.map +1 -1
- package/dist/config/schema/magic-context.d.ts +10 -0
- package/dist/config/schema/magic-context.d.ts.map +1 -1
- package/dist/{conflict-warning-hook-mt0ttc4x.js → conflict-warning-hook-an4fxhwf.js} +3 -3
- package/dist/{derive-budgets-88mxk2w1.js → derive-budgets-0f8xpyw2.js} +3 -2
- package/dist/features/magic-context/context-authority.d.ts.map +1 -1
- package/dist/features/magic-context/dreamer/evaluate-smart-notes.d.ts.map +1 -1
- package/dist/features/magic-context/memory/embedding-openai.d.ts +3 -1
- package/dist/features/magic-context/memory/embedding-openai.d.ts.map +1 -1
- package/dist/features/magic-context/memory/project-identity.d.ts +6 -0
- package/dist/features/magic-context/memory/project-identity.d.ts.map +1 -1
- package/dist/features/magic-context/migrations.d.ts.map +1 -1
- package/dist/features/magic-context/overflow-detection.d.ts.map +1 -1
- package/dist/features/magic-context/smart-notes/runner.d.ts.map +1 -1
- package/dist/features/magic-context/smart-notes/wake-plane.d.ts +21 -0
- package/dist/features/magic-context/smart-notes/wake-plane.d.ts.map +1 -0
- package/dist/features/magic-context/storage-db.d.ts +13 -2
- package/dist/features/magic-context/storage-db.d.ts.map +1 -1
- package/dist/features/magic-context/storage-meta-persisted.d.ts +22 -0
- package/dist/features/magic-context/storage-meta-persisted.d.ts.map +1 -1
- package/dist/features/magic-context/storage-meta-session.d.ts.map +1 -1
- package/dist/features/magic-context/storage-meta-shared.d.ts.map +1 -1
- package/dist/features/magic-context/storage-primers.d.ts +11 -0
- package/dist/features/magic-context/storage-primers.d.ts.map +1 -1
- package/dist/features/magic-context/storage-schema-helpers.d.ts.map +1 -1
- package/dist/features/magic-context/user-memory/storage-user-memory.d.ts +7 -0
- package/dist/features/magic-context/user-memory/storage-user-memory.d.ts.map +1 -1
- package/dist/features/magic-context/window-report-ledger.d.ts +70 -0
- package/dist/features/magic-context/window-report-ledger.d.ts.map +1 -0
- package/dist/hooks/magic-context/command-handler.d.ts.map +1 -1
- package/dist/hooks/magic-context/event-handler.d.ts.map +1 -1
- package/dist/hooks/magic-context/event-resolvers.d.ts +4 -0
- package/dist/hooks/magic-context/event-resolvers.d.ts.map +1 -1
- package/dist/hooks/magic-context/execute-status.d.ts +2 -1
- package/dist/hooks/magic-context/execute-status.d.ts.map +1 -1
- package/dist/hooks/magic-context/hook.d.ts.map +1 -1
- package/dist/hooks/magic-context/inject-compartments.d.ts.map +1 -1
- package/dist/hooks/magic-context/lkg-replay.d.ts.map +1 -1
- package/dist/hooks/magic-context/lkg-slot.d.ts +20 -0
- package/dist/hooks/magic-context/lkg-slot.d.ts.map +1 -1
- package/dist/hooks/magic-context/module-state-sync.d.ts +8 -0
- package/dist/hooks/magic-context/module-state-sync.d.ts.map +1 -1
- package/dist/hooks/magic-context/module-transport.d.ts.map +1 -1
- package/dist/hooks/magic-context/module-wire.d.ts +6 -1
- package/dist/hooks/magic-context/module-wire.d.ts.map +1 -1
- package/dist/hooks/magic-context/rust-mode-transform.d.ts +17 -0
- package/dist/hooks/magic-context/rust-mode-transform.d.ts.map +1 -1
- package/dist/hooks/magic-context/strip-content.d.ts +25 -0
- package/dist/hooks/magic-context/strip-content.d.ts.map +1 -1
- package/dist/hooks/magic-context/system-prompt-hash.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +11 -3
- package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform.d.ts +10 -0
- package/dist/hooks/magic-context/transform.d.ts.map +1 -1
- package/dist/hooks/magic-context/wrapup-orchestrator.d.ts.map +1 -1
- package/dist/{index-1skzp4dc.js → index-0ze9p983.js} +572 -92
- package/dist/{index-nsx2n9eg.js → index-4cz5nfxf.js} +3 -3
- package/dist/{index-f1tnb3vm.js → index-8pqfcghm.js} +21 -9
- package/dist/{index-zp6x6s6a.js → index-cae89eas.js} +25 -6
- package/dist/index-cgyfn1s2.js +53 -0
- package/dist/{index-3zqcdwqr.js → index-crke4z5j.js} +7 -4
- package/dist/{index-tsgs7td8.js → index-pck9vadr.js} +1 -1
- package/dist/index-q0t189ay.js +741 -0
- package/dist/{index-3tnkymva.js → index-sw8gnq34.js} +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1172 -287
- package/dist/plugin/hooks/create-session-hooks.d.ts +3 -0
- package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
- package/dist/plugin/rpc-handlers.d.ts.map +1 -1
- package/dist/{recomp-orchestrator-a0g9b52q.js → recomp-orchestrator-c3ff16k7.js} +7 -6
- package/dist/{safe-notification-target-c11fdda2.js → safe-notification-target-b693f9x3.js} +2 -2
- package/dist/{send-session-notification-bgtf4853.js → send-session-notification-dxske5zm.js} +3 -3
- package/dist/shared/conflict-detector.d.ts +63 -0
- package/dist/shared/conflict-detector.d.ts.map +1 -1
- package/dist/shared/harness-provider-map.d.ts +8 -0
- package/dist/shared/harness-provider-map.d.ts.map +1 -1
- package/dist/shared/logger.d.ts +8 -0
- package/dist/shared/logger.d.ts.map +1 -1
- package/dist/shared/models-dev-cache.d.ts +5 -0
- package/dist/shared/models-dev-cache.d.ts.map +1 -1
- package/dist/shared/prompt-surface-runtime.d.ts.map +1 -1
- package/dist/shared/prompt-surface.d.ts +2 -0
- package/dist/shared/prompt-surface.d.ts.map +1 -1
- package/dist/shared/rpc-client.d.ts.map +1 -1
- package/dist/shared/rpc-types.d.ts +14 -0
- package/dist/shared/rpc-types.d.ts.map +1 -1
- package/dist/shared/rpc-utils.d.ts +19 -9
- package/dist/shared/rpc-utils.d.ts.map +1 -1
- package/dist/shared/window-geometry.d.ts +89 -0
- package/dist/shared/window-geometry.d.ts.map +1 -0
- package/dist/{storage-meta-session-df9tstzr.js → storage-meta-session-mk4gsnke.js} +4 -3
- package/dist/tools/ctx-memory/tools.d.ts.map +1 -1
- package/dist/tools/ctx-note/tools.d.ts.map +1 -1
- package/dist/tui/data/context-db.d.ts.map +1 -1
- package/dist/tui-compiled/data/context-db.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/config/index.ts +2 -0
- package/src/config/latch-permanence-guard.test.ts +218 -0
- package/src/config/project-security.ts +10 -1
- package/src/config/schema/magic-context.ts +10 -0
- package/src/shared/__fixtures__/window-overlay.v1.json +337 -0
- package/src/shared/conflict-detector.test.ts +176 -1
- package/src/shared/conflict-detector.ts +126 -3
- package/src/shared/harness-provider-map.test.ts +20 -0
- package/src/shared/harness-provider-map.ts +19 -0
- package/src/shared/logger.test.ts +119 -0
- package/src/shared/logger.ts +33 -15
- package/src/shared/models-dev-cache.test.ts +17 -0
- package/src/shared/models-dev-cache.ts +58 -6
- package/src/shared/prompt-surface-runtime.ts +5 -3
- package/src/shared/prompt-surface.test.ts +38 -0
- package/src/shared/prompt-surface.ts +15 -2
- package/src/shared/rpc-client.ts +4 -2
- package/src/shared/rpc-types.ts +14 -0
- package/src/shared/rpc-utils.test.ts +137 -13
- package/src/shared/rpc-utils.ts +144 -31
- package/src/shared/window-geometry.test.ts +309 -0
- package/src/shared/window-geometry.ts +629 -0
- package/src/tui/data/context-db.ts +5 -0
- package/src/tui/index.tsx +22 -0
- package/src/tui-compiled/data/context-db.ts +5 -0
- package/src/tui-compiled/index.tsx +319 -255
- package/dist/index-wgvxkqpx.js +0 -342
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import { describe, expect, test } from "bun:test";
|
|
2
|
+
import { readdirSync, readFileSync } from "node:fs";
|
|
3
|
+
import { dirname, join, relative } from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
|
|
6
|
+
const REPOSITORY_ROOT = join(dirname(fileURLToPath(import.meta.url)), "../../../..");
|
|
7
|
+
const SOURCE_ROOTS = ["packages/plugin/src", "packages/pi-plugin/src"] as const;
|
|
8
|
+
|
|
9
|
+
type Classification = "VERDICT" | "DIAGNOSTIC" | "PUBLICATION";
|
|
10
|
+
|
|
11
|
+
type KnownSlot = {
|
|
12
|
+
classification: Classification;
|
|
13
|
+
reason: string;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Every module-level mutable slot whose name says it can retain a capability,
|
|
18
|
+
* absence, or failure verdict. A new matching slot must be classified here so
|
|
19
|
+
* a negative cache cannot quietly become permanent.
|
|
20
|
+
*/
|
|
21
|
+
const KNOWN_SLOTS: Record<string, KnownSlot> = {
|
|
22
|
+
"packages/plugin/src/features/magic-context/compaction-marker.ts:cachedSchemaCompatible": {
|
|
23
|
+
classification: "VERDICT",
|
|
24
|
+
reason: "DEFECT: a transient PRAGMA/read failure is cached as incompatible until the writable DB is closed.",
|
|
25
|
+
},
|
|
26
|
+
"packages/plugin/src/features/magic-context/memory/embedding-local.ts:nativeRuntimeMissing": {
|
|
27
|
+
classification: "VERDICT",
|
|
28
|
+
reason: "Correct: a missing or unloadable native binding needs an install repair, which this process cannot observe.",
|
|
29
|
+
},
|
|
30
|
+
"packages/plugin/src/features/magic-context/memory/embedding-synapse.ts:sharedClientPromise": {
|
|
31
|
+
classification: "VERDICT",
|
|
32
|
+
reason: "DEFECT: a rejected connection promise remains shared after the daemon recovers.",
|
|
33
|
+
},
|
|
34
|
+
"packages/plugin/src/features/magic-context/memory/embedding-synapse.ts:permanentFailure": {
|
|
35
|
+
classification: "VERDICT",
|
|
36
|
+
reason: "DEFECT: a daemon catalog or response classification can be repaired in-process, but the provider then returns null without another probe.",
|
|
37
|
+
},
|
|
38
|
+
"packages/plugin/src/features/magic-context/memory/embedding-openai.ts:failureTimes": {
|
|
39
|
+
classification: "VERDICT",
|
|
40
|
+
reason: "Correct: circuit state expires and a half-open probe re-evaluates the endpoint.",
|
|
41
|
+
},
|
|
42
|
+
"packages/plugin/src/features/magic-context/memory/project-identity.ts:directoryFallbackCache":
|
|
43
|
+
{
|
|
44
|
+
classification: "VERDICT",
|
|
45
|
+
reason: "Saved: each read checks for a newly-created .git directory and deletes the fallback before resolving again.",
|
|
46
|
+
},
|
|
47
|
+
"packages/plugin/src/features/magic-context/memory/project-identity.ts:transientFailureCooldown":
|
|
48
|
+
{
|
|
49
|
+
classification: "VERDICT",
|
|
50
|
+
reason: "Saved: getActiveCooldown deletes an expired entry and forces a new git probe after five minutes.",
|
|
51
|
+
},
|
|
52
|
+
"packages/plugin/src/features/magic-context/message-index.ts:MESSAGE_HISTORY_ORPHAN_UNAVAILABLE_REPROBE_MS":
|
|
53
|
+
{
|
|
54
|
+
classification: "VERDICT",
|
|
55
|
+
reason: "Saved: source_unavailable persists a future timestamp, then the normal cooldown arithmetic re-probes after one day.",
|
|
56
|
+
},
|
|
57
|
+
"packages/plugin/src/features/magic-context/mural/storage-mural-cues.ts:muralCueColumnCache": {
|
|
58
|
+
classification: "VERDICT",
|
|
59
|
+
reason: "Correct by scope: the database is fully migrated before this handle reaches cue reads, so its schema cannot gain this column during use.",
|
|
60
|
+
},
|
|
61
|
+
"packages/plugin/src/features/magic-context/mural/storage-mural-cues.ts:muralCueRejectionColumnCache":
|
|
62
|
+
{
|
|
63
|
+
classification: "VERDICT",
|
|
64
|
+
reason: "Correct by scope: the database is fully migrated before this handle reaches cue reads, so its schema cannot gain this column during use.",
|
|
65
|
+
},
|
|
66
|
+
"packages/plugin/src/features/magic-context/smart-notes/sandbox-runner.ts:asyncModulePromise": {
|
|
67
|
+
classification: "VERDICT",
|
|
68
|
+
reason: "DEFECT: a rejected dynamic-import/WASM-init promise is retained for every later smart-note check.",
|
|
69
|
+
},
|
|
70
|
+
"packages/plugin/src/features/magic-context/storage-meta-session.ts:sessionMetaSelectColumnsCache":
|
|
71
|
+
{
|
|
72
|
+
classification: "VERDICT",
|
|
73
|
+
reason: "Correct by scope: session_meta migration completes before the first projection is built for this database handle.",
|
|
74
|
+
},
|
|
75
|
+
"packages/plugin/src/features/magic-context/memory/storage-memory.ts:memoryImportanceColumnCache":
|
|
76
|
+
{
|
|
77
|
+
classification: "VERDICT",
|
|
78
|
+
reason: "Correct by scope: memory schema migration completes before this database handle serves memory reads.",
|
|
79
|
+
},
|
|
80
|
+
"packages/plugin/src/features/magic-context/memory/storage-memory.ts:memoryScopeColumnCache": {
|
|
81
|
+
classification: "VERDICT",
|
|
82
|
+
reason: "Correct by scope: memory schema migration completes before this database handle serves memory reads.",
|
|
83
|
+
},
|
|
84
|
+
"packages/plugin/src/features/magic-context/memory/storage-memory.ts:memoryShareableColumnCache":
|
|
85
|
+
{
|
|
86
|
+
classification: "VERDICT",
|
|
87
|
+
reason: "Correct by scope: memory schema migration completes before this database handle serves memory reads.",
|
|
88
|
+
},
|
|
89
|
+
"packages/plugin/src/features/magic-context/memory/storage-memory.ts:memoryClassifiedAtColumnCache":
|
|
90
|
+
{
|
|
91
|
+
classification: "VERDICT",
|
|
92
|
+
reason: "Correct by scope: memory schema migration completes before this database handle serves memory reads.",
|
|
93
|
+
},
|
|
94
|
+
"packages/plugin/src/hooks/magic-context/ctx-reduce-availability.ts:ctxReduceRegisteredGlobally":
|
|
95
|
+
{
|
|
96
|
+
classification: "VERDICT",
|
|
97
|
+
reason: "Correct by scope: tool registration is resolved once at plugin boot and cannot change while that instance runs.",
|
|
98
|
+
},
|
|
99
|
+
"packages/plugin/src/hooks/magic-context/ctx-reduce-availability.ts:availabilityBySession": {
|
|
100
|
+
classification: "VERDICT",
|
|
101
|
+
reason: "Correct by contract: the first persisted user message freezes that session's tool surface.",
|
|
102
|
+
},
|
|
103
|
+
"packages/plugin/src/hooks/magic-context/ctx-reduce-availability.ts:permissionDeniedBySession":
|
|
104
|
+
{
|
|
105
|
+
classification: "DIAGNOSTIC",
|
|
106
|
+
reason: "Repeatedly assigned on each cache-busting permission read; later reads replace an earlier denial.",
|
|
107
|
+
},
|
|
108
|
+
"packages/plugin/src/hooks/magic-context/read-session-formatting.ts:tokenizerLoadAttempted": {
|
|
109
|
+
classification: "VERDICT",
|
|
110
|
+
reason: "DEFECT: a failed tokenizer load permanently selects heuristic token counts even if the package becomes available.",
|
|
111
|
+
},
|
|
112
|
+
"packages/plugin/src/hooks/magic-context/module-transport.ts:stateSyncCapabilityCache": {
|
|
113
|
+
classification: "VERDICT",
|
|
114
|
+
reason: "Saved: invalidateStateSyncCapabilities runs on NEED_FULL_SYNC and connection invalidation before the next capability probe.",
|
|
115
|
+
},
|
|
116
|
+
"packages/plugin/src/plugin/conflict-warning-hook.ts:cachedDesktopStateByDir": {
|
|
117
|
+
classification: "VERDICT",
|
|
118
|
+
reason: "Correct by scope: its deciding startup-warning paths run once per plugin boot, so a later Desktop state-file write is not observed by design.",
|
|
119
|
+
},
|
|
120
|
+
"packages/plugin/src/plugin/embedding-routing.ts:synapseProbeCache": {
|
|
121
|
+
classification: "VERDICT",
|
|
122
|
+
reason: "Saved: the promise has a 60-second TTL, including rejections, and discovery is retried after expiry.",
|
|
123
|
+
},
|
|
124
|
+
"packages/plugin/src/shared/models-dev-cache.ts:authRewarmDone": {
|
|
125
|
+
classification: "VERDICT",
|
|
126
|
+
reason: "Saved: refreshModelLimitsAfterAuthOnce resets the latch when its warm fails.",
|
|
127
|
+
},
|
|
128
|
+
"packages/pi-plugin/src/dreamer/pi-session-api.ts:cachedModulePromise": {
|
|
129
|
+
classification: "VERDICT",
|
|
130
|
+
reason: "Saved: promise.catch clears the same rejected promise, allowing the next resolver call to retry.",
|
|
131
|
+
},
|
|
132
|
+
"packages/plugin/src/features/magic-context/fail-closed-block.ts:lastHookInitFailure": {
|
|
133
|
+
classification: "DIAGNOSTIC",
|
|
134
|
+
reason: "Most-recent boot diagnostic: recordHookInitFailure overwrites it and clearHookInitFailure resets it.",
|
|
135
|
+
},
|
|
136
|
+
"packages/plugin/src/hooks/magic-context/read-session-formatting.ts:tokenizerLoadPromise": {
|
|
137
|
+
classification: "PUBLICATION",
|
|
138
|
+
reason: "In-flight handle only: finally clears it after the load settles, so it cannot retain a failure verdict.",
|
|
139
|
+
},
|
|
140
|
+
"packages/plugin/src/shared/exit-abort-registry.ts:listenerRegistered": {
|
|
141
|
+
classification: "PUBLICATION",
|
|
142
|
+
reason: "One-time process exit-listener installation, not a capability or failure verdict.",
|
|
143
|
+
},
|
|
144
|
+
"packages/plugin/src/shared/storage-permissions.ts:enforcePrivateStoragePermissions": {
|
|
145
|
+
classification: "VERDICT",
|
|
146
|
+
reason: "Repeatedly assigned configuration: the public setter can update it during the process.",
|
|
147
|
+
},
|
|
148
|
+
"packages/plugin/src/features/magic-context/storage-db.ts:lastSchemaFenceRejection": {
|
|
149
|
+
classification: "DIAGNOSTIC",
|
|
150
|
+
reason: "Most-recent diagnostic: every open attempt clears or overwrites it.",
|
|
151
|
+
},
|
|
152
|
+
"packages/plugin/src/features/magic-context/storage-db.ts:lastMigrationOnOpenRefusal": {
|
|
153
|
+
classification: "DIAGNOSTIC",
|
|
154
|
+
reason: "Most-recent diagnostic: every open attempt clears or overwrites it.",
|
|
155
|
+
},
|
|
156
|
+
"packages/plugin/src/shared/models-dev-cache.ts:apiCache": {
|
|
157
|
+
classification: "PUBLICATION",
|
|
158
|
+
reason: "Publishes last-known-good model metadata, not a failure verdict; refresh writes a later successful value.",
|
|
159
|
+
},
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
function sourceFiles(directory: string): string[] {
|
|
163
|
+
const files: string[] = [];
|
|
164
|
+
for (const entry of readdirSync(directory, { withFileTypes: true })) {
|
|
165
|
+
const path = join(directory, entry.name);
|
|
166
|
+
if (entry.isDirectory()) {
|
|
167
|
+
files.push(...sourceFiles(path));
|
|
168
|
+
} else if (entry.isFile() && path.endsWith(".ts") && !path.endsWith(".test.ts")) {
|
|
169
|
+
files.push(path);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return files;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
function declaredOneShotSlots(source: string): string[] {
|
|
176
|
+
// `let` is deliberate: this targets mutable module state, not constant lookup
|
|
177
|
+
// tables or prepared-statement handles. The initializer restriction excludes
|
|
178
|
+
// ordinary counters and per-call scratch values.
|
|
179
|
+
const declarations =
|
|
180
|
+
/^(?:export\s+)?let\s+([A-Za-z_$][\w$]*)\b[^\n]*(?:=\s*(?:null|false|true)|Promise<)/gm;
|
|
181
|
+
const verdictName =
|
|
182
|
+
/(?:attempted|availability|compatible|cooldown|disabled|failed|failure|latch|missing|permission|promise|registered|unavailable)/i;
|
|
183
|
+
const moduleSlots = [...source.matchAll(declarations)].map((match) => match[1]);
|
|
184
|
+
// A provider-local permanent failure has the same operational effect as a
|
|
185
|
+
// module slot: every later provider call short-circuits without re-probing.
|
|
186
|
+
const providerLatches = [
|
|
187
|
+
...source.matchAll(/^\s*private\s+(permanentFailure)\s*=\s*false;/gm),
|
|
188
|
+
].map((match) => match[1]);
|
|
189
|
+
return [...moduleSlots, ...providerLatches].filter(
|
|
190
|
+
(name): name is string => name !== undefined && verdictName.test(name),
|
|
191
|
+
);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
describe("latch permanence classification guard", () => {
|
|
195
|
+
test("classifies every production one-shot verdict-shaped slot", () => {
|
|
196
|
+
const inlineTestBlocks: string[] = [];
|
|
197
|
+
const discovered = new Set<string>();
|
|
198
|
+
for (const root of SOURCE_ROOTS) {
|
|
199
|
+
for (const file of sourceFiles(join(REPOSITORY_ROOT, root))) {
|
|
200
|
+
const source = readFileSync(file, "utf8");
|
|
201
|
+
if (/from\s+["']bun:test["']/.test(source)) {
|
|
202
|
+
inlineTestBlocks.push(relative(REPOSITORY_ROOT, file));
|
|
203
|
+
}
|
|
204
|
+
for (const slot of declaredOneShotSlots(source)) {
|
|
205
|
+
discovered.add(`${relative(REPOSITORY_ROOT, file)}:${slot}`);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
expect(inlineTestBlocks).toEqual([]);
|
|
211
|
+
const unclassified = [...discovered].filter((slot) => !(slot in KNOWN_SLOTS)).sort();
|
|
212
|
+
expect(
|
|
213
|
+
unclassified,
|
|
214
|
+
`Classify each new one-shot verdict-shaped slot in KNOWN_SLOTS: ${unclassified.join(", ")}`,
|
|
215
|
+
).toEqual([]);
|
|
216
|
+
expect(Object.keys(KNOWN_SLOTS).length).toBeGreaterThan(0);
|
|
217
|
+
});
|
|
218
|
+
});
|
|
@@ -195,7 +195,8 @@ function makeProjectThresholdWarning(field: string, reason: string): string {
|
|
|
195
195
|
* loud inoperability gate; only the user may restore silent degrade.
|
|
196
196
|
* - `allow_home_project` — only the user may opt a home-directory session
|
|
197
197
|
* into a durable project identity.
|
|
198
|
-
* - `output_reserve` — only the user may change
|
|
198
|
+
* - `output_reserve` / `models.window_overlay_path` — only the user may change
|
|
199
|
+
* process-wide window geometry inputs.
|
|
199
200
|
* - `language`: a repo must not inject prompt text through a user preference.
|
|
200
201
|
* - `sqlite` — `sqlite.cache_size_mb` / `mmap_size_mb` become PRAGMAs on the
|
|
201
202
|
* process-global shared DB handle (one connection across every project in the
|
|
@@ -268,6 +269,14 @@ export function stripUnsafeProjectConfigFields(projectRaw: Record<string, unknow
|
|
|
268
269
|
);
|
|
269
270
|
}
|
|
270
271
|
|
|
272
|
+
const models = projectRaw.models;
|
|
273
|
+
if (isPlainObject(models) && "window_overlay_path" in models) {
|
|
274
|
+
delete models.window_overlay_path;
|
|
275
|
+
warnings.push(
|
|
276
|
+
"Ignoring models.window_overlay_path from project config (security: only user-level config may select model geometry metadata).",
|
|
277
|
+
);
|
|
278
|
+
}
|
|
279
|
+
|
|
271
280
|
if ("language" in projectRaw) {
|
|
272
281
|
delete projectRaw.language;
|
|
273
282
|
warnings.push(
|
|
@@ -479,6 +479,8 @@ export interface MagicContextConfig {
|
|
|
479
479
|
prompt_surface: PromptSurfaceConfig;
|
|
480
480
|
/** User-only output-token reservation override. Zero disables reservation. */
|
|
481
481
|
output_reserve?: number | { default: number; [modelKey: string]: number };
|
|
482
|
+
/** User-only model metadata inputs. */
|
|
483
|
+
models?: { window_overlay_path?: string };
|
|
482
484
|
/** TUI toast lifetime in milliseconds for Magic Context notifications. Default: 5000. */
|
|
483
485
|
toast_duration_ms?: number;
|
|
484
486
|
execute_threshold_percentage: number | { default: number; [modelKey: string]: number };
|
|
@@ -721,6 +723,14 @@ export const MagicContextConfigSchema = z
|
|
|
721
723
|
.describe(
|
|
722
724
|
'User-only output-token reservation override. Number or per-model object ({ default: 16384, "provider/model": 8192 }); 0 disables reservation. When unset, Magic Context reserves the catalog output limit (capped at 25% of context) for shared-window providers and keeps proven separate-quota Google/Gemini windows unchanged.',
|
|
723
725
|
),
|
|
726
|
+
models: z
|
|
727
|
+
.object({
|
|
728
|
+
window_overlay_path: z.string().trim().min(1).optional(),
|
|
729
|
+
})
|
|
730
|
+
.optional()
|
|
731
|
+
.describe(
|
|
732
|
+
"User-only Fusiform window-overlay settings. The path defaults to <dataDir>/fusiform/window-overlay.json.",
|
|
733
|
+
),
|
|
724
734
|
toast_duration_ms: z
|
|
725
735
|
.number()
|
|
726
736
|
.min(0)
|
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "fusiform-window-overlay/v1",
|
|
3
|
+
"generated_at": "2026-08-13T15:12:00Z",
|
|
4
|
+
"batch": "1 of N \u2014 the geometry spec's measured rows, transcribed",
|
|
5
|
+
"minted_provider_ids": [
|
|
6
|
+
"openai-chatgpt-oauth"
|
|
7
|
+
],
|
|
8
|
+
"relay_note": "Cells whose source_ref names mc-geometry-spec are RELAYED: the grade records the evidence class that document assigns, not evidence this seat verified independently. Where a primary source was on disk it was read directly and the source_ref names it instead.",
|
|
9
|
+
"cells": [
|
|
10
|
+
{
|
|
11
|
+
"provider_id": "openai-chatgpt-oauth",
|
|
12
|
+
"model_id": "gpt-5.6",
|
|
13
|
+
"facts": {
|
|
14
|
+
"window.enforced": {
|
|
15
|
+
"value": {
|
|
16
|
+
"kind": "bracket",
|
|
17
|
+
"at_least": 340000
|
|
18
|
+
},
|
|
19
|
+
"grade": "measured",
|
|
20
|
+
"units": "estimate",
|
|
21
|
+
"boundary": "Observed",
|
|
22
|
+
"source_ref": "mc-geometry-spec@06a0e5ac#measured-per-model-findings:gpt-5.6-oauth (operator-confirmed live)",
|
|
23
|
+
"observed_at": "2026-08-13T12:54:15Z"
|
|
24
|
+
},
|
|
25
|
+
"window.advertised": {
|
|
26
|
+
"value": {
|
|
27
|
+
"kind": "unknown",
|
|
28
|
+
"why": "never_measured"
|
|
29
|
+
},
|
|
30
|
+
"grade": "unknown",
|
|
31
|
+
"units": "provider",
|
|
32
|
+
"boundary": "Observed",
|
|
33
|
+
"source_ref": "codex-rs@32f4687b8c:models-manager/src/model_info.rs:125",
|
|
34
|
+
"observed_at": "2026-08-13T15:12:00Z"
|
|
35
|
+
},
|
|
36
|
+
"output.advertised": {
|
|
37
|
+
"value": {
|
|
38
|
+
"kind": "unknown",
|
|
39
|
+
"why": "never_measured"
|
|
40
|
+
},
|
|
41
|
+
"grade": "unknown",
|
|
42
|
+
"units": "provider",
|
|
43
|
+
"boundary": "Observed",
|
|
44
|
+
"source_ref": "codex-rs@32f4687b8c:protocol/src/openai_models.rs:409",
|
|
45
|
+
"observed_at": "2026-08-13T15:12:00Z"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"note": "window.advertised is UNKNOWN rather than 272000. The seed spec reads the 272k in codex-rs as a server-delivered advertisement; the source has it only in model_info_from_slug, the fallback for unrecognised slugs, beside used_fallback_model_metadata: true. Every other occurrence is a test fixture inheriting it. The server may also send 272k; the source does not establish that. output.advertised is unknown because ModelInfo carries no output field at all, so the client cannot request a cap and nothing states one."
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"provider_id": "openai",
|
|
52
|
+
"model_id": "gpt-5.6",
|
|
53
|
+
"facts": {
|
|
54
|
+
"window.advertised": {
|
|
55
|
+
"value": {
|
|
56
|
+
"kind": "stated",
|
|
57
|
+
"value": 1050000
|
|
58
|
+
},
|
|
59
|
+
"grade": "provider_asserted_doc",
|
|
60
|
+
"units": "provider",
|
|
61
|
+
"boundary": "Observed",
|
|
62
|
+
"source_ref": "mc-geometry-spec@06a0e5ac#measured-per-model-findings:gpt-5.6-platform",
|
|
63
|
+
"observed_at": "2026-08-13T12:54:15Z"
|
|
64
|
+
},
|
|
65
|
+
"output.advertised": {
|
|
66
|
+
"value": {
|
|
67
|
+
"kind": "stated",
|
|
68
|
+
"value": 128000
|
|
69
|
+
},
|
|
70
|
+
"grade": "provider_asserted_doc",
|
|
71
|
+
"units": "provider",
|
|
72
|
+
"boundary": "Observed",
|
|
73
|
+
"source_ref": "mc-geometry-spec@06a0e5ac#measured-per-model-findings:gpt-5.6-platform",
|
|
74
|
+
"observed_at": "2026-08-13T12:54:15Z"
|
|
75
|
+
},
|
|
76
|
+
"geometry": {
|
|
77
|
+
"value": {
|
|
78
|
+
"kind": "stated",
|
|
79
|
+
"value": "shared_upfront"
|
|
80
|
+
},
|
|
81
|
+
"grade": "provider_asserted_doc",
|
|
82
|
+
"units": "provider",
|
|
83
|
+
"boundary": "Observed",
|
|
84
|
+
"source_ref": "https://platform.openai.com/docs/guides/conversation-state (read 2026-08-13) \u2014 'The context window is the maximum number of tokens that can be used in a single request. This max tokens number includes input, output, and reasoning tokens.'",
|
|
85
|
+
"observed_at": "2026-08-13T12:54:15Z"
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
"note": "GEOMETRY VERIFIED AGAINST OPENAI'S OWN DOCS 2026-08-13: 'The context window is the maximum number of tokens that can be used in a single request. This max tokens number includes input, output, and reasoning tokens.' That establishes the wall COUNTS the combined total, which is the half of shared_upfront this cell asserts. WHAT THE DOC DOES NOT ESTABLISH is the other half \u2014 whether an over-window request is rejected up front or truncated. The seed spec attributes rejection to `truncation: disabled`, implying the same endpoint truncates when truncation is enabled, and this page does not mention truncation at all (the API reference that would is behind a 403 from here). So shared_upfront is correct for the truncation-disabled path and is NOT established as a property of the provider. See the design note's section 12: the combined-and-truncating combination has no enum value, and this is the request mode that reaches it. The window and output numbers are relayed from the seed spec; the catalog agrees with both for this path, which is exactly why the access-path split matters \u2014 the same catalog row is right here and wrong for openai-chatgpt-oauth."
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"provider_id": "anthropic",
|
|
92
|
+
"model_id": "claude-opus-5",
|
|
93
|
+
"facts": {
|
|
94
|
+
"window.advertised": {
|
|
95
|
+
"value": {
|
|
96
|
+
"kind": "stated",
|
|
97
|
+
"value": 1000000
|
|
98
|
+
},
|
|
99
|
+
"grade": "provider_asserted_doc",
|
|
100
|
+
"units": "provider",
|
|
101
|
+
"boundary": "Observed",
|
|
102
|
+
"source_ref": "https://docs.claude.com/en/docs/build-with-claude/context-windows (read 2026-08-13) \u2014 'Claude Opus 5 ... has a 1M-token context window on the Claude API, Amazon Bedrock, Google Cloud, and Microsoft Foundry'",
|
|
103
|
+
"observed_at": "2026-08-13T12:54:15Z"
|
|
104
|
+
},
|
|
105
|
+
"output.advertised": {
|
|
106
|
+
"value": {
|
|
107
|
+
"kind": "stated",
|
|
108
|
+
"value": 128000
|
|
109
|
+
},
|
|
110
|
+
"grade": "provider_asserted_doc",
|
|
111
|
+
"units": "provider",
|
|
112
|
+
"boundary": "Observed",
|
|
113
|
+
"source_ref": "https://docs.claude.com/en/docs/build-with-claude/context-windows (read 2026-08-13) \u2014 'a request to any model with a 1M-token context window can generate up to 128k output tokens (max_tokens)'",
|
|
114
|
+
"observed_at": "2026-08-13T12:54:15Z"
|
|
115
|
+
},
|
|
116
|
+
"geometry": {
|
|
117
|
+
"value": {
|
|
118
|
+
"kind": "stated",
|
|
119
|
+
"value": "shared_truncating"
|
|
120
|
+
},
|
|
121
|
+
"grade": "provider_asserted_doc",
|
|
122
|
+
"units": "provider",
|
|
123
|
+
"boundary": "Asserted",
|
|
124
|
+
"source_ref": "https://docs.claude.com/en/docs/build-with-claude/context-windows (read 2026-08-13) \u2014 'Context window overflow behavior'",
|
|
125
|
+
"observed_at": "2026-08-13T12:54:15Z"
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
"note": "VERIFIED AGAINST THE PRIMARY SOURCE 2026-08-13, replacing the seed spec as source_ref. The doc names Opus 5 explicitly in a list of 1M-window models, and states the 128k output cap as a property of any 1M-window model rather than of this model. NO access-path id minted: the window holds on the Claude API, Bedrock, Google Cloud and Microsoft Foundry alike, so by mint-on-divergence there is nothing to fork. GEOMETRY IS THE INTERESTING PART AND IT SPLITS. The prompt-only wall is universal: 'if the input alone already exceeds the model's context window, the API returns a 400 invalid_request_error (prompt is too long) ON EVERY MODEL'. What happens to over-window OUTPUT is version-gated AND header-controlled: 4.5+ accepts the request and stops with stop_reason model_context_window_exceeded, earlier models return a validation error, and earlier models can OPT IN to the newer behaviour with the model-context-window-exceeded-2025-08-26 beta header. So a pre-4.5 model's geometry depends on a request header \u2014 the second instance of the request-dependence recorded in the design note's section 12, and the first with a named mechanism. shared_truncating is correct for Opus 5 and must not be inherited by an older Claude."
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"provider_id": "xai",
|
|
132
|
+
"model_id": "grok-4.6",
|
|
133
|
+
"facts": {
|
|
134
|
+
"window.enforced": {
|
|
135
|
+
"value": {
|
|
136
|
+
"kind": "stated",
|
|
137
|
+
"value": 500000
|
|
138
|
+
},
|
|
139
|
+
"grade": "measured",
|
|
140
|
+
"units": "provider",
|
|
141
|
+
"boundary": "Observed",
|
|
142
|
+
"source_ref": "mc-geometry-spec@06a0e5ac#measured-per-model-findings:grok-4.6",
|
|
143
|
+
"observed_at": "2026-08-13T12:54:15Z"
|
|
144
|
+
},
|
|
145
|
+
"output.default": {
|
|
146
|
+
"value": {
|
|
147
|
+
"kind": "stated",
|
|
148
|
+
"value": 128000
|
|
149
|
+
},
|
|
150
|
+
"grade": "provider_asserted_doc",
|
|
151
|
+
"units": "provider",
|
|
152
|
+
"boundary": "Observed",
|
|
153
|
+
"source_ref": "mc-geometry-spec@06a0e5ac#measured-per-model-findings:grok-4.6",
|
|
154
|
+
"observed_at": "2026-08-13T12:54:15Z"
|
|
155
|
+
},
|
|
156
|
+
"geometry": {
|
|
157
|
+
"value": {
|
|
158
|
+
"kind": "stated",
|
|
159
|
+
"value": "shared_truncating"
|
|
160
|
+
},
|
|
161
|
+
"grade": "measured",
|
|
162
|
+
"units": "provider",
|
|
163
|
+
"boundary": "Observed",
|
|
164
|
+
"source_ref": "mc-geometry-spec@06a0e5ac#provider-geometry-classes:xai (error text 'maximum prompt length is N' is a prompt-only wall)",
|
|
165
|
+
"observed_at": "2026-08-13T12:54:15Z"
|
|
166
|
+
},
|
|
167
|
+
"window.advertised": {
|
|
168
|
+
"value": {
|
|
169
|
+
"kind": "stated",
|
|
170
|
+
"value": 500000
|
|
171
|
+
},
|
|
172
|
+
"grade": "provider_asserted_doc",
|
|
173
|
+
"units": "provider",
|
|
174
|
+
"boundary": "Observed",
|
|
175
|
+
"source_ref": "https://docs.x.ai/developers/models/grok-4.6.md (read 2026-08-13) \u2014 'Context window: 500,000 tokens'",
|
|
176
|
+
"observed_at": "2026-08-13T16:30:00Z"
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
"note": "No output.enforced cell: the documented behaviour is no fixed cap, with the ceiling being window minus prompt. That is a FUNCTION of the request, not a constant, and this schema has no shape for it \u2014 geometry plus window is what a consumer needs to derive it. Writing a number here would state a constant that does not exist. The catalog's output=500000 equals its context and is a placeholder by the spec's own rule. This model arrived AFTER the embedded seed snapshot (seed fetched 2026-08-12T10:07:29Z, model first observed 16:12:49Z), so it cannot be join-checked against the seed; post_seed records how its existence was verified instead. ADVERTISED ADDED FROM XAI'S OWN MODEL PAGE 2026-08-13, and it AGREES with the measured enforced wall. That is the dataset's first corroboration rather than a correction, and it is worth recording as such: the advertised/enforced split exists because they CAN differ, not because they always do, and a split that only ever shows divergence would be evidence the measurement is biased toward cases someone went looking at. Two independent sources, one number. Note the two facts remain separate cells rather than being collapsed: they agree today, and collapsing them would destroy the ability to notice when they stop. The page states no output cap at all, which is consistent with the spec's 'no fixed cap' but does not establish it \u2014 an absent statement is not a statement of absence.",
|
|
180
|
+
"post_seed": {
|
|
181
|
+
"verified_at": "2026-08-13T15:12:00Z",
|
|
182
|
+
"evidence": "fusiform era history: existence observed present at 2026-08-12T16:12:49Z, changed between 15:42:49Z and 16:12:49Z",
|
|
183
|
+
"catalog_limit_at_verification": {
|
|
184
|
+
"context": 500000,
|
|
185
|
+
"output": 500000
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"provider_id": "ollama-cloud",
|
|
191
|
+
"model_id": "deepseek-v4-flash",
|
|
192
|
+
"facts": {
|
|
193
|
+
"window.enforced": {
|
|
194
|
+
"value": {
|
|
195
|
+
"kind": "stated",
|
|
196
|
+
"value": 1048576
|
|
197
|
+
},
|
|
198
|
+
"grade": "provider_asserted_doc",
|
|
199
|
+
"units": "provider",
|
|
200
|
+
"boundary": "Observed",
|
|
201
|
+
"source_ref": "mc-geometry-spec@06a0e5ac#measured-per-model-findings:deepseek-v4-flash-ollama-cloud",
|
|
202
|
+
"observed_at": "2026-08-13T12:54:15Z"
|
|
203
|
+
},
|
|
204
|
+
"output.enforced": {
|
|
205
|
+
"value": {
|
|
206
|
+
"kind": "stated",
|
|
207
|
+
"value": 65536
|
|
208
|
+
},
|
|
209
|
+
"grade": "provider_asserted_doc",
|
|
210
|
+
"units": "provider",
|
|
211
|
+
"boundary": "Observed",
|
|
212
|
+
"source_ref": "https://github.com/ollama/ollama/issues/16890",
|
|
213
|
+
"observed_at": "2026-08-13T12:54:15Z"
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
"note": "The catalog row is wrong twice over here, which is why this cell leads the batch: output equals context so it is a placeholder by the spec's rule, AND the real cap is 16x smaller. A consumer trusting the row reserves 1M against a 64k wall and gets an HTTP 400. NOT written as a provider-wide wildcard: the evidence names this model, and asserting it for all 20 ollama-cloud models would manufacture a claim from absence. If the cap is genuinely path-wide, one report naming a second model promotes it."
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
"provider_id": "moonshotai",
|
|
220
|
+
"model_id": "kimi-k3",
|
|
221
|
+
"facts": {
|
|
222
|
+
"window.advertised": {
|
|
223
|
+
"value": {
|
|
224
|
+
"kind": "stated",
|
|
225
|
+
"value": 1048576
|
|
226
|
+
},
|
|
227
|
+
"grade": "provider_asserted_doc",
|
|
228
|
+
"units": "provider",
|
|
229
|
+
"boundary": "Observed",
|
|
230
|
+
"source_ref": "mc-geometry-spec@06a0e5ac#measured-per-model-findings:kimi-k3",
|
|
231
|
+
"observed_at": "2026-08-13T12:54:15Z"
|
|
232
|
+
},
|
|
233
|
+
"output.default": {
|
|
234
|
+
"value": {
|
|
235
|
+
"kind": "stated",
|
|
236
|
+
"value": 131072
|
|
237
|
+
},
|
|
238
|
+
"grade": "provider_asserted_doc",
|
|
239
|
+
"units": "provider",
|
|
240
|
+
"boundary": "Observed",
|
|
241
|
+
"source_ref": "mc-geometry-spec@06a0e5ac#measured-per-model-findings:kimi-k3",
|
|
242
|
+
"observed_at": "2026-08-13T12:54:15Z"
|
|
243
|
+
},
|
|
244
|
+
"output.advertised": {
|
|
245
|
+
"value": {
|
|
246
|
+
"kind": "stated",
|
|
247
|
+
"value": 1048576
|
|
248
|
+
},
|
|
249
|
+
"grade": "provider_asserted_doc",
|
|
250
|
+
"units": "provider",
|
|
251
|
+
"boundary": "Observed",
|
|
252
|
+
"source_ref": "mc-geometry-spec@06a0e5ac#measured-per-model-findings:kimi-k3",
|
|
253
|
+
"observed_at": "2026-08-13T12:54:15Z"
|
|
254
|
+
}
|
|
255
|
+
},
|
|
256
|
+
"note": "The clearest case for output.default existing as its own fact. models.dev publishes output=131072 for this model, and 131072 is the DEFAULT you get without asking \u2014 the cap is 1M, configurable. Some aggregators read the same 131k as the context window. One number, three wrong readings, and the split is what stops a consumer from inheriting any of them."
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
"provider_id": "google",
|
|
260
|
+
"model_id": "gemini-3.5-flash",
|
|
261
|
+
"facts": {
|
|
262
|
+
"window.advertised": {
|
|
263
|
+
"value": {
|
|
264
|
+
"kind": "stated",
|
|
265
|
+
"value": 1048576
|
|
266
|
+
},
|
|
267
|
+
"grade": "provider_asserted_doc",
|
|
268
|
+
"units": "provider",
|
|
269
|
+
"boundary": "Observed",
|
|
270
|
+
"source_ref": "mc-geometry-spec@06a0e5ac#measured-per-model-findings:gemini-3.5-flash",
|
|
271
|
+
"observed_at": "2026-08-13T12:54:15Z"
|
|
272
|
+
},
|
|
273
|
+
"output.advertised": {
|
|
274
|
+
"value": {
|
|
275
|
+
"kind": "stated",
|
|
276
|
+
"value": 65536
|
|
277
|
+
},
|
|
278
|
+
"grade": "provider_asserted_doc",
|
|
279
|
+
"units": "provider",
|
|
280
|
+
"boundary": "Observed",
|
|
281
|
+
"source_ref": "mc-geometry-spec@06a0e5ac#measured-per-model-findings:gemini-3.5-flash",
|
|
282
|
+
"observed_at": "2026-08-13T12:54:15Z"
|
|
283
|
+
},
|
|
284
|
+
"geometry": {
|
|
285
|
+
"value": {
|
|
286
|
+
"kind": "unknown",
|
|
287
|
+
"why": "never_measured"
|
|
288
|
+
},
|
|
289
|
+
"grade": "unknown",
|
|
290
|
+
"units": "provider",
|
|
291
|
+
"boundary": "Observed",
|
|
292
|
+
"source_ref": "https://ai.google.dev/gemini-api/docs/tokens (contradicts itself; see note)",
|
|
293
|
+
"observed_at": "2026-08-13T16:05:00Z"
|
|
294
|
+
}
|
|
295
|
+
},
|
|
296
|
+
"note": "NO antigravity id minted: 1M input and 65k output on both the Antigravity and generateContent paths, so nothing has diverged. Antigravity's self-compaction around 135k is harness behaviour, not a window, and does not belong in this dataset. Separate geometry means a smaller output request buys no input headroom \u2014 the input_token_limit is the usable input, full stop. GEOMETRY DOWNGRADED TO UNKNOWN 2026-08-13 after reading the primary source. The seed spec classifies Gemini as `separate` citing input_token_limit and output_token_limit as independent model constants. Those fields are real (https://ai.google.dev/api/models: 'Maximum number of input tokens allowed', 'Maximum number of output tokens available'), but the same docs page that demonstrates them states the opposite about the wall: 'The context window defines the combined limit of input and output tokens.' Two field constants and a combined wall are not contradictory \u2014 the fields can be per-side caps INSIDE a shared budget \u2014 so the field names do not establish `separate`. Neither reading is established by documentation alone; only a request that trades output for input can settle it."
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
"provider_id": "deepseek",
|
|
300
|
+
"model_id": "*",
|
|
301
|
+
"facts": {
|
|
302
|
+
"geometry": {
|
|
303
|
+
"value": {
|
|
304
|
+
"kind": "unknown",
|
|
305
|
+
"why": "never_measured"
|
|
306
|
+
},
|
|
307
|
+
"grade": "unknown",
|
|
308
|
+
"units": "provider",
|
|
309
|
+
"boundary": "Observed",
|
|
310
|
+
"source_ref": "magic-context@5ac4408d:packages/plugin/src/features/magic-context/overflow-detection.ts:68 \u2014 pattern tagged `combined`, attribution confirmed by MC 2026-08-13 as observed-emitting-the-string only",
|
|
311
|
+
"observed_at": "2026-08-13T17:05:00Z"
|
|
312
|
+
}
|
|
313
|
+
},
|
|
314
|
+
"note": "AN EXPLICIT REFUSAL, minted because a specific wrong inference is available. DeepSeek appears in MC's overflow table under the pattern `maximum context length is (N) tokens`, tagged `combined`. MC confirmed 2026-08-13 that the tag was assigned ONCE for the pattern, reasoned from OpenAI's documented semantics, and inherited by every provider observed emitting that string \u2014 so the per-provider evidence establishes that DeepSeek EMITS the text, not that its wall counts combined. Without this cell a future transcriber mining that table would mint `combined` for DeepSeek with an honest-looking source_ref, which is the inference this dataset exists to refuse. Wildcard because the claim is about the provider's wall and nothing model-specific is known."
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
"provider_id": "openrouter",
|
|
318
|
+
"model_id": "*",
|
|
319
|
+
"facts": {
|
|
320
|
+
"geometry": {
|
|
321
|
+
"value": {
|
|
322
|
+
"kind": "unknown",
|
|
323
|
+
"why": "not_single_valued_at_key"
|
|
324
|
+
},
|
|
325
|
+
"grade": "measured",
|
|
326
|
+
"units": "provider",
|
|
327
|
+
"boundary": "Observed",
|
|
328
|
+
"source_ref": "models.dev@2026-08-13: openrouter carries 348 models spanning other providers' catalogs; MC confirmed 2026-08-13 that the wall which fires belongs to whichever upstream served the request",
|
|
329
|
+
"observed_at": "2026-08-13T17:05:00Z"
|
|
330
|
+
}
|
|
331
|
+
},
|
|
332
|
+
"note": "NOT AN ABSENCE OF EVIDENCE \u2014 a positive, evidenced claim that this KEY cannot hold a single geometry. OpenRouter routes to heterogeneous backends, so the wall that fires belongs to whichever upstream served the request; measuring once yields a value correct for that routing decision and wrong for the next. GRADE IS `measured`, NOT `unknown`: the claim rests on evidence (the catalog shows 348 models spanning other providers' offerings; MC confirmed the routing behaviour), and a grade of unknown would say nobody has established it, which is false. This is the first cell where kind=unknown and grade!=unknown, and the two fields are doing different jobs exactly as designed: the VALUE is unknown, the CLAIM ABOUT WHY is measured. The reason value forbids promoting any measured report into a stated or bracket cell at this key without a routing discriminant \u2014 that clause is what makes it load-bearing rather than decorative."
|
|
333
|
+
}
|
|
334
|
+
],
|
|
335
|
+
"source_revision_note": "Cells transcribed from mc-geometry-spec were read at c6a85d85 and their source_ref names 06a0e5ac, the current revision. The bump is verified rather than assumed: every row transcribed here is byte-identical between the two revisions (checked per row with git show). The Codex row DID change between them, and no cell here cites the spec for Codex \u2014 those cells cite codex-rs directly. Pointing at the newer revision matters because c6a85d85 carried a misattributed Codex number, and a reader resolving a source_ref should land on a document without a known bad row in it.",
|
|
336
|
+
"additive_note": "The reason value `not_single_valued_at_key` was added 2026-08-13 WITHOUT a schema version bump, deliberately. Bumping would trigger the file-level refusal rule and cost a consumer all 9 cells over one additive value affecting 1. Unbumped, a consumer that does not know the value skips that single cell and merges the other 8 \u2014 which is the correct degradation for an addition."
|
|
337
|
+
}
|