jolt/test/conformance/profile.edn
Yogthos 33eff7c7d8 Clean up codebase: rename stdlib layer, strip porting residue, fix tooling
Rename src/jolt -> stdlib (the runtime-loaded layer; jolt-core stays the
seed-baked layer) and update the loader / emit-image / doc paths. Drop dead
code: the spike/ experiments, the duplicate clojuredocs-export.edn (json moves
to tools/), the Janet-era jolt.http binding, and the orphaned
persistent_vector.clj whose ns/path didn't even match.

Strip porting residue from comments and docstrings across host/chez, jolt-core,
stdlib, tests, and docs: internal issue ids, "Phase N" markers, and the "vs
Janet" historical exposition, leaving present-tense descriptions and the real
JVM-Clojure semantic contrasts. Same pass over the corpus suite labels. The seed
is unchanged (docstrings/comments aren't emitted), so the self-host fixpoint and
corpus are untouched.

Port tools/spec_coverage.py off the dead janet probe to bin/joltc and regenerate
coverage.md; drop the dead :host/janet rule from certify.clj and regenerate the
conformance profile. Add docs/host-interop.md (the JVM shims and how to register
your own host class from a library) and a writing-style note in CLAUDE.md.

Stabilize the four racy concurrency corpus cases (future-cancel and agent
send/send-off): give the future a sleeping body and the agent a slow action, so
cancel reliably catches an in-flight future and deref reliably reads the
pre-update snapshot. They certify deterministically now, so drop their :flaky
allowlist entries and the orphaned legend.
2026-06-22 22:18:00 -04:00

685 lines
22 KiB
Clojure

{:doc
"Conformance profile for test/chez/corpus.edn, generated by certify.clj. Each entry is a NON-portable case (keyed by [suite label]) and the host feature(s) it requires. Cases NOT listed are portable — they pass on any faithful Clojure. A runtime's conformance LEVEL = portable + the feature families it implements. See SPEC.md.",
:clojure-version "1.12.5",
:portable-count 2735,
:non-portable-count 167,
:feature-counts
{:host/arrays 10,
:host/jvm-interop 149,
:perf/unbounded 1,
:printer/jolt 2,
:reader/jolt 4,
:strictness/jolt 1},
:entries
[{:suite "*ns* / identity & printing",
:label "tracks in-ns",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "clojure.core / leaf batch (complement fnil munge etc.)",
:label "supers empty set",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "clojure.math",
:label "PI",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "clojure.math",
:label "floor",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "clojure.math",
:label "pow",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "clojure.math",
:label "round",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "clojure.math",
:label "signum",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "clojure.math",
:label "sqrt",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "clojure.math",
:label "tan of 0",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "clojure.math",
:label "to-radians",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite
"conformance / defmacro surface + syntax-quote/ns (enabling real clojure libs)",
:label "syntax-quote resolves alias",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite
"conformance / migratus enablement: def/defmacro/defmulti forms, assoc, try, ns",
:label "ns restored after catch",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite
"conformance / migratus enablement: def/defmacro/defmulti forms, assoc, try, ns",
:label "try finally on ok+catch",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite
"conformance / migratus enablement: def/defmacro/defmulti forms, assoc, try, ns",
:label "try multi-body last",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "conformance / try / catch",
:label "ex-data",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "conformance / try / catch",
:label "ex-message",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "conformance / try / catch",
:label "try catch",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "core / with-open",
:label "binding visible",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "core / with-open",
:label "body result",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "core / with-open",
:label "close runs",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "core / with-open",
:label "nested close order",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "core / with-precision",
:label "rounding arg accepted",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "exceptions / ex-info",
:label "catch binds thrown value",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "exceptions / ex-info",
:label "ex-data via catch",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "exceptions / ex-info",
:label "propagates to outer",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "exceptions / ex-info",
:label "rethrow preserves ex",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "exceptions / try-catch",
:label "catch :default",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "exceptions / try-catch",
:label "catch binds error",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "exceptions / try-catch",
:label "catch value of body",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "exceptions / try-catch",
:label "finally runs on throw",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "exceptions / try-catch",
:label "no throw -> body",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "forms / fn",
:label "no param vector",
:bucket :throws-mismatch,
:features [:strictness/jolt]}
{:suite "forms / try",
:label "catch ex-data",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "forms / try",
:label "catch value w/ finally",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "forms / try",
:label "first throw wins",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "forms / try",
:label "immediate throw caught",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "forms / try",
:label "no throw skips catch",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "hierarchy / global + multimethod dispatch",
:label "dispatch exact beats isa",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "hierarchy / global + multimethod dispatch",
:label "dispatch via hierarchy",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "hierarchy / global + multimethod dispatch",
:label "global ancestors",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "hierarchy / global + multimethod dispatch",
:label "global derive + isa?",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "hierarchy / global + multimethod dispatch",
:label "global underive",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "host-interop / class tokens & readers",
:label "dispatch-only class name",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "host-interop / class tokens & readers",
:label "slurp accepts :encoding opts",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "host-interop / class tokens & readers",
:label "slurp drains a StringReader",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "host-interop / exception + HashMap shims",
:label "HashMap get",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "host-interop / exception + HashMap shims",
:label "HashMap put + size",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "host-interop / migratus class shims",
:label "Timestamp is millis",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "host-interop / reader-feature toggle",
:label "features default to jolt+default",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "host-interop / reader-feature toggle",
:label "restore returns to default",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "host-interop / reader-feature toggle",
:label "set + read back",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "host-interop / ring-codec surface",
:label "Base64 encode",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "host-interop / ring-codec surface",
:label "Base64 round trip",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "host-interop / ring-codec surface",
:label "MapEntry key/val",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "host-interop / ring-codec surface",
:label "StringTokenizer",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "host-interop / ring-codec surface",
:label "URLDecoder www form",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "host-interop / ring-codec surface",
:label "URLEncoder www form",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "host-interop / ring-codec surface",
:label "extend-protocol Map",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "host-interop / ring-codec surface",
:label "extend-protocol Map covers sorted",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "host-interop / ring-codec surface",
:label "url round trip",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "inst / partial timestamps & offsets",
:label "bad timestamp throws",
:bucket :read-error,
:features [:reader/jolt]}
{:suite "interop / PushbackReader & parse statics",
:label "edn/read multi-line",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "interop / PushbackReader & parse statics",
:label "unread accepts a char",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "interop / PushbackReader & parse statics",
:label "unread pushes back",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "interop / String methods",
:label "String/valueOf nil",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "interop / StringReader & StringBuilder",
:label "mark/reset",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "interop / StringReader & StringBuilder",
:label "with-open closes shim",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "interop / dot forms",
:label "dot field keyword",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "interop / dot forms",
:label "field access .-",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "interop / dot forms",
:label "method call",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "interop / dot forms",
:label "method with args",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "interop / java.time shims",
:label "Instant instance",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "interop / java.time shims",
:label "Instant/now is current",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "interop / java.time shims",
:label "fix-date chain",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "interop / java.time shims",
:label "localized style",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "interop / java.time shims",
:label "month name + ampm",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "interop / java.time shims",
:label "ofPattern formats #inst",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "interop / java.time shims",
:label "pattern shape",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "interop / java.time shims",
:label "quoted literal",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "interop / java.time shims",
:label "toEpochMilli round trip",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "interop / java.time shims",
:label "withLocale chain",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "io / cold tagged types via print-method",
:label "atom override fires nested",
:bucket :divergent,
:features [:reader/jolt]}
{:suite "io / cold tagged types via print-method",
:label "transient map",
:bucket :divergent,
:features [:printer/jolt]}
{:suite "io / cold tagged types via print-method",
:label "transient vector",
:bucket :divergent,
:features [:printer/jolt]}
{:suite "io / line-seq",
:label "line-seq",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "io / line-seq",
:label "line-seq count",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "io / line-seq",
:label "line-seq empty",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "io / line-seq",
:label "line-seq is lazy seq",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "io / print-method multimethod",
:label "StringWriter accumulates",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "io / print-method multimethod",
:label "direct builtin override",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "io / print-method multimethod",
:label "direct call uses :default",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "io / print-method multimethod",
:label "print-dup routes to print-method",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "io / slurp, spit, printf, flush (host-classified)",
:label "file-seq finds files",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "macros / core-overlay",
:label "assert message",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "macros / core-overlay",
:label "assert throws",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "macros / core-overlay",
:label "condp no match",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "macros / time, with-redefs, macroexpand",
:label "with-redefs restores on throw",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "metadata / type hints",
:label "symbol hint -> :tag",
:bucket :divergent,
:features [:host/jvm-interop]}
{:suite "metadata / type hints",
:label "type hint in let",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "multimethods / hierarchies",
:label "explicit :hierarchy",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "namespaces / ns operations",
:label "in-ns switches",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "namespaces / ns operations",
:label "standalone use",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "namespaces / unified alias store",
:label "alias fn visible to ns-aliases",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "namespaces / unified alias store",
:label "ns-unalias removes both views",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "namespaces / unified alias store",
:label "require :as registers the alias",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "predicates / overlay-migrated",
:label "keyword-identical?",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "predicates / overlay-migrated",
:label "keyword-identical? no",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "predicates / overlay-migrated",
:label "object?",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "predicates / overlay-migrated",
:label "undefined?",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "predicates / tagged-value",
:label "atom? no",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "predicates / tagged-value",
:label "atom? yes",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "regex / Pattern statics & String regex methods",
:label "Pattern/MULTILINE ^",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "regex / Pattern statics & String regex methods",
:label "Pattern/compile is a regex",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "regex / Pattern statics & String regex methods",
:label "Pattern/quote literal",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "regex / Pattern statics & String regex methods",
:label "Pattern/quote not meta",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "regex / Pattern statics & String regex methods",
:label "compiled .split",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "regex / Pattern statics & String regex methods",
:label "str/replace w/ Pattern",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "regex / \\p property classes",
:label "unknown class throws",
:bucket :read-error,
:features [:reader/jolt]}
{:suite "regex / literals & predicate",
:label "regex? literal",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "regex / literals & predicate",
:label "regex? non-regex",
:bucket :read-error,
:features [:reader/jolt]}
{:suite "regex / re-pattern & string ops",
:label "re-pattern is regex?",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "set / nil element",
:label "transient conj! nil",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "set / nil element",
:label "transient contains? nil",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "set / nil element",
:label "transient disj! nil cnt",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "set / nil element",
:label "transient disj! removes",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "sorted / empty + empty? + rseq + printing",
:label "empty set kind",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "sorted / predicates",
:label "sorted-map? false",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "sorted / predicates",
:label "sorted-map? true",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "sorted / predicates",
:label "sorted-set? false",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "sorted / predicates",
:label "sorted-set? true",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "state / atoms",
:label "atom? on non-atom",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "state / atoms",
:label "atom? predicate",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "state / promises",
:label "promise undelivered",
:bucket :timeout,
:features [:perf/unbounded]}
{:suite "transient / set",
:label "conj! dedups",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "transient / set",
:label "map elements by value",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "transient / vector",
:label "conj! many args",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "transient / vector",
:label "transient? false",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "transient / vector",
:label "transient? true",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "untested / JVM-shape stubs (documented jolt behavior)",
:label "array-seq",
:bucket :jvm-error,
:features [:host/arrays]}
{:suite "untested / JVM-shape stubs (documented jolt behavior)",
:label "array-seq empty",
:bucket :jvm-error,
:features [:host/arrays]}
{:suite "untested / JVM-shape stubs (documented jolt behavior)",
:label "bean is the map",
:bucket :divergent,
:features [:host/jvm-interop]}
{:suite "untested / JVM-shape stubs (documented jolt behavior)",
:label "enumeration-seq",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "untested / JVM-shape stubs (documented jolt behavior)",
:label "init-proxy",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "untested / JVM-shape stubs (documented jolt behavior)",
:label "iterator-seq",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "untested / JVM-shape stubs (documented jolt behavior)",
:label "proxy resolves nil",
:bucket :divergent,
:features [:host/jvm-interop]}
{:suite "untested / JVM-shape stubs (documented jolt behavior)",
:label "proxy-call-with-super calls",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "untested / JVM-shape stubs (documented jolt behavior)",
:label "proxy-mappings",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "untested / JVM-shape stubs (documented jolt behavior)",
:label "update-proxy",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "untested / array stubs (vectors + host buffers)",
:label "aset-boolean",
:bucket :jvm-error,
:features [:host/arrays]}
{:suite "untested / array stubs (vectors + host buffers)",
:label "aset-byte",
:bucket :jvm-error,
:features [:host/arrays]}
{:suite "untested / array stubs (vectors + host buffers)",
:label "aset-char",
:bucket :jvm-error,
:features [:host/arrays]}
{:suite "untested / array stubs (vectors + host buffers)",
:label "aset-double",
:bucket :jvm-error,
:features [:host/arrays]}
{:suite "untested / array stubs (vectors + host buffers)",
:label "aset-float",
:bucket :jvm-error,
:features [:host/arrays]}
{:suite "untested / array stubs (vectors + host buffers)",
:label "aset-int",
:bucket :jvm-error,
:features [:host/arrays]}
{:suite "untested / array stubs (vectors + host buffers)",
:label "aset-long",
:bucket :jvm-error,
:features [:host/arrays]}
{:suite "untested / array stubs (vectors + host buffers)",
:label "aset-short",
:bucket :jvm-error,
:features [:host/arrays]}
{:suite "untested / chunk family (eager equivalents) + cat",
:label "chunk round-trip",
:bucket :divergent,
:features [:host/jvm-interop]}
{:suite "untested / protocols: extend + extends?",
:label "extend registers",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "untested / protocols: extend + extends?",
:label "extend two methods",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "untested / protocols: extend + extends?",
:label "extends? after extend",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "untested / protocols: extend + extends?",
:label "extends? without",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "untested / typed coercion views",
:label "booleans",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "untested / typed coercion views",
:label "bytes view",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "untested / typed coercion views",
:label "chars first",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "untested / typed coercion views",
:label "ints",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "untested / typed coercion views",
:label "longs",
:bucket :jvm-error,
:features [:host/jvm-interop]}
{:suite "untested / typed coercion views",
:label "shorts",
:bucket :jvm-error,
:features [:host/jvm-interop]}]}