Review, judgment and trust
Doc type: How-to & explanation · Applies to: POSE v7.4.1 · Reviewed: 2026-10-20
A sealed bundle fixes the subject and the contracts that judge it. An append-only attestation records the reviewer's conclusions. The review plan says which evidence, judgments and reviewer separation are owed. Signing proves a binding to a trusted key; the reviewer still answers for the conclusion.
Prepare the subject
pose review-plan spec:customer-export --json --explain
pose validate --strict
pose review bundle spec:customer-export --seal
pose review auto-attest spec:customer-export --reviewer agent:reviewer-a
Use the returned bundle id for subsequent operations. auto-attest prepares
mechanical answers from sealed evidence and reports pending judgments. It
cannot turn a successful test into an engineering conclusion. Evidence must
have an accepted class and belong to the component the plan names.
The opt-in engineering-judgment, high-criticality and structural-materiality profiles add obligations according to scope. Observed material structural facts can require mappings to requirements, assumptions or decisions (R/A/D), or an explicit disposition with rationale. Invalidated assumptions and withdrawn decisions cannot serve as active causal bases under adopted causal closeout. The engine checks the relation; the reviewer judges whether it is convincing.
A policy change cannot authorize its own weakened review. The protected baseline restores stronger obligations from the resolved base where supported; an unresolved base is disclosed as unprotected. Read the plan's reasons and coverage before recording a conclusion.
Adopt delegated review
Run pose init in a new project for an interactive delegation offer (default
yes). Acceptance detects Codex and Claude CLIs on PATH without starting them,
creates read-only agent profiles, and provisions a project-specific native
executor issuer outside the repository. Its pin grants attestation signing,
never human authority. With no supported CLI, a refusal or a non-interactive
init, delegation is explicitly off and no agent policy or key is created.
An existing instance is preserved; pose update only suggests adoption.
For an existing project, configure .pose/policy/delegation.json, including
review-capable agents with explicit executor principals, executor-attested
provenance and conclusions.issuer. Pin that exact local issuer for
attestations; bind the authority project to .pose/project.json and configure
its audience. Preview and apply:
pose adopt delegated-review
pose adopt delegated-review --apply
pose delegate agents --json
The B17 signed-run-proof barrier remains live: an old prefix-only approval can stop satisfying current verification after adoption; its record is preserved.
With delegation on, a new plan requires a different actor. Automatic routing
that cannot find another vendor or model opens a maintainer action request;
mandatory-human review also escalates. Disable explicitly with
pose adopt delegated-review --off --apply to allow new different-actor
plans to use same-actor-separate-execution, disclosed as
delegated-review-disabled in the plan, attestation, verification and closeout.
Mandatory-human and a stronger protected baseline remain stronger. Absence of
the policy key retains legacy behavior; decline/defer record configuration
decisions without changing that policy. Disabling preserves pins and history.
For an agent review of the change that disables an adopted baseline, the
sealed plan retains delegated_run_proof_required. Independent routing and
automatic verified conclusion remain available for that protected review only;
unrelated off-capability work stays off. A reviewer prefix alone cannot approve
the disabling change.
If init saves the policy or key but cannot activate, retain those artifacts, inspect the publication state, finish pinning the issuer and retry adoption. Inspect a durability-unconfirmed publication before retrying.
Delegate a review
pose review brief <bundle-id> --kind review
pose delegate review <bundle-id> --dry-run
# After configuring and inspecting the agent:
pose delegate review <bundle-id> --label <name>
pose delegate ls <name>
The brief is generated from the bundle. Implementer notes are labelled
separately. Dispatch runs a configured command in a disposable worktree at the
sealed commit and retains its outcome under .pose/review-runs/. File changes,
timeouts, budget overruns and execution failures are failed runs. A completed
run alone does not approve the spec. With delegation adopted and its issuer
configured, the engine signs and records the completed run's verified typed
conclusion automatically. An incomplete or invalid conclusion is refused with
its reasons; a rejecting conclusion is recorded and blocks approval until the
subject changes. The agent is a local command, not a host security sandbox.
The bundle records who implemented it when it is sealed: the vendor detected
from the sealing agent's session, or declared with --seal --lead
<vendor>[/<model>], and labelled as detected or declared. Seal from the
implementing session; resealing the same content later, from a reviewer's
session, keeps the identity the bundle already recorded. Routing then prefers
an agent of another vendor, and every run records the independence it
achieved — another vendor, another model, or the same model, which never
satisfies a review that requires a different actor. A model nobody declared is
unknown and never counts as a difference.
Read the returned work and the engine's conclusion. Follow its next_actions;
answer a rejection with a change, current evidence and a new sealed bundle.
Preserve the rejection rather than rerunning the unchanged subject for a more
favorable verdict. Finish with pose review verify, pose review-check and
pose closeout-check for the scope. Use pose delegate task <prompt-file> for
general work; a task never supplies a review or delivery evidence. See the
CLI reference for explicit
attestations when automatic conclusions do not apply.
Request a delegated review any runner can fulfil
A project can ask for a delegated review, adjudication or smoke run as an action request, and let whichever runner it uses — a developer's machine, a CI job or Harne8's Conductor — fulfil it through the same contract:
pose review request spec:<slug> --kind delegated-review [--purpose review|adjudicate|smoke] [--agents <name,...>] --apply
# Locally: run the request's brief with an accepted agent; with
# delegated_review and conclusions.issuer set, the engine concludes the run
# and the request is fulfilled.
pose delegate review spec:<slug> --request <act-id>
# From any runner: submit the completed, concluded run.
pose action fulfil <act-id> --run <run-id> --runner agent:<runner> --idempotency-key <key> --expected-revision <n> --channel ci --apply
The request binds the project, the worktree it was asked from, the scope,
the sealed bundle, the brief, the notes, the policies, the agents it accepts
and the destination of the conclusion — an attestation for a review, an
adjudication record of the spec for an adjudication, smoke evidence for a
smoke run. No actor answers it. A run fulfils it only when the engine reads,
of that run: the request's brief and bundle, an accepted agent, a completed
run whose containment completed, a signed proof that verifies, an intact
attempt ledger, and the conclusion the engine recorded at the request's
destination. A rejecting run fulfils the request — the review was performed —
and nothing is approved: approval stays the attestation's. A superseded
bundle or a policy change invalidates the request, even once fulfilled; it is
asked again with pose review request ... --supersedes <act-id>, which retires it.
The proof of a run verifies in any checkout of the project: the worktree it
ran in is recorded, not required of the reader — the project must be
declared in .pose/project.json, so every checkout is the same project. A
CI job therefore runs the
requested review in its own checkout — with delegated_review and
conclusions.issuer set and the issuer key on the runner, the engine
concludes the run and fulfils the request there — and commits what it wrote
under .pose/, the request's journal included:
# .github/workflows/delegated-review.yml (example)
on:
workflow_dispatch:
inputs:
slug: {required: true}
request: {required: true}
agent: {required: true}
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: pose delegate review spec:${{ inputs.slug }} --request ${{ inputs.request }} --agent ${{ inputs.agent }}
- run: pose action show ${{ inputs.request }} | grep -q 'action.state=fulfilled'
- run: git add .pose && git commit -m "delegated review of ${{ inputs.slug }}" && git push
A runner that concludes a run itself — pose review conclude <run> --issuer
<name> --apply — submits it with pose action fulfil, from a file:
{"request_id": "act-…", "request_digest": "sha256:…", "expected_revision": 1,
"idempotency_key": "conductor-…", "run_id": "rrn-…", "runner": "agent:conductor", "channel": "conductor"}
pose action fulfil --envelope <file> --apply reads it, and the MCP tool
pose_action_fulfil takes the same object as envelope (or the fields
id, run, runner, request_digest, expected_revision,
idempotency_key, recorded on the mcp channel). The runner is an agent:
principal — a fulfilment records no person — and chooses neither the
authority nor the destination; a retry with the same key and run is a
no-op.
A person is asked only by exception, each time as a decision request to the
maintainer role with the question, its options and their consequences: a
scope whose plan reserves its review for a person, an attempt budget spent
without the review, delegated reviewers that disagree on one bundle, and a
business decision a reviewer raised in its draft (business_decision).
Sign reviews without a hosted service
A native Ed25519 issuer stores its private key outside the repository. Inspect the issuer and pin only the authority it should exercise:
pose issuer init local-review
pose issuer pin local-review --attestations --apply
pose issuer list
A key usable by agents on the account should not be granted human authority. When verified human authority is required, configure a separately protected issuer and an explicit authority grant. Native and external issuers coexist; pinning or rotating one does not remove the others.
pose review attest … --sign <issuer> signs the attestation. --authority
adds the claim used by verified identity. The claim binds the project and the
verifier audience separately, the bundle digest, reviewer and required
executions. Review independence, identity assurance and attribution are
separate disclosures:
| Question | What the record establishes |
|---|---|
| Who prepared, concluded, confirmed or applied? | Explicit attribution, with confirmation bound to the exact conclusions. Authorizing an operation differs from adopting its conclusions. |
| Was another actor or execution required? | The review plan's independence floor. |
| Is identity declared or verified? | A declared label, or an authenticated claim under configured trust. |
| Is cognitive independence proven? | It remains not observable. |
The MCP pose_review_attest writer accepts a trusted signed envelope; it does
not provide an unsigned shortcut. See MCP for preview and apply.
Adopt signing with existing history
Preview pose adopt signed-attestations before applying it. From v7.3.0,
adoption can seal existing unsigned attestations into a signed legacy ledger
under .pose/review-ledgers/. Their bytes remain unchanged. New or altered
attestations must satisfy signing requirements. Use --issuer <name> when
more than one local issuer is eligible. The ledger preserves attributable
history; it does not retrospectively establish verified human authorship.
Development-only hardening
Pending changes strengthen shared approval preflight, proof disclosure,
historical trust, source reuse and incomplete-source handling. Additional
Git/dispatch snapshot work is still in-progress at this review. These are
separate from the behavior shipped in v7.4.1; see development status
before depending on their flags, schemas or refusal codes.