What a conformant v4 tool MUST do. CANDIDATE, not official OAS; provisional ceilings (0.5–0.65). The structural rules are machine-checked by
../v4-meta-schema.json+ this corpus; the behavioral rules (signatures, references, deserialization) follow SPEC Appendix A (C019).
../v4-meta-schema.json. Your verdicts MUST match this corpus: every valid/*.yaml MUST validate; every invalid/*.yaml MUST be rejected. Run python3 run.py (or port it) to check.../v4-types.ts as the parsed-document model.A conformant tool MUST treat a document as a v4 Suluk document only if it validates against the meta-schema. Key invariants (SPEC §1, C009):
openapi matches 4.0.x; info.title + info.version and paths are present.paths is a map keyed by uriTemplate; each pathItem has a non-empty requests map; each request has a method and a non-empty responses map. (Corpus: invalid/01, 02, 03.)status is an HTTP code, a wildcard (5XX), or default. (Corpus: invalid/04.)A tool that consumes a document for routing/validation/codegen MUST expose an ADA (Abstract Description API) computed from the DOM, per SPEC §3/§13 + Appendix A:
{"$ref": "#/components/<type>/<name>"} by the map key <name> (O(1) by-name; MUST fail if absent; MUST NOT fall back to positional lookup). Distinguish an OpenAPI Reference Object from a JSON-Schema $ref by the slot+token rule (a $ref lexically inside a Schema Object is the JSON-Schema kind).(method, pathPattern, query-key-set, content-type, header-aspects, body-shape-id) and its deterministic key string, applying the normalization rules so two independent tools produce identical keys. The signature is the matcher key — it is not a DOM field and is never authored.provably-disjoint | provable-collision | not-statically-determinable. It is a detect-and-tolerate signal, not a validation gate — a tool MAY refuse a colliding description but MUST NOT be required to.parameterSchema slots; shared.parameterSchema is allOf-composed into each request (C012). JSON-Schema-based discrimination is a runtime last resort (D1) — it is not part of the static matcher.A conformant tool MUST NOT present provisional defaults as ratified, and SHOULD flag the deferred areas: the exact reference fragment grammar, signature encoding, and query/header deserialization are provisional buildable defaults (C019), revisable. Constructs with no v4 home (3.x xml schema metadata; style/explode serialization; multi-environment server URLs) are out of scope and MUST be reported, not silently dropped (C017).
| Dir | Contract | Must |
|---|---|---|
valid/ |
structurally valid v4 documents | validate against the meta-schema |
invalid/ |
structurally invalid documents | be rejected by the meta-schema |
Run: python3 run.py → ALL CONFORMANCE CHECKS PASS. (Requires pyyaml, jsonschema; port to your stack as needed.)