
Keep the statement connected to its source
A fact about the product should survive a rewrite of its notice. Wildo gives facts stable references, a scope and an authority, then lets document clauses cite them.
The document can be written for its reader while retaining the source behind each claim. A declared fact, an operator decision and a qualified review keep their different origins.
Example — Explain a consent setting without changing its meaning
The application declares whether service access has a consent gate. A notice clause cites that fact and explains the gate, without treating it as the lawful basis for every processing purpose.
For engineers
Give the fact an identity and authority
The document-facts family carries versioned declarations, governance scope, sensitivity, authority and either a known value or a reason it does not apply. This selected Wonder CRM declaration records the service consent setting, its value and source authority. The clause below cites this same fact.
"declarationRef": "document-fact-declaration:service-consent-gate",
"declarationVersion": 1,
"factRef": "document-fact:service-consent-gate",
"factVersion": 1,
"governanceScope": {
"subjectKind": GovernedDocumentGovernanceSubjectKind.APPLICATION_OPERATOR,
"subjectRef": "operator:wonder-software-sas",
"scopeRef": "scope:wonder-software-sas-application",
"scopeVersion": 1,
"participantRefs": [],
"precedenceRuleRefs": []
},
"sensitivityRef": "sensitivity:public",
"authority": {
"authorityRef": "document-fact-authority:service-consent-gate",
"authorityVersion": 1,
"factAuthorityKind": AssuranceDocumentFactAuthorityKind.APPLICATION_SPECIFICATION
},
"resolutionKind": ApplicationAssuranceDocumentFactContributionResolutionKind.KNOWN,
"value": "Use of the service is not gated on consent. This is a service-wide consent-gate configuration and does not state a lawful basis for processing."
A generated specification fact cannot simply claim qualified-review authority. Authored decision/review facts have separate schemas. Qualified-review declarations require different author and reviewer references, qualification references and an independence disclosure. The reference inequality guard does not establish that two references identify different people or that the reviewer is independent. Those substantive checks belong to review; the schema preserves their declared attribution.
Cite the fact from a reader-facing clause
This actual clause in the demonstration notice references the consent-gate fact, with no duplicate policy citation:
{
"clauseRef": "clause:service-wide-consent-gate",
"order": 1,
"bodyMarkdown": "Use of Wonder CRM is not gated on service-wide consent. This configured gate status does not identify a lawful basis for processing.",
"completeness": ComplianceStatementCompleteness.DERIVED,
"factRefs": [
"document-fact:service-consent-gate"
],
"sourcePolicyRefs": [],
"claimGuardRefs": [
"claim-guard:no-consent-basis-conflation",
"claim-guard:known-fact-only"
]
},
factRefs names established source facts; sourcePolicyRefs names policy areas when needed. A clause must cite at least one source across those fields. claimGuardRefs records constraints for the reviewer, not an automatic proof of semantic truth.
Validate the connection
The candidate fact-binding validator checks cited facts against declared availability, including both clauses and variant selections. A known fact needs a substantive value; an explicit not-applicable declaration has its own reason. The resulting document remains a reviewable content artifact. Its presence is not publication or approval, and source consistency is not a substitute for checking the prose’s meaning.
Check what the document owes as well as what it cites
| Check | Question it answers |
|---|---|
| Citation binding | Does each cited fact resolve to available support? |
| Required-fact coverage | Does the document cover the declared facts required by its blueprint? |
| Marked clause | What is missing, and who can supply it? |
A document can cite only valid facts and still omit a required subject. Coverage distinguishes an uncited required fact from one discussed only in an incomplete clause. The landing consumer scopes that check to declared facts; an unavailable blueprint or fact set is not proof of complete coverage.
This illustrative clause records an unresolved operating decision. Its policy and guard references must be chosen for the surrounding candidate:
import { ComplianceStatementCompleteness, type ComplianceDocumentCandidateClause } from '@wildo-ai/saas-specifications';
export const retentionDecision: ComplianceDocumentCandidateClause = {
clauseRef: 'clause:retention-decision',
order: 1,
bodyMarkdown: 'The retention duration requires an operator decision.',
completeness: ComplianceStatementCompleteness.NEEDS_DECISION,
incompleteness: {
needs: 'The retention duration for customer records.',
closedBy: 'The operator responsible for the retention policy.',
},
factRefs: [],
sourcePolicyRefs: ['policy:retention'],
claimGuardRefs: ['claim-guard:retention-decision'],
};
A non-derived clause requires incompleteness; a derived clause must not carry it. When a known fact’s arrival would resolve the gap, name it in awaitingFactRefs so stale gap statements can be detected. Keep facts awaiting a human decision or qualified review in their authored family; regenerating application-derived facts must not replace those decisions. A marked draft is useful work for review, not permission to publish an unsupported statement.