Reviewers, ingestion operators, and agent developers

Sources and extraction

Submit provenance-bearing source material, run reviewable extraction, and resolve DecisionCandidates explicitly.

Task 1

Submit a source
Create SourceContent with its origin and retention context before deriving any DecisionCandidates.

Permission boundary

sources.submit.workspace

Steps

  1. 1Choose the target Organization and Workspace before submission.
  2. 2Record origin metadata that lets a reviewer identify where the content came from.
  3. 3Retain only content permitted by the Organization's source and retention policy.

Supported surfaces

GraphQL mutation: submitSource
pnpm decision-log sources submit
MCP tool: decision_log.submit_source

Source submission is audited. Later reads remain subject to source permissions and retention.

Task 2

Review a source
Inspect retained evidence without bypassing Organization, Workspace, or retention boundaries.

Permission boundary

sources.read.workspace

Steps

  1. 1List sources using bounded excerpts to find the relevant evidence.
  2. 2Retrieve one source only when its detail is needed for candidate or Decision review.
  3. 3Treat null retained-content fields as authoritative redaction; never infer hidden content.

Supported surfaces

GraphQL queries: sources, source
pnpm decision-log sources list
pnpm decision-log sources get {sourceId}
MCP tool: decision_log.list_sources
MCP tool: decision_log.get_source

GraphQL, the repository-local CLI, and MCP share one retention-safe projection. Redacted or purged content is not serialized.

Task 3

Run extraction
Request extraction for an existing source and track the run without silently activating proposed Decisions.

Permission boundary

extractions.manage.workspace

Steps

  1. 1Confirm the source is readable and retained.
  2. 2Start an ExtractionRun for the source.
  3. 3Observe completion or failure, then inspect the resulting DecisionCandidates.

Supported surfaces

GraphQL mutation: extractSource
pnpm decision-log sources extract {sourceId}

Provider-backed extraction has its own readiness gate. A request must not imply that a provider completed successfully.

Task 4

Review candidates
Approve, reject, or convert proposed meaning only after checking provenance, confidence, and current Decision context.

Permission boundary

Read: candidates.read.workspace. Approve: candidates.approve.workspace + decisions.create.workspace. Reject: candidates.reject.workspace. Convert: candidates.read.workspace + decisions.supersede.workspace.

Steps

  1. 1Review the candidate's source, proposed Decision text, rationale, and confidence.
  2. 2Check whether a current Decision with the same stable key already exists.
  3. 3Choose one terminal action: approve a new immutable Decision, reject the candidate, or convert it into an explicit supersession.
  4. 4Re-read the candidate after resolving it, then use Organization audit history to confirm the recorded mutation.

Read and resolution entry points

GraphQL queries: candidates, candidate
GraphQL mutations: approveCandidate, rejectCandidate, candidateToSupersession

pnpm decision-log candidates list
pnpm decision-log candidates get {candidateId}
pnpm decision-log candidates approve {candidateId}
pnpm decision-log candidates reject {candidateId} --reason "..."
pnpm decision-log candidates convert-to-supersession {candidateId} --replaces {decisionId} --reason "..."

MCP tool: decision_log.list_candidates
MCP tool: decision_log.get_candidate
MCP tool: decision_log.resolve_candidate {candidateId, resolution: approve|reject}
MCP tool: decision_log.convert_candidate_to_supersession {candidateId, replacesDecisionId, reason?}
MCP app: decision_log.render_candidate_review

These writes are terminal and audited: inspect the candidate and retrieve the current Decision before acting, then do not retry after an ambiguous result until both records are re-read. MCP resolution and candidate-to-supersession conversion are destructive and non-idempotent.