Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .audit/evidence/antigravity-receipt.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
"profile_hash": "fc9258dd04cfc5bde2a02e9e8f9ae57f1c1f9aa224a36fb5e754a2a37f73b4a2",
"package_descriptor_hash": "bfcfbca94227eb86857af749c975b55240f0c656d01b51e8349ad2780233ce99",
"manifest_hash": "6f52fd4f83e334a9486d679ea10ae8697c7f4fadc9f60ca089458b1734d60157",
"driver_revision": "490bde735cc67195df66374babf64084c779f6069d2354d58e6de838d9d01d2a",
"package_driver_revision": "34d033d05e3ef84422b8d154dc29fef1b3c75d65cb30e324262ed41ad8d99555",
"driver_revision": "f1c7568d98d9121022923552f0c10f43b27479de23f0013eafc857fe2206956a",
"package_driver_revision": "595f3ac6940ab9cb54c2e3e592d85c17ad32b99528052216f06bdd48ea96c293",
"boundary_driver_revision": "d3ffcb533f91281953932f986b5ffea7f727e602548ad0418d4d187dc3fa1291"
},
"scenarios": [
Expand Down
4 changes: 2 additions & 2 deletions .audit/evidence/codex-receipt.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
"profile_hash": "6508f23e3fd2e3558706b36bcf9e16a5430cc6d6dea1a793ed1ad62d67710d0c",
"package_descriptor_hash": "bfcfbca94227eb86857af749c975b55240f0c656d01b51e8349ad2780233ce99",
"manifest_hash": "c49bb63726171f13f4390a60291cd60baf8e95b947b28a225dec9c1ce699e42c",
"driver_revision": "490bde735cc67195df66374babf64084c779f6069d2354d58e6de838d9d01d2a",
"package_driver_revision": "34d033d05e3ef84422b8d154dc29fef1b3c75d65cb30e324262ed41ad8d99555",
"driver_revision": "f1c7568d98d9121022923552f0c10f43b27479de23f0013eafc857fe2206956a",
"package_driver_revision": "595f3ac6940ab9cb54c2e3e592d85c17ad32b99528052216f06bdd48ea96c293",
"boundary_driver_revision": "d3ffcb533f91281953932f986b5ffea7f727e602548ad0418d4d187dc3fa1291"
},
"scenarios": [
Expand Down
4 changes: 2 additions & 2 deletions .audit/evidence/grok-receipt.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
"profile_hash": "8843a79c3bc719865a29ae9028b91743d7e3c2db18d11ce038f2c51fe62bdf5a",
"package_descriptor_hash": "bfcfbca94227eb86857af749c975b55240f0c656d01b51e8349ad2780233ce99",
"manifest_hash": "7a376b005b83bf64c2d37729be88328f393bfad25b4e666c5eb2f78633def037",
"driver_revision": "490bde735cc67195df66374babf64084c779f6069d2354d58e6de838d9d01d2a",
"package_driver_revision": "34d033d05e3ef84422b8d154dc29fef1b3c75d65cb30e324262ed41ad8d99555",
"driver_revision": "f1c7568d98d9121022923552f0c10f43b27479de23f0013eafc857fe2206956a",
"package_driver_revision": "595f3ac6940ab9cb54c2e3e592d85c17ad32b99528052216f06bdd48ea96c293",
"boundary_driver_revision": "d3ffcb533f91281953932f986b5ffea7f727e602548ad0418d4d187dc3fa1291"
},
"scenarios": [
Expand Down
20 changes: 10 additions & 10 deletions .audit/evidence/index.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@
"profile_hash": "8843a79c3bc719865a29ae9028b91743d7e3c2db18d11ce038f2c51fe62bdf5a",
"package_descriptor_hash": "bfcfbca94227eb86857af749c975b55240f0c656d01b51e8349ad2780233ce99",
"manifest_hash": "7a376b005b83bf64c2d37729be88328f393bfad25b4e666c5eb2f78633def037",
"driver_revision": "490bde735cc67195df66374babf64084c779f6069d2354d58e6de838d9d01d2a",
"package_driver_revision": "34d033d05e3ef84422b8d154dc29fef1b3c75d65cb30e324262ed41ad8d99555",
"driver_revision": "f1c7568d98d9121022923552f0c10f43b27479de23f0013eafc857fe2206956a",
"package_driver_revision": "595f3ac6940ab9cb54c2e3e592d85c17ad32b99528052216f06bdd48ea96c293",
"boundary_driver_revision": "d3ffcb533f91281953932f986b5ffea7f727e602548ad0418d4d187dc3fa1291"
}
},
Expand All @@ -44,8 +44,8 @@
"profile_hash": "6508f23e3fd2e3558706b36bcf9e16a5430cc6d6dea1a793ed1ad62d67710d0c",
"package_descriptor_hash": "bfcfbca94227eb86857af749c975b55240f0c656d01b51e8349ad2780233ce99",
"manifest_hash": "c49bb63726171f13f4390a60291cd60baf8e95b947b28a225dec9c1ce699e42c",
"driver_revision": "490bde735cc67195df66374babf64084c779f6069d2354d58e6de838d9d01d2a",
"package_driver_revision": "34d033d05e3ef84422b8d154dc29fef1b3c75d65cb30e324262ed41ad8d99555",
"driver_revision": "f1c7568d98d9121022923552f0c10f43b27479de23f0013eafc857fe2206956a",
"package_driver_revision": "595f3ac6940ab9cb54c2e3e592d85c17ad32b99528052216f06bdd48ea96c293",
"boundary_driver_revision": "d3ffcb533f91281953932f986b5ffea7f727e602548ad0418d4d187dc3fa1291"
}
},
Expand All @@ -68,8 +68,8 @@
"profile_hash": "1c56d0d43197fceb1f48d4c7195ea2df0d25463a3364ab3eb7fd998d94a8cd86",
"package_descriptor_hash": "bfcfbca94227eb86857af749c975b55240f0c656d01b51e8349ad2780233ce99",
"manifest_hash": "ce6115598948c4b9c508a4fb143528f38d5452792a6b08c49ae4c8c42ba10243",
"driver_revision": "490bde735cc67195df66374babf64084c779f6069d2354d58e6de838d9d01d2a",
"package_driver_revision": "34d033d05e3ef84422b8d154dc29fef1b3c75d65cb30e324262ed41ad8d99555",
"driver_revision": "f1c7568d98d9121022923552f0c10f43b27479de23f0013eafc857fe2206956a",
"package_driver_revision": "595f3ac6940ab9cb54c2e3e592d85c17ad32b99528052216f06bdd48ea96c293",
"boundary_driver_revision": "d3ffcb533f91281953932f986b5ffea7f727e602548ad0418d4d187dc3fa1291"
}
},
Expand All @@ -92,8 +92,8 @@
"profile_hash": "76a2fc4a240a3b64da37275a6216c1e930e78bea8c215cff35e0d0f04690d073",
"package_descriptor_hash": "bfcfbca94227eb86857af749c975b55240f0c656d01b51e8349ad2780233ce99",
"manifest_hash": "a1c76eac8dc853128e63609d0f5bea60ae4e128de7a8577ca58730a297d8af0e",
"driver_revision": "490bde735cc67195df66374babf64084c779f6069d2354d58e6de838d9d01d2a",
"package_driver_revision": "34d033d05e3ef84422b8d154dc29fef1b3c75d65cb30e324262ed41ad8d99555",
"driver_revision": "f1c7568d98d9121022923552f0c10f43b27479de23f0013eafc857fe2206956a",
"package_driver_revision": "595f3ac6940ab9cb54c2e3e592d85c17ad32b99528052216f06bdd48ea96c293",
"boundary_driver_revision": "d3ffcb533f91281953932f986b5ffea7f727e602548ad0418d4d187dc3fa1291"
}
},
Expand All @@ -116,8 +116,8 @@
"profile_hash": "fc9258dd04cfc5bde2a02e9e8f9ae57f1c1f9aa224a36fb5e754a2a37f73b4a2",
"package_descriptor_hash": "bfcfbca94227eb86857af749c975b55240f0c656d01b51e8349ad2780233ce99",
"manifest_hash": "6f52fd4f83e334a9486d679ea10ae8697c7f4fadc9f60ca089458b1734d60157",
"driver_revision": "490bde735cc67195df66374babf64084c779f6069d2354d58e6de838d9d01d2a",
"package_driver_revision": "34d033d05e3ef84422b8d154dc29fef1b3c75d65cb30e324262ed41ad8d99555",
"driver_revision": "f1c7568d98d9121022923552f0c10f43b27479de23f0013eafc857fe2206956a",
"package_driver_revision": "595f3ac6940ab9cb54c2e3e592d85c17ad32b99528052216f06bdd48ea96c293",
"boundary_driver_revision": "d3ffcb533f91281953932f986b5ffea7f727e602548ad0418d4d187dc3fa1291"
}
}
Expand Down
4 changes: 2 additions & 2 deletions .audit/evidence/omp-receipt.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
"profile_hash": "1c56d0d43197fceb1f48d4c7195ea2df0d25463a3364ab3eb7fd998d94a8cd86",
"package_descriptor_hash": "bfcfbca94227eb86857af749c975b55240f0c656d01b51e8349ad2780233ce99",
"manifest_hash": "ce6115598948c4b9c508a4fb143528f38d5452792a6b08c49ae4c8c42ba10243",
"driver_revision": "490bde735cc67195df66374babf64084c779f6069d2354d58e6de838d9d01d2a",
"package_driver_revision": "34d033d05e3ef84422b8d154dc29fef1b3c75d65cb30e324262ed41ad8d99555",
"driver_revision": "f1c7568d98d9121022923552f0c10f43b27479de23f0013eafc857fe2206956a",
"package_driver_revision": "595f3ac6940ab9cb54c2e3e592d85c17ad32b99528052216f06bdd48ea96c293",
"boundary_driver_revision": "d3ffcb533f91281953932f986b5ffea7f727e602548ad0418d4d187dc3fa1291"
},
"scenarios": [
Expand Down
4 changes: 2 additions & 2 deletions .audit/evidence/opencode-receipt.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
"profile_hash": "76a2fc4a240a3b64da37275a6216c1e930e78bea8c215cff35e0d0f04690d073",
"package_descriptor_hash": "bfcfbca94227eb86857af749c975b55240f0c656d01b51e8349ad2780233ce99",
"manifest_hash": "a1c76eac8dc853128e63609d0f5bea60ae4e128de7a8577ca58730a297d8af0e",
"driver_revision": "490bde735cc67195df66374babf64084c779f6069d2354d58e6de838d9d01d2a",
"package_driver_revision": "34d033d05e3ef84422b8d154dc29fef1b3c75d65cb30e324262ed41ad8d99555",
"driver_revision": "f1c7568d98d9121022923552f0c10f43b27479de23f0013eafc857fe2206956a",
"package_driver_revision": "595f3ac6940ab9cb54c2e3e592d85c17ad32b99528052216f06bdd48ea96c293",
"boundary_driver_revision": "d3ffcb533f91281953932f986b5ffea7f727e602548ad0418d4d187dc3fa1291"
},
"scenarios": [
Expand Down
2 changes: 1 addition & 1 deletion scripts/drivers/omp.py
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ def _isolation_residue(repo: Path, worktree_base: Path) -> Dict[str, Any]:
sentinel = repo / ISOLATION_SENTINEL_FILE
sentinel_intact = sentinel.is_file() and sentinel.read_text(encoding="utf-8") == ISOLATION_SENTINEL_BODY
child_file_absent = not (repo / ISOLATION_CHILD_FILE).exists()
status_code, status_out = _git(repo, "status", "--porcelain")
status_code, status_out = _git(repo, "status", "--porcelain", "-uall")
tree_clean = status_code == 0 and not status_out.strip()
_, worktrees_out = _git(repo, "worktree", "list", "--porcelain")
worktree_count = len([ln for ln in worktrees_out.splitlines() if ln.startswith("worktree ")])
Expand Down
2 changes: 1 addition & 1 deletion scripts/sync-antigravity-plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -284,7 +284,7 @@ def source_tree_guard(source: Path | None = None) -> str:
"whether the published content is committed. Pass --force to sync anyway."
)

status = _git(source, "status", "--porcelain", "--", *SYNCED_PATHS)
status = _git(source, "status", "--porcelain", "-uall", "--", *SYNCED_PATHS)
if status.returncode != 0:
return (
f"Refusing to sync: git status failed in {source}: {status.stderr.strip()}\n"
Expand Down
8 changes: 8 additions & 0 deletions tests/test_cross_port_contracts.py
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,9 @@ def test_stop_cancel_requires_native_settlement_and_does_not_kill_unrelated_proc
stale_or_changed_pid = real_pid + 999999

def safe_terminate_process(target_pid: int, expected_owner_token: str, actual_token: Optional[str]) -> bool:
if target_pid <= 1:
# Never signal non-positive PIDs (0=process group, negative=broadcast) or init (1)
return False
if actual_token != expected_owner_token:
# PID reuse or mismatch: REFUSE to kill
return False
Expand All @@ -208,6 +211,11 @@ def safe_terminate_process(target_pid: int, expected_owner_token: str, actual_to
assert not safe_terminate_process(stale_or_changed_pid, "owner-session-123", "owner-session-456")
assert safe_terminate_process(stale_or_changed_pid, "owner-session-123", "owner-session-123")

# Guard against non-positive or system PIDs (0, 1, negative)
assert not safe_terminate_process(0, "owner-session-123", "owner-session-123")
assert not safe_terminate_process(1, "owner-session-123", "owner-session-123")
assert not safe_terminate_process(-1, "owner-session-123", "owner-session-123")


# ---------------------------------------------------------------------------
# Scenario 5: Worktree cleanup preserves hidden untracked files
Expand Down
22 changes: 22 additions & 0 deletions tests/test_harness_drivers.py
Original file line number Diff line number Diff line change
Expand Up @@ -355,3 +355,25 @@ def test_omp_isolation_live_requires_the_gate(tmp_path: Path, monkeypatch: pytes
result = driver.isolation(tmp_path)
assert result.evidence_level == "static"
assert result.settlement is None


def test_omp_isolation_residue_detects_untracked_files_with_show_untracked_files_no(tmp_path: Path) -> None:
import subprocess
from scripts.drivers.omp import _isolation_residue

repo = tmp_path / "repo"
repo.mkdir()
subprocess.run(["git", "init", "--initial-branch=main"], cwd=repo, check=True, capture_output=True)
subprocess.run(["git", "config", "user.name", "Test"], cwd=repo, check=True, capture_output=True)
subprocess.run(["git", "config", "user.email", "test@example.com"], cwd=repo, check=True, capture_output=True)
(repo / "initial.txt").write_text("initial\n", encoding="utf-8")
subprocess.run(["git", "add", "."], cwd=repo, check=True, capture_output=True)
subprocess.run(["git", "commit", "-m", "init"], cwd=repo, check=True, capture_output=True)

# Set status.showUntrackedFiles = no
subprocess.run(["git", "config", "status.showUntrackedFiles", "no"], cwd=repo, check=True, capture_output=True)
# Child drops an untracked file into parent repo
(repo / "child_scratch.txt").write_text("leaked scratch\n", encoding="utf-8")

residue = _isolation_residue(repo, tmp_path / "worktrees")
assert residue["tree_clean"] is False, "Untracked child file must prevent tree_clean even when showUntrackedFiles=no"
Loading