@scriptc/compiler 0.0.10 → 0.0.11

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 (78) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +54 -9
  2. package/dist/backend/emission/emit-exprs.js +34 -2
  3. package/dist/backend/emission/emit-exprs.js.map +1 -1
  4. package/dist/backend/emission/emitter.js +25 -1
  5. package/dist/backend/emission/emitter.js.map +1 -1
  6. package/dist/backend/llvm/emitter.js +59 -4
  7. package/dist/backend/llvm/emitter.js.map +1 -1
  8. package/dist/coverage/surface-manifest.js +16 -2
  9. package/dist/coverage/surface-manifest.js.map +1 -1
  10. package/dist/diagnostics/diagnostic.d.ts +20 -7
  11. package/dist/diagnostics/diagnostic.js +44 -11
  12. package/dist/diagnostics/diagnostic.js.map +1 -1
  13. package/dist/frontend/lowering/lower-builtins.d.ts +56 -0
  14. package/dist/frontend/lowering/lower-builtins.js +235 -4
  15. package/dist/frontend/lowering/lower-builtins.js.map +1 -1
  16. package/dist/frontend/lowering/lower-calls.js +38 -4
  17. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  18. package/dist/frontend/lowering/lower-classes.d.ts +7 -0
  19. package/dist/frontend/lowering/lower-classes.js +51 -1
  20. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  21. package/dist/frontend/lowering/lower-containers.d.ts +4 -0
  22. package/dist/frontend/lowering/lower-containers.js +69 -7
  23. package/dist/frontend/lowering/lower-containers.js.map +1 -1
  24. package/dist/frontend/lowering/lower-emitter.d.ts +70 -3
  25. package/dist/frontend/lowering/lower-emitter.js +436 -29
  26. package/dist/frontend/lowering/lower-emitter.js.map +1 -1
  27. package/dist/frontend/lowering/lower-exprs.d.ts +80 -5
  28. package/dist/frontend/lowering/lower-exprs.js +472 -13
  29. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  30. package/dist/frontend/lowering/lower-modules.d.ts +8 -5
  31. package/dist/frontend/lowering/lower-modules.js +141 -47
  32. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  33. package/dist/frontend/lowering/lower-namespaces.d.ts +14 -0
  34. package/dist/frontend/lowering/lower-namespaces.js +122 -15
  35. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  36. package/dist/frontend/lowering/lower-stmts.js +80 -6
  37. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  38. package/dist/frontend/lowering/lower-stream.js +113 -6
  39. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  40. package/dist/frontend/lowering/lowerer.d.ts +17 -0
  41. package/dist/frontend/lowering/lowerer.js +105 -17
  42. package/dist/frontend/lowering/lowerer.js.map +1 -1
  43. package/dist/frontend/lowering/surfaces.d.ts +44 -0
  44. package/dist/frontend/lowering/surfaces.js +234 -3
  45. package/dist/frontend/lowering/surfaces.js.map +1 -1
  46. package/dist/frontend/npm.d.ts +12 -0
  47. package/dist/frontend/npm.js +30 -0
  48. package/dist/frontend/npm.js.map +1 -1
  49. package/dist/frontend/program.d.ts +25 -0
  50. package/dist/frontend/program.js +144 -135
  51. package/dist/frontend/program.js.map +1 -1
  52. package/dist/frontend/shared.d.ts +1 -1
  53. package/dist/frontend/shared.js +1 -1
  54. package/dist/frontend/shared.js.map +1 -1
  55. package/dist/index.d.ts +2 -1
  56. package/dist/index.js +137 -4
  57. package/dist/index.js.map +1 -1
  58. package/dist/ir/nodes.d.ts +64 -8
  59. package/dist/ir/nodes.js +21 -3
  60. package/dist/ir/nodes.js.map +1 -1
  61. package/dist/ir/validate.js +11 -2
  62. package/dist/ir/validate.js.map +1 -1
  63. package/dist/library/fence-eval.js +12 -2
  64. package/dist/library/fence-eval.js.map +1 -1
  65. package/dist/library/int-infer.d.ts +119 -0
  66. package/dist/library/int-infer.js +1301 -0
  67. package/dist/library/int-infer.js.map +1 -0
  68. package/dist/library/int-infer.test.d.ts +1 -0
  69. package/dist/library/int-infer.test.js +279 -0
  70. package/dist/library/int-infer.test.js.map +1 -0
  71. package/dist/library/profile.d.ts +32 -5
  72. package/dist/library/profile.js +77 -13
  73. package/dist/library/profile.js.map +1 -1
  74. package/dist/library/sidecar.d.ts +23 -0
  75. package/dist/library/sidecar.js +150 -16
  76. package/dist/library/sidecar.js.map +1 -1
  77. package/package.json +2 -2
  78. package/surface-manifest.json +208 -10
@@ -78,22 +78,40 @@
78
78
  * getters are pure data returns exempt from the poisoned guard and every
79
79
  * runtime touch (ratified): callable before init and after a trap.
80
80
  *
81
- * Marshalling classes (design §4.2 + session ruling 3): f64, bool, string,
82
- * bytes for params and returns; u8/u32/i32 are PARAM-ONLY plumbing classes
83
- * in v1 (outbound integer returns wait for ask-4's prove-or-refuse
84
- * machinery); void is return-only. Unknown top-level fields are ignored
85
- * (reserved surface: determinism, identity/version echo); unknown fields
86
- * INSIDE `abi` and export entries are refused — a typo there silently
87
- * changes meaning. */
81
+ * Marshalling classes (design §4.2 + session ruling 3 + ask 4): f64, bool,
82
+ * string, bytes for params and returns; u8/u32/i32 are PARAM-ONLY plumbing
83
+ * classes; i64/u64 are ask-4's declared integer boundary classes (params:
84
+ * wrapper range-check inbound, compile-time proof at internal call sites;
85
+ * returns: prove-or-refuse over every value reaching them); void is
86
+ * return-only. Unknown fields are refused at EVERY level the loader reads
87
+ * — the root included (the anti-inert posture: profiles pin per compiler
88
+ * release, so an unknown root key is a typo or a misplaced section, never
89
+ * forward-compat surface; the ask-5 key names at the root refuse with a
90
+ * pointer to their `determinism.*` home, since a silently inert `fences`
91
+ * array is exactly the footgun the fence machinery refuses everywhere
92
+ * else). Only the INTERIOR of `determinism` keeps a reserved-and-ignored
93
+ * surface beyond the three ask-5 keys. */
88
94
  import { readFileSync } from "node:fs";
89
95
  import { dirname, isAbsolute, resolve } from "node:path";
90
96
  import { libProfileDiag } from "../diagnostics/diagnostic.js";
91
97
  import { resolveLibraryFences } from "./fence-eval.js";
92
- /** Marshalling classes legal in PARAMETER position (v1). */
93
- export const LIB_PARAM_CLASSES = ["f64", "bool", "string", "bytes", "u8", "u32", "i32"];
94
- /** Marshalling classes legal in RETURN position (v1): the value classes
95
- * plus void; the integer plumbing classes are param-only until ask 4. */
96
- export const LIB_RETURN_CLASSES = ["f64", "bool", "string", "bytes", "void"];
98
+ /** Marshalling classes legal in PARAMETER position: the v1 classes plus
99
+ * ask 4's declared integer boundary classes. An i64/u64 PARAMETER is an
100
+ * FFI edge contract on both sides: inbound host calls range-check in the
101
+ * marshalled wrapper (values past ±(2^53−1) cannot ride f64 exactly — the
102
+ * SC4012 host-contract trap), and internal call sites must PROVE the
103
+ * argument whole-in-range at compile time (library/int-infer.ts). */
104
+ export const LIB_PARAM_CLASSES = ["f64", "bool", "string", "bytes", "u8", "u32", "i32", "i64", "u64"];
105
+ /** Marshalling classes legal in RETURN position: the value classes, void,
106
+ * and ask 4's i64/u64 — an integer RETURN compiles only when every value
107
+ * reaching it is PROVEN whole and in range (prove-or-refuse; the wrapper's
108
+ * (int64_t)/(uint64_t) conversion is then exact by construction). The
109
+ * u8/u32/i32 plumbing classes stay param-only: they were ratified as
110
+ * inbound plumbing, and outbound integers are the proven classes'
111
+ * business. */
112
+ export const LIB_RETURN_CLASSES = ["f64", "bool", "string", "bytes", "void", "i64", "u64"];
113
+ /** Ask 4's declared integer classes (the prove-or-refuse pair). */
114
+ export const LIB_INT_CLASSES = ["i64", "u64"];
97
115
  const C_IDENT = /^[A-Za-z_][A-Za-z0-9_]*$/;
98
116
  class ProfileError extends Error {
99
117
  detail;
@@ -155,6 +173,19 @@ export function loadLibraryProfile(profilePath) {
155
173
  const format = req(p["profile_format"], "profile_format", "number");
156
174
  if (format !== 1)
157
175
  throw new ProfileError(`unsupported profile_format ${format} (this scriptc reads format 1)`);
176
+ // Root keys are strict (checked AFTER the format gate, so a future
177
+ // format's profile refuses as the wrong format, not as a typo). The
178
+ // ask-5 key names get the pointed message: a `fences` array pasted at
179
+ // the root would otherwise be silently inert — the exact footgun the
180
+ // fence machinery refuses everywhere else.
181
+ for (const k of Object.keys(p)) {
182
+ if (["profile_format", "name", "entry", "emission", "abi", "exports", "sidecar", "determinism"].includes(k))
183
+ continue;
184
+ if (k === "fences" || k === "teachings" || k === "remediations") {
185
+ throw new ProfileError(`'${k}' at the profile root does nothing — the ask-5 determinism surface lives under 'determinism.${k}'; move it there`);
186
+ }
187
+ throw new ProfileError(`unknown field '${k}' (root keys are strict: a typo here would silently change the build; remove it)`);
188
+ }
158
189
  const name = req(p["name"], "name", "string");
159
190
  if (name === "")
160
191
  throw new ProfileError("'name' must be a non-empty identity string");
@@ -206,7 +237,7 @@ export function loadLibraryProfile(profilePath) {
206
237
  const returns = req(ee["returns"], `${path}.returns`, "string");
207
238
  if (!LIB_RETURN_CLASSES.includes(returns)) {
208
239
  const detail = returns === "u8" || returns === "u32" || returns === "i32"
209
- ? `'${path}.returns': integer classes are parameter-only in v1 — outbound integer returns wait for the prove-or-refuse machinery (ask 4); return f64 and convert on the host side`
240
+ ? `'${path}.returns': the u8/u32/i32 plumbing classes are parameter-only — an outbound integer return is declared i64 or u64 and compiles only when every value reaching it proves whole and in ±(2^53 − 1) (ask 4's prove-or-refuse)`
210
241
  : `'${path}.returns' must be one of ${LIB_RETURN_CLASSES.join("/")}, got '${returns}'`;
211
242
  throw new ProfileError(detail);
212
243
  }
@@ -224,6 +255,7 @@ export function loadLibraryProfile(profilePath) {
224
255
  "path", "wire_version", "abi_version", "snapshot_format",
225
256
  "build_id_symbol", "abi_version_symbol", "model", "msg",
226
257
  "init_export", "update_export", "subscriptions_export", "source_hash",
258
+ "integer_slots",
227
259
  ]);
228
260
  const s = sc;
229
261
  const intField = (key) => {
@@ -255,6 +287,37 @@ export function loadLibraryProfile(profilePath) {
255
287
  if (sourceHash !== "module-graph") {
256
288
  throw new ProfileError(`'sidecar.source_hash' names an unknown hashing contract '${sourceHash}' (this scriptc implements "module-graph")`);
257
289
  }
290
+ // Ask 4's declared integer boundary slots: each entry names a
291
+ // contract slot by its sidecar path and picks the integer class.
292
+ // Path RESOLUTION happens at sidecar build (the contract must
293
+ // exist first); here the shape is pinned — a typo'd key or class
294
+ // would silently change an ABI obligation.
295
+ const integerSlots = [];
296
+ const isRaw = s["integer_slots"];
297
+ if (isRaw !== undefined && isRaw !== null) {
298
+ if (!Array.isArray(isRaw))
299
+ throw new ProfileError("'sidecar.integer_slots' must be an array");
300
+ const seenSlots = new Set();
301
+ isRaw.forEach((entry, i) => {
302
+ const epath = `sidecar.integer_slots[${i}]`;
303
+ if (entry === null || typeof entry !== "object" || Array.isArray(entry)) {
304
+ throw new ProfileError(`'${epath}' must be an object`);
305
+ }
306
+ rejectUnknownKeys(entry, epath, ["slot", "class"]);
307
+ const ee2 = entry;
308
+ const slot = req(ee2["slot"], `${epath}.slot`, "string");
309
+ if (slot === "")
310
+ throw new ProfileError(`'${epath}.slot' must be a non-empty slot path`);
311
+ const cls = req(ee2["class"], `${epath}.class`, "string");
312
+ if (cls !== "i64" && cls !== "u64") {
313
+ throw new ProfileError(`'${epath}.class' must be "i64" or "u64", got '${cls}'`);
314
+ }
315
+ if (seenSlots.has(slot))
316
+ throw new ProfileError(`'${epath}.slot' repeats slot path '${slot}'`);
317
+ seenSlots.add(slot);
318
+ integerSlots.push({ slot, cls });
319
+ });
320
+ }
258
321
  sidecar = {
259
322
  path,
260
323
  wireVersion: intField("wire_version"),
@@ -268,6 +331,7 @@ export function loadLibraryProfile(profilePath) {
268
331
  updateExport: nameField("update_export", "update"),
269
332
  subscriptionsExport: nameField("subscriptions_export", "subscriptions"),
270
333
  sourceHash: "module-graph",
334
+ integerSlots,
271
335
  };
272
336
  if (sidecar.model === sidecar.msg) {
273
337
  throw new ProfileError(`'sidecar.msg' must differ from 'sidecar.model' ('${sidecar.model}')`);
@@ -1 +1 @@
1
- {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/library/profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/library/profile.ts"],"names":[],"mappings":"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"}
@@ -180,10 +180,33 @@ export interface SidecarBuildInput {
180
180
  sourceHash: string;
181
181
  deterministic: boolean;
182
182
  }
183
+ /** The declared integer slots (ask 4), resolved by the projection into
184
+ * the facts the boundary inference maps onto lowered IR: helper slots by
185
+ * function name and IR parameter index (the schema's helper param index
186
+ * skips the model receiver, so `index` is already shifted +1), and
187
+ * record-field slots by the containing record's projected field-name
188
+ * list plus the target field (IR record shapes intern structurally by
189
+ * field name, so the list is the join key). */
190
+ export interface SidecarIntegerSlotFacts {
191
+ helpers: {
192
+ fnName: string;
193
+ kind: "param" | "return";
194
+ index?: number;
195
+ cls: "i64" | "u64";
196
+ path: string;
197
+ }[];
198
+ records: {
199
+ fieldNames: string[];
200
+ targetField: string;
201
+ cls: "i64" | "u64";
202
+ path: string;
203
+ }[];
204
+ }
183
205
  export type SidecarBuildResult = {
184
206
  ok: true;
185
207
  doc: SidecarDoc;
186
208
  json: string;
209
+ integerSlotFacts: SidecarIntegerSlotFacts;
187
210
  } | {
188
211
  ok: false;
189
212
  diagnostics: ScrDiagnostic[];
@@ -28,10 +28,18 @@
28
28
  * table derives from the aliased declaration, the alias adds no entry
29
29
  * and no reordering.
30
30
  *
31
- * Not-yet facts emit the schema's stated absent forms, never invented
32
- * values: `integer_slots` is `[]` with every numeric slot spelled `f64`
33
- * (the pre-ask-4 sequencing the schema names valid — the empty list is
34
- * itself an attestation), and `deterministic` is computed from the module
31
+ * Integer slots (ask 4): the profile's `sidecar.integer_slots` declares
32
+ * specific number slots i64/u64 by slot path; the projection spells each
33
+ * declared slot's TypeRef/descriptor `i64` (the frozen format-1
34
+ * vocabulary — u64 is the stricter compile-time obligation over the same
35
+ * wire spelling), refuses paths that resolve to no plain number slot,
36
+ * and emits `integer_slots` as the resolved-decision list, in profile
37
+ * declaration order. The list is an ATTESTATION (schema §5's invariant):
38
+ * compileLibrary runs the integer-boundary inference before writing any
39
+ * artifact, so a sidecar carrying an entry means every value that can
40
+ * reach that slot proved whole-in-range. Undeclared numeric slots keep
41
+ * spelling `f64` and the empty list stays a valid attestation that no
42
+ * slot was integer-classed. `deterministic` is computed from the module
35
43
  * graph (ir/nodes.ts's conservative ambient-surface scan), never
36
44
  * defaulted. */
37
45
  import { Buffer } from "node:buffer";
@@ -183,6 +191,16 @@ class Projector {
183
191
  flatArms = new Map();
184
192
  flattening = new Set();
185
193
  synthCounter = 0;
194
+ /** The profile's declared integer slots (ask 4), by slot path; entries
195
+ * move to `intConsumed` as the projection spells them — a declared path
196
+ * the projection never touches refuses (a typo'd path would silently
197
+ * drop an ABI obligation). */
198
+ intDeclared = new Map();
199
+ intConsumed = new Map();
200
+ /** The record-field slots' resolution facts for the inference: the
201
+ * containing record's full projected field-name list plus the target
202
+ * field (ir shapes intern structurally by field names). */
203
+ intRecordFacts = [];
186
204
  constructor(facts, config, entryLoc) {
187
205
  this.facts = facts;
188
206
  this.config = config;
@@ -192,6 +210,50 @@ class Projector {
192
210
  facts.types.forEach((decl, index) => this.byName.set(decl.name, classify(decl, index)));
193
211
  for (const m of facts.multiSiteTypes)
194
212
  this.multiSite.set(m.name, m.sites);
213
+ for (const e of config.integerSlots)
214
+ this.intDeclared.set(e.slot, e.cls);
215
+ }
216
+ /** Spell a projected slot i64 when the profile declared it (ask 4).
217
+ * Only a PLAIN NUMBER slot can be integer-declared: optionals, slices,
218
+ * and named types refuse — the declaration must match the wire shape
219
+ * the schema freezes. The document spells i64 for both classes (the
220
+ * frozen format-1 vocabulary has no u64; u64 is the stricter
221
+ * compile-time obligation over the same wire spelling). */
222
+ intify(ref, slotPath, loc) {
223
+ const cls = this.intDeclared.get(slotPath);
224
+ if (cls === undefined)
225
+ return ref;
226
+ if (ref.kind !== "f64") {
227
+ throw new SidecarError(`the profile declares integer slot '${slotPath}' (${cls}), but that slot is not a plain number slot (it projects as '${ref.kind}')`, loc);
228
+ }
229
+ this.intConsumed.set(slotPath, cls);
230
+ return { kind: "i64" };
231
+ }
232
+ /** intify for a struct field (declared or synthesized), recording the
233
+ * record-resolution fact the inference maps onto interned IR shapes. */
234
+ intifyStructField(ref, container, field, allFields, loc) {
235
+ const slotPath = `${container}.${field}`;
236
+ const before = this.intConsumed.has(slotPath);
237
+ const out = this.intify(ref, slotPath, loc);
238
+ if (!before && this.intConsumed.has(slotPath)) {
239
+ this.intRecordFacts.push({
240
+ fieldNames: allFields,
241
+ targetField: field,
242
+ cls: this.intConsumed.get(slotPath),
243
+ path: slotPath,
244
+ });
245
+ }
246
+ return out;
247
+ }
248
+ /** A declared slot path that the whole projection never spelled: the
249
+ * path names nothing (or names a slot outside the schema's integer
250
+ * grammar), and silently ignoring it would drop an ABI obligation. */
251
+ checkIntConsumed() {
252
+ for (const [slot, cls] of this.intDeclared) {
253
+ if (!this.intConsumed.has(slot)) {
254
+ throw new SidecarError(`the profile declares integer slot '${slot}' (${cls}), but the projected contract has no number slot at that path (paths: 'Type.field', 'Union.arm', '<msg>.arm', '<msg>.arm.numberField', 'helpers.<name>.params[i]', 'helpers.<name>.return')`, this.entryLoc);
255
+ }
256
+ }
195
257
  }
196
258
  lookup(name, loc) {
197
259
  const c = this.byName.get(name);
@@ -387,7 +449,10 @@ class Projector {
387
449
  if (seen.has(f.name))
388
450
  throw new SidecarError(`record '${name}' repeats field '${f.name}'`, f.loc);
389
451
  seen.add(f.name);
390
- entry.fields.push({ name: f.name, type: this.fieldRef(f, name) });
452
+ entry.fields.push({
453
+ name: f.name,
454
+ type: this.intifyStructField(this.fieldRef(f, name), name, f.name, c.fields.map((x) => x.name), f.loc),
455
+ });
391
456
  }
392
457
  this.table.set(name, { kind: "struct", entry, anchor: c.index, sub: -1 });
393
458
  return;
@@ -397,7 +462,21 @@ class Projector {
397
462
  // in unionArms).
398
463
  const entry = { name, arms: [] };
399
464
  for (const arm of this.unionArms(name, loc)) {
400
- entry.arms.push({ name: arm.name, payload: this.armPayloadRef(name, arm) });
465
+ let payload = this.armPayloadRef(name, arm);
466
+ const slotPath = `${name}.${arm.name}`;
467
+ const before = this.intConsumed.has(slotPath);
468
+ payload = this.intify(payload, slotPath, arm.loc);
469
+ if (!before && this.intConsumed.has(slotPath)) {
470
+ // The one intifiable arm shape is a single number payload
471
+ // field; its IR record carries the 'kind' discriminant too.
472
+ this.intRecordFacts.push({
473
+ fieldNames: [...arm.fields.map((f) => f.name), "kind"],
474
+ targetField: arm.fields[0].name,
475
+ cls: this.intConsumed.get(slotPath),
476
+ path: slotPath,
477
+ });
478
+ }
479
+ entry.arms.push({ name: arm.name, payload });
401
480
  }
402
481
  this.table.set(name, { kind: "union", entry, anchor: c.index, sub: -1 });
403
482
  }
@@ -435,7 +514,10 @@ class Projector {
435
514
  if (seen.has(f.name))
436
515
  throw new SidecarError(`the inline record at '${container}.${member}' repeats field '${f.name}'`, f.loc);
437
516
  seen.add(f.name);
438
- entry.fields.push({ name: f.name, type: this.fieldRef(f, name) });
517
+ entry.fields.push({
518
+ name: f.name,
519
+ type: this.intifyStructField(this.fieldRef(f, name), name, f.name, fields.map((x) => x.name), f.loc),
520
+ });
439
521
  }
440
522
  return name;
441
523
  }
@@ -453,11 +535,37 @@ class Projector {
453
535
  !second.optional &&
454
536
  first.shape.k === "number" &&
455
537
  (second.shape.k === "text" || second.shape.k === "bytes")) {
456
- return { kind: "number_bytes", number_field: first.name, number_class: "f64", bytes_field: second.name };
538
+ // The number half is an ask-4 declarable slot:
539
+ // `<msg>.<arm>.<numberField>` (the schema's number_bytes path).
540
+ const slotPath = `${msgName}.${arm.name}.${first.name}`;
541
+ const numRef = this.intify({ kind: "f64" }, slotPath, first.loc);
542
+ if (numRef.kind === "i64") {
543
+ this.intRecordFacts.push({
544
+ fieldNames: [first.name, second.name, "kind"],
545
+ targetField: first.name,
546
+ cls: this.intConsumed.get(slotPath),
547
+ path: slotPath,
548
+ });
549
+ }
550
+ return { kind: "number_bytes", number_field: first.name, number_class: numRef.kind, bytes_field: second.name };
457
551
  }
458
552
  }
459
553
  if (fields.length === 1 && !fields[0].optional) {
460
- const ref = this.fieldRef(fields[0], msgName);
554
+ let ref = this.fieldRef(fields[0], msgName);
555
+ if (ref.kind === "f64") {
556
+ // A plain number payload is an ask-4 declarable slot: `<msg>.<arm>`.
557
+ const slotPath = `${msgName}.${arm.name}`;
558
+ const before = this.intConsumed.has(slotPath);
559
+ ref = this.intify(ref, slotPath, arm.loc);
560
+ if (!before && this.intConsumed.has(slotPath)) {
561
+ this.intRecordFacts.push({
562
+ fieldNames: [fields[0].name, "kind"],
563
+ targetField: fields[0].name,
564
+ cls: this.intConsumed.get(slotPath),
565
+ path: slotPath,
566
+ });
567
+ }
568
+ }
461
569
  switch (ref.kind) {
462
570
  case "bytes":
463
571
  return { kind: "bytes" };
@@ -510,6 +618,7 @@ export function buildSidecar(input) {
510
618
  return { ok: false, diagnostics };
511
619
  try {
512
620
  const projector = new Projector(facts, config, entryLoc);
621
+ const helperIntFacts = [];
513
622
  // The model: the designated root state type, a record in the table.
514
623
  const modelClass = projector.lookup(config.model, entryLoc);
515
624
  if (modelClass.c !== "struct") {
@@ -553,7 +662,13 @@ export function buildSidecar(input) {
553
662
  if (p.shape === null) {
554
663
  throw new SidecarError(`helper '${fn.name}' parameter ${i + 2} ('${p.name}') has no type annotation`, fn.loc);
555
664
  }
556
- params.push(projector.shapeRef(p.shape, `helpers_${fn.name}`, p.name, fn.loc));
665
+ const pPath = `helpers.${fn.name}.params[${i}]`;
666
+ const ref = projector.intify(projector.shapeRef(p.shape, `helpers_${fn.name}`, p.name, fn.loc), pPath, fn.loc);
667
+ if (projector.intConsumed.has(pPath)) {
668
+ // IR param 0 is the model receiver the schema's index skips.
669
+ helperIntFacts.push({ fnName: fn.name, kind: "param", index: i + 1, cls: projector.intConsumed.get(pPath), path: pPath });
670
+ }
671
+ params.push(ref);
557
672
  });
558
673
  if (fn.returns === null) {
559
674
  throw new SidecarError(`helper '${fn.name}' has no return type annotation`, fn.loc);
@@ -564,7 +679,11 @@ export function buildSidecar(input) {
564
679
  // Helper-return synthesized names are two-part like everything else:
565
680
  // container 'helpers', member the helper's name — `helpers_<name>`,
566
681
  // never a '_return' suffix (the ratified spelling).
567
- const returns = projector.shapeRef(fn.returns, "helpers", fn.name, fn.loc);
682
+ const rPath = `helpers.${fn.name}.return`;
683
+ const returns = projector.intify(projector.shapeRef(fn.returns, "helpers", fn.name, fn.loc), rPath, fn.loc);
684
+ if (projector.intConsumed.has(rPath)) {
685
+ helperIntFacts.push({ fnName: fn.name, kind: "return", cls: projector.intConsumed.get(rPath), path: rPath });
686
+ }
568
687
  if (helpers.some((h) => h.name === fn.name)) {
569
688
  throw new SidecarError(`helper '${fn.name}' is declared twice`, fn.loc);
570
689
  }
@@ -636,6 +755,9 @@ export function buildSidecar(input) {
636
755
  throw new SidecarError(`envMsgs targets arm '${e.msg}', whose payload descriptor is '${payload.kind}' — the host delivers an environment value as bytes`, facts.envMsgs.loc);
637
756
  }
638
757
  }
758
+ // Every declared integer slot must have been spelled by now — the
759
+ // whole contract (model, msg, helpers, channels) is projected.
760
+ projector.checkIntConsumed();
639
761
  const doc = {
640
762
  format: SIDECAR_FORMAT,
641
763
  wire_version: config.wireVersion,
@@ -662,17 +784,29 @@ export function buildSidecar(input) {
662
784
  env_msgs: envMsgs,
663
785
  },
664
786
  abi: { prefix: profile.prefix, exports, snapshot_format: config.snapshotFormat },
665
- // The pre-ask-4 absent form the schema names valid: every numeric
666
- // slot above spelled f64, and the empty list is itself the
667
- // attestation that no slot was integer-classed.
668
- integer_slots: [],
787
+ // Ask 4's resolved integer-class decisions, one entry per declared
788
+ // slot in profile declaration order, every one spelled i64 (the
789
+ // frozen format-1 vocabulary; a u64 declaration is the stricter
790
+ // compile-time obligation over the same wire spelling). The V10
791
+ // bijection with the i64-spelled slots above holds by construction
792
+ // (intify is the only i64 speller and checkIntConsumed just proved
793
+ // every declaration was spelled). The list is an ATTESTATION: the
794
+ // compiler refuses the build before writing any artifact when an
795
+ // integer-slot proof fails, so a sidecar carrying these entries
796
+ // means every listed slot's obligations were discharged (§5).
797
+ integer_slots: config.integerSlots.map((e) => ({ slot: e.slot, class: "i64" })),
669
798
  deterministic: input.deterministic,
670
799
  // Structural in library mode: the SC4005 gate refused any graph
671
800
  // reaching async/timer/event-loop surface before emission, so a
672
801
  // sidecar exists only for async_free graphs.
673
802
  async_free: true,
674
803
  };
675
- return { ok: true, doc, json: JSON.stringify(doc, null, 2) + "\n" };
804
+ return {
805
+ ok: true,
806
+ doc,
807
+ json: JSON.stringify(doc, null, 2) + "\n",
808
+ integerSlotFacts: { helpers: helperIntFacts, records: projector.intRecordFacts },
809
+ };
676
810
  }
677
811
  catch (e) {
678
812
  if (e instanceof SidecarRefusal) {