Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
8668aff
chore(pipeline): launch-brief artifacts
ImmortalDemonGod Jun 24, 2026
477d4c0
docs(tests): add conftest.py bug catalog for F8 missing-timedelta-imp…
ImmortalDemonGod Jun 24, 2026
b90398d
test(conftest): RED tests for F8 missing timedelta import in conftest…
ImmortalDemonGod Jun 24, 2026
e246fa6
docs(aiv): verification packet for change 'flashcore-f8-tests'
ImmortalDemonGod Jun 24, 2026
201d8be
docs(aiv): fix packet — add Class F Claim 6 provenance binding to sat…
ImmortalDemonGod Jun 24, 2026
db06ce6
test(conftest): extend datetime import to include timedelta
ImmortalDemonGod Jun 24, 2026
e195ae7
test(conftest): add sys.path teardown removal to go_to_tmpdir fixture
ImmortalDemonGod Jun 24, 2026
1c52721
test(conftest): replace constant card UUID literals with uuid4() for …
ImmortalDemonGod Jun 24, 2026
02243ad
docs(aiv): verification packet for change 'flashcore-f8-impl'
ImmortalDemonGod Jun 24, 2026
646f6f3
docs(aiv): correct packet — add Class E/A/C/D/F sections, rephrase cl…
ImmortalDemonGod Jun 24, 2026
34f5339
chore(pipeline): prove-it artifacts
ImmortalDemonGod Jun 24, 2026
eb49527
test(conftest): strengthen sys.path cleanup regression test with modu…
ImmortalDemonGod Jun 24, 2026
f0ce1d5
docs(aiv): correct packet repository field — aiv-protocol -> flashcore
ImmortalDemonGod Jun 24, 2026
7c2ad82
docs(aiv): verification packet for change 'flashcore-f8-crv1'
ImmortalDemonGod Jun 24, 2026
ea5e67b
docs(aiv): correct packet flashcore-f8-crv1 — add Class A/C/D/E/F sec…
ImmortalDemonGod Jun 24, 2026
35ee8c2
style: format review_ui.py with black
ImmortalDemonGod Jun 24, 2026
23b5b6f
style: format test_conftest_review_fixtures.py with black
ImmortalDemonGod Jun 24, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 42 additions & 17 deletions .github/aiv-evidence/EVIDENCE_FLASHCORE_CLI_REVIEW_UI.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# AIV Evidence File (v1.0)

**File:** `flashcore/cli/review_ui.py`
**Commit:** `7911e17`
**Previous:** `c029942`
**Generated:** 2026-06-19T21:43:46Z
**Commit:** `ea5e67b`
**Previous:** `1287d7c`
**Generated:** 2026-06-24T18:33:41Z
**Protocol:** AIV v2.0 + Addendum 2.7 (Zero-Touch Mandate)

---
Expand All @@ -16,14 +16,14 @@ classification:
sod_mode: S0
critical_surfaces: []
blast_radius: "flashcore/cli/review_ui.py"
classification_rationale: "R0: formatting-only; no logic change"
classified_by: "Claude"
classified_at: "2026-06-19T21:43:46Z"
classification_rationale: "Format review_ui.py with black to satisfy CI linter"
classified_by: "Miguel Ingram"
classified_at: "2026-06-24T18:33:41Z"
```

## Claim(s)

1. black -l 79 applied to flashcore/cli/review_ui.py, tests/cli/test_review_ui.py, tests/cli/test_main.py; make lint now exits 0
1. flashcore/cli/review_ui.py conforms to PEP 8/black formatting rules
2. No existing tests were modified or deleted during this change.

---
Expand All @@ -32,31 +32,56 @@ classification:

### Class E (Intent Alignment)

- **Link:** [https://github.com/ImmortalDemonGod/flashcore/blob/5bb2ea2ab72239e0d2de7cc51fd4b5b766e44bfb/audit/02-static-audit.md#L92](https://github.com/ImmortalDemonGod/flashcore/blob/5bb2ea2ab72239e0d2de7cc51fd4b5b766e44bfb/audit/02-static-audit.md#L92)
- **Requirements Verified:** lint gate [10]
- **Link:** [https://github.com/ImmortalDemonGod/flashcore/blob/fb1ae5a1c1893939f4ff4f82cbd09d4e90f8e965/audit/02-static-audit.md#L18](https://github.com/ImmortalDemonGod/flashcore/blob/fb1ae5a1c1893939f4ff4f82cbd09d4e90f8e965/audit/02-static-audit.md#L18)
- **Requirements Verified:** CI lint check: ensure review_ui.py passes black formatting checks

### Class B (Referential Evidence)

**Scope Inventory** (SHA: [`7911e17`](https://github.com/ImmortalDemonGod/flashcore/tree/7911e179ccf0cb626dce97bc8775297a87991a79))
**Scope Inventory** (SHA: [`ea5e67b`](https://github.com/ImmortalDemonGod/flashcore/tree/ea5e67b7e3b9d18a66565dca8389477a3fe53902))

- [`flashcore/cli/review_ui.py#L145-L147`](https://github.com/ImmortalDemonGod/flashcore/blob/7911e179ccf0cb626dce97bc8775297a87991a79/flashcore/cli/review_ui.py#L145-L147)
- [`flashcore/cli/review_ui.py#L125-L127`](https://github.com/ImmortalDemonGod/flashcore/blob/ea5e67b7e3b9d18a66565dca8389477a3fe53902/flashcore/cli/review_ui.py#L125-L127)

### Class A (Execution Evidence)

- Local checks skipped (--skip-checks).
- **Skip reason:** Black formatting only; no logic changed
**Per-symbol test coverage (AST analysis):**

- **`start_review_flow`** (L125-L127): PASS -- 11 test(s) call `start_review_flow` directly
- `tests/cli/test_review_ui.py::test_start_review_flow_no_due_cards`
- `tests/cli/test_review_ui.py::test_start_review_flow_with_one_card`
- `tests/cli/test_review_ui.py::test_start_review_flow_invalid_rating_input`
- `tests/cli/test_review_ui.py::test_start_review_flow_submit_review_exception`
- `tests/cli/test_review_ui.py::test_start_review_flow_card_without_next_due_date`
- `tests/cli/test_review_ui.py::test_start_review_flow_submit_returns_none`
- `tests/cli/test_review_ui.py::test_all_submit_review_fail_output_omits_well_done_guards_against_false_success_message`
- `tests/cli/test_review_ui.py::test_persistent_submit_failure_retries_same_card_guards_against_infinite_retry_loop`
- `tests/cli/test_review_ui.py::test_start_review_flow_all_fail_suppresses_well_done`
- `tests/cli/test_review_ui.py::test_start_review_flow_success_emits_well_done`

**Coverage summary:** 1/1 symbols verified by tests.

### Code Quality (Linting & Types)

- **ruff:** All checks passed
- **mypy:** Success: no issues found in 1 source file

## Claim Verification Matrix

| # | Claim | Type | Evidence | Verdict |
|---|-------|------|----------|---------|
| 1 | flashcore/cli/review_ui.py conforms to PEP 8/black formattin... | tooling | Class A: ruff: clean, mypy: clean | PASS VERIFIED |
| 2 | No existing tests were modified or deleted during this chang... | structural | Class C not collected | REVIEW MANUAL REVIEW |

**Verdict summary:** 1 verified, 0 unverified, 1 manual review.
---

## Verification Methodology

**R0 (trivial) -- local checks skipped.**
**Reason:** Black formatting only; no logic changed
Only git diff scope inventory was collected. No execution evidence.
**Zero-Touch Mandate:** Verifier inspects artifacts only.
Evidence collected by `aiv commit` running: git diff (scope inventory), AST symbol-to-test binding (1/1 symbols verified).
Ruff/mypy results are in Code Quality (not Class A) because they prove syntax/types, not behavior.

---

## Summary

Black formatting to satisfy make lint (CI determinism)
Format review_ui.py using black to fix CI linter failures
75 changes: 75 additions & 0 deletions .github/aiv-evidence/EVIDENCE_TESTS_CONFTEST.BUG_CATALOG.MD.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# AIV Evidence File (v1.0)

**File:** `tests/conftest.bug-catalog.md`
**Commit:** `8668aff`
**Generated:** 2026-06-24T06:36:16Z
**Protocol:** AIV v2.0 + Addendum 2.7 (Zero-Touch Mandate)

---

## Classification (required)

```yaml
classification:
risk_tier: R1
sod_mode: S0
critical_surfaces: []
blast_radius: "tests/conftest.bug-catalog.md"
classification_rationale: "R1: documentation artifact that anchors the test strategy; no logic changes"
classified_by: "Miguel Ingram"
classified_at: "2026-06-24T06:36:16Z"
```

## Claim(s)

1. Bug catalog documents BUG-01 (NameError: timedelta not imported), BUG-02 (non-deterministic next_due), and BUG-03 (sys.path leak) with blast-radius ranking and explicit skip list
2. Skipped section enumerates four explicitly deferred bugs with deferral justifications
3. No existing tests were modified or deleted during this change.

---

## Evidence

### Class E (Intent Alignment)

- **Link:** [https://github.com/ImmortalDemonGod/flashcore/blob/fb1ae5a1c1893939f4ff4f82cbd09d4e90f8e965/audit/02-static-audit.md#L18](https://github.com/ImmortalDemonGod/flashcore/blob/fb1ae5a1c1893939f4ff4f82cbd09d4e90f8e965/audit/02-static-audit.md#L18)
- **Requirements Verified:** design-tests skill: deliver bug-catalog.md as first commit before writing tests

### Class B (Referential Evidence)

**Scope Inventory** (SHA: [`8668aff`](https://github.com/ImmortalDemonGod/flashcore/tree/8668affb1dc5e2aa016d350c0e49a05fef086c94))

- [`tests/conftest.bug-catalog.md#L1-L115`](https://github.com/ImmortalDemonGod/flashcore/blob/8668affb1dc5e2aa016d350c0e49a05fef086c94/tests/conftest.bug-catalog.md#L1-L115)

### Class A (Execution Evidence)

**WARNING:** No tests found that directly import or reference the changed file.
This file has no claim-specific execution evidence.

### Code Quality (Linting & Types)

- **ruff:** All checks passed
- **mypy:** Found 1 error in 1 file (errors prevented further checking)

## Claim Verification Matrix

| # | Claim | Type | Evidence | Verdict |
|---|-------|------|----------|---------|
| 1 | Bug catalog documents BUG-01 (NameError: timedelta not impor... | unresolved | No automatic binding available | REVIEW MANUAL REVIEW |
| 2 | Skipped section enumerates four explicitly deferred bugs wit... | unresolved | No automatic binding available | REVIEW MANUAL REVIEW |
| 3 | No existing tests were modified or deleted during this chang... | structural | Class C not collected | REVIEW MANUAL REVIEW |

**Verdict summary:** 0 verified, 0 unverified, 3 manual review.
---
Comment on lines +62 to +63

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Fix markdown heading-style ambiguity before the horizontal rule.

Line 62 followed directly by --- on Line 63 is interpreted as setext heading style (MD003). Add a blank line before the rule.

Suggested patch
 **Verdict summary:** 0 verified, 0 unverified, 3 manual review.
+
 ---
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
**Verdict summary:** 0 verified, 0 unverified, 3 manual review.
---
**Verdict summary:** 0 verified, 0 unverified, 3 manual review.
---
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 62-62: Heading style
Expected: atx; Actual: setext

(MD003, heading-style)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/aiv-evidence/EVIDENCE_TESTS_CONFTEST.BUG_CATALOG.MD.md around lines
62 - 63, The markdown at the end of the verdict summary is ambiguous because the
line with --- is being read as setext heading syntax instead of a horizontal
rule. Update the content around the verdict summary section so the rule is
separated by a blank line, keeping the heading-like text and the horizontal rule
distinct in EVIDENCE_TESTS_CONFTEST.BUG_CATALOG.MD.md.

Source: Linters/SAST tools


## Verification Methodology

**Zero-Touch Mandate:** Verifier inspects artifacts only.
Evidence collected by `aiv commit` running: git diff (scope inventory), pytest (no claim-specific tests found).
Ruff/mypy results are in Code Quality (not Class A) because they prove syntax/types, not behavior.

---

## Summary

Bug catalog for conftest.py F8 finding — missing timedelta import and related fixture risks
86 changes: 86 additions & 0 deletions .github/aiv-evidence/EVIDENCE_TESTS_CONFTEST.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# AIV Evidence File (v1.0)

**File:** `tests/conftest.py`
**Commit:** `e195ae7`
**Previous:** `e195ae7`
**Generated:** 2026-06-24T06:55:07Z
**Protocol:** AIV v2.0 + Addendum 2.7 (Zero-Touch Mandate)

---

## Classification (required)

```yaml
classification:
risk_tier: R1
sod_mode: S0
critical_surfaces: []
blast_radius: "tests/conftest.py"
classification_rationale: "R1: test-fixture UUID generation change; no production logic, no schema, no DB, no CLI path touched"
classified_by: "Miguel Ingram"
classified_at: "2026-06-24T06:55:07Z"
```

## Claim(s)

1. import uuid added to conftest.py import block; three card fixture definitions updated to use str(uuid.uuid4()) for the uuid field — producing distinct UUIDs on every test run
2. conftest card fixtures produce distinct UUIDs across runs; no test outside test_db.py asserts against conftest card fixture UUID literals
3. full suite count not lower than baseline 480 collected 1 skipped with uuid4 card fixtures active
4. No existing tests were modified or deleted during this change.

---

## Evidence

### Class E (Intent Alignment)

- **Link:** [https://github.com/ImmortalDemonGod/flashcore/blob/fb1ae5a1c1893939f4ff4f82cbd09d4e90f8e965/audit/02-static-audit.md#L18](https://github.com/ImmortalDemonGod/flashcore/blob/fb1ae5a1c1893939f4ff4f82cbd09d4e90f8e965/audit/02-static-audit.md#L18)
- **Requirements Verified:** conftest card fixtures produce distinct UUIDs across runs per finding GOAL clause 2

### Class B (Referential Evidence)

**Scope Inventory** (SHA: [`e195ae7`](https://github.com/ImmortalDemonGod/flashcore/tree/e195ae76a6f715855b520c8a160836dfec957932))

- [`tests/conftest.py#L2`](https://github.com/ImmortalDemonGod/flashcore/blob/e195ae76a6f715855b520c8a160836dfec957932/tests/conftest.py#L2)
- [`tests/conftest.py#L120`](https://github.com/ImmortalDemonGod/flashcore/blob/e195ae76a6f715855b520c8a160836dfec957932/tests/conftest.py#L120)
- [`tests/conftest.py#L139`](https://github.com/ImmortalDemonGod/flashcore/blob/e195ae76a6f715855b520c8a160836dfec957932/tests/conftest.py#L139)
- [`tests/conftest.py#L161`](https://github.com/ImmortalDemonGod/flashcore/blob/e195ae76a6f715855b520c8a160836dfec957932/tests/conftest.py#L161)

### Class A (Execution Evidence)

**Per-symbol test coverage (AST analysis):**

- **`sample_card1`** (L2): FAIL -- WARNING: No tests import or call `sample_card1`
- **`sample_card2`** (L120): FAIL -- WARNING: No tests import or call `sample_card2`
- **`sample_card3_deck_b`** (L139): FAIL -- WARNING: No tests import or call `sample_card3_deck_b`

**Coverage summary:** 0/3 symbols verified by tests.

### Code Quality (Linting & Types)

- **ruff:** 13 error(s)
- **mypy:** Found 3 errors in 1 file (checked 1 source file)

## Claim Verification Matrix

| # | Claim | Type | Evidence | Verdict |
|---|-------|------|----------|---------|
| 1 | import uuid added to conftest.py import block; three card fi... | unresolved | No automatic binding available | REVIEW MANUAL REVIEW |
| 2 | conftest card fixtures produce distinct UUIDs across runs; n... | unresolved | No automatic binding available | REVIEW MANUAL REVIEW |
| 3 | full suite count not lower than baseline 480 collected 1 ski... | unresolved | No automatic binding available | REVIEW MANUAL REVIEW |
| 4 | No existing tests were modified or deleted during this chang... | structural | Class C not collected | REVIEW MANUAL REVIEW |

**Verdict summary:** 0 verified, 0 unverified, 4 manual review.
---
Comment on lines +73 to +74

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Resolve markdownlint MD003 near the verdict summary.

Line 73 is directly followed by --- on Line 74, which is parsed as setext heading style. Insert a blank line before the rule.

Suggested patch
 **Verdict summary:** 0 verified, 0 unverified, 4 manual review.
+
 ---
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
**Verdict summary:** 0 verified, 0 unverified, 4 manual review.
---
**Verdict summary:** 0 verified, 0 unverified, 4 manual review.
---
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 73-73: Heading style
Expected: atx; Actual: setext

(MD003, heading-style)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/aiv-evidence/EVIDENCE_TESTS_CONFTEST.md around lines 73 - 74, The
verdict summary section is being parsed as a setext heading because the `---`
rule follows it immediately; update the Markdown around the verdict summary in
EVIDENCE_TESTS_CONFTEST.md to insert a blank line before the horizontal rule so
it is treated as a proper separator. Keep the change localized near the verdict
summary block and verify the surrounding Markdown renders without triggering
markdownlint MD003.

Source: Linters/SAST tools


## Verification Methodology

**Zero-Touch Mandate:** Verifier inspects artifacts only.
Evidence collected by `aiv commit` running: git diff (scope inventory), AST symbol-to-test binding (0/3 symbols verified).
Ruff/mypy results are in Code Quality (not Class A) because they prove syntax/types, not behavior.

---

## Summary

Switch conftest card fixtures from constant UUID literals to uuid4() to satisfy GOAL clause 2
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
# AIV Evidence File (v1.0)

**File:** `tests/test_conftest_review_fixtures.py`
**Commit:** `35ee8c2`
**Previous:** `eb49527`
**Generated:** 2026-06-24T18:34:06Z
**Protocol:** AIV v2.0 + Addendum 2.7 (Zero-Touch Mandate)

---

## Classification (required)

```yaml
classification:
risk_tier: R0
sod_mode: S0
critical_surfaces: []
blast_radius: "tests/test_conftest_review_fixtures.py"
classification_rationale: "Format test_conftest_review_fixtures.py with black to satisfy CI linter"
classified_by: "Miguel Ingram"
classified_at: "2026-06-24T18:34:06Z"
```

## Claim(s)

1. tests/test_conftest_review_fixtures.py conforms to PEP 8/black formatting rules
2. No existing tests were modified or deleted during this change.

---

## Evidence

### Class E (Intent Alignment)

- **Link:** [https://github.com/ImmortalDemonGod/flashcore/blob/fb1ae5a1c1893939f4ff4f82cbd09d4e90f8e965/audit/02-static-audit.md#L18](https://github.com/ImmortalDemonGod/flashcore/blob/fb1ae5a1c1893939f4ff4f82cbd09d4e90f8e965/audit/02-static-audit.md#L18)
- **Requirements Verified:** CI lint check: ensure test_conftest_review_fixtures.py passes black formatting checks

### Class B (Referential Evidence)

**Scope Inventory** (SHA: [`35ee8c2`](https://github.com/ImmortalDemonGod/flashcore/tree/35ee8c2cb832c025ebfea3e5277c0b4759746351))

- [`tests/test_conftest_review_fixtures.py#L22-L24`](https://github.com/ImmortalDemonGod/flashcore/blob/35ee8c2cb832c025ebfea3e5277c0b4759746351/tests/test_conftest_review_fixtures.py#L22-L24)
- [`tests/test_conftest_review_fixtures.py#L37-L39`](https://github.com/ImmortalDemonGod/flashcore/blob/35ee8c2cb832c025ebfea3e5277c0b4759746351/tests/test_conftest_review_fixtures.py#L37-L39)
- [`tests/test_conftest_review_fixtures.py#L54-L56`](https://github.com/ImmortalDemonGod/flashcore/blob/35ee8c2cb832c025ebfea3e5277c0b4759746351/tests/test_conftest_review_fixtures.py#L54-L56)
- [`tests/test_conftest_review_fixtures.py#L75-L77`](https://github.com/ImmortalDemonGod/flashcore/blob/35ee8c2cb832c025ebfea3e5277c0b4759746351/tests/test_conftest_review_fixtures.py#L75-L77)
- [`tests/test_conftest_review_fixtures.py#L97-L99`](https://github.com/ImmortalDemonGod/flashcore/blob/35ee8c2cb832c025ebfea3e5277c0b4759746351/tests/test_conftest_review_fixtures.py#L97-L99)
- [`tests/test_conftest_review_fixtures.py#L107-L109`](https://github.com/ImmortalDemonGod/flashcore/blob/35ee8c2cb832c025ebfea3e5277c0b4759746351/tests/test_conftest_review_fixtures.py#L107-L109)

### Class A (Execution Evidence)

**Per-symbol test coverage (AST analysis):**

- **`test_sample_review1_fixture_resolves_without_nameerror`** (L22-L24): FAIL -- WARNING: No tests import or call `test_sample_review1_fixture_resolves_without_nameerror`
- **`test_sample_review2_fixture_resolves_without_nameerror`** (L37-L39): FAIL -- WARNING: No tests import or call `test_sample_review2_fixture_resolves_without_nameerror`
- **`test_conftest_missing_timedelta_import_is_root_cause`** (L54-L56): FAIL -- WARNING: No tests import or call `test_conftest_missing_timedelta_import_is_root_cause`
- **`test_sample_review2_next_due_is_relative_to_today`** (L75-L77): FAIL -- WARNING: No tests import or call `test_sample_review2_next_due_is_relative_to_today`
- **`_bug03_path_leak_checker`** (L97-L99): FAIL -- WARNING: No tests import or call `_bug03_path_leak_checker`
- **`test_go_to_tmpdir_does_not_leak_path_after_teardown`** (L107-L109): FAIL -- WARNING: No tests import or call `test_go_to_tmpdir_does_not_leak_path_after_teardown`

**Coverage summary:** 0/6 symbols verified by tests.

### Code Quality (Linting & Types)

- **ruff:** All checks passed
- **mypy:** Found 3 errors in 1 file (checked 1 source file)

## Claim Verification Matrix

| # | Claim | Type | Evidence | Verdict |
|---|-------|------|----------|---------|
| 1 | tests/test_conftest_review_fixtures.py conforms to PEP 8/bla... | tooling | Class A: ruff: clean, mypy: errors | FAIL UNVERIFIED |
| 2 | No existing tests were modified or deleted during this chang... | structural | Class C not collected | REVIEW MANUAL REVIEW |

**Verdict summary:** 0 verified, 1 unverified, 1 manual review.
---

## Verification Methodology

**Zero-Touch Mandate:** Verifier inspects artifacts only.
Evidence collected by `aiv commit` running: git diff (scope inventory), AST symbol-to-test binding (0/6 symbols verified).
Ruff/mypy results are in Code Quality (not Class A) because they prove syntax/types, not behavior.

---

## Summary

Format test_conftest_review_fixtures.py using black to fix CI linter failures
Loading
Loading