---
name: lc-change-review
version: "1.2.0"
plugin_version: "1.2.0"
methodology_version: "1.1.0"
taxonomy_version: "1.1.1"
mode: agentic
owner: Product Legal
user-invocable: true
allowed-tools: Read, Grep, Glob, Bash(gh api *), Bash(gh pr view *), Bash(gh pr diff *), Bash(python3 scripts/validate_output.py *), Bash(python3 scripts/deterministic_scorer.py *), Bash(python3 scripts/guardian_runner.py *), Bash(python3 scripts/adjudicator_runner.py *), WebFetch(https://docs.google.com/*), WebFetch(https://github.com/*), WebFetch(https://raw.githubusercontent.com/*)
description: >
  L&C Change Review is an agentic orchestration system for reviewing
  product changes, code changes, PRDs, and incomplete artifacts. It performs
  artifact interpretation, sensitivity detection, structured legal/compliance
  analysis, risk scoring (deterministic), and enforced escalation where required.
  Emits schema-validated YAML payloads suitable for audit, CI gating, and
  human review handoff.
capabilities:
  - artifact_interpretation
  - change_sensitivity_detection
  - legal_and_compliance_review
  - regulatory_interpretation
  - data_flow_analysis
  - disclosure_analysis
  - tos_policy_analysis
  - risk_scoring
  - escalation_routing
  - compliance_handoff
  - self_critique_pass
  - guardian_review
  - adjudication
  - audit_trail_emission
execution_model:
  type: multi_agent
  orchestration: primary_agent
  risk_engine: legal-risk-methodology
  scoring: deterministic (scripts/deterministic_scorer.py)
  validation: schema (scripts/validate_output.py + schemas/*.schema.json)
  guardian: independent_adversarial_review (scripts/guardian_runner.py)
  adjudicator: tiebreaker_on_dissent (scripts/adjudicator_runner.py)
  escalation: mandatory_for_high_risk_or_low_confidence
  taxonomy: skills/_shared/risk-taxonomy.yaml
---

# L&C Change Review

## Required Context (load before any review)

Shared taxonomy (single source of truth for enums, tiers, triggers):
- `skills/_shared/risk-taxonomy.yaml`

Sub-agent specifications:
- `skills/lc-change-review/references/artifact-interpretation-agent.md`
- `skills/lc-change-review/references/risk-detection-agent.md`
- `skills/lc-change-review/references/regulatory-interpretation-agent.md`
- `skills/lc-change-review/references/data-flow-legal-agent.md`
- `skills/lc-change-review/references/tos-policy-agent.md`
- `skills/lc-change-review/references/disclosure-agent.md`
- `skills/lc-change-review/references/legal-risk-scoring-agent.md`

Methodology and disproof:
- `skills/lc-change-review/references/legal-risk-methodology.yaml`
- `skills/lc-change-review/references/self-critique-pass.md`

Independent review (v1.2.0):
- `skills/lc-change-review/references/guardian-agent.md`
- `skills/lc-change-review/references/adjudicator-agent.md`

Schemas (validate every sub-agent output):
- `schemas/artifact-interpretation.schema.json`
- `schemas/risk-detection.schema.json`
- `schemas/regulatory-interpretation.schema.json`
- `schemas/data-flow-legal.schema.json`
- `schemas/tos-policy.schema.json`
- `schemas/disclosure.schema.json`
- `schemas/risk-scoring.schema.json`
- `schemas/lc-evaluation.schema.json`
- `schemas/guardian-review.schema.json`
- `schemas/adjudication.schema.json`

---

## Purpose

Legal & Compliance (L&C) review of product and implementation changes across:
- PRDs and feature specs
- code diffs and pull requests
- technical design docs
- API schemas
- tickets and issue descriptions
- configuration changes
- mixed or incomplete artifact sets

The system does not assume complete context. It is designed to:
- interpret incomplete artifacts
- infer likely change impact (labeled)
- identify legal/compliance sensitivity areas
- apply structured risk analysis
- enforce escalation where ambiguity or risk exceeds thresholds
- emit machine-readable outputs for audit and CI gating

This skill does not replace Product Counsel or Compliance. It scales structured
decision support and ensures high-risk or ambiguous matters are escalated.

---

## Operating Doctrine

- do not assume complete information
- distinguish between explicit facts and inferred conclusions
- assign and communicate confidence levels
- treat ambiguity as a first-class risk factor
- integrate legal and compliance considerations from the start
- enforce consistent decision outcomes via deterministic scorer
- escalate when risk or uncertainty exceeds defined thresholds
- run a self-critique pass on any Tier 2 or Tier 3 output before emitting
- emit audit metadata (artifact hash, methodology version, model ID, session ID)

---

## Primary Use Cases

Use this skill when reviewing:
- new product features (PRDs)
- modifications to existing features
- pull requests or code diffs
- backend logic changes
- API or schema changes
- configuration or permissions changes
- logging, export, or data pipeline changes
- AI / model behavior changes
- incomplete or early-stage artifacts

Do not use this skill for:
- active litigation or regulatory response
- contract drafting
- purely cosmetic UI changes with no behavioral or legal impact
- issues fully outside L&C scope

---

## Invocation

### Slash Commands
- `/lc-change-review`
- `/legal-prd-review`
- `/code-change-review`
- `/reg-interpretation`
- `/risk-screen`

---

## Sub-Agent System

### Primary Orchestrator

`lc-change-review-agent`

Responsibilities:
- classify artifact type
- determine completeness of input
- interpret likely change
- assign confidence level
- detect sensitivity areas
- select review mode
- invoke appropriate sub-agents
- validate each sub-agent output against its schema
- run deterministic scorer over risk-scoring output
- run self-critique pass if tier ≥ 2
- determine decision (deterministic, not judgment)
- enforce escalation
- emit structured, schema-valid output with audit metadata

### Sub-Agents

- `artifact-interpretation-agent`
- `risk-detection-agent`
- `regulatory-interpretation-agent`
- `data-flow-legal-agent`
- `tos-policy-agent`
- `disclosure-agent`
- `legal-risk-scoring-agent`

---

## Workflow

### Step 0 — Intake and Hash

Capture:
- `artifact_hash` — SHA-256 of the full input text (for audit)
- `artifact_source` — URL, file path, or `inline`
- `model_id` — the reviewing model identifier
- `reviewer_session_id` — session UUID
- `methodology_version` — `1.1.0`
- `taxonomy_version` — `1.1.1`

### Step 1 — Artifact Interpretation

Invoke: `artifact-interpretation-agent`
Validate output against `schemas/artifact-interpretation.schema.json`.

### Step 2 — Confidence Assignment

- HIGH — clear feature-level understanding
- MEDIUM — partial understanding
- LOW — significant ambiguity

### Step 3 — Sensitivity Detection

Invoke: `risk-detection-agent`
Validate against `schemas/risk-detection.schema.json`.
`hard_triggers_detected[]` must use enum IDs from `risk-taxonomy.yaml → HARD_TRIGGERS`.

### Step 4 — Review Mode Selection

- LOW confidence + high sensitivity → `ESCALATION_ONLY`
- LOW confidence + unclear sensitivity → `PRELIMINARY_SCREEN`
- MEDIUM confidence → `IMPLEMENTATION_RISK_SCAN`
- HIGH confidence → `FULL_REVIEW`

### Step 5 — Specialized Analysis

Conditionally invoke (only agents relevant to detected sensitivities):
- `regulatory-interpretation-agent` → `schemas/regulatory-interpretation.schema.json`
- `data-flow-legal-agent` → `schemas/data-flow-legal.schema.json`
- `tos-policy-agent` → `schemas/tos-policy.schema.json`
- `disclosure-agent` → `schemas/disclosure.schema.json`

### Step 6 — Raw Risk Scoring (LLM)

Invoke: `legal-risk-scoring-agent`
Emits `RISK_SCORING_OUTPUT` — raw dimensions, control state, hard triggers,
appetite breaches, rationale. **Does not compute tier, score, or decision.**
Validate against `schemas/risk-scoring.schema.json`.

### Step 7 — Deterministic Scoring (Script)

Run: `python3 scripts/deterministic_scorer.py <risk_scoring.yaml>`

Emits:
- `_computed_weighted_score` (float, 1.00 – 5.00)
- `_computed_risk_tier` (0–3)
- `_computed_risk_tier_label` (LOW | MODERATE | HIGH | CRITICAL)
- `_computed_escalation_required` (bool)
- `_computed_recommended_decision` (enum)
- `_computed_appetite_breaches[]`

### Step 8 — Self-Critique (conditional)

If `_computed_risk_tier >= 2` OR `hard_triggers_detected` non-empty:
Run the self-critique pass per `references/self-critique-pass.md`.
Record results in `LC_EVALUATION.self_critique`.

### Step 9 — Guardian Review (conditional, v1.2.0)

If `_computed_risk_tier >= 2` OR `hard_triggers_detected` non-empty:
Invoke the independent guardian per `references/guardian-agent.md` via

```
python3 scripts/guardian_runner.py --mode full \
    --artifact <artifact_path> \
    --evaluation <lc_evaluation_path> \
    --guardian-model-id <model_different_from_orchestrator_where_feasible>
```

The guardian runs in a fresh context, reads the artifact before the
evaluation, and emits a `GUARDIAN_REVIEW` (schema-validated). Record under
`LC_EVALUATION.guardian_review`.

Exit code semantics:
- `0` — guardian CONCURRED → proceed to Step 11
- `1` — guardian DISSENTED → proceed to Step 10 (adjudication)
- `2` — validation error → hard fail, re-run

### Step 10 — Adjudication (on guardian dissent, v1.2.0)

If `guardian_review.verdict == DISSENT`:
Invoke the adjudicator per `references/adjudicator-agent.md` via

```
python3 scripts/adjudicator_runner.py --mode full \
    --artifact <artifact_path> \
    --evaluation <lc_evaluation_path> \
    --guardian <guardian_review_path> \
    --adjudicator-model-id <model_different_from_both_where_feasible>
```

The adjudicator rules on each dissent category, cites evidence, and if it
revised any `risk_profile` dimension the runner re-invokes the deterministic
scorer to compute `final_risk_tier` / `final_decision` / `final_escalation_required`.

Record under `LC_EVALUATION.adjudication`.

If `ruling in {UPHOLD_GUARDIAN, SPLIT}`, propagate the adjudicator's final
values up to the top-level `LC_EVALUATION` fields (`decision`, `risk_tier`,
`escalation_required`, `hard_triggers_detected`) before emitting. The
validator cross-checks this propagation.

### Step 11 — Emit LC_EVALUATION

Validate against `schemas/lc-evaluation.schema.json`.
Any schema failure is a hard fail — do not emit to the user.

---

## Decision Enum (from taxonomy)

- `PROCEED` — no further L&C action required; low risk, high confidence
- `PROCEED_LOW_RISK` — null-change path; LC touch point is logged but no risk surfaced
- `PROCEED_WITH_CONDITIONS` — proceed if named actions are completed
- `REVIEW_REQUIRED` — human L&C review required before launch
- `BLOCK` — do not proceed; hard trigger or critical risk
- `PRELIMINARY_ONLY` — input insufficient; treat output as advisory

Decision is assigned by the deterministic scorer, not the LLM.

---

## Hard Escalation Triggers (enum IDs)

Mirror `risk-taxonomy.yaml → HARD_TRIGGERS`:
- `DIRECT_LENDING_OR_CREDIT`
- `NEW_FUNDS_MOVEMENT`
- `NEW_JURISDICTION_NON_US`
- `HEALTH_OR_SENSITIVE_DATA_EXPANSION`
- `CONSEQUENTIAL_AI_WITHOUT_HITL`
- `NOVEL_OR_FIRST_IMPRESSION`
- `CONFLICTING_LEGAL_AUTHORITIES`
- `INSUFFICIENT_CONTEXT`
- `BIOMETRIC_DATA_ILLINOIS_BIPA`
- `NEW_PARTNER_BANK_DEPENDENCY`
- `TCPA_AUTOMATED_OUTREACH_NEW`
- `UNLICENSED_ACTIVITY`

Any trigger in `hard_triggers_detected` forces `escalation_required = true`.
Schema validator enforces this cross-field invariant.

---

## Structured Output (Required)

Emit a YAML block keyed `LC_EVALUATION` conforming to `schemas/lc-evaluation.schema.json`:

```yaml
LC_EVALUATION:
  audit:
    artifact_hash: ""
    artifact_source: ""
    methodology_version: "1.1.0"
    taxonomy_version: "1.1.0"
    model_id: ""
    reviewer_session_id: ""
    emitted_at: ""                    # ISO 8601
  artifact_type: ""
  review_mode: ""
  confidence: ""
  feature_name: ""
  product_area: ""
  risk_profile:
    regulatory_risk: null
    consumer_harm_risk: null
    enforcement_risk: null
    ambiguity_risk: null
    operational_risk: null
    context_insufficiency_risk: null
  weighted_score: null               # from scorer
  risk_tier: null                    # from scorer
  risk_tier_label: ""                # from scorer
  decision: ""                       # from scorer
  escalation_required: false         # from scorer
  escalation_basis: []
  hard_triggers_detected: []         # enum from taxonomy
  appetite_breaches: []              # from scorer
  required_approvals: []
  required_actions: []
  compliance_handoff_required: false
  self_critique:                     # required if risk_tier >= 2
    performed: false
    counter_arguments_considered: []
    disconfirming_evidence_sought: []
    alternative_framings: []
    residual_confidence: ""
  disclosures_summary: ""
  data_flow_summary: ""
  reg_summary: ""
  tos_policy_summary: ""
```

---

## Human-in-the-Loop Rules

Mandatory escalation when:
- Tier 2 or Tier 3 risk
- LOW confidence with meaningful sensitivity
- ambiguity affects legality or customer impact
- new legal interpretation required
- internal position unclear or missing
- any hard trigger detected

The post-tool-use hook will fail the emission if `hard_triggers_detected` is
non-empty and `escalation_required` is false.

---

## Compliance Integration

If system identifies control gaps, monitoring needs, disclosure dependencies,
or regulatory obligations, set `compliance_handoff_required: true` and name
the handoff target in `required_approvals[]`.

---

## Hard Constraints

- do not assume facts not in evidence without labeling them
- do not present inferred conclusions as certain
- do not issue `PROCEED` under LOW confidence (scorer enforces)
- do not suppress escalation due to business urgency
- do not compute weighted score, tier, or decision in-model (scorer does)
- do not skip self-critique for Tier ≥ 2 outputs
- do not omit audit metadata

---

## Non-Negotiable Steps

1. hash and log the artifact
2. interpret the artifact
3. assign confidence
4. detect sensitivity (including hard-trigger enum)
5. choose review mode
6. run structured analysis (validated)
7. emit raw risk scoring (validated)
8. run deterministic scorer
9. run self-critique if tier ≥ 2
10. run guardian review if tier ≥ 2 or any hard trigger (v1.2.0)
11. run adjudication on guardian dissent (v1.2.0)
12. validate LC_EVALUATION against schema
13. escalate when required

Failure to complete any step invalidates the review.
