---
name: ai-sdlc-evidence-council
description: Optional AI SDLC evidence-council workflow. Use when an AI assistant needs to review a high-impact topic through several explicit perspectives, orchestrate simulated lenses or truly independent reviewer executions, and synthesize evidence-backed agreements, conflicts, proposals, owners, and unresolved questions without allowing panel members to rewrite authoritative artifacts. Supports `--quick-flow` for labeled simulated review and `--full-flow` for stricter panel and evidence coverage.
---

# ai-sdlc-evidence-council: Authority-Safe Review Orchestration

> Optional review capability, not required by the core module.
> Every rule below is important to follow. None of it can be skipped.
> A council advises accountable owners; it never becomes approval authority.

## 0. Skill Card

- Skill name: `ai-sdlc-evidence-council`
- Primary audience: Delivery, Architecture, QA, Dev, BA
- Supporting audience: PM, UX, Research, Security
- Audience tags: Delivery, Architecture, QA, Dev, BA, PM
- SDLC stage: Cross-lifecycle high-impact review
- Purpose: Combine multiple evidence perspectives while preserving authority.
- Output: `evidence-council.md` and `_ai_sdlc/evidence-council.toon`

### 0.1 Required Inputs

- Owning feature root and review topic.
- Council input using `ai-sdlc-evidence-council-input/v1`.
- Named authoritative artifact owner and exact evidence anchors.
- Host support for isolated reviewer executions when mode is `independent`.

### 0.2 Clarification Rules

- Ask when review question, authority owner, panel scope, or decision boundary is unclear.
- Label simulated and independent modes exactly; never imply independence.
- Preserve reviewer conflict and uncertainty instead of forcing consensus.
- Do not infer acceptance from reviewer count or apparent agreement.

### 0.2.1 Flow Mode Flags

- Support `--quick-flow` and `--full-flow`; full flow takes precedence.
- Quick flow may use labeled simulated reviewers and focused evidence.
- Full flow requires at least three reviewers, two roles, and populated evidence.
- Independent mode requires unique independent execution IDs for every reviewer.

### 0.3 Output Rules

- Return mode, panel identity, agreements, conflicts, proposals, unresolved
  questions, blockers, and output paths directly in the Codex response.
- Before the final response, emit `ai-sdlc-handoff/v1` with `result`,
  `blockers`, `next_required`, and `next_optional`; every action includes
  `reason`, `command`, and `expected_artifact`.
- Do not create `summary.txt`, `*-summary.txt`, or panel-authored source patches.
- Every synthesis row requires evidence and named contributing reviewers.

### 0.4 Artifact Routing

- Write `<feature-root>/evidence-council.md`.
- Write `<feature-root>/_ai_sdlc/evidence-council.toon`.
- Treat all paths in `authority.authoritative_artifacts` as read-only.
- Route accepted proposals later through the artifact-owning workflow.

## 0.5 Feature State Machine

- Read `<feature-root>/_ai_sdlc/state.toon` before council orchestration.
- Council is optional review evidence and does not add a core lifecycle stage.
- `--state-check` is read-only; `--begin-state` and `--complete-state` are rejected.
- Only owning lifecycle skills can change state or authoritative artifacts.

## 0.6 Artifact Metadata And Metatags

- Markdown starts with `artifact_metadata` using schema
  `ai-sdlc-evidence-council-metadata/v1`.
- Include `metatags` for `ai-sdlc`, `evidence-council`, the execution mode, and `review`.
- Record feature, workspace, flow mode, authority owner, evidence traces, and status.

## 0.7 Specs Index

- Read the relevant `specs/_ai_sdlc/specs-index.toon` or
  `specs-refiniment/_ai_sdlc/specs-index.toon` before targeted evidence reads.
- Refresh matching `specs/specs-index.md` or
  `specs-refiniment/specs-index.md` only after the final report write.
- Never update indexes for panel scratch outputs.

## References

- Read `references/council-contract.md` before creating panel input.
- Read `references/orchestration-protocol.md` before running either mode.
- Use `scripts/evidence_council.py` to enforce mode honesty, evidence links,
  ownership, and authority-safe output routing.

## Script Usage

```bash
python3 skills/ai-sdlc-evidence-council/scripts/evidence_council.py specs/payments --input /tmp/council.json --emit --quick-flow
python3 skills/ai-sdlc-evidence-council/scripts/evidence_council.py specs/payments --input /tmp/council.json --write --full-flow --format toon
```

## Purpose

Gain the challenge value of multiple perspectives without fictional consensus,
vendor-specific orchestration assumptions, or panel authority over source truth.

## Inputs

- Name the authority owner and authoritative artifacts before reviewer work.
- Give reviewers bounded roles and isolated execution IDs in independent mode.
- Anchor evidence to feature-relative paths and positive lines.
- Synthesize agreements, conflicts, proposals, and unresolved questions separately.

## Steps

1. Define topic, decision boundary, authority owner, and read-only artifacts.
2. Select simulated or independent mode honestly.
3. In simulated mode, apply distinct registered quality lenses sequentially and label them simulated.
4. In independent mode, dispatch isolated reviewer executions through the host's
   real agent/subagent mechanism; if unavailable, stop with a blocker.
5. Give reviewers evidence-only prompts and prohibit authoritative writes.
6. Collect raw reviewer outputs and synthesize without erasing conflicts.
7. Validate evidence IDs, reviewers, owners, and next actions.
8. Write only the canonical council report pair and hand proposals to owners.

## Output Spec

`ai-sdlc-evidence-council/v1` contains topic, mode, authority, panel, evidence,
agreements, conflicts with positions, proposals, and unresolved questions.

Quality gate:

- Pass when mode is honest, every synthesis row cites registered evidence and
  reviewers, conflicts preserve positions, and actionable rows name owner/next action.
- Full flow fails below three reviewers, two roles, or one evidence anchor.

## Examples

Valid independent panel rows use three different `execution_id` values produced
by actual isolated runs. Three role labels generated in one response are valid
only as `simulated`, never `independent`.

## Edge Cases

- No consensus is a valid result; preserve owned unresolved questions.
- A reviewer may support one agreement and one side of a conflict.
- A proposal may be deferred or rejected but cannot be marked accepted by council.
- If independent execution fails midway, report partial/blocked rather than simulating missing votes.

## Scope Boundary

- Do not let reviewers edit authoritative artifacts, state, policy, or decisions.
- Do not claim reviewer independence without isolated executions.
- Do not convert majority opinion into acceptance authority.
- Do not hide conflicts, dissent, missing evidence, or unanswered questions.
- Use `$ai-sdlc-change-impact` after owners accept a proposal that changes delivery truth.
