Fix exact project escrow ledger scoping#210
Conversation
|
Findings Bounty Readiness
MergeOS automated readiness signals:
|
|
Maintenance note: I checked the failing Backend build and test job on this PR. The failure is the shared base/toolchain govulncheck issue from backend/go.mod using Go 1.25.10, not this PR's local test suite. govulncheck reports standard-library issues GO-2026-5039 and GO-2026-5037 fixed in Go 1.25.11 before project tests run. I opened #218 to bump backend/go.mod to Go 1.25.11. #218 is now green across Backend build and test, Secret scan, frontend/admin/scan web checks, and MergeIDE. After that toolchain patch lands and this PR is updated against it, the backend check should no longer fail on the Go 1.25.10 standard-library findings. |
MergeOS PR #210 Verification ReportPR: #210 VerdictApprove from code review and local test evidence. I found no blocking issue in the exact project escrow ledger scoping change. Scope ReviewedChanged files:
The patch replaces a loose string containment check: strings.Contains(haystack, projectID)with the existing exact ledger ID boundary helper: ledgerEntryReferencesID(entry, projectID)That is the right behavior for the reported bug. A project such as Local ChecksDiff scope: Whitespace check: Go version used for local test: Targeted backend test: Result: Test Coverage ReviewThe new test covers the exact edge cases needed for the bug:
The existing escrow route test still verifies the reserve/release summary and authorization behavior, so the targeted fix is covered without expanding the scope into payout or wallet logic. CI ReviewCurrent PR checks:
The backend failure is the shared Go toolchain baseline issue seen on nearby PRs. The log shows
Because PR #210 changes escrow ledger scoping and tests only, and the targeted local tests pass under Go 1.25.11, I do not treat this backend CI failure as caused by the patch. RecommendationApprove/accept after maintainer review. No required code changes from my pass. Payout address for this QA verification if accepted under #64:
|
Claim
Description
Project escrow summaries could treat sibling ledger references such as
prj_0010ortsk_0010as if they belonged toprj_001when reserve rows were matched by loose prefixes.This PR reuses the existing exact ledger ID boundary matcher for project escrow reserve rows, so only exact project/task references are included in the summary.
Evidence
Before:
After:
prj_001reserve/release summaries are constrained to exact ID boundaries and exclude siblingprj_0010/tsk_0010rows.Additional logs or test output:
go test ./internal/core -run 'TestProjectEscrowLedgerAppliesUsesExactIDBoundaries|TestProjectEscrowRouteReturnsReserveReleaseSummary'->ok mergeos/backend/internal/core 0.670sgovulncheckbaseline; Bump backend Go patch version #218 updates the backend Go patch version and is green. Secret scan, web checks, and MergeIDE are passing on this PR.Safety
Tests
Bounty Checklist