Skip to content

REAL-WORLD-SCHEMAS-13: Referential graph: membership and supersession

docRules asserting a milestone’s members all exist and no entity references a superseded id.

Builds on: REAL-WORLD-SCHEMAS-12: First cross-document check: dangling depends_on

A TypeScript program against the library API; inline comments show the resulting values and behavior.

const milestone = contract({
frontmatter: z.object({ id: z.string(), members: z.array(z.string()) }).strict(),
rules: [
docRule("milestone/members-exist", (doc, ctx) =>
doc.frontmatter.members.filter(m => !TASK_IDS.has(m)).map(m =>
ctx.finding({ id: "milestone/members-exist", level: "error", message: `member ${m} has no task` }))),
docRule("decision/no-superseded-ref", (doc, ctx) =>
doc.frontmatter.related.filter(r => SUPERSEDED.has(r)).map(r =>
ctx.finding({ id: "decision/no-superseded-ref", level: "warn", message: `references superseded ${r}` }))),
],
});
  • multiple docRule()s per contract; cross-document referential invariants
  • mixed error/warn finding levels