website-htmx-rustelo/.ontoref/ontology/purpose-defaults.ncl
Jesús Pérez 3ccd15a14b init repo
2026-07-10 03:33:46 +01:00

28 lines
1.2 KiB
Text

let s = import "purpose-schema.ncl" in
let c = import "purpose-constraints.ncl" in
# Factory for purpose.ncl files.
# Pattern mirrors adrs/adr-defaults.ncl: imports schema + constraints, exposes make_* factories.
# Cross-field constraints (ValidAppliesTo, SeoAppliesTo, ObjectiveAudienceCoverage) are applied
# here after schema validation so all fields are visible in the same record — same pattern as
# RequiresJustificationWhenRisky in adr-defaults.ncl.
{
make_purpose = fun data =>
let result | s.PurposeFile = data in
let result | c.NonEmptyObjectives = result in
let result | c.AtLeastOneHardCriterion = result in
let result | c.AtLeastOneHardSeoCriterion = result in
let result | c.ObjectiveAudienceCoverage = result in
let result | c.ValidAppliesTo = result in
let result | c.SeoAppliesTo = result in
result,
PurposeFile = s.PurposeFile,
PurposeDeclaration = s.PurposeDeclaration,
PublicationIntent = s.PublicationIntent,
ContentObjective = s.ContentObjective,
ValidationCriteria = s.ValidationCriteria,
SeoCriterion = s.SeoCriterion,
PropagationChannel = s.PropagationChannel,
}