stdlib-fence.ts:10:14 - error SC2020: 'Symbol.iterator' is part of the standard library types but has no scriptc lowering yet

   9 | // surface below.)
  10 | const iter = Symbol.iterator;
     |              ^~~~~~~~~~~~~~~
  11 | const g = globalThis;

  hint: the type checker sees the full standard library, but only the supported surface compiles (https://scriptc.dev/limitations)

stdlib-fence.ts:15:15 - error SC1090: statically-decided Array.isArray on computed arguments (bind the value to a variable first) are not supported yet

  14 | const n5 = Number.NaN; // lowers now, with the other Number constants
  15 | const isArr = Array.isArray([1]);
     |               ^~~~~~~~~~~~~~~~~~
  16 | const merged = Object.assign({}, { a: 1 }); // the empty-target literal-source shape lowers now (it IS the source literal)

stdlib-fence.ts:17:23 - error SC2020: 'Object.assign' is part of the standard library types but has no scriptc lowering yet

  16 | const merged = Object.assign({}, { a: 1 }); // the empty-target literal-source shape lowers now (it IS the source literal)
  17 | const aliasedAssign = Object.assign(merged, { b: 2 }); // aliased targets stay fenced (real mutation of a live object)
     |                       ^~~~~~~~~~~~~
  18 | const refl = Reflect.has({ a: 1 }, "a");

  hint: spread instead: { ...a, ...b } builds the merged record; what lowers: the empty-target literal-source shape (Object.assign({}, { ... }) IS the source literal) and merges INTO an index-signature record whose value slot every source value enters — other aliased targets are real mutation, and a function target (Object.assign(fn, { prop })) is a function-with-properties value the model cannot represent: bind the property separately

stdlib-fence.ts:18:14 - error SC2020: 'Reflect.has' is part of the standard library types but has no scriptc lowering yet

  17 | const aliasedAssign = Object.assign(merged, { b: 2 }); // aliased targets stay fenced (real mutation of a live object)
  18 | const refl = Reflect.has({ a: 1 }, "a");
     |              ^~~~~~~~~~~
  19 | const parsedMs = Date.parse;

  hint: the type checker sees the full standard library, but only the supported surface compiles (https://scriptc.dev/limitations)

stdlib-fence.ts:19:18 - error SC2020: 'Date.parse' is part of the standard library types but has no scriptc lowering yet

  18 | const refl = Reflect.has({ a: 1 }, "a");
  19 | const parsedMs = Date.parse;
     |                  ^~~~~~~~~~
  20 | const fmt = new Intl.NumberFormat();

  hint: the type checker sees the full standard library, but only the supported surface compiles (https://scriptc.dev/limitations)

stdlib-fence.ts:20:7 - error SC2020: 'NumberFormat' is part of the standard library types but has no scriptc lowering yet

  19 | const parsedMs = Date.parse;
  20 | const fmt = new Intl.NumberFormat();
     |       ^~~
  21 | 

  hint: Intl formatter values have no representation — the COMPOSED en-US forms lower: new Intl.NumberFormat("en-US").format(x) and x.toLocaleString("en-US") with default options; the rest is ICU locale data the binary does not carry

stdlib-fence.ts:20:13 - error SC1090: constructing values other than classes declared in the program is not supported yet

  19 | const parsedMs = Date.parse;
  20 | const fmt = new Intl.NumberFormat();
     |             ^~~~~~~~~~~~~~~~~~~~~~~
  21 | 

stdlib-fence.ts:23:11 - error SC2020: 'new Date with 2 arguments' is part of the standard library types but has no scriptc lowering yet

  22 | // Constructors.
  23 | const d = new Date(2024, 0); // the local-time year/month field constructor stays fenced
     |           ^~~~~~~~~~~~~~~~~
  24 | const mutableDate = new Date(0);

  hint: new Date(), new Date(milliseconds), and new Date(dateString) are supported; the local-time year/month field constructor has no lowering

stdlib-fence.ts:25:1 - error SC2020: 'Date.prototype.setUTCFullYear with arguments' is part of the standard library types but has no scriptc lowering yet

  24 | const mutableDate = new Date(0);
  25 | mutableDate.setUTCFullYear(2024); // mutation is outside the read-only Date slice
     | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  26 | const sameDate = mutableDate === mutableDate; // scalar storage must not fake object identity

  hint: getTime(), valueOf(), toISOString(), the local/UTC calendar getters, and getTimezoneOffset() are supported; Date setters and locale/string formatters have no lowering

stdlib-fence.ts:26:18 - error SC1043: comparing non-number, non-string values are not supported yet

  25 | mutableDate.setUTCFullYear(2024); // mutation is outside the read-only Date slice
  26 | const sameDate = mutableDate === mutableDate; // scalar storage must not fake object identity
     |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~
  27 | const wr = new WeakRef({});

stdlib-fence.ts:27:7 - error SC2020: 'WeakRef<{}>' is part of the standard library types but has no scriptc lowering yet

  26 | const sameDate = mutableDate === mutableDate; // scalar storage must not fake object identity
  27 | const wr = new WeakRef({});
     |       ^~
  28 | const px = new Proxy({ a: 1 }, {});

  hint: the type checker sees the full standard library, but only the supported surface compiles (https://scriptc.dev/limitations)

stdlib-fence.ts:27:12 - error SC2020: 'new WeakRef' is part of the standard library types but has no scriptc lowering yet

  26 | const sameDate = mutableDate === mutableDate; // scalar storage must not fake object identity
  27 | const wr = new WeakRef({});
     |            ^~~~~~~~~~~~~~~
  28 | const px = new Proxy({ a: 1 }, {});

  hint: deref()-after-collect exposes GC timing — genuinely dynamic; hold a strong reference instead

stdlib-fence.ts:34:7 - error SC2020: 'AggregateError' is part of the standard library types but has no scriptc lowering yet

  33 | // and the unlowered members of lowered error objects.)
  34 | const agg = new AggregateError([]);
     |       ^~~
  35 | const stack = new Error("boom").stack;

  hint: the type checker sees the full standard library, but only the supported surface compiles (https://scriptc.dev/limitations)

stdlib-fence.ts:34:13 - error SC2020: 'new AggregateError' is part of the standard library types but has no scriptc lowering yet

  33 | // and the unlowered members of lowered error objects.)
  34 | const agg = new AggregateError([]);
     |             ^~~~~~~~~~~~~~~~~~~~~~
  35 | const stack = new Error("boom").stack;

  hint: the type checker sees the full standard library, but only the supported surface compiles (https://scriptc.dev/limitations)

stdlib-fence.ts:35:15 - error SC2020: 'Error.stack' is part of the standard library types but has no scriptc lowering yet

  34 | const agg = new AggregateError([]);
  35 | const stack = new Error("boom").stack;
     |               ^~~~~~~~~~~~~~~~~~~~~~~
  36 | // Unlowered members on lowered containers.

  hint: stack traces are not captured (frames would need runtime bookkeeping); name, message, and toString() are available

stdlib-fence.ts:40:17 - error SC2020: 'Math.min' is part of the standard library types but has no scriptc lowering yet

  39 | // corpus; the mixed spread/positional list is the form that stays fenced.)
  40 | const clamped = Math.min(1, ...[2, 3]);
     |                 ^~~~~~~~
  41 | const entries = [1, 2].entries();

  hint: Math.min lowers with any number of plain arguments or ONE number[] spread — mixed spread/positional lists don't: spread a single array (Math.min(...xs))

stdlib-fence.ts:41:7 - error SC2020: 'ArrayIterator<[number, number]>' is part of the standard library types but has no scriptc lowering yet

  40 | const clamped = Math.min(1, ...[2, 3]);
  41 | const entries = [1, 2].entries();
     |       ^~~~~~~
  42 | const arrAt = [1, 2].at(0);

  hint: the type checker sees the full standard library, but only the supported surface compiles (https://scriptc.dev/limitations)

stdlib-fence.ts:41:17 - error SC2020: 'number[].entries' is part of the standard library types but has no scriptc lowering yet

  40 | const clamped = Math.min(1, ...[2, 3]);
  41 | const entries = [1, 2].entries();
     |                 ^~~~~~~~~~~~~~
  42 | const arrAt = [1, 2].at(0);

  hint: the type checker sees the full standard library, but only the supported surface compiles (https://scriptc.dev/limitations)

stdlib-fence.ts:43:14 - error SC2020: 'string.normalize' is part of the standard library types but has no scriptc lowering yet

  42 | const arrAt = [1, 2].at(0);
  43 | const norm = "abc".normalize();
     |              ^~~~~~~~~~~~~~~
  44 | const limited = "a,b,c".split(Math.random() ? "," : /,/, 2); // union separators stay fenced; limits lower

  hint: the type checker sees the full standard library, but only the supported surface compiles (https://scriptc.dev/limitations)

stdlib-fence.ts:44:31 - error SC1090: '.split()' on a 'RegExp | string' separator (pass a string, or a regex literal) is not supported yet

  43 | const norm = "abc".normalize();
  44 | const limited = "a,b,c".split(Math.random() ? "," : /,/, 2); // union separators stay fenced; limits lower
     |                               ^~~~~~~~~~~~~~~~~~~~~~~~~
  45 | const fixed = (1.5).toFixed(); // digit-free toFixed lowers now (the static ties-up integer)

stdlib-fence.ts:46:19 - error SC2020: 'Number.prototype.toLocaleString without a locale' is part of the standard library types but has no scriptc lowering yet

  45 | const fixed = (1.5).toFixed(); // digit-free toFixed lowers now (the static ties-up integer)
  46 | const localized = (1234.5).toLocaleString();
     |                   ^~~~~~~~~~~~~~~~~~~~~~~~~
  47 | // Unlowered call FORMS of lowered members. (push is fully variadic now —

  hint: the default locale is the host environment's, which a compiled binary cannot carry — pass it explicitly: x.toLocaleString("en-US")

stdlib-fence.ts:52:1 - error SC2020: '.forEach with 2 arguments' is part of the standard library types but has no scriptc lowering yet

  51 | const joined = nums.join(); // the omitted separator lowers
  52 | nums.forEach((x) => console.log(x), { unused: true }); // thisArg stays fenced
     | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  53 | const pos = "abc".includes("b", 1); // the position form lowers now (indexOf's clamp)

  hint: the thisArg parameter has no lowering — use an arrow function

stdlib-fence.ts:61:16 - error SC2020: 'JSON.stringify with replacer/space parameters' is part of the standard library types but has no scriptc lowering yet

  60 | const width = 2;
  61 | const spaced = JSON.stringify(toStringify, null, width);
     |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  62 | // The promise surface beyond await.

  hint: the serializer is type-directed — shape the value before stringifying

stdlib-fence.ts:73:15 - error SC2020: 'Object.is over a dynamic operand' is part of the standard library types but has no scriptc lowering yet

  72 | // unions needing narrowing.
  73 | const dynIs = Object.is(JSON.parse("1") as unknown, 1);
     |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  74 | function pick(a: string | number, b: number | boolean): boolean {

  hint: validate/narrow the value first (strict equality's rule) — SameValue only differs from === on numbers (NaN, ±0)

stdlib-fence.ts:75:10 - error SC2020: 'Object.is over these union operands' is part of the standard library types but has no scriptc lowering yet

  74 | function pick(a: string | number, b: number | boolean): boolean {
  75 |   return Object.is(a, b); // partially-overlapping unions: narrow first
     |          ^~~~~~~~~~~~~~~
  76 | }

  hint: union-typed comparisons need one comparable shape (narrow first: check a discriminant field, or compare with '!== undefined'/'!== null' for unit arms)

stdlib-fence.ts:82:23 - error SC2009: values of type 'Date | undefined' cannot be compiled: the union shape is supported, but 'Date' arms have no home in a compiled union yet (no runtime narrowing test exists against sibling arms)

  81 | // scalar/ref mismatch.
  82 | function optionalDate(value: Date | undefined): number {
     |                       ^~~~~
  83 |   return value === undefined ? -1 : value.getTime();

  hint: the outer shape is supported — the named component is the blocker; restate it inside the compilable set (number, string, boolean, arrays, Maps, Sets, RegExp, functions, classes, records, unions of those, and 'unknown')

stdlib-fence.ts:85:1 - error SC2004: uses of 'optionalDate' inherit the blocker on its declaration

  84 | }
  85 | optionalDate(undefined);
     | ^~~~~~~~~~~~
  86 | function throwDate(): void {

  hint: the declaration of 'optionalDate' did not compile — fix the diagnostic reported there and these sites clear with it

stdlib-fence.ts:87:9 - error SC1090: throwing Date values (catch bindings cannot preserve Date's object kind; throw an Error or primitive instead) are not supported yet

  86 | function throwDate(): void {
  87 |   throw new Date(0); // the exception cell cannot preserve Date's object kind
     |         ^~~~~~~~~~~
  88 | }

stdlib-fence.ts:93:23 - error SC1090: .throw() with a Date value (the exception channel cannot preserve Date's object kind; throw an Error or primitive instead) is not supported yet

  92 | }
  93 | dateGenerator().throw(new Date(0));
     |                       ^~~~~~~~~~~
  94 | // End of the diagnostic fixture.