Review Candidates
Use the Review Inbox to decide whether a generated or submitted Experience or managed Skill should become an Artifact Revision. Approval writes an immutable Revision. Rejection closes the Candidate without writing an Artifact.
Before you begin
Start the Server and confirm that it is ready:
powercontext readySet POWERCONTEXT_SCOPE_ID to the existing Scope ID that contains the Candidate. This guide starts after an
Experience or Skill operation has created a pending Candidate.
1. List pending Candidates
powercontext candidate list --scope-id "$POWERCONTEXT_SCOPE_ID"The default Review Inbox contains only pending Candidate heads. Filter it by family when needed:
powercontext candidate list --scope-id "$POWERCONTEXT_SCOPE_ID" --family experience
powercontext candidate list --scope-id "$POWERCONTEXT_SCOPE_ID" --family skillThe response contains each candidate_id and current version. If it returns next_cursor, pass that value through
--cursor to read the next page. --limit accepts values from 1 to 100 and defaults to 50.
2. Inspect one Candidate
powercontext candidate show --scope-id "$POWERCONTEXT_SCOPE_ID" CANDIDATE_IDBefore deciding, inspect:
proposal, including every Experience field or the complete Skill instructions and validation checks;source_refsandartifact_refs, and the evidence identified by those exact references;target, when the proposal would replace an existing Artifact Revision;reason,family,status, and the currentversion.
Do not approve a claim that its evidence does not support. Review Skill instructions as content that may later be exported, and reject any proposal that contains secrets or unsafe instructions. Approval itself does not install or execute a Skill.
3. Approve, reject, or revise
Use the version you inspected as --expected-version.
Approve the exact version
powercontext candidate approve \
--scope-id "$POWERCONTEXT_SCOPE_ID" \
--expected-version 1 \
CANDIDATE_IDThe response has status: approved and an exact result_artifact. Approval commits the proposal and marks the
Candidate approved in one transaction. The Candidate is then terminal.
Reject the exact version
powercontext candidate reject \
--scope-id "$POWERCONTEXT_SCOPE_ID" \
--expected-version 1 \
--reason "The evidence does not support the proposed lesson." \
CANDIDATE_IDThe response has status: rejected, preserves the reason in decision_reason, and has no result_artifact.
Rejection is terminal.
Revise an Experience Candidate
A revision is a complete replacement proposal, not a patch. Include the evidence that should belong to the new version:
powercontext candidate revise experience \
--scope-id "$POWERCONTEXT_SCOPE_ID" \
--expected-version 1 \
--situation "Only one storage backend was tested." \
--action "Run the same acceptance scenario on both backends." \
--outcome "Both backends passed." \
--lesson "Keep acceptance behavior backend-neutral." \
--source-ref content/SOURCE_ID \
CANDIDATE_IDThe response remains pending and has a higher version. Inspect that version before making another decision.
Revise a Skill Candidate
Put longer instructions in a UTF-8 file. Supply either --instructions or --instructions-file, but not both.
Repeat --validation for each check:
powercontext candidate revise skill \
--scope-id "$POWERCONTEXT_SCOPE_ID" \
--expected-version 1 \
--name backend-validation \
--description "Validate storage backends consistently." \
--instructions-file instructions.md \
--validation "SQLite passes." \
--validation "OceanBase passes." \
--artifact-ref experience/EXPERIENCE_ID@REVISION \
CANDIDATE_IDUse --target FAMILY/ID@REVISION only for a replacement. The CLI adds the target to the Candidate's Artifact evidence
automatically.
4. Verify the result
Read the Candidate again:
powercontext candidate show --scope-id "$POWERCONTEXT_SCOPE_ID" CANDIDATE_IDFor an approved Candidate, record the exact result_artifact. For a rejected Candidate, confirm decision_reason.
The default Inbox no longer lists either terminal state; audit them explicitly when needed:
powercontext candidate list --scope-id "$POWERCONTEXT_SCOPE_ID" --status approved
powercontext candidate list --scope-id "$POWERCONTEXT_SCOPE_ID" --status rejectedIf a write reports that the Candidate version is stale, show the Candidate again and review the new version. Do not
change --expected-version without inspecting the replacement. A terminal Candidate cannot be approved, rejected, or
revised again.
The HTTP API, Python Client, and MCP expose the same five Review operations and concurrency rules. See Interfaces for their contract and availability.

