Commit Graph
241 Commits
Author SHA1 Message Date
Chris Tate ae3abd7069 Refuse unresolved subscriptions exports
- Track whether subscriptions_export is explicitly declared and reject dangling names at the profile.
- Preserve optional omission semantics and cover both paths with contract regressions.
2026-07-30 21:11:09 -05:00
Chris Tate d0b3e81a9b fix(library): preserve nested integer obligations 2026-07-30 20:32:37 -05:00
Chris Tate 7badeb3135 Refuse synthesized record name collisions 2026-07-30 20:11:10 -05:00
Chris Tate 73cb79ea52 Fix synthesized record attestations across composed arms 2026-07-30 19:50:21 -05:00
Chris Tate a4898f335d Prove integer writes to synthesized record slots
- Preserve tagged-union shape identity when mapping synthesized payload fields into integer inference.

- Refuse fractional writes on named-union and message payload slots, with regressions for both paths.
2026-07-30 19:31:48 -05:00
Chris Tate 650cbf23f3 Dissolve scalar aliases during sidecar projection
- Resolve scalar alias chains to their primitive wire types.

- Keep aliases out of the sidecar type table.

- Cover records, messages, helpers, and integer slots.
2026-07-30 15:09:55 -05:00
Chris Tate 78c194e843 Fix shadowed contract builtin types 2026-07-30 14:43:15 -05:00
Chris Tate 93c19235b4 Project readonly arrays in contract sidecars
- Treat readonly T[] and ReadonlyArray<T> as mutability-neutral slices.
- Cover model, message, optional, and helper projections across readonly spellings.
2026-07-30 14:27:08 -05:00
Chris Tate 4e9dc0e325 Fix empty-object integer attestations 2026-07-30 13:15:15 -05:00
Chris Tate 467ac81a86 Fix integer attestations across composed arms 2026-07-30 12:43:27 -05:00
Chris Tate 58412530fb Fix integer proof gaps in sidecar analysis 2026-07-30 12:09:04 -05:00
Chris Tate 018ba820e7 fix: preserve composed union arms in sidecar matching 2026-07-30 11:49:07 -05:00
Chris Tate b2007d75db fix: validate integer record facts safely 2026-07-30 11:25:53 -05:00
Chris Tate 6757c11af1 Match integer slots by structural shape 2026-07-30 10:31:52 -05:00
Chris Tate 9bdbf02079 Compose integer slots with optional numbers
- Project declared optional-number slots as optional<i64> and prove present numeric values across library boundaries.
- Refuse structurally colliding tagged-union obligations with an attributed SC4009 diagnostic.
2026-07-30 10:02:41 -05:00
Chris Tateandmorler de0e54d776 fix: lower HTTPS request callbacks in LLVM
- Lower the HTTPS options row through the runtime ABI with callback ownership and loop liveness.
- Pin HTTP and HTTPS response callbacks with differential and tier-regression coverage.

Co-authored-by: morler <478444+morler@users.noreply.github.com>
2026-07-30 00:17:47 -05:00
Chris Tate 798a281be3 fix: lower wrapped undefined arguments 2026-07-29 22:36:45 -05:00
Chris Tate 4b041e630f fix: preserve array copying edge semantics 2026-07-29 21:35:09 -05:00
Chris Tate 296311fa81 fix: preserve static undefined argument semantics 2026-07-29 21:13:46 -05:00
Chris Tate f47ee03dc6 Support array copying and Uint8Array iteration
- Add static Array and Uint8Array copying, sorting, and join surfaces.
- Lower Uint8Array spread, destructuring, and iterator methods across C and LLVM.
- Pin Node 24 semantics with differential coverage and runtime size gating.
2026-07-29 18:03:00 -05:00
Chris Tate e95469364a Support numeric iterators in for-of
- Lower number-array and typed-array value iterators statically.
- Preserve stored iterator cursor and exhaustion state across loops.
- Add Node differential coverage for arrays and Uint8Array.
2026-07-29 16:32:41 -05:00
Chris Tate a992b644fb fix: align Array.toSorted ordering semantics 2026-07-29 15:30:48 -05:00
Chris Tate d7cb22a325 test: pin Array.toSorted evaluation order 2026-07-29 15:11:04 -05:00
Chris Tate 767be68ae2 feat: add static Array.toSorted support
- Lower to the stable array sort helper over a shallow snapshot.
- Publish Array.prototype.toSorted in the static surface manifest.
- Cover stability, copy semantics, and evaluation order differentially.
2026-07-29 14:56:18 -05:00
Chris Tate 8a5bf62cf5 Refine guarded integer field reads
- Track canonical field paths through straight-line guards.
- Invalidate path proofs across calls, writes, suspension, and control-flow joins.
- Cover if and ternary proofs with Node-exact C and LLVM regressions.
2026-07-29 14:37:25 -05:00
Chris Tate 9b0ad004f8 Fix top-level await rejection checkpoints 2026-07-29 01:32:26 -05:00
Chris Tate 05752fde96 Fix top-level await dependency rejection handling 2026-07-29 00:35:35 -05:00
Chris Tate 43e183dfc3 fix: await async cycle root from external importers 2026-07-29 00:11:21 -05:00
Chris Tate c50041b1bd fix: select async cycle root at runtime 2026-07-28 23:49:22 -05:00
Chris Tate 786f10dbf2 Fix top-level await cycle semantics 2026-07-28 23:27:25 -05:00
Chris Tate dca69db98e Fix pending top-level await exit precedence 2026-07-28 22:40:36 -05:00
Chris Tate 2d9070cd54 fix top-level await rejection handling 2026-07-28 22:01:32 -05:00
Chris Tate ad56e7716a Merge branch 'main' into ctate/top-level-await 2026-07-28 20:57:35 -05:00
Chris Tate 124ea659ec fix(test): preserve POSIX sandbox workspace paths
- Keep remote workspace reset paths POSIX across host platforms.

- Add targeted Windows CI coverage for Sandbox preparation.
2026-07-28 20:07:34 -05:00
Chris Tate 3487b26d38 fix(test): isolate sandbox scheduling and cleanup
- Clear inherited scheduler controls outside intentional shards.

- Bound Sandbox removal and escalate stalled CLI termination.
2026-07-28 19:18:06 -05:00
Chris Tate 6886bcf24b fix(test): load sandbox runner settings from local env
- Load .env.local before capturing runner tuning values.

- Cover configured values and documented defaults.
2026-07-28 19:00:04 -05:00
Chris Tate 680dbfe458 fix(test): isolate sandbox sanitizer lanes
- Pin sanitizer state for every local and remote lane.

- Cover inherited environment overrides with a regression test.
2026-07-28 18:43:53 -05:00
Chris Tate 297c68125c Preserve sandbox gate coverage and worktree fidelity
- Run host artifact and ASan contracts on supported platforms with a Sandbox fallback.
- Clear image-seeded workspace files before extracting the dirty worktree.
- Pin current Linux artifact size classes and regression coverage.
2026-07-28 18:27:28 -05:00
Chris Tate 177d025452 Harden sandbox gate across host platforms
- Retain representative Darwin kqueue coverage in the default gate.
- Schedule native runtime tests by host and make Linux clang invocations portable.
- Resolve canonical OCI manifest digests for direct and indexed images.
2026-07-28 17:48:17 -05:00
Chris Tate 61d399bb7a Fix sandbox gate coverage and isolation 2026-07-28 15:36:19 -05:00
Chris Tate a504ccb850 Cut full sandbox validation to four minutes
- Shard portable coverage across 16 sandboxes while retaining focused Darwin contracts.

- Run invariant suites once and keep differential and sanitizer-sensitive coverage in both lanes.

- Harden sandbox transport, exit-status parsing, and Linux runtime test portability.
2026-07-28 14:58:34 -05:00
Chris Tate e88ddc1678 Support top-level await
- Lower asynchronous ESM initialization with Node-compatible dependency ordering and caching.
- Finish top-level promises consistently across the C and LLVM runtimes.
- Add differential coverage for imports, rejection, and unsettled evaluation.
2026-07-28 11:19:04 -05:00
Chris Tate 81091a1a49 Preserve effectful toFixed defaults
- Evaluate undefined precision expressions before substituting zero.
- Cover effectful optional precision with a differential corpus case.
2026-07-26 21:21:07 -05:00
Chris Tate a3a5863cca fix optional toFixed lowering 2026-07-26 19:50:06 -05:00
Chris Tate bc2cd2b7d1 Support Number.toFixed statically
- Lower Number.prototype.toFixed through the compiler IR and native backends.
- Match JavaScript rounding, range errors, and numeric edge cases in the runtime.
- Add differential coverage and update surface metadata and diagnostics.
2026-07-26 18:43:53 -05:00
Chris Tate 481dd9c974 fix: flush console output promptly
- Submit console, process, readline, and island writes before returning.
- Add live-pipe and SIGKILL parity coverage against Node 24.
2026-07-26 01:30:42 -05:00
Chris Tate 1a5bc86bc9 fix: harden outbound FFI validation 2026-07-25 11:52:55 -05:00
Chris Tate 2098e0df6d fix: validate unused FFI bindings 2026-07-25 10:57:54 -05:00
Chris Tate bed63d3223 feat: add outbound native FFI
- Add a strict versioned manifest and direct C ABI lowering for both backends.
- Link declared native inputs through the CLI and compiler APIs with precise diagnostics.
- Cover the ABI under plain and sanitized integration tests and document its contracts.
2026-07-25 09:56:48 -05:00
Chris Tate a7538fd87d URL-string and URL-object arguments to the http and https clients
- `http.get("http://host/path")` and its https spelling now compile. The declarations only described the options-record form, so the first thing a from-scratch client writes was a type error — the shape worked under --dynamic, where the engine does not consult our declarations, which is how it read as a hello-world failure.
- A URL object is accepted the same way, as its href through the same parse. An unparsable input is the WHATWG "Invalid URL" TypeError and a scheme that is not the calling module's is ERR_INVALID_PROTOCOL, both catchable, matching Node rather than silently upgrading the dial.
- `request` and `get` take one signature with a union first parameter instead of Node's two overloads: `tls ? https.request : http.request` unions two function types, and resolving a call on that union collapses each side to a single signature, so an overload set misresolves in either declaration order. The lowering dispatches on the argument's own type.
- Both rows run on the LLVM backend, and the tls CA-store entries joined it too — the omission there was stale, so 2557-tls-ca-store moved off the C lane with identical output.
- Corpus 2644 and 2645 cover both schemes against loopback servers, so neither needs the network.
2026-07-24 23:24:53 -05:00