Document Review 65 verification plan

This commit is contained in:
2026-10-07 15:16:36 +00:00
parent 8caf1f8379
commit f49568273e
4 changed files with 174 additions and 0 deletions
@@ -0,0 +1,58 @@
{
"schema": "contract-preservation-inventory/v1",
"issue": 12,
"pull_request": 13,
"review_id": 65,
"reviewed_head": "fc2d2a6faeac3c64c0ed604f2aa1ad7c37c65570",
"source_revision": "8caf1f8379171a128a2c12971a2eadc9a324309a",
"contracts": [
{
"contract": "current cache balance is an exact integer or unknown NULL; zero remains a valid known balance",
"status": "preserved",
"preserved_by": [
"test_create_rejects_whitespace_or_non_integer_dated_balance_without_mutation",
"test_zero_dated_balance_and_valid_import_recovery"
]
},
{
"contract": "invalid dated account creation fails with validation_error before account or valuation mutation",
"status": "preserved",
"preserved_by": [
"test_create_rejects_whitespace_or_non_integer_dated_balance_without_mutation"
]
},
{
"contract": "a valid dated import can establish current cache and append a valuation after invalid create attempts are rejected",
"status": "preserved",
"preserved_by": [
"test_zero_dated_balance_and_valid_import_recovery",
"test_late_import_current_balance_is_authoritative_by_evidence_basis_date"
]
},
{
"contract": "unknown basis remains distinct from last_synced_at and historical imports cannot roll back a newer usable cache",
"status": "preserved",
"preserved_by": [
"test_account_write_sync_timestamp_does_not_infer_balance_basis_or_candidate",
"test_unknown_legacy_balance_basis_is_not_reported_as_valuation_date",
"review65-focused-regressions"
]
},
{
"contract": "all prior Issue 12 and Review 64 public envelopes, valuation selection, snapshot replay, read-only, migration, privacy, authentication, and menu semantics remain intact",
"status": "preserved",
"preserved_by": [
"review65-focused-regressions",
"review65-full-suite",
"review65-ruff",
"review65-compileall",
"review65-diff-check"
]
}
],
"missing": 0,
"ambiguous": 0,
"limitations": [
"Four fixture-dependent PDF tests remain skipped because private KB Bank and Toss Securities fixtures are unavailable."
]
}
@@ -0,0 +1,62 @@
{
"environment": ["os", "kernel", "architecture", "python", "uv"],
"command_env_allowlist": ["PATH", "HOME", "TMPDIR", "LANG", "VIRTUAL_ENV", "UV_CACHE_DIR"],
"secret_env_names": ["GITEA_TOKEN"],
"forbidden_regexes": [],
"hash_paths": [
"jarca_ledger_mcp/application/accounts_write_services.py",
"tests/test_import_current_balance_authority.py",
"tests/test_account_basis_public_consumers.py",
"tests/test_account_valuation_edge_contracts.py",
"tests/test_account_valuations.py",
"tests/test_issue_12_regressions.py",
"tests/test_issue_12_review63_accounts.py",
"docs/data-model.md",
"docs/requirements/req-003_account-valuation-history.md"
],
"commands": [
{
"id": "review65-focused-regressions",
"purpose": "Run Review 65 and preserved account authority regression coverage",
"argv": ["uv", "run", "--frozen", "--extra", "dev", "--extra", "dashboard", "pytest", "-o", "addopts=", "-q", "tests/test_import_current_balance_authority.py", "tests/test_account_basis_public_consumers.py", "tests/test_account_valuation_edge_contracts.py", "tests/test_account_valuations.py", "tests/test_issue_12_regressions.py", "tests/test_issue_12_review63_accounts.py"],
"expected_exit_code": 0,
"max_output_bytes": 65536,
"claims": ["review65-findings-green"]
},
{
"id": "review65-full-suite",
"purpose": "Run the canonical full repository suite at the functional source revision",
"argv": ["uv", "run", "--frozen", "--extra", "dev", "--extra", "dashboard", "pytest", "-o", "addopts=", "-q"],
"expected_exit_code": 0,
"max_output_bytes": 65536,
"claims": ["review65-full-suite"]
},
{
"id": "review65-ruff",
"purpose": "Run repository lint checks",
"argv": ["uv", "run", "--frozen", "--extra", "dev", "--extra", "dashboard", "ruff", "check", "."],
"expected_exit_code": 0,
"max_output_bytes": 65536,
"claims": ["review65-ruff"]
},
{
"id": "review65-compileall",
"purpose": "Compile package, dashboard, tests, and scripts",
"argv": ["uv", "run", "--frozen", "--extra", "dev", "--extra", "dashboard", "python", "-m", "compileall", "-q", "jarca_ledger_mcp", "dashboard", "tests", "scripts"],
"expected_exit_code": 0,
"max_output_bytes": 65536,
"claims": ["review65-compileall"]
},
{
"id": "review65-diff-check",
"purpose": "Check the complete pull-request diff for whitespace errors",
"argv": ["git", "diff", "--check", "main...HEAD"],
"expected_exit_code": 0,
"max_output_bytes": 65536,
"claims": ["review65-diff-check"]
}
],
"limitations": [
"Four PDF fixture tests are skipped because private KB Bank and Toss Securities PDF fixtures are unavailable."
]
}
@@ -0,0 +1,31 @@
{
"schema": "review-finding-matrix/v1",
"issue": 12,
"pull_request": 13,
"review_id": 65,
"reviewed_head": "fc2d2a6faeac3c64c0ed604f2aa1ad7c37c65570",
"source_revision": "8caf1f8379171a128a2c12971a2eadc9a324309a",
"contract_sha256": "6d86b591b022fcc722611bfec6d24e54a64216ab6f7c4098f357e25420218818",
"findings": [
{
"id": "C05-current-import-create",
"classification": "valid_fix",
"status": "resolved",
"production": "jarca_ledger_mcp/application/accounts_write_services.py",
"regressions": [
"test_create_rejects_whitespace_or_non_integer_dated_balance_without_mutation",
"test_zero_dated_balance_and_valid_import_recovery"
],
"claim": "account creation rejects unusable dated balances before mutation while preserving zero and later valid dated import authority"
},
{
"id": "IR-001-strict-integer-create",
"classification": "valid_fix",
"status": "resolved",
"production": "jarca_ledger_mcp/application/accounts_write_services.py",
"regression": "test_create_rejects_whitespace_or_non_integer_dated_balance_without_mutation",
"claim": "boolean and floating-point balances are rejected instead of coercing or truncating; canonical signed integer text remains compatible"
}
],
"green_evidence": "evidence-manifest.json"
}
@@ -0,0 +1,23 @@
{
"schema": "review-red-evidence/v1",
"issue": 12,
"pull_request": 13,
"review_id": 65,
"reviewed_head": "fc2d2a6faeac3c64c0ed604f2aa1ad7c37c65570",
"contract_sha256": "6d86b591b022fcc722611bfec6d24e54a64216ab6f7c4098f357e25420218818",
"reproductions": [
{
"id": "C05-current-import-create",
"command": "uv run pytest -q tests/test_import_current_balance_authority.py::test_create_rejects_whitespace_or_non_integer_dated_balance_without_mutation tests/test_import_current_balance_authority.py::test_zero_dated_balance_and_valid_import_recovery",
"exit_code": 1,
"observed": "invalid whitespace or non-integer dated balance creation returned success, persisted unusable cache authority, omitted its valuation candidate, and exposed ValueError to a public liquidity consumer"
},
{
"id": "IR-001-strict-integer-create",
"command": "uv run pytest -o addopts= -q tests/test_import_current_balance_authority.py::test_create_rejects_whitespace_or_non_integer_dated_balance_without_mutation",
"exit_code": 1,
"observed": "boolean and floating-point balances were accepted through int coercion and persisted values different from caller input"
}
],
"sensitive_data": "synthetic fixtures only; no credentials or real financial data"
}