-
Notifications
You must be signed in to change notification settings - Fork 0
fix(conftest): add missing timedelta import, harden test fixtures (F8) #50
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
8668aff
477d4c0
b90398d
e246fa6
201d8be
db06ce6
e195ae7
1c52721
02243ad
646f6f3
34f5339
eb49527
f0ce1d5
7c2ad82
ea5e67b
35ee8c2
23b5b6f
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| 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. | ||
| --- | ||
|
|
||
| ## 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 | ||
| 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
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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 Suggested patch **Verdict summary:** 0 verified, 0 unverified, 4 manual review.
+
---📝 Committable suggestion
Suggested change
🧰 Tools🪛 markdownlint-cli2 (0.22.1)[warning] 73-73: Heading style (MD003, heading-style) 🤖 Prompt for AI AgentsSource: 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 |
There was a problem hiding this comment.
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
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 62-62: Heading style
Expected: atx; Actual: setext
(MD003, heading-style)
🤖 Prompt for AI Agents
Source: Linters/SAST tools