57 lines
2.8 KiB
JSON
57 lines
2.8 KiB
JSON
{
|
|
"schema": "gitea-agent.finding-matrix/v1",
|
|
"owner": "jsfamily",
|
|
"repository": "jarca-ledger-mcp",
|
|
"issue": 12,
|
|
"pull_request": 13,
|
|
"review_id": 61,
|
|
"reviewed_parent_sha": "5e721b0ddd648f3e80f341a3c304d1cc3ca47ee8",
|
|
"reviewed_head": "1b9eda683c66d3c7129716b9899eddf61df3362d",
|
|
"implementation_parent": "b8b8811a2a50371795a02e4fa65f097c9d9508ac",
|
|
"findings": [
|
|
{
|
|
"id": "N01-loan-balance-definition",
|
|
"classification": "implementation_defect",
|
|
"status": "resolved_and_verified_at_source_head",
|
|
"root_cause": "Internal candidate writers could persist loan balance evidence without an explicit representative liability definition, and unsupported loan purposes could bypass the definition rule.",
|
|
"tests": [
|
|
"test_direct_loan_candidate_requires_liability_definition_and_writes_nothing",
|
|
"test_import_loan_candidate_requires_liability_definition_and_writes_nothing",
|
|
"test_dated_loan_create_and_historical_update_preserve_current_cache_without_valuations",
|
|
"test_loan_cash_balance_and_total_value_are_rejected_without_writes",
|
|
"test_loan_import_preserves_transactions_and_current_cache_without_valuation_candidate"
|
|
],
|
|
"changed_paths": [
|
|
"jarca_ledger_mcp/application/account_valuation_service.py",
|
|
"tests/test_account_valuation_edge_contracts.py",
|
|
"tests/test_issue_12_review59_account.py",
|
|
"docs/data-model.md",
|
|
"docs/interface-contract.md",
|
|
"docs/requirements/req-003_account-valuation-history.md"
|
|
]
|
|
},
|
|
{
|
|
"id": "N01-account-type-conversion-bypass",
|
|
"classification": "implementation_defect",
|
|
"status": "resolved",
|
|
"root_cause": "update_ledger_account allowed a non-loan account with definition-less historical valuations to become a loan account without validating the persisted history.",
|
|
"named_regression": "test_bank_to_loan_conversion_rejects_existing_undefined_valuation_without_mutation",
|
|
"positive_regression": "test_bank_to_loan_conversion_without_valuations_remains_allowed",
|
|
"red_evidence": "docs/verification/issue-12-review-61/red-evidence.json",
|
|
"minimal_fix": "Reject non-loan to loan conversion before mutation when any attached valuation lacks one of the two explicit valid representative liability definitions.",
|
|
"changed_paths": [
|
|
"jarca_ledger_mcp/application/accounts_write_services.py",
|
|
"tests/test_account_valuation_edge_contracts.py",
|
|
"docs/data-model.md",
|
|
"docs/interface-contract.md",
|
|
"docs/requirements/req-003_account-valuation-history.md"
|
|
],
|
|
"risks": [
|
|
"Do not infer or backfill a liability definition.",
|
|
"Do not reject conversion when no valuation history exists.",
|
|
"Do not partially mutate account or valuation history on rejection."
|
|
]
|
|
}
|
|
]
|
|
}
|