---
phase: 07-verification-and-closure
plan: 02
type: execute
wave: 1
depends_on: []
files_modified:
  - .planning/phases/07-verification-and-closure/07-VERIFICATION-REPORT.md
autonomous: false
requirements:
  - VERIFY-SC1
  - VERIFY-SC2
  - VERIFY-SC3
  - VERIFY-SC4
  - VERIFY-SC5
  - VERIFY-SC6

must_haves:
  truths:
    - "CI workflows (PullRequestCI, MainDistributionPipeline, CodeQuality) confirmed passing on GitHub"
    - "Full SQLLogicTest suite passes locally"
    - "DuckLake/Iceberg integration test passes locally"
    - "DuckDB Version Monitor workflow completes without error"
    - "All 3 fuzz targets run without crashes on nightly toolchain"
    - "MAINTAINER.md reviewed for readability (or deferred with justification)"
  artifacts:
    - path: ".planning/phases/07-verification-and-closure/07-VERIFICATION-REPORT.md"
      provides: "Verification evidence table with pass/fail status and evidence links"
      contains: "Verification Results"
  key_links:
    - from: "07-VERIFICATION-REPORT.md"
      to: ".planning/v1.0-MILESTONE-AUDIT.md"
      via: "Each row maps to an audit human-verification item"
      pattern: "PASS|FAIL|DEFERRED"
---

<objective>
Execute the 8 human verification tasks from the v1.0 milestone audit and record results in a verification report.

Purpose: Close all "human verification needed" items from the milestone audit. These tasks require a live environment (GitHub Actions, nightly Rust toolchain, DuckLake setup) and cannot be fully automated in a sandboxed agent context.

Output: `07-VERIFICATION-REPORT.md` with pass/fail evidence for each item
</objective>

<execution_context>
@/Users/paul/.claude/get-shit-done/workflows/execute-plan.md
@/Users/paul/.claude/get-shit-done/templates/summary.md
</execution_context>

<context>
@.planning/STATE.md
@.planning/ROADMAP.md
@.planning/v1.0-MILESTONE-AUDIT.md
@.planning/phases/07-verification-and-closure/07-RESEARCH.md
</context>

<tasks>

<task type="auto">
  <name>Task 1: Run automated verification checks (CI status, local tests, fuzz targets)</name>
  <files>.planning/phases/07-verification-and-closure/07-VERIFICATION-REPORT.md</files>
  <action>
Execute the following verification steps in order, capturing output for the verification report. Some steps require tools that may not be available in the sandbox -- attempt each and record the result (PASS, FAIL, or BLOCKED with reason).

**Step 1: Check CI workflow status on GitHub**
```bash
# Check if remote is configured and code is pushed
git remote -v
git log --oneline -1 origin/main 2>/dev/null

# Check recent CI runs
gh run list --workflow=CodeQuality.yml --limit=1 --json status,conclusion,url 2>/dev/null
gh run list --workflow=MainDistributionPipeline.yml --limit=1 --json status,conclusion,url 2>/dev/null
gh run list --workflow=PullRequestCI.yml --limit=1 --json status,conclusion,url 2>/dev/null
```

**Step 2: Trigger DuckDB Version Monitor**
```bash
gh workflow run DuckDBVersionMonitor.yml 2>/dev/null
# Wait briefly then check status
gh run list --workflow=DuckDBVersionMonitor.yml --limit=1 --json status,conclusion,url 2>/dev/null
```

**Step 3: Run SQLLogicTest suite locally**
```bash
just test-sql 2>&1 | tail -20
```

**Step 4: Run DuckLake/Iceberg integration test**
```bash
just setup-ducklake 2>&1 | tail -10
just test-iceberg 2>&1 | tail -20
```

**Step 5: Run fuzz targets (requires nightly)**
```bash
cargo +nightly --version 2>/dev/null
just fuzz fuzz_json_parse 10 2>&1 | tail -5
just fuzz fuzz_sql_expand 10 2>&1 | tail -5
just fuzz fuzz_query_names 10 2>&1 | tail -5
```

For each step, record:
- Status: PASS / FAIL / BLOCKED (with reason)
- Evidence: command output summary or gh run URL

Create `07-VERIFICATION-REPORT.md` with a table in this format:

```markdown
# Phase 7: Verification Report

**Date:** {today}
**Commit:** {HEAD sha}

## Verification Results

| # | Item | Status | Evidence |
|---|------|--------|----------|
| 1 | CI: CodeQuality | {status} | {evidence} |
| 2 | CI: MainDistributionPipeline | {status} | {evidence} |
| 3 | CI: PullRequestCI | {status} | {evidence} |
| 4 | DuckDB Version Monitor | {status} | {evidence} |
| 5 | just test-sql | {status} | {evidence} |
| 6 | just test-iceberg | {status} | {evidence} |
| 7 | Fuzz: fuzz_json_parse | {status} | {evidence} |
| 8 | Fuzz: fuzz_sql_expand | {status} | {evidence} |
| 9 | Fuzz: fuzz_query_names | {status} | {evidence} |

## MAINTAINER.md Readability Review

Status: DEFERRED (or results if review was possible)
Reason: {justification per research -- acceptable fallback is self-review noting areas of concern}

## Summary

{N}/10 items PASS, {M} BLOCKED, {K} FAIL
```

If any item fails, note the failure clearly but do not block the report creation. The report is the deliverable regardless of individual pass/fail status.
  </action>
  <verify>
    <automated>test -f .planning/phases/07-verification-and-closure/07-VERIFICATION-REPORT.md && grep -q "Verification Results" .planning/phases/07-verification-and-closure/07-VERIFICATION-REPORT.md && echo "PASS"</automated>
  </verify>
  <done>07-VERIFICATION-REPORT.md exists with a status entry for every verification item. Each item has PASS, FAIL, or BLOCKED with evidence. The MAINTAINER.md review has a status (even if DEFERRED).</done>
</task>

<task type="checkpoint:human-verify" gate="blocking">
  <name>Task 2: Human review and approval of verification report</name>
  <files>.planning/phases/07-verification-and-closure/07-VERIFICATION-REPORT.md</files>
  <action>
Human reviews the verification report and resolves any BLOCKED items by running the commands themselves.

What was built: Verification report covering all 8 human verification items from the v1.0 milestone audit. Automated checks were attempted and results recorded. Items that could not be verified in sandbox (e.g., GitHub Actions, nightly toolchain) are marked BLOCKED.

How to verify:
1. Review the verification report at `.planning/phases/07-verification-and-closure/07-VERIFICATION-REPORT.md`
2. For any BLOCKED items, run the commands yourself:
   - CI: Visit GitHub Actions tab or run `gh run list --workflow={name}.yml`
   - Fuzz: Run `just fuzz fuzz_json_parse 10` (requires `rustup install nightly`)
   - DuckLake: Run `just setup-ducklake && just test-iceberg`
3. For MAINTAINER.md review: Either review yourself or note as a pre-release task
4. Update any BLOCKED items to PASS/FAIL based on your results
5. Confirm the overall summary line is accurate

Resume signal: Type "approved" if the report is acceptable (BLOCKED items are fine to defer), or describe any issues that need fixing.
  </action>
  <verify>
    <automated>grep -c "PASS\|FAIL\|BLOCKED\|DEFERRED" .planning/phases/07-verification-and-closure/07-VERIFICATION-REPORT.md | xargs test 0 -lt && echo "PASS"</automated>
  </verify>
  <done>Human has reviewed the verification report, resolved BLOCKED items where possible, and approved the final state for milestone closure.</done>
</task>

</tasks>

<verification>
1. `07-VERIFICATION-REPORT.md` exists in phase directory
2. Contains a row for each of the 10 verification items (3 CI + version monitor + test-sql + test-iceberg + 3 fuzz)
3. MAINTAINER.md review has a status line
4. Human has reviewed and approved the report
</verification>

<success_criteria>
- All verification items have a recorded status (PASS, FAIL, or BLOCKED with justification)
- Human has confirmed the report is acceptable for milestone closure
- No FAIL items remain unacknowledged
</success_criteria>

<output>
After completion, create `.planning/phases/07-verification-and-closure/07-02-SUMMARY.md`
</output>
