mirror of
https://github.com/morluto/rea.git
synced 2026-10-23 14:22:30 -05:00
Select completed source-to-bundle mappings and candidates through the shared view owner, preserve reference-file provenance, and retain full Evidence. Reuse bounded JSON reading, heap admission, and cancellation before session writes. Verified public Redux Toolkit source/map facts with an independent oracle, equivalent CLI/MCP workflows, focused negative controls, and complete CI/review. Historical paired SDK context estimates fall about 64%; timing/resource tradeoffs and final verification receipts are recorded without a general speedup or actual model-token claim. Fixes #6112.
64 lines
3.5 KiB
Python
64 lines
3.5 KiB
Python
"""Verify published source/map facts independently of REA's parsers."""
|
|
import argparse
|
|
import collections
|
|
import hashlib
|
|
import json
|
|
from pathlib import Path, PurePosixPath
|
|
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("case", type=Path)
|
|
parser.add_argument("reference", type=Path)
|
|
args = parser.parse_args()
|
|
root = args.case.parent
|
|
bundle = json.loads((args.case / "evidence.json").read_text())
|
|
reference = json.loads(args.reference.read_text())
|
|
oracle = json.loads((root / "oracle.json").read_text())
|
|
application = next(r for r in bundle["records"] if r["operation"] == "analyze_javascript_application")
|
|
comparison = next(r for r in bundle["records"] if r["operation"] == "compare_source_to_bundle")["normalized_result"]
|
|
expected = {(r["map"], r["source_index"]): r for r in oracle["rows"]}
|
|
nodes = [n for n in application["normalized_result"]["graph"]["nodes"] if n["kind"] == "source-module"]
|
|
assert len(nodes) == len(expected) == 99
|
|
by_path = collections.defaultdict(set)
|
|
by_basename = collections.defaultdict(set)
|
|
seen = set()
|
|
for node in nodes:
|
|
observation = node["observations"][0]
|
|
location = observation["source_map_reference"]
|
|
key = (PurePosixPath(location["map_path"]).name, observation["properties"]["source_index"])
|
|
row = expected[key]
|
|
assert key not in seen
|
|
seen.add(key)
|
|
assert node["identity"]["original_source"] == row["map_source"] == location["source_name"]
|
|
assert node["identity"]["source_sha256"] == row["content_sha256"] == observation["properties"]["content_sha256"]
|
|
assert node["identity"]["source_map_sha256"] == hashlib.sha256((root / "artifact/package/dist" / row["map"]).read_bytes()).hexdigest()
|
|
path = "src/" + row["source_path"]
|
|
by_path[path].add(node["node_id"])
|
|
by_basename[PurePosixPath(path).name].add(node["node_id"])
|
|
actual_files = {p.relative_to(root / "reference").as_posix(): hashlib.sha256(p.read_bytes()).hexdigest()
|
|
for p in (root / "reference/src").rglob("*") if p.is_file()}
|
|
entries = {e["path"]: e for e in reference["entries"] if e["kind"] == "file"}
|
|
assert set(entries) == set(actual_files)
|
|
assert all(entries[p]["sha256"] == sha for p, sha in actual_files.items())
|
|
items = {item["source_path"]: item for item in comparison["items"]}
|
|
assert set(items) == set(actual_files)
|
|
candidate_count = 0
|
|
for path, item in items.items():
|
|
assert item["source_sha256"] == actual_files[path]
|
|
candidates = {candidate["current_node_id"] for candidate in item["candidates"]}
|
|
assert candidates == by_basename[PurePosixPath(path).name], path
|
|
candidate_count += len(candidates)
|
|
assert set(item["current_node_ids"]) == by_path[path]
|
|
assert item["status"] == ("split" if by_path[path] else "unknown")
|
|
assert all(signal["kind"] != "exact-source-digest"
|
|
for candidate in item["candidates"] for signal in candidate["signals"])
|
|
assert candidate_count == comparison["coverage"]["candidate_evaluations"] == 210
|
|
assert comparison["coverage"]["status"] == "partial"
|
|
proof = {"status": "passed", "method": "Independent Python JSON/SHA-256/POSIX path and basename joins; no REA parser or matcher.",
|
|
"source_files": len(actual_files), "embedded_nodes": len(nodes), "candidate_relations": candidate_count,
|
|
"strong_location_rows": sum(bool(by_path[p]) for p in actual_files),
|
|
"limitation": "Static multiple-location projections; no semantic-equivalence or removal claim."}
|
|
with (args.case / "independent-proof.json").open("x") as output:
|
|
json.dump(proof, output, indent=2)
|
|
output.write("\n")
|
|
print(json.dumps(proof))
|