Skip to main content
Wildo.ai Coming soon

Product & development playbooks

Run research, specification, implementation and review methods according to the project’s current state.

27 playbooks · explicit inputs and outputs · assessment · review

> Find the next useful work > Adapt to what it reveals > Review the result

A playbook describes how to carry out a piece of product or development work, with explicit inputs and expected results.

Wildo brings these methods together, evaluates what can run against the current project and lets related activities respond to one another as results arrive.

The same catalogue supports the first version and later changes. Your team keeps the product direction and the evidence for accepting its work.

A project feeds a repeating cycle of choosing useful work, producing a result and reviewing the changed project.

Make progress from the application you have

Choose from the current state

See the methods whose declared requirements hold now. Missing inputs and changed definitions provide concrete reasons to revisit work.

Let complex work learn as it goes

Combine research, assessment and production. A result can lead to another focused pass rather than forcing the next step in a predetermined sequence.

Keep quality and acceptance visible

Use structured output, consistency checks and relevant review perspectives. Inspect the proposed changes before accepting them into project history.

Example: Revisit the product after a customer change

New research changes the intended customer group. The team revisits the relevant requirements and plan, uses checks to find inconsistent references and reviews the resulting proposal with its purpose still visible.

For engineers

Read the method and the evaluated state together

The catalogue declares the available methods. Eligibility evaluates their predicates against current artifacts and results. A selector can then propose useful work from those options; the runtime applies its execution and concurrency rules.

ConcernOwner
What a method needs and producesPlaybook definition and method guidance
Whether its prerequisites holdEligibility evaluation
Which eligible work is useful nextHuman selection or bounded model selection
Which selected lanes can run togetherDeclared write-scope admission
Whether an output meets its supported contractGeneration and landing checks
Whether to adopt the product changeReview and acceptance workflow

Inspect before launching another round

From the application repository with its companion available:

# See the current options and their reasons.
wildo context journey

# Inspect supported consistency and coverage findings.
wildo context coherence

# Review changes already present before adding more work.
git status --short
git diff --stat

A method phase is a catalogue grouping, not a one-way project lifecycle. Composite membership describes the children that may participate; predicates and returned results govern their readiness.

The method execution section follows a requirements playbook from its declared inputs through invocation, response and landed files.

Read completion at the right level

A child may return evidence, land an artifact or report a failure. A loop may stop because it has no eligible work or reaches a configured ceiling. None of those outcomes alone proves the complete application fulfills its goals.

The following principles and guides explain the contracts, checks and review evidence behind those outcomes. They also distinguish managed parallel rounds from independently running choreographies and intended supervision presets from implemented behavior.

Keep the method useful after the first release

An application keeps changing after it first works. Wildo’s playbooks can revisit product definitions and implementation plans using the application that exists now, rather than treating creation as a one-time sequence.

The problem it answers

A product decision can outlive the assumptions behind it. A new customer group, changed requirement or additional resource can make earlier work worth reviewing without making the whole application obsolete.

The useful question is what needs attention now. That requires looking at the current definitions and their relationships, not merely remembering which step ran last.

What it rules in, and what it rules out

The catalogue declares what each method needs and produces. Eligibility evaluates those declarations against the working application; freshness highlights declared inputs that have moved since an output was committed.

Coherence asks another question: whether the loaded definitions agree with each other. A newer input and a broken reference deserve different explanations and different follow-up work.

The same methods remain available when the product changes. Method phases organize the catalogue; they do not force a mature application to start again from an empty project.

What it means for someone building with Wildo

Keep product definitions beside their implementation, inspect what changed and choose the appropriate method again. You can refine a particular decision without treating the application as a new project.

Use the derived reports to focus review, then verify the resulting behavior. Acceptance and any automatic commit policy remain separate from deciding that a method is eligible to run.

For engineers

Where it lives in the framework

Compare an output with its declared inputs

The freshness derivation receives Git facts from the host. This selected source shows how a committed output is compared with its input families:

const output = freshness.get(family);
const derivedAt = output?.committed === true ? output.lastCommitUnixTime : undefined;
if (derivedAt === undefined) return { family, changedInputs: [], derivationPointUnknown: true };
const changedInputs = inputFamilies.filter((input) => {
  if (input === family) return false;
  const state = freshness.get(input);
  if (state === undefined) return false;
  return !state.committed || state.lastCommitUnixTime === undefined || state.lastCommitUnixTime > derivedAt;
});
return { family, changedInputs, derivationPointUnknown: false };

An uncommitted output has an unknown derivation point rather than automatically appearing as stale. For an existing input, uncommitted content, unreadable commit time or a newer commit signals change. An absent input is not treated as a changed one by this calculation; existence and validity belong to separate checks.

The declaration defines the coverage. A method that never declares an input cannot receive a freshness finding about that input. Commit-time comparison is useful follow-up evidence, not a proof that one exact output was produced from one exact input revision.

Inspect readiness and consistency together

From the application workspace with its companion running:

# Read the current eligibility board.
wildo context journey

# Inspect relationships across the loaded product families.
wildo context coherence

The board reports readiness and sequencing reasons. An explicit request may proceed past sequencing advice while still needing its readiness conditions. The unattended loop uses the applicable eligibility rules before selecting its next work.

The coherence report complements this view. It identifies supported cross-family inconsistencies and coverage questions; a clean report does not prove every requirement is implemented correctly.

Keep accepted work in the project's history

Product definitions and application code belong in the repository. Git gives the team a shared way to review changes, accept them and understand how the product evolved.

The problem it answers

A separate acceptance ledger can disagree with the files people actually use. Branches move, changes merge and developers edit the project directly. A second account of accepted product content creates another reconciliation task.

Keeping the product’s versioned definitions beside its code makes both available to ordinary review and history tools.

What it rules in, and what it rules out

A commit records the accepted project content. Validation and review help decide what should be committed; the commit itself does not prove that the content is correct.

Operational records have another role. Run outcomes, diagnostics and local recovery data help operate the development process. They should not be mistaken for the authoritative version of a product definition or a substitute for inspecting its diff.

Who accepts is a separate policy choice. The declared guided and automatic postures describe different responsibilities; a preset declaration alone does not implement an automatic commit path.

What it means for someone building with Wildo

Review the application’s definitions and code together. Use branches and history to carry decisions with the project, and keep runtime evidence attached to the claims it actually supports.

The result remains an application repository you can inspect and evolve with ordinary development tools, built on Wildo’s shared framework.

For engineers

Where it lives in the framework

Use Git for the product change

These ordinary read-only commands help inspect a proposal before acceptance:

# See the working changes, including newly created paths.
git status --short

# Review tracked edits in the product definitions.
git diff -- specifications/

# Inspect the committed history of those definitions.
git log --oneline -- specifications/

git diff does not display the contents of an untracked file; inspect newly created files reported by status too. A commit can include unwanted work if its selected changes were not reviewed.

Distinguish inspection from recovery

The coding change set compares the workspace before and after a run. It preserves earlier dirty-file distinctions and identifies ambiguous overlaps; it is not a second accepted-state ledger.

The specification playbook write register saves previous contents for its supported undo action. That local record covers the recorded specification output, export wiring and coherence report, rather than arbitrary coding edits. Existing differing content is refused by a normal revert; deliberate deletion and partial-retry behavior require separate care, as described in the undo guide.

Deleting operational state can lose diagnostics or recovery convenience. It does not remove the committed product content, but that is not a reason to promise that every local record is harmless to discard during active work.

Keep acceptance distinct from validation

The framework evaluates particular properties through schemas, validators, reports and checks. Their findings inform acceptance; none of them makes a commit a universal certificate of product correctness.

The application-creation directive assigns acceptance responsibility by autonomy posture. Verify the actual execution path when using automatic behavior; do not infer that every playbook or coding run performs a commit because an autonomy enum exists.

Match the method to the work it produces

Research, structured generation and code changes need different execution paths. A playbook connects its declared outcome to the appropriate lane and the guidance that lane uses.

That separation keeps a research finding, a generated product definition and a changed workspace understandable as different results.

Research, structured product artifacts and code use distinct working methods.

Keep the handoff explicit

Declare the expected result

Name the artifact family or returned step value. Later work can use a known contract instead of interpreting an unstructured completion message.

Supply the relevant method

Connect the skills, project inputs and computed context that explain how the work should be performed.

Inspect the right outcome

Read research evidence, artifact validation or coding changes according to the lane that produced them. A completed call is not a shared definition of product success.

Example: Move from evidence to a product definition

A research child returns evidence for an assessment. A producer then creates a structured market snapshot when its prerequisites hold. These outputs remain distinct, even though they contribute to the same product decision.

For engineers

Verify the producer and its consumer

Output kindWhat consumes it next
Persisted specificationFamily readers, eligibility and product planning
Returned step resultComposite predicates and subsequent child context
Workspace changesCoding outcome assessment, diff review and application checks

Check the definition, method instructions and executor together. A declared output does not establish that every executor produces it, and an admitted child reference is not an execution sequence.

Inspect the application before choosing work

# Available methods and their current state.
wildo context journey

# Inspect supported context rather than assuming a source exists.
wildo context list

The detailed guides below show the concrete catalogue declarations and the corresponding runtime decisions. Keep human selection, unattended selection and a composite child’s eligibility distinct when reading the result.

Run a requirements method and inspect what it changes

This example uses the registered top_down.requirements-definition playbook. Its prerequisites are valid vision and market snapshots; those same families supply its context. Its output is the requirements family, validated against saas-specifications:RequirementsSnapshot.

Run this from the application root after starting its companion and configuring the generation provider. Set WILDO_COMPANION_URL to that application’s companion origin. The mutation token is read locally; it should never be copied into a shared example or committed.

# Replace this origin with the one reported by your application's companion.
export WILDO_COMPANION_URL=http://localhost:4351

# Inspect existing edits and the playbook's readiness first.
git status --short
wildo context journey
curl --fail-with-body --silent --show-error \
  -X POST "$WILDO_COMPANION_URL/api/companion/playbooks/top_down.requirements-definition/run" \
  -H 'Content-Type: application/json' \
  -H "x-wildo-companion-token: $(cat .wildo-saas/state/companion.token)" \
  --data '{"creatorBrief":"Refine the requirements from the current vision and market definitions; preserve their references."}' \
  --output .wildo-saas/state/requirements-run.json

# The response identifies the output and its generation attempts.
cat .wildo-saas/state/requirements-run.json

# Review the produced specification and export wiring as working changes.
git status --short -- specifications/
cat specifications/src/requirements/index.ts
git diff -- specifications/
wildo context coherence

The default specifications package receives src/requirements/index.ts; use the declared package root if the application locates specifications elsewhere. The landing also updates its companion export wiring. The response’s landed entries identify the actual relative paths and exported constants, so inspect those rather than inferring a successful write from HTTP status alone.

Response evidenceWhat to read
generationOutput family, attempts and rejection findings fed into generation
landed and wiredSpecification and export changes produced by this run
judge and reviewGuideAdvisory evaluation and the criteria for reviewing the result
dryRun: true, when explicitly requestedA preview; inspect the response rather than expecting files to change

A readiness refusal means the required input contract has not been met. A generation failure identifies the rejected output instead of turning it into a valid requirement. A successful landing produces reviewable working files; the engineer still checks their meaning and decides whether to commit them.

Choose useful work and adapt as it progresses

A playbook describes a piece of work: the information it needs, the method to follow and the result to produce. Wildo checks those declarations against the current application to expose the next available options.

Composite methods can bring research, assessment and production together. The next activity responds to the results already available, rather than simply following the order of a list.

Project context informs a method whose result changes which work becomes useful next.

Keep the method connected to the project

Make readiness understandable

See which inputs are available and why another method cannot yet proceed. Distinguish essential readiness from advice about preferred order.

Respond to what the work reveals

Use a returned assessment to decide whether to research further or produce the artifact. Reevaluate after each round instead of preserving an outdated choice.

Coordinate compatible work

Admit activities with distinct declared output scopes together. Keep work that can produce the same artifact apart within that managed round.

Example: Complete the research before producing the market brief

A market method gathers evidence, assesses its adequacy and requests another focused pass when needed. The producer becomes eligible when the assessment supplies the required verdict.

For engineers

Read the contract before the order

DeclarationQuestion answered
Inputs and context sourcesWhat information does the method use?
Readiness predicatesWhat must exist or be valid before this work can proceed?
Artifact outputsWhich product files can this method produce?
Step outputsWhat result can a later child consume within the run?
Admitted childrenWhich methods may participate in a composite?
Executor and skillsWhich lane performs the work and which instructions guide it?

The phase groups methods for discovery. It does not create a global application phase that prevents revisiting an earlier product decision.

Inspect the current options

From an application workspace with the companion running:

# Read readiness and current journey information.
wildo context journey

# Discover the companion's available context queries.
wildo context list

# Compare the supported product relationships.
wildo context coherence

The board is derived from the state read at evaluation time. An unattended loop refreshes that state between rounds. A displayed eligible method is an available operation, not a promise that its output will be useful.

Distinguish two levels of coordination

A composite reevaluates its admitted children against artifact and step results. The outer loop chooses from the catalogue’s eligible work. Both have bounded execution, but they do not provide a general branch-and-merge system for unrelated writers.

Read stop reasons with the resulting artifacts and traces. Reaching an execution ceiling and completing the product’s intended scope are different outcomes.

Define the method

Give recurring work a reusable method Mechanism

A playbook gives a recurring piece of product work a clear purpose and a method. It declares the information it needs, the guidance to use and the result to produce.

Wildo brings those declarations together in a catalog. Teams and agents can revisit research, planning or implementation as the application changes, while keeping the same explicit expectations for the work.

Example: Revisit requirements with the right starting point

After customer research changes, the requirements method reads the vision and market information together. Its output remains a requirements snapshot, so later planning can continue from the updated product definition.

A reusable method connects its inputs, instructions and intended output.
For engineers
Declare inputs and outputs separately

This selected excerpt comes from the requirements playbook definition. Imports and the remaining definition are omitted:

preconditions: [
  { kind: MetaWorkflow_PredicateKind.ARTIFACT_VALID, selector: { family: 'vision-brief' } },
  { kind: MetaWorkflow_PredicateKind.ARTIFACT_VALID, selector: { family: 'market-snapshot' } },
],
inputs: [
  { family: 'vision-brief' },
  { family: 'market-snapshot', intent: MetaWorkflow_ArtifactIntent.VALUE },
],
outputs: [{
  family: 'requirements',
  schemaRef: 'saas-specifications:RequirementsSnapshot',
}],
method: {
  skillRefs: ['journey-status', 'journey-report'],
},

The excerpt omits the output’s descriptive metadata for clarity. A precondition asks whether the work may start; an input selects information for that work; an output names the artifact contract. A skill supplies instructions. These declarations answer different questions even when they refer to the same family.

Author the method where it belongs

Each catalog folder holds playbook.definition.ts beside method.md. The generator evaluates supported declarative syntax without executing the definition, expands method references and validates the compiled playbook. method.guidance comes from the Markdown rather than a second inline copy.

DeclarationMeaning for execution
phaseOrganizes the catalog; it does not assign one current phase to the whole application
preconditionsSupplies explicit readiness and sequencing checks
inputs and contextSourcesSelects artifact information and computed context
outputs or stepOutputsDistinguishes persisted artifacts from values returned within a run
executorSelects the execution lane
method.choreographyComposes admitted child methods
Review the connected result

A valid definition establishes a method contract. The method still needs useful instructions, appropriate skills and an executor capable of producing its declared result. Review those together when adding a playbook; a phase label alone establishes no dependency order.

The connected requirements example follows this registered method through its HTTP invocation, response and specification files.

Give each method the information it needs Mechanism

Good instructions need the right information behind them. A method can request computed project facts and reference material alongside the product artifacts it reads.

Wildo makes those requests explicit. A method that names a supported context source in its instructions must also declare it, keeping the written guidance connected to the information supplied for the work.

Example: Write statements from the product's actual declarations

A document-facts method requests compliance facts and the facts that governed documents need. It can then connect the product’s declared behavior to the statements those documents must support.

A method explicitly names the sources supplied to its brief.
For engineers
Select computed context deliberately

The document-facts method contains this selected configuration:

method: {
  contextSources: [
    MetaWorkflow_ContextSource.COMPLIANCE_PRIMARY_FACTS,
    MetaWorkflow_ContextSource.DOCUMENT_FACT_OBLIGATIONS,
  ],
  skillRefs: ['journey-status'],
},

Its method prose includes the following literal placeholder:

{{CONTEXT_SOURCE:compliance_primary_facts}}

During framework-knowledge compilation, expandContextSourcePlaceholders checks the named member and the method’s own declaration before replacing a supported placeholder. Unknown members and undeclared sources are refused. The catalog audit reports corresponding mismatches.

Keep inputs and context distinct

Artifact inputs select specification families. contextSources requests computed sections or catalogs, such as application declarations and document obligations. The source vocabulary carries the meaning of each supported section, and the companion composes the sections requested by the method.

Authoring choiceWhat to review
Required artifact inputDoes the method need the product’s authored information?
Computed context sourceDoes it need facts or reference material derived elsewhere?
Skill referenceWhich instructions explain how to perform this work?
Source placeholderDoes prose refer to the same source the method declares?
Adapt context without changing the method permanently

For supported generation runs, briefAdequacyGate optionally checks whether the composed brief is sufficient. An insufficient result can add permitted sources for that run and trigger one recomposition. briefAdequacyExcludedSources keeps deliberately excluded sections out of this widening.

The widening preserves declared sources. If the auxiliary check fails, generation retains the static brief. This check helps context selection; it does not establish that every source is complete or that the generated answer used it correctly. Review evidence in the resulting artifact as well as the source declaration.

Choose and coordinate work

See what can move forward and why Mechanism

A useful next step depends on what is already in the project. Wildo checks each method’s declared requirements and shows which work is ready, which needs more information and what an existing result would replace.

This gives people and agents an explained set of options. They can distinguish a missing input from an ordinary recommendation about doing one piece of work before another.

Example: Find the missing input before starting

A requirements method needs a usable vision and market snapshot. If the market information is missing, the board names that condition. Once it is available, the method can become an option without moving the whole application into a new phase.

Available work is shown alongside the input that another method still needs.
For engineers
Read the evaluated contract

The current eligibility result exposes these selected fields:

readonly playbookRef: string;
readonly intent: string;
readonly eligible: boolean;
readonly preconditions: readonly PlaybookPreconditionVerdict[];
readonly unmet: readonly string[];
readonly blockedOnlyBySequencing: boolean;
readonly requiresElicitation: boolean;
readonly wouldReplace: readonly string[];
readonly unlandableFamilies: readonly string[];
readonly staleOutputs: readonly {
  readonly family: string;
  readonly changedInputs: readonly string[];
}[];

This is an interface excerpt, not an application configuration. The evaluator combines the playbook, artifact state and the set of families the runtime can land. Each unsatisfied condition contributes an actionable explanation to unmet.

ConditionHow it affects a run
ARTIFACT_EXISTS or ARTIFACT_VALIDEstablishes readiness for declared artifact input
STEP_AVAILABLERequires a sibling result, optionally with a matching field value
ARTIFACT_EXPECTEDExpresses sequencing; an explicit run can proceed past this class
No declared output can be landedAdds a readiness refusal
Outputs derived from changed inputsAdds freshness information rather than a refusal
Keep annotations useful

wouldReplace exposes existing output content. staleOutputs describes changed inputs using the supplied Git freshness facts. Neither is a claim that the old result is semantically wrong. They help a person or selector decide whether another run is worth doing.

An already executed build plan can also make decomposition a sequencing concern when its upstream inputs are unchanged. Editing an upstream family reopens that reason to work.

Inspect current readiness

wildo context journey presents the board through the companion. The companion also exposes GET /playbooks and POST /playbooks/refresh-board. Treat a displayed board as the state evaluated at that time: the unattended loop reads again before each iteration. Eligibility establishes that declared prerequisites hold; it does not predict the quality of the result.

See the work a composite can affect

Replacement, freshness and unavailable-renderer annotations include the outputs declared by a composite’s children. outputOwners identifies the declaring playbooks; unresolvedPlaybookRefs identifies missing child definitions. These details describe possible effects, while the parent’s readiness continues to follow its own declared conditions. A child warning alone does not disable the parent.

Choose the next step from the current project Mechanism

An application changes as work lands and people refine their decisions. Wildo’s unattended loop reads the project again after each round, then chooses from the methods whose declared requirements hold.

The model contributes judgment about useful work. The runtime controls the available options, admits compatible work and records why the loop stops.

Example: Continue from the decisions that just changed

A research result updates the market information. On the next round, the loop sees the new state and can choose relevant follow-up work, such as revisiting requirements, instead of continuing from an earlier assumption.

The next work is selected after the updated project is inspected again.
For engineers
Read current state for every iteration

This selected runtime excerpt shows the boundary between state evaluation and unattended selection:

for (let iteration = 1; iteration <= input.maximumIterations; iteration += 1) {
  const state = await input.readArtifactState();
  const board = evaluatePlaybookCatalogEligibility({
    playbooks: input.playbooks,
    state,
    landableFamilies: input.landableFamilies,
  });
  const eligible = board.playbooks.filter(
    (entry) => entry.eligible && !entry.requiresElicitation,
  );
  // Selection and execution follow for this iteration.
}

The excerpt shortens the surrounding trace and execution code. Methods requiring creator answers are excluded from unattended selection. They remain available through the explicit run path, where the required interaction can occur.

Separate selection from admission

The selector receives eligible references, intent and useful state annotations. Its structured response bounds the number of lanes, rejects duplicate choices and makes stop an exclusive choice. The runtime then checks proposed lanes for overlapping declared write scopes and records any lane held back.

Admitted lanes settle independently. The next iteration rereads project artifacts, so new landed information becomes available through the normal state reader.

Stop reasonWhat it tells the caller
Nothing eligibleNo current method passes the unattended selection conditions
Chose to stopSelection ended the attempt, with its rationale
Iteration ceilingThe configured number of rounds was reached
All lanes failedEvery admitted lane in a round failed
Set the scope of an unattended attempt

The companion’s POST /playbooks/loop accepts a goal and iteration/lane settings. One loop is active per companion; a second request receives an explicit refusal. An explicit individual run is a separate path.

The loop’s iteration and fan-out settings are execution ceilings, not token or financial budgets. Completion of an iteration means its lanes settled; it does not establish that every application concern is resolved. Use the recorded outcomes and resulting product artifacts to review the work.

Let complex work adapt as it progresses Mechanism

Some work needs a conversation between activities: gather evidence, assess it and produce a result when there is enough to proceed. A weak assessment should lead to more focused research.

A composite playbook brings those methods together. Each child declares what it needs; Wildo reevaluates the available work as results arrive, allowing the process to respond to what it learns.

Example: Research again where the evidence is thin

A market assessment finds enough information about competitors but too little about buyers. The choreography can commission another focused research pass before asking for a market snapshot.

Research and assessment inform production, with another research pass when needed.
For engineers
Admit children without prescribing a sequence

This selected configuration comes from the market-analysis umbrella:

outputs: [],
method: {
  choreography: {
    admits: [
      'top_down.market-snapshot-produce',
      'top_down.market-research',
      'top_down.market-evidence-adequacy',
    ],
    maximumIterations: 10,
    maximumLanesPerIteration: 3,
    maximumDurationMs: 2_400_000,
  },
},

The producer appears first intentionally: admits is membership, not execution order. The parent declares no artifact output of its own. Its children land the result, and write-scope admission includes their outputs when considering concurrent work.

Gate production on the result of the check

The producer’s selected precondition requires a specific verdict:

{
  kind: MetaWorkflow_PredicateKind.STEP_AVAILABLE,
  ref: 'evidence-adequacy',
  requires: { path: 'verdict', equals: 'adequate' },
},

A check having run is insufficient: its schema-validated return must contain the required value. When new research arrives, the runtime removes verdicts that depend on it, including indirect dependencies. Production becomes eligible again after reassessment returns the required verdict. A round also separates a step writer from siblings that need its result, so a producer cannot race new research using an older assessment.

Research and adequacy results are stepOutputs in the run’s context; they remain separate from persisted specification families.

Understand repetition and completion

The runtime reads artifact state together with current step results each iteration. A child that lands an artifact enters the delivered set and is removed from subsequent selection. A child returning only a step result can run again, which supports another research or assessment pass.

Research contributions accumulate as attributed text under their shared step reference, preserving earlier sources across parallel and later rounds. Structured assessment results replace their previous verdict. The selector, assessor and producer receive the retained evidence.

Successful siblings retain their results when another child fails. Checkpoints preserve the completed iteration count and returned work used by a resumed run. Iteration, duration and lane ceilings bound the attempt; a stop reason identifies whether work exhausted its options, chose to stop, reached a ceiling or saw every child in a round fail.

Those outcomes describe execution, not a blanket quality approval. An adequacy result and a landed artifact answer different questions and should remain visible separately.

Advance independent work together Mechanism

Independent work does not always need to wait in line. Wildo can run compatible methods together within a round and bring their results into the next decision.

Before admitting the work, it compares the artifact families the methods can write, including outputs of their composed children. This keeps a parent method and another writer of the same result from being selected together in that round.

Example: Keep parallel work from claiming the same result

Market research can contribute alongside unrelated work. But a market-analysis umbrella and its own snapshot producer both lead to the market snapshot, so the admission check keeps them apart.

Compatible activities advance side by side while an overlapping output is held apart.
For engineers
Include children in the scope

This selected runtime implementation walks admitted descendants as well as the parent:

const families = new Set<string>();
const unresolvedRefs: string[] = [];
const visited = new Set<string>();
const pending: string[] = [playbookRef];
while (pending.length > 0) {
  const ref = pending.shift()!;
  if (visited.has(ref)) continue;
  visited.add(ref);
  const playbook = playbooksByRef.get(ref);
  if (playbook === undefined) {
    unresolvedRefs.push(ref);
    continue;
  }
  (playbook.outputs ?? []).forEach((output) => families.add(output.family));
  pending.push(...(playbook.method?.choreography?.admits ?? []));
}

This is an excerpt from resolvePlaybookWriteScope, not an application extension point. A composite with outputs: [] is therefore not assumed to write nothing when its children produce artifacts.

Admit a compatible portfolio

The admission function walks proposed lanes in order. It holds back a later lane whose families overlap those already admitted and returns a reason for that decision. If a referenced child cannot be resolved, its scope is unknown: it can run alone, but is not treated as safe to combine with another lane.

The outer loop bounds its portfolio, and composites also bound child concurrency. Child results are collected before the next selection round.

Execution boundaryCurrent behavior
Methods within a loop roundBounded parallel execution with declared family-scope admission
Children within a compositeBounded parallel execution and isolated child outcomes
Another unattended loop in the same companionRefused while a loop is active
Coding workspace mutationsSerialized by the coding lane’s workspace lock
Keep concurrency claims precise

This mechanism compares declared artifact outputs within the managed round. It is not a filesystem sandbox or a branch-and-merge service, and it does not turn unrelated manual writers into coordinated lanes.

Several independently managed, long-running choreographies with their own goals and merge lifecycle remain a distinct design target. The available mechanism is parallel work inside a controlled round; application authors should plan around that concrete boundary.

Turn a proposal into work you can assess

A useful result needs more than fluent writing. Wildo connects generation to artifact contracts, checks supported relationships and makes the reasoning behind review visible.

Creator answers, expert perspectives and project history each contribute something different. Together they help a team judge a proposed change before accepting it.

A proposal is examined through structural checks and review notes before a person accepts it.

Give each form of evidence a clear role

Ask instead of inventing

Collect declared product decisions and clarify consequential questions when the method supports it. Carry those answers into the resulting work.

Check what can be checked

Validate structure and supported references, then inspect coherence and source carriage. Use concrete findings to guide corrections.

Review meaning and accept deliberately

Compare alternatives through relevant perspectives. Review the proposed files and their evidence, then record the accepted version in Git.

Example: Review a revised delivery plan

The method uses the team’s answers and current requirements to generate a plan. Checks identify unsupported references; review examines whether the plan serves the product. The team inspects the corrected proposal before committing it.

For engineers

Keep the evaluation stages distinct

StageWhat it establishes
Structured generationThe requested output contract
Normalization and family validationA usable representation and supported internal consistency
Contextual reference checksSupported relationships against supplied related artifacts
Advisory judge or panelModel judgments against the configured criteria
Source-carriage observationAddress overlap, not truth or evidential adequacy
CommitThe accepted project version, not proof of every claim

The generation adapter supplies the model call. The semantic binding selects the schema and normalizer; landing validates and writes the source representation. Related-family inputs determine which cross-artifact checks can run.

Review the proposed files

These read-only commands distinguish tracked edits from new files that need separate inspection:

# Include newly created files in the review inventory.
git status --short

# Inspect tracked product-definition changes.
git diff --stat
git diff -- specifications/

# Compare the loaded product relationships through the companion.
wildo context coherence

The companion’s exported model may need to refresh after source edits. Read the report’s source information before comparing it with a file changed moments ago.

Use interaction and review for their intended purpose

An upfront interview supplies known creator decisions. Clarification handles a question discovered while preparing a participating generation call. Neither is an authorization gate by itself.

Advisory review does not replace deterministic validation. Declared future approval postures do not install automatic acceptance. The capability guides explain the actual execution and result contracts for each mechanism.

Supply decisions and produce the artifact

Ask for the decisions only you can make Mechanism

Some decisions belong to the person shaping the product: its name, its intended identity or a constraint the project has not recorded. A creation method can declare those questions and use the answers in its brief.

The questions travel with the method. Wildo checks that the answers match what was asked, so a missing answer or an unsupported choice cannot quietly become an agreed product decision.

Example: Give a brand its intended character

Before preparing the brand brief, the method asks for the exact name, the desired kind of mark and imagery to avoid. Those answers guide the work alongside the existing product direction.

A creator's answers supply the name and character of a brand brief.
For engineers
Declare questions with stable references

This excerpt comes from the brand method’s declared interview. It shows a free-text answer and a choice whose values are explicit:

{
  "questions": [
    {
      "ref": "brand-name",
      "question": "What is the exact, case-sensitive brand name the logo should render?",
      "kind": "free_text"
    },
    {
      "ref": "brand-tagline",
      "question": "Is there a tagline? Answer none if not.",
      "kind": "free_text"
    },
    {
      "ref": "logo-mark-type",
      "question": "Which logo archetype fits the brand?",
      "kind": "choice",
      "options": ["combination_mark", "wordmark", "lettermark", "pictorial_mark", "abstract_mark", "emblem", "mascot"]
    }
  ]
}

Question wording is shortened here for readability; the actual method declares the full interview in method.elicitation. A host must submit answers for the complete declared question set, using questionRef and answer, not only this excerpt.

Validate the answer before composing the brief

composeElicitationSection matches each answer to its question, rejects duplicate or unknown references, trims text and refuses empty answers. It then requires every declared question to have an answer.

Question kindAnswer contract
Free textNonempty authored text
ChoiceOne of the declared option values
ConfirmAn unambiguous yes or no, normalized to the canonical answer

Nuance belongs in an accompanying free-text answer. An ambiguous confirmation is refused rather than interpreted as consent or a product fact.

Carry the answer into the work

The companion composes the validated interview into the method brief. Composite work passes the parent’s rendered answers into its child context, so related methods can reason from the same supplied decisions.

Declare a question when the answer genuinely requires the creator. Existing specifications and gathered evidence should supply facts already available to the method. Compliance posture, for example, derives from evidence and adequacy work rather than a fixed questionnaire asking the creator to reconstruct obligations.

An upfront interview establishes known inputs. The clarification channel handles a consequential question discovered during generation preparation.

Resolve a consequential question before generation Mechanism

A method can encounter a decision its existing context does not settle. When that decision would change the proposed artifact, Wildo can ask the product owner before generating it.

The owner can answer, delegate the decision or stop the waiting run. Questions and answers remain together, so the resulting work can be reviewed with the decisions that shaped it.

Example: Clarify how customers will be charged

A pricing brief does not settle whether the product charges per person or per organization. A participating generation method asks because the answer changes the product model, then continues with the response in its brief.

A question is answered before a generation step continues.
For engineers
Opt the method into clarification

A method declares suspendsForClarification: true. The companion supplies a clarification port to the generation runner, with prior answers and a bounded round budget.

The model receives the same brief used for generation and is asked only about decisions that cannot be derived from supplied context and would change the artifact. Routine preferences and information already available in the framework should not interrupt work.

This source excerpt shows the interrupt returning before the generation attempt loop:

  if (requests.length > 0) {
    await trace.event({
      type: PlaybookExecutionTraceEvent.CLARIFICATION_REQUESTED,
      summary: `"${output.family}" stopped for ${requests.length} decision(s) only the creator can make`,
      payload: { family: output.family, requests: requests.map((request) => ({ ref: request.ref, question: request.question })) },
    });
    return { suspended: true, playbookRef: input.playbookRef, family: output.family, requests };
  }
}
const rejectedFindings: string[] = [];
let accepted: unknown;
let attempts = 0;
while (attempts < maximumAttempts) {
  attempts += 1;
  const prompt = attempts === 1

The pause belongs to this participating artifact-generation invocation. It is not a promise that an enclosing choreography has performed no earlier work.

Continue through the companion

The host lists waiting work at GET /api/companion/playbooks/suspended and resumes a selected run at POST /api/companion/playbooks/runs/:runId/resume.

Response actionEffect
AcceptAdd supplied answers to the accumulated answers and continue
DeclineContinue without asking another round, with the delegated-decision context
CancelConsume the waiting checkpoint and stop that continuation

The resume request carries action and, for an answer, answers containing ref and answer. References identify the questions shown by the suspended run. Reuse those references rather than inventing labels when submitting responses.

Understand what resume preserves

The checkpoint keeps the creator brief, declared interview answers, accumulated clarification questions and answers, and the rounds spent. Resume calls the playbook again with that context; it does not restore an in-memory model call. The old checkpoint is consumed after continuation returns, while another suspension saves its successor.

Questions are accumulated by reference with their original wording. The generation landing carries the exchange beside the artifacts it shaped. A declined decision should be visible as an assumption wherever the artifact can express it, rather than being presented as an answer the creator supplied.

Treat clarification as guidance, not authorization

The clarification check fails softly: a model error or unparsable response lets generation proceed. The question and round bounds also prevent repeated interruption from becoming an endless interview. This mechanism improves the information used for a derivation; it is not an approval gate or an independent safety check.

Preserve decisions across a pause

Accepted answers must match the outstanding questions: duplicates, unknown references, blank text and invalid choices are refused without consuming the waiting run. Confirmation answers use the same yes/no interpretation as declared interviews. Declining a later question delegates that question while preserving earlier answers as the creator’s decisions.

A dry run stays a preview after clarification. Resuming does not turn it into file writes, even if the caller sends dryRun: false; start a new ordinary run when ready to produce files. Older disposable checkpoints without a recorded mode resume as previews.

Ask for an artifact the application can use Mechanism

A creation method needs usable product information, not just a convincing paragraph. Wildo supplies structured generation with the schema of the artifact it is producing.

The returned value is normalized and checked before landing. When a contract is not met, concrete findings can guide another attempt instead of leaving every downstream consumer to interpret the answer differently.

Example: Produce a roadmap with usable phases

The method asks for the roadmap’s structured contract. Its phases and references can then be checked and consumed by planning tools, rather than extracted later from a free-form description.

A generation request uses a declared schema to shape a structured artifact.
For engineers

A playbook declares an output family and schema reference. The runtime resolves every output binding before invoking generation and rejects unknown families or mismatched schema references. The host supplies the generation adapter, including provider configuration and call handling.

A family can declare a stricter generation schema alongside its stored schema. The runtime selects it here:

      const generated = await input.model.generate({
        prompt,
        schema: binding.generation?.schema ?? binding.snapshotSchema,
        label: `${input.playbookRef}:${output.family}`,
      });

The distinction allows generation-specific requirements, such as a meaningful minimum collection, while retaining the application’s stored representation. It is a request and validation contract, not a claim that a model can never produce an invalid response.

Normalize the answer, then test its meaning

A family normalizer can assign stable reference shapes and versions before semantic validation. The run supplies its recorded time to normalizers that need it, so related outputs share the same observation instant.

This excerpt shows normalization failures becoming correction findings:

      let candidate: unknown;
      try {
        candidate = binding.generation ? binding.generation.normalize(generated.output, { recordedAt, nextReviewOn: input.nextReviewOn }) : generated.output;
      } catch (error) {
        const findings = error instanceof z.ZodError
          ? error.issues.slice(0, 20).map((issue) => `${issue.path.map(String).join(".") || "<root>"}: ${issue.message}`)
          : [error instanceof Error ? error.message : String(error)];
        await trace.event({
          type: PlaybookExecutionTraceEvent.GENERATION_REJECTED,
          summary: `"${output.family}" failed its strict generation contract on attempt ${attempts}`,
          payload: { family: output.family, attempt: attempts, errorDetails: findings },
        });
        rejectedFindings.push(findings.join("\n"));
        accepted = undefined;
        continue;
      }

Provider-side schema findings are also retained when no output object is returned. Generation uses bounded findings-guided retries, then reports failure rather than treating a malformed answer as a finished artifact.

Keep the boundaries connected
StageResponsibility
Generation schemaDefines the requested answer shape
NormalizerConverts generated content into the family representation
Family validatorChecks supported semantic relationships
Cross-artifact checksCompare with supplied application context
LandingRevalidates and writes the intended source representation

Some families use their stored schema directly. Read the registered binding to know which normalization and extra generation constraints apply. A valid object still needs product judgment and implementation evidence; structured generation makes it consumable, not automatically correct.

Check the connected result

Catch broken relationships before writing the result Guarantee

A proposal can have all the right fields and still refer to something that does not exist. Wildo pairs specification schemas with checks that understand the relationships inside each kind of artifact.

Generation can use the findings to correct an answer, and landing checks the content again. Checks across loaded product artifacts add context that a single document cannot provide.

Example: Connect a requirement to a real customer segment

A proposed requirement targets a customer segment that is absent from the loaded market snapshot. The cross-family check names the unresolved segment so the proposal can reference the intended audience. A segment reference that exists passes this check.

Validation checks an artifact's structure and declared references.
For engineers

The semantic binding first parses the stored schema, then runs the family’s validator. Errors and warnings have different effects. This source excerpt is the result mapping after successful schema parsing:

      const result = input.runValidator(parsed.data);
      const errors = result.issues.filter(input.isErrorSeverity);
      const warnings = result.issues.filter((issue) => !input.isErrorSeverity(issue));
      return {
        validation: errors.length === 0 ? JourneyArtifactValidationState.VALID : JourneyArtifactValidationState.INVALID,
        errorCount: errors.length,
        warnCount: warnings.length,
        errorDetails: errors.map((issue) => `[${issue.kind}] ${issue.path}: ${issue.message}`),
        errors: errors.map((issue) => ({ kind: issue.kind, path: issue.path, message: issue.message })),
      };

A schema error identifies a field or shape problem. Family findings can explain repeated references, inconsistent links or invalid relationships. The generation loop includes reported errors in its bounded correction attempts; a warning remains information to inspect.

Supply the context the check requires
CheckInputs it needs
Schema and family consistencyThe candidate value and its registered binding
Cross-family dangling referencesLoaded family values and accepted sibling outputs
Governed-document fact bindingThe declared document facts
Required-document coverageThe application’s relevant document requirements

A family validator called without optional external resolution sets cannot prove that every external reference resolves. The generation and landing paths have explicit cross-artifact helpers for supported relationships. A missing context input and an intentionally empty set are different conditions; callers must provide the application context they expect to validate.

Check the result that will actually be written

Landing validates the produced value before rendering. Where one produced document is merged into a document set, the merged result is also checked. The supported dangling-reference comparison overlays the candidate on loaded families and reports newly introduced citing-side references; it does not refuse every pre-existing inconsistency or every old reference orphaned by a legitimate replacement.

The broader coherence report remains useful after changes. These checks establish supported structural relationships, not whether a requirement is desirable or whether the implementation satisfies it. Those questions need review and execution evidence.

Find gaps between product decisions Mechanism

A requirement can be valid on its own while referring to a customer group that no longer exists. A delivery plan can look complete while leaving a stated goal without work behind it.

Wildo compares connected product definitions and separates broken references from gaps in coverage. That distinction helps a team repair inconsistent decisions while consciously retaining work that belongs beyond the current scope.

Example: Notice a goal left out of the plan

The vision promises simpler onboarding, but no roadmap phase delivers that goal. The report exposes the gap. If a phase instead names a deleted requirement, it reports a broken reference that needs correction.

Connected goals, plans and work expose gaps and unresolved references.
For engineers
Read the current application’s report

Run the command from an application scope with its development companion available:

wildo context health
wildo context coherence

The CLI requests /api/companion/playbooks/coherence and prints the companion’s Markdown report. The source header identifies the companion and the working-tree/export basis, which matters when comparing a report with an edit that has not reached compiled exports yet.

Interpret findings before acting
Report informationWhat it tells you
Coverage findingA declared goal or requirement lacks a supported downstream connection; deliberate deferral can explain it
Dangling findingA reference cannot resolve against the available related definition
Families readWhich valid families contributed to this computation
Families absentWhich missing inputs caused dependent questions to be skipped
Families unreadableWhich present inputs failed their schema and could not contribute

An empty findings list is meaningful together with the input lists. It is not evidence that every possible product relationship was checked.

See a concrete cross-family check

This source excerpt compares roadmap requirement references with declared requirements:

if (roadmap && requirements) {
  const dangling = difference([...roadmapDeliveredRequirements], requirementRefSet);
  if (dangling.length > 0) {
    findings.push({
      ref: "roadmap-delivers-unknown-requirement",
      kind: ApplicationCoherenceFindingKind.DANGLING,
      summary: `${dangling.length} roadmap phase reference(s) to a requirement that does not exist.`,
      refs: dangling,
    });
  }
}

The semantic authority supplies the family universe and schemas. The coherence owner explicitly partitions supported families into those with checks and those with a documented reason for exclusion. Adding a family therefore requires a deliberate coverage decision, rather than a second forgotten inclusion list.

Connect the report to production and review

The companion serves the report for interactive inspection; methods can request coherence context when preparing work. Generation also checks a candidate against landed related artifacts and can reject new dangling references. That candidate check and the advisory report are different consumers of the same relationships.

For governed documents, reference and section coverage establishes declared connections. It does not establish that the writing adequately satisfies a legal obligation. Review substantive meaning with the relevant evidence as well as inspecting the report.

See whether sources reach the result Mechanism

A well-written answer can still leave its supporting sources behind. Wildo adds a simple observation beside model review: how many collected source addresses also appear in a produced artifact.

That makes missing citations visible without asking another model to estimate them. The observation points to work worth inspecting; it does not establish that a cited page supports a claim.

Example: Notice evidence missing from a market brief

Research identifies relevant pages, but the resulting market brief contains no citations. The observation exposes that difference even when the prose reads confidently and the reviewer likes it.

Collected source references are compared with references carried in an artifact.
For engineers

The choreography result carries a provenance entry for a child that lands content when source URLs are present in step results accumulated before that round starts. evidenceUrlCount is the distinct collected-address count; citedUrlCount is the intersection with addresses found in the child’s landed values.

Before dispatching the round, the runtime snapshots source addresses with const priorEvidenceUrls = collectProvenanceUrls([...stepResults.values()]). Every child in that round is compared with this same set, so its own returned sources and concurrent sibling results cannot count retroactively.

This selected excerpt shows the subsequent comparison:

      if (childLanded.length > 0) {
        const evidenceUrls = priorEvidenceUrls;
        if (evidenceUrls.size > 0) {
          const citedUrls = collectProvenanceUrls(settlement.value.landedValues ?? []);
          provenance.push({
            playbookRef: child.playbookRef,
            evidenceUrlCount: evidenceUrls.size,
            citedUrlCount: [...citedUrls].filter((url) => evidenceUrls.has(url)).length,
          });
        }
      }

collectProvenanceUrls scans serialized values rather than relying on one family’s citation property. An address anywhere in the value can count. This accommodates different artifact shapes, while making the signal broader than clause-level citation validation.

Read the numbers as a prompt to investigate
ObservationUseful next question
Sources present, none citedDid the output omit useful support?
Some collected sources appearWhich claims use them, and do the pages support those claims?
No observationWas there source-bearing step output available for this comparison?

The observation does not reject a run. Some outputs legitimately have no place for citations; a creator’s own requirements may also be sufficient input. The result should lead the reader back to the source material and the actual artifact.

This is an address-presence check over prior-round returned values. It does not certify when a source was discovered, whether the source was read, or whether its contents are reliable. Use claim-level evidence review for those questions, alongside the advisory reviewer.

Review from useful perspectives

Review the quality, keep the reasoning Mechanism

A valid structure does not tell you whether a proposal is convincing or a requirement reflects the product’s goals. Wildo can ask a reviewer to examine produced work against criteria defined by its playbook.

Each finding includes a reason the team can inspect and challenge. The review informs the next decision; it does not replace deterministic checks or automatically approve the work.

Example: Check whether a roadmap serves the brief

A roadmap may be well formed yet spend its first release on secondary concerns. The reviewer compares its priorities with the creator’s stated goals and explains where they diverge.

A reviewer places criterion-based notes beside a generated draft.
For engineers

A playbook’s evaluation treatment owns its criteria, instructions and verdict guidance. Describe observable differences between a pass, concern, indeterminate result and gap. The runtime builds a structured output contract from those declared criterion references.

The brief combines landed family values with creator input when available. Computed context, such as the coherence report, is supplied separately and identified as deterministic evidence. The reviewer should interpret what those facts mean, not invent a replacement calculation.

Keep every criterion visible

This runtime excerpt shows how an omitted answer remains visible and how the overall verdict is derived:

    // One verdict per declared criterion; a criterion the model skipped is INDETERMINATE, honestly.
    const byRef = new Map<string, PlaybookJudgeCriterionVerdict>();
    for (const entry of parsed.criteria) {
      const previous = byRef.get(entry.criterionRef);
      // A repeated criterion is not permission to erase an adverse assessment. Preserve every
      // rationale and the most severe verdict, independent of the provider's answer order.
      byRef.set(entry.criterionRef, previous ? {
        criterionRef: entry.criterionRef,
        verdict: VERDICT_SEVERITY[entry.verdict] > VERDICT_SEVERITY[previous.verdict] ? entry.verdict : previous.verdict,
        rationale: `${previous.rationale}\n\nAdditional verdict (${entry.verdict}): ${entry.rationale}`,
      } : entry);
    }
    const criteria: PlaybookJudgeCriterionVerdict[] = criterionRefs.map((criterionRef) => {
      const entry = byRef.get(criterionRef);
      return entry
        ? { criterionRef, verdict: entry.verdict, rationale: entry.rationale }
        : { criterionRef, verdict: MetaWorkflow_EvaluationVerdict.INDETERMINATE, rationale: "The judge returned no verdict for this criterion." };
    });
    const overall = criteria.reduce<MetaWorkflow_EvaluationVerdict>(
      (worst, entry) => (VERDICT_SEVERITY[entry.verdict] > VERDICT_SEVERITY[worst] ? entry.verdict : worst),
      MetaWorkflow_EvaluationVerdict.PASS,
    );
    const result: PlaybookJudgeResult = { judged: true, definitionRef: input.treatment.definitionRef, criteria, overall };

Repeated entries for one criterion retain the most severe verdict and all their explanations, regardless of order. An unknown criterion is refused by the output schema.

INDETERMINATE means the review did not establish an answer. It must not disappear from the report or become a pass by omission. The overall result follows the runtime severity ordering, while the per-criterion rationale remains the useful material for a correction.

Read the result in the right place
ResultMeaning for the caller
judged: trueInspect criteria, their rationales and overall
judged: falseInspect skipped; there is no review verdict
Landed outputAlready exists independently of the advisory verdict

The generation host invokes the judge after landing, and the companion also exposes a dedicated judge route. Failures inside the model-review path return a skipped result. A missing creator brief leaves less evidence for questions about intent; neither a confident rationale nor a passing verdict establishes facts the reviewer never received.

Use family validation for checks that can be computed and source observations to inspect citation presence.

Give reviewers your product’s standards Mechanism

A review should reflect the product being built. Wildo combines a professional role with the application’s own direction, audience and design choices to propose an expert charter.

The charter makes that expert’s priorities and avoidances explicit. Your team can read and refine the standards instead of leaving them buried in a changing prompt.

Example: Review a mark for its real use

An art director for a task application can prioritize recognition in a crowded browser tab and readability at favicon size. Those standards make the discussion more useful than a general preference for an attractive image.

Product context informs a reusable expert charter.
For engineers

The framework role template declares the profession’s responsibilities, shaping inputs and permitted review domains. The application charter supplies its specific persona prose, ordered priorities, taboos and optional review procedure.

These fields come directly from ExpertPersonaCharterSchema:

  priorities: z.array(NonEmptyStringSchema).min(1),
  taboos: z.array(NonEmptyStringSchema).default([]),
  qualityBar: z.array(NonEmptyStringSchema).optional(),
  reviewProtocol: z.array(NonEmptyStringSchema).optional(),

priorities guide what matters most; qualityBar describes what strong work looks like; reviewProtocol describes how to examine it. They have different jobs. A long persona description is not a substitute for concrete criteria.

Derive, review and promote

The companion’s derivation service loads the required shaping artifacts and refuses missing inputs. It stages a proposed charter under .wildo-saas/generated/expert-personas/, with a quality report. The accept operation validates the resulting charter set before writing the application persona module and regenerating its aggregator.

StageWhat to inspect
Shaping inputsProduct direction, market and relevant brand or design information
Proposed charterPriorities, taboos and the standard of evidence the reviewer requests
Accepted sourceApplication-owned persona module and companion-export wiring
Hand editAdd authored metadata to protect deliberate changes from replacement

The accept guard checks both loaded charters and the on-disk source for human-edit metadata. Accept promotes a proposal into source files; it does not create a Git commit.

Make the expert available to a panel

The companion builds expert agents from accepted charters at startup. After accepting a new role, restart the companion through the normal development workflow before selecting it in a panel. A missing role is reported rather than silently replaced with a generic reviewer.

Wonder Todos contains an actual art-director charter with explicit favicon, palette and visual-restraint priorities. Its decisions belong to that application, not every Wildo product. Freshness is assessed through source history and derivedAt; charters do not carry an input digest or automatic freshness seal.

Compare alternatives through several expert lenses Mechanism

Some decisions have several reasonable answers. Wildo can produce alternatives, evaluate them through selected expert perspectives and retain the reasoning behind the chosen direction.

A shared rubric keeps the comparison consistent across review rounds. The panel can request focused revisions, making the discussion about what should improve rather than which answer appeared first.

Example: Compare two ways to organize a workspace

One proposal groups screens around teams; another groups them around the work being done. An information architect examines the navigation model while another relevant expert checks how clearly the product’s language explains it.

Several candidates are compared against shared criteria.
For engineers

A panel names its work domain, reviewers, coordinator and rubric deriver. The role bindings are checked against accepted application charters. This structured-panel excerpt shows the distinction between reviewing a domain and owning its rubric:

    const charters = await this.deliberationComposer.readCommittedCharters();
    const charterByRole = new Map(charters.map((charter) => [charter.roleRef, charter]));
    const reviewers = panel.reviewerRoleRefs.map((roleRef) =>
      this.deliberationComposer.bindExpert(roleRef, charterByRole, { reviewDomain: panel.workDomain }));
    const coordinator = this.deliberationComposer.bindExpert(panel.coordinatorRoleRef, charterByRole, {});
    const rubricDeriverRole = panel.rubricDeriverRoleRef ?? panel.reviewerRoleRefs[0]!;
    const rubricDeriver = this.deliberationComposer.bindExpert(rubricDeriverRole, charterByRole, {
      ownDomain: panel.workDomain,
    });

The coordinator synthesizes the discussion. Reviewers must be eligible to review the work domain; the rubric deriver must be eligible to own it. The application needs those accepted charters and their registered expert agents before the panel can run.

Preserve the candidate being evaluated

Structured generation supplies a producer with produceInitial and produceRevision. The panel service persists each candidate’s JSON and keeps its actual value beside any optional human-readable projection. Reviewers therefore see the data being selected, not only a persuasive summary of different data.

MaterialPurpose
Shared rubricCriteria and scoring anchors for comparable rounds
Candidate and revision lineageShows which proposal changed and why
Expert verdictsRecords the separate perspectives
Coordinator resultSelects a direction or requests another revision

The engine checks required reviewer coverage. Missing valid assessments are not silently treated as agreement. Rounds and shortlist sizes are bounded, so inspect the record’s outcome rather than assuming every panel converged.

Use the route appropriate to the work

The companion has text, structured-candidate and logo-image integrations. A playbook can opt into deliberation at the generation boundary; the selected structured value then continues through ordinary family validation and landing. A panel verdict does not bypass those checks.

Comparing alternatives requires additional generation and review calls. Use it where the choice warrants several perspectives. The resulting score expresses the configured rubric and model judgments; it is not an independent measurement of customer preference.

Accept the proposed work

Review changes where you already review code Guarantee

Creation work becomes files in your project: specifications, configuration and implementation that can be inspected together. A commit records the version you accept.

That keeps product decisions and the code they guide in the same history. Teams can compare, branch and review their work without maintaining a separate acceptance record for each generated artifact.

Example: Review the plan with the change it explains

A delivery-plan update accompanies an implementation change. The team reviews both diffs and commits the accepted result, preserving the reasoning and implementation in ordinary project history.

Product and code changes are reviewed and recorded together in a commit.
For engineers
Inspect the working tree before committing

From the application repository, a typical review begins with:

# Inspect both new files and edits to tracked files.
git status --short
git diff --stat
git diff -- specifications/

# After reviewing, stage only the intended paths.
git add specifications/src/vision/index.ts
git diff --cached
git commit -m "Clarify the product direction"

The staged path is illustrative; use the files actually produced by the run. git diff alone does not show the contents of untracked files, so inspect new files identified by git status as well.

Understand what landing does

This source excerpt shows the final render and write step for a structured artifact:

const source = renderApplicationStructuredArtifactFamilySource({
  profile: target.renderProfile,
  exportedConstantName: target.exportedConstantName,
  value: landedValue,
});
if (input.dryRun !== true) {
  await mkdir(dirname(absolutePath), { recursive: true });
  await writeFile(absolutePath, source);
}
return {
  packageRelativePath: target.packageRelativePath,
  absolutePath,
  byteLength: source.byteLength,
  renderedSource: new TextDecoder().decode(source),
  existedBefore: previousContent !== undefined,
  ...(previousContent !== undefined ? { previousContent } : {}),
};

Before this point, the service resolves the registered target and applies schema and semantic validation. dryRun returns rendered output without writing it. The write changes the working tree; it does not create a commit or establish that a reviewer accepted the result.

Use evidence alongside the diff
EvidenceReview question
Proposed file changesDoes this implement the intended decision?
Schema and semantic checksIs the declared model internally meaningful?
Coherence reportDo the supported cross-family references agree?
Application checksDoes the implementation behave as required?
CommitWhich reviewed version did the team accept?

Git records the accepted bytes, not the truth of every claim inside them. The creation runtime’s landing path does not commit on the person’s behalf. A host or coding agent’s permission to commit must be explicit in its own workflow.

Keep runtime records in their proper role

The companion records run writes for inspection and recovery. Those records help associate files with a run; they are not a competing accepted version of the application. Review targeted recovery separately from Git history, especially when another edit has changed the same file since the run.

Choose where human acceptance belongs Planned Mechanism

Planned — not available yet.

Running work and accepting its result are different decisions. A team may want a method to prepare changes freely while keeping the decision to adopt them in human hands.

Wildo’s autonomy design distinguishes guided work, lighter supervision and automatic acceptance. These are intended supervision postures; the current workflow leaves acceptance with the person reviewing and committing the changes.

Example: Delegate preparation, retain the decision

A team lets a creation method revise its delivery plan. It reviews the resulting changes before committing them, keeping the proposed work separate from the accepted direction.

Acceptance design distinguishes proposed work, review and the accepted change.
For engineers
Read the policy as a design contract

The journey vocabulary describes the intended supervision presets:

export enum Journey_AutonomyPreset {
  GUIDED = "guided",
  YOLO_LIGHT = "yolo_light",
  YOLO = "yolo",
}

Per-playbook approval policies describe where attention could be requested:

export enum MetaWorkflow_ApprovalPolicy {
  AUTO = "auto",
  NOTIFY = "notify",
  APPROVE_RESULT = "approve_result",
  APPROVE_BEFORE = "approve_before",
}

These enums are source declarations, not an installation example for an enforced mode switch. Setting autonomyPreset or approval does not install a dispatch gate or grant an agent permission to commit.

ConcernMeaning
Running a methodPermission and readiness to carry out the work
Asking a product questionObtaining information the method needs
Reviewing a resultJudging the proposed change and its evidence
Accepting a resultCommitting the reviewed changes in the project
Keep the effective behavior explicit

The landing service writes proposed artifact changes into the working tree. It does not commit them. The current runtime does not interpret these approval policies as gates, so an APPROVE_BEFORE declaration must not be relied on to prevent execution.

A host integrating creation work should preserve the distinction between its own permissions, clarification handling and the application’s Git review workflow. The supervision vocabulary describes a future policy layer; it is not a substitute for controls the host actually enforces.

Design acceptance around inspectable work

The useful unit for review is the change with its purpose and evidence: which files moved, which checks ran and which product decision the work implements. Preserve that information when adding supervision so a request for approval is a meaningful decision.

The Git acceptance workflow and clarification channel describe the mechanisms used for those separate concerns.

A method that stays useful as the product changes.

Product work gains continuity when its inputs, outputs and reasons remain explicit.

Wildo connects the methods and their evidence. Your team can revisit decisions, inspect their consequences and move the application forward with a clearer basis for the next change.

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.