Scope grew (2026-08-25)
#84 added a fifth resource. The data package now carries works, citation-systems, references, mappings and aliases, so field descriptors are needed for five resources, not four.
aliases.json is also the first non-JSONL resource in the package, and its body is a nested map of citation system key to locator to UUID. Frictionless describes that shape no better than it describes resolver_targets, so the mapping decision this issue calls for now covers two awkward cases.
The spec text is honest in the meantime. versioning.md states the schema requirement as SHOULD, records that exports through v0.1.0 omit it, and links here.
standard/versioning.md § "Frictionless requirements" lists schema: field descriptors for each resource among the things each datapackage.json MUST include. The compiler does not emit it.
writeDump in scripts/compile.ts builds each resource with name, path, profile, format, mediatype, encoding, bytes and a sha256: hash — no schema key, so the published data package has no field descriptors at all.
Found while preparing v0.1.0 (#68). Since the first citable baseline should not claim conformance it does not have, the release softens the spec text to SHOULD and states that exports through v0.1.0 omit it. This issue tracks doing it properly.
What is needed
Frictionless schema.fields for the four resources — works, citation-systems, references, mappings — with at least name and type per field, ideally description.
The record shapes already exist as Zod schemas in standard/schema/. Zod 4 ships z.toJSONSchema(), but Frictionless field descriptors are a different vocabulary (string/integer/datetime rather than JSON Schema types), so this needs a deliberate mapping rather than a direct dump — including a decision about nested objects such as resolver_targets, which Frictionless describes poorly.
Related
Reverting the SHOULD back to MUST in versioning.md is part of closing this.
standard/versioning.md§ "Frictionless requirements" listsschema: field descriptors for each resource among the things eachdatapackage.jsonMUST include. The compiler does not emit it.writeDumpinscripts/compile.tsbuilds each resource withname,path,profile,format,mediatype,encoding,bytesand asha256:hash— noschemakey, so the published data package has no field descriptors at all.Found while preparing v0.1.0 (#68). Since the first citable baseline should not claim conformance it does not have, the release softens the spec text to
SHOULDand states that exports throughv0.1.0omit it. This issue tracks doing it properly.What is needed
Frictionless
schema.fieldsfor the four resources —works,citation-systems,references,mappings— with at leastnameandtypeper field, ideallydescription.The record shapes already exist as Zod schemas in
standard/schema/. Zod 4 shipsz.toJSONSchema(), but Frictionless field descriptors are a different vocabulary (string/integer/datetimerather than JSON Schema types), so this needs a deliberate mapping rather than a direct dump — including a decision about nested objects such asresolver_targets, which Frictionless describes poorly.Related
Reverting the
SHOULDback toMUSTinversioning.mdis part of closing this.