Application assurance auditor
A scheduled review that collects application evidence, judges it and keeps traceable findings.
Read the film instead
The review starts from the configured application. Its capabilities decide which requirements apply. evidence-requirement:security-event-record is APPLICABLE. A requirement the configuration rules out is recorded NOT_APPLICABLE_AS_CONFIGURED, and no judge needed. "Decide what applies before asking for proof." "Scope comes from the application's own configuration."
Each requirement is split into clauses, and each clause names its evidence home and the plane it is gathered in. evidence-requirement:security-event-record: C1 EMITTED · PRODUCTION, C2 EMITTED · PRODUCTION, C3 PERFORMED · PRODUCTION, C4 OBSERVED · VERIFICATION, C5 PERFORMED · PRODUCTION. "Every requirement says what proof looks like." "Each clause names where its evidence lives and where it is gathered."
Collectors gather evidence from where it lives: declared, observed, emitted, application-recorded, engine-store, performed, and derived. Every record is a measurement — no verdict. A zero is reported beside its positive control, so an empty window cannot pass for a quiet one. "Evidence first, judgment later." "Collectors record what they measured; none of them decides."
The judge reads the records clause by clause: CONFORMANT, OBSERVATION, NONCONFORMITY, INSUFFICIENT_EVIDENCE — and the worst clause sets the run. Before anything is recorded, it must catch a planted hole in the same run: CALIBRATED. A second judge, told to disprove, runs outside the cycle, and records its independence on each axis: CONTEXT, EVIDENCE, AUTHORSHIP, and ASSESSOR NOT_ACHIEVED. "A judge that proves it can catch a hole." "Its limits are recorded next to its verdicts."
A nonconformity opens a finding, keyed by what it is about: evidence-requirement:retention-window-declaration · deficiency-class:performed-nonconformity · finding-scope:clause:C1. It moves through OPEN, then held open while evidence is absent, then CLOSED when evidence returns, and reopened as the same finding if the problem comes back. "A finding keeps its identity." "Absent evidence never closes a finding; only evidence that returns does."
RISK_ACCEPTED is the only state a person sets, and it carries an authority, a named person, and an expiry, for example 2026-12-31. When the expiry passes, the acceptance EXPIRED and the finding reopens, even if the evidence has gone quiet. Severity comes from the requirement: MAJOR, MINOR, or UNGRADED when the rule states none. "Accepting a risk has an end date." "The only state a person sets, with an authority and an expiry."
pnpm assurance:cycle runs every step in order, and prints the schedule line you install. Each step reports RAN, SKIPPED with a reason, or FAILED. It reads through a machine client that holds only APP_AUDIT_EVIDENCE_READER, with a 900 s token per step. Results are committed by wildo-assurance-recorder to a local assurance repository, and one webhook message per cycle, URGENT only when a MAJOR arrives. "One cycle, on a schedule you install." "Least privilege for the reader, a durable history for the results."
Each snapshot is a dated record: Assurance snapshot — wonder-todos, 2026-09-24, Application revision c5c6ca6d, framework revision 7078f74a. It ends with What this snapshot is not: INTERNAL EVIDENCE, not an assessment. Assessor independence is NOT_ACHIEVED, so nothing here carries certification value. An ungraded finding is not a mild one. "A snapshot that says what it is not." "Internal evidence, clearly labelled, never a certificate."
The painting from this page: Application assurance, with its Scope, its Evidence and its Findings. "A finding is useful when its basis can be questioned." Wildo.ai
Make assurance findings traceable to your application.
> A review scoped to the product> Evidence that answers a defined question> Findings people can inspect and act on
An application assurance auditor examines declared commitments and supporting evidence, then explains what is established, what needs attention and what remains unknown.Wildo’s auditor runs as a scheduled cycle beside the application. It decides which requirements apply, collects evidence from where each one lives, judges it, and keeps findings with a stable identity in a dedicated assurance repository.
Give every conclusion a visible basis
Review the right scope
Start with the configured application and the commitments being examined. Establish which requirements apply before gathering evidence.
Separate evidence from judgment
Collect the relevant facts and observations, then evaluate them against a named requirement. Keep uncertainty visible.
Make findings actionable
Preserve the target, evidence and reasoning behind a finding so people can investigate it and reassess it after a change.
Example: Interpret an empty security-event window
No security events in a quiet period may be expected. No events despite relevant activity calls for investigation. A useful review connects the observation to the activity and requirement before deciding what it means.
For engineers
Understand the host and output
The auditor runs outside the audited backend, one cycle per application. It reads committed application information and scoped evidence sources through a machine client that holds only the audit-evidence reader role, and commits its results to a dedicated assurance repository that the application does not write.
Today the cycle is a framework-repository command that you schedule on your own host. It is not a hosted service or a command installed in the application, and it runs on a schedule rather than on each change.
Follow the review chain
| Mechanism | What it establishes |
|---|---|
| Source control markers and authority basis | Named objectives and their declared implementation/evidence expectations |
| Application programme validation | Consistency of programme declarations against supplied authorities |
| Capability applicability derivation | Which requirements are applicable, unavailable or unresolved as configured |
| Evidence collection planner | Which clauses need which evidence sources |
| Evidence collectors | Measurements from each evidence home, recorded without a verdict, with every zero reported beside a positive control |
| Rule-based judge | A verdict per clause, recorded only after the judge has caught the planted cases of its calibration suite |
| Findings | A stable identity per deficiency, and its lifecycle across cycles |
| Snapshot | A dated summary citing the application and framework revisions, and stating what it is not |
The framework distinguishes SELECTED, CONFIGURED, OPERATING, EVIDENCED and ASSESSED. Declaring a required proof stage does not establish that the application has reached it.
Schedule the cycle
From the framework repository, print the crontab entry for a daily cycle over a rolling one-day window:
node scripts/assurance/run-assurance-cycle.mjs --app examples/wonder-todos \
--window-days 1 --print-schedule "0 3 * * *"
The cycle runs collection, judgment, findings and the snapshot in order. A step whose precondition is missing is reported as skipped with its reason; a step that fails is reported as failed. Installing the entry is a host change the operator makes; the command never edits a crontab. When a notification webhook is configured, each cycle sends one summary, marked urgent only when a major finding arrives.
Check the accepted basis in an application
Run this from an application with its specifications companion export available:
wildo context assurance-basis --check
The command checks declared basis references and compatibility generations against the installed framework registry. Unresolved declared generations fail the check. An absent declaration is reported as not declared; it is not a compliance verdict.
Keep external assessment distinct
An internal automated review can gather evidence and explain findings. It does not confer certification or replace an independent external assessment. Each snapshot records the achieved review independence and calibration status rather than hiding them behind a single compliance label.
Decide what applies before asking for proof
Review the application that is actually configured, with its declared commitments and enabled controls.
The assurance basis helps distinguish an applicable requirement from one the current configuration does not support.

Keep the review specific
Name the commitment
Use a stable objective and evidence requirement so the reviewer knows what is being examined.
Inspect the configuration
Relate requirements to enabled capabilities and the application’s declared context.
Preserve uncertainty
A partly available dependency set is unresolved, rather than an automatic pass or a silent omission.
Example: Check a requirement tied to billing
Before querying for billing evidence, establish whether the application enables billing. An application without it records the requirement as not applicable as configured; missing billing records alone cannot answer that configuration question.
For engineers
Validate with the intended authorities
createAssuranceProgramValidationAuthorities composes the available authority from the framework basis, application capabilities and host facts. validateAssuranceProgramSpecification(program, authorities) returns consistency issues against that supplied context.
Calling the validator without authorities performs its structural checks; it does not provide the same authority-aware validation. Preserve the distinction in any application-creation or review integration.
Interpret capability applicability correctly
deriveExpectationCapabilityApplicability compares required capability references with available references. Its result is about configuration:
| Result | Meaning for the review |
|---|---|
APPLICABLE | The required capability dependencies are available; evidence is still needed |
NOT_APPLICABLE | The required capabilities are absent as configured |
UNDETERMINED | Only part of the dependency set is available; the unresolved portion remains visible |
A source marker points to an implementation site. It neither enables a capability nor proves that a runtime path executed.
Inspect a real application’s consequences
This is a framework-repository inspection tool, not an installed application CLI command:
node scripts/assurance/report-capability-consequence.mjs \
--app examples/wonder-crm --json
The report connects selected capabilities to the affected assurance expectations. Read it against the application’s current declarations; a historical result for another application or revision is not the current review scope.
Gather evidence that answers the question
A configuration setting, a recorded event and an observed refusal establish different things.
Evidence requirements identify what must be inspected and where it should come from, keeping collection tied to the claim under review.

Choose evidence by its meaning
Read declarations
Inspect the accepted configuration and specifications when the question concerns an explicit product choice.
Observe operation
Use relevant events or driven behavior when the question concerns what the application actually did.
Retain the context
Carry the application revision, observation window and scope with the evidence so its meaning survives the review.
Example: Check a security-event path
A declaration identifies the required event behavior. A recorded event demonstrates one occurrence. A driven test can examine a refusal or missing-delivery path. None alone proves that every event-producing path is covered.
For engineers
Route clauses to their evidence sources
A requirement body carries clauses, evidence homes, execution planes, minimum evidence, verification steps and interpretation guidance. Homes such as DECLARED, EMITTED, OBSERVED, PERFORMED and APPLICATION_RECORDED identify where collection must go.
For example, an emitted security event belongs to its store of record. A performed review needs the review evidence. A queue execution record is not automatically evidence of an unrelated scheduled process.
Inspect the existing collection plan
From the framework repository:
node scripts/assurance/plan-evidence-collection.mjs \
--app examples/wonder-todos \
--requirement evidence-requirement:security-event-record \
--json
This tool plans collection; it does not query the running application or judge the result. It resolves applicability first and groups the remaining clauses by evidence home.
The selected source below shows why an unavailable requirement is not treated like an empty successful collection. Comments are omitted.
if (applicability.status === 'NOT_APPLICABLE') {
return {
...base,
verdict: 'NOT_APPLICABLE_AS_CONFIGURED',
clausesByHome: [],
derived: true,
};
}
const byHome = new Map();
for (const clause of demand.body?.clauses ?? []) {
if (!byHome.has(clause.home)) byHome.set(clause.home, []);
byHome.get(clause.home).push({
clauseRef: clause.clauseRef,
plane: clause.plane,
obligation: clause.obligation,
requiredAuditEventMembers: [...(clause.requiredAuditEventMembers ?? [])],
});
}
return {
...base,
verdict: null,
derived: false,
clausesByHome: [...byHome.entries()]
.map(([home, clauses]) => ({ home, clauses }))
.sort((left, right) => left.home.localeCompare(right.home)),
};
For requirements needing evidence, verdict: null preserves that collection and evaluation have not occurred. The plan is useful preparation without pretending to be a completed audit.
Collect from the authoritative source
Each evidence home has its own collector in the assurance cycle. Collectors that read the running application use a machine client holding only the audit-evidence reader role, with a short-lived token per step. Every measurement retains its source, target and time window, and none of them carries a verdict: the judge receives the evidence separately from collection.
A zero is recorded beside a positive control, so an empty window cannot pass for a quiet one. Acquiring state from external providers is still to come. An unavailable evidence export is a finding about evidence access until the underlying control’s behavior has been established.
Explain the finding and the next useful action
A useful finding separates what was measured from what the reviewer concludes about it.
The assurance record keeps the evidence and reasoning together, allowing the application team to investigate, correct and reassess the same matter.

Make the result inspectable
Describe the observation
State the target, relevant activity and measured result before assigning a classification.
Explain the judgment
Connect the evidence to the requirement and preserve uncertainty or disagreement where it matters.
Reassess the matter
Keep a stable finding identity so repeated review follows the same problem instead of creating a new report each time.
Example: Avoid a false alarm in a quiet period
A historical calibration case supplied no events and no relevant activity. It exposed an overly broad rule that would have treated silence as a logging failure. The lesson was to check the triggering activity before classifying the absence.
For engineers
Use the verdict vocabulary precisely
| Verdict | Meaning |
|---|---|
CONFORMANT | The requirement is supported by the reviewed evidence within its scope |
OBSERVATION | A relevant matter is recorded without asserting demonstrated nonconformity |
NONCONFORMITY | Evidence establishes failure against the requirement |
INSUFFICIENT_EVIDENCE | The available evidence cannot establish the conclusion |
NOT_APPLICABLE_AS_CONFIGURED | The configured application does not support the requirement’s applicability |
Only NONCONFORMITY opens a finding. OBSERVATION is not a deficiency, and INSUFFICIENT_EVIDENCE describes the evidence rather than the control, so neither opens one.
Learn from the full pilot sequence
The security-event pilot includes the original finding, calibration, an independent fresh-context judgment and recollection. The later review changed the interpretation; the final recollection concluded that the requirement was not applicable as configured.
That last conclusion rested on a capability gate that was itself corrected afterwards: the audit store the requirement reads exists in every application, so the requirement now applies and is judged in each cycle.
Read that sequence as evidence of the review method. Do not reproduce any single result as a statement about today’s deployment or omit the later results that superseded it.
Design recurring review around stable identity
A finding is keyed by requirement, deficiency class and clause scope. The key is derived from rule-based verdicts, so the same deficiency keeps the same identity from cycle to cycle; a model judge does not open findings. Reassessment updates that matter instead of flooding the operator with duplicates.
| State | Set by |
|---|---|
OPEN | A nonconformity. A later nonconformity re-observes it; missing evidence holds it open and never closes it |
CLOSED | The cycle whose evidence shows the clause conformant again. A new nonconformity reopens the same finding |
RISK_ACCEPTED | A person, with an authority and an expiry. The finding reopens when the acceptance expires |
A finding takes its severity, MAJOR or MINOR, from the requirement; one whose rule states none is shown as ungraded, which is not the same as mild. Findings live in the application’s assurance repository, and each snapshot identifies the application and framework revisions. One notification per cycle summarizes what changed, marked urgent only when a major finding arrives.
Make review independence visible
Collection and judgment have different responsibilities. Fresh-context evaluation, independent authorship, model diversity where available and planted calibration cases address different sources of error.
A second, adversarial model judge can re-examine a requirement in a fresh context; it runs outside the scheduled cycle and records its independence on each axis. Preserve the achieved independence and calibration status in the result. An internal panel still belongs to the operator’s assurance process; external assessment remains a separate authority.
A finding is useful when its basis can be questioned.
Scope, evidence and reasoning make assurance work inspectable. Wildo’s auditor is built around that chain, so recurring review can support concrete improvements without turning uncertainty into a promise.
Building a B2B product or an internal tool?
Wildo is not self-service yet. Tell us what you have in mind and we will say plainly whether it fits, and what happens next.