Skip to content

Commit 6202755

Browse files
authored
fix(receipts): add MiseLedger project metadata (#540)
Expose stable project and workspace metadata on Brigade receipt exports so MiseLedger project filters work across generated worktree paths.
1 parent 433d285 commit 6202755

2 files changed

Lines changed: 21 additions & 0 deletions

File tree

src/brigade/receipts_cmd.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -734,6 +734,13 @@ def _code_reference_repository(target: Path) -> str | None:
734734
return f"{owner}/{repository}"
735735

736736

737+
def _miseledger_project(target: Path) -> str:
738+
repository = _code_reference_repository(target)
739+
if repository is None:
740+
return target.name
741+
return repository.rsplit("/", 1)[-1]
742+
743+
737744
def _code_references_from_delta(payload: dict[str, Any], target: Path) -> tuple[list[dict[str, Any]], int, bool]:
738745
delta = payload.get("code_graph_delta")
739746
git = _receipt_git(payload)
@@ -1015,6 +1022,8 @@ def _verify_miseledger_item(payload: dict[str, Any], path: Path, target: Path, o
10151022
"run_id": run_id,
10161023
"status": payload.get("status"),
10171024
"target": payload.get("target"),
1025+
"project": _miseledger_project(target),
1026+
"workspace_dir": str(target),
10181027
"path": _rel(path, target),
10191028
"digest": receipt_hash,
10201029
"digest_source": digest_source,
@@ -1075,6 +1084,8 @@ def _run_miseledger_item(payload: dict[str, Any], path: Path, target: Path, ordi
10751084
"run_id": run_id,
10761085
"status": payload.get("status"),
10771086
"cwd": payload.get("cwd"),
1087+
"project": _miseledger_project(target),
1088+
"workspace_dir": str(target),
10781089
"path": _rel(path, target),
10791090
"digest": receipt_hash,
10801091
"digest_source": digest_source,

tests/test_receipts_cmd.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,12 @@ def test_receipts_export_recomputes_inconsistent_compact_code_reference_metadata
387387

388388

389389
def test_receipts_export_miseledger_exports_run_and_digestless_verify_receipts(tmp_path, capsys):
390+
_init_git_repo_with_head(tmp_path)
391+
subprocess.run(
392+
["git", "remote", "add", "origin", "https://github.com/example-org/example-repo.git"],
393+
cwd=tmp_path,
394+
check=True,
395+
)
390396
verify_path = _write_verify_export_receipt(
391397
tmp_path,
392398
"20260708-110000-work-verify-def456",
@@ -410,8 +416,12 @@ def test_receipts_export_miseledger_exports_run_and_digestless_verify_receipts(t
410416
]
411417
assert rows[0]["collection"]["external_id"] == "brigade:runs"
412418
assert rows[0]["item"]["external_id"] == "brigade:run:20260708-130000-aabbccdd"
419+
assert rows[0]["item"]["metadata"]["project"] == "example-repo"
420+
assert rows[0]["item"]["metadata"]["workspace_dir"] == str(tmp_path.resolve())
413421
assert rows[0]["raw"]["hash"] == "sha256:" + json.loads(run_path.read_text())["digests"]["receipt_sha256"]
414422
assert rows[0]["item"]["metadata"]["code_graph_delta_summary"] == "changed_symbols=1"
423+
assert rows[1]["item"]["metadata"]["project"] == "example-repo"
424+
assert rows[1]["item"]["metadata"]["workspace_dir"] == str(tmp_path.resolve())
415425
assert rows[1]["raw"]["hash"] == "sha256:" + localio.file_sha256(verify_path)
416426
assert rows[1]["item"]["metadata"]["digest_source"] == "file_sha256"
417427

0 commit comments

Comments
 (0)