ok
Canada + K1A 0B1: true
=== if alone (no-op) ===
5 ok: true
'x' ok: true
=== then without if (ignored) ===
'x' ok: true
=== if/then on non-objects ===
4 ok: true
5 rejected: true
-3 ok: true
-4 rejected: true
=== boolean if schemas ===
'x' ok: true
5 rejected: true
5 ok: true
'x' rejected: true
=== allOf chained conditionals ===
'abc' ok: true
'ab' rejected: true
11 ok: true
9 rejected: true
true ok: true
=== enum deep equality ===
{a:1} ok: true
[1,2] ok: true
'x' ok: true
null ok: true
{a:2} rejected: true
[1] rejected: true
=== $ref basic ===
{count: 5} ok: true
{count: -5} rejected: true
{count: 1.5} rejected: true
=== $ref root ===
'x' ok: true
'' rejected: true
=== $ref errors ===
invalid format: Only local $ref values of the form #/$defs/<name> are supported
unresolvable: Unable to resolve $ref "#/$defs/NonExistentDef" from root $defs
unresolvable 2: Unable to resolve $ref "#/$defs/b" from root $defs
=== $ref recursion (linked list) ===
{value:1} ok: true
nested ok: true
deep ok: true
deep bad: true
error message: next.value must be a number (was a string)
=== $ref recursion through anyOf (json) ===
'x' ok: true
5 ok: true
/app/ark/util/errors.ts:13
	throw new ctor(message)
	      ^

ParseError: Unable to resolve $ref "#/$defs/json" from root $defs
    at throwError (/app/ark/util/errors.ts:13:8)
    at throwParseError (/app/ark/util/errors.ts:21:2)
    at resolveJsonSchemaRef (/app/ark/json-schema/refs.ts:91:10)
    at <anonymous> (/app/ark/json-schema/json.ts:74:25)
    at Traversal.applyMorphsAtPath (/app/ark/schema/shared/traversal.ts:253:19)
    at Traversal.applyQueuedMorphs (/app/ark/schema/shared/traversal.ts:230:10)
    at Traversal.finalize (/app/ark/schema/shared/traversal.ts:158:9)
    at MorphNode.contextFreeMorph (/app/ark/schema/node.ts:248:17)
    at MorphNode.BaseNode.attach (/app/ark/schema/node.ts:122:17)
    at MorphNode.assert (/app/ark/schema/node.ts:316:7)

Node.js v22.23.2
node:internal/errors:983
  const err = new Error(message);
              ^

Error: Command failed: node ./ark/json-schema/smoke.ts
    at genericNodeError (node:internal/errors:983:15)
    at wrappedFn (node:internal/errors:537:14)
    at checkExecSyncError (node:child_process:916:11)
    at execSync (node:child_process:988:15)
    at file:///app/ark/repo/ts.js:9:1
    at ModuleJob.run (node:internal/modules/esm/module_job:343:25)
    at async onImport.tracePromise.__proto__ (node:internal/modules/esm/loader:681:26)
    at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:117:5) {
  status: 1,
  signal: null,
  output: [ null, null, null ],
  pid: 712,
  stdout: null,
  stderr: null
}

Node.js v22.23.2
