79 lines
4.2 KiB
JSON
79 lines
4.2 KiB
JSON
{
|
|
"id": "tier2_no_appdata_20260618",
|
|
"name": "Tier 2 Sandbox - Move State/Failures Off AppData",
|
|
"date": "2026-06-18",
|
|
"type": "fix",
|
|
"priority": "A",
|
|
"spec": "conductor/tracks/tier2_no_appdata_20260618/spec.md",
|
|
"plan": "conductor/tracks/tier2_no_appdata_20260618/plan.md",
|
|
"status": "active",
|
|
"blocked_by": {},
|
|
"blocks": {},
|
|
"scope": {
|
|
"new_files": [],
|
|
"modified_files": [
|
|
"scripts/tier2/failcount.py",
|
|
"scripts/tier2/write_report.py",
|
|
"scripts/tier2/run_track.py",
|
|
"scripts/tier2/setup_tier2_clone.ps1",
|
|
"scripts/tier2/run_tier2_sandboxed.ps1",
|
|
"scripts/tier2/write_track_completion_report.py",
|
|
"conductor/tier2/opencode.json.fragment",
|
|
"conductor/tier2/agents/tier2-autonomous.md",
|
|
"conductor/tier2/commands/tier-2-auto-execute.md",
|
|
"docs/guide_tier2_autonomous.md",
|
|
"conductor/workflow.md",
|
|
".gitignore",
|
|
"tests/test_tier2_slash_command_spec.py",
|
|
"tests/test_no_temp_writes.py"
|
|
],
|
|
"deleted_files": []
|
|
},
|
|
"verification_criteria": [
|
|
"scripts/tier2/failcount.py default state dir is scripts/tier2/state/<track>/ (Path.cwd()-relative)",
|
|
"scripts/tier2/write_report.py default failures dir is scripts/tier2/failures/ (Path.cwd()-relative)",
|
|
"scripts/tier2/run_track.py chdirs to repo_path before state/report calls",
|
|
"conductor/tier2/opencode.json.fragment has NO AppData allow rules in read/write",
|
|
"conductor/tier2/opencode.json.fragment has *AppData\\* bash deny rule (in addition to *AppData\\Local\\Temp\\*)",
|
|
"conductor/tier2/agents/tier2-autonomous.md contains 'NEVER USE APPDATA' or equivalent phrasing; no AppData path strings",
|
|
"conductor/tier2/commands/tier-2-auto-execute.md contains no AppData path strings",
|
|
"scripts/tier2/setup_tier2_clone.ps1 has no AppData variable declarations or New-Item/Set-Acl calls",
|
|
"scripts/tier2/run_tier2_sandboxed.ps1 has no AppData variable declarations",
|
|
"docs/guide_tier2_autonomous.md has no AppData path strings",
|
|
"conductor/workflow.md hard-bans table row says 'File access outside Tier 2 clone (AppData denied)'",
|
|
".gitignore has scripts/tier2/state/ and scripts/tier2/failures/",
|
|
"tests/test_tier2_slash_command_spec.py asserts NO AppData refs in agent prompt and command",
|
|
"uv run python scripts/run_tests_batched.py passes for test_failcount.py + test_tier2_report_writer.py + test_tier2_slash_command_spec.py + test_no_temp_writes.py",
|
|
"uv run python scripts/audit_no_temp_writes.py --strict exits 0"
|
|
],
|
|
"regressions_and_pre_existing_failures": [],
|
|
"pre_existing_failures_remaining": [],
|
|
"deferred_to_followup_tracks": [
|
|
{
|
|
"title": "Re-bootstrap the live Tier 2 clone",
|
|
"description": "The user re-runs pwsh -File scripts/tier2/setup_tier2_clone.ps1 after this track merges so the clone picks up the new inside-clone conventions and the AppData-denied permissions.",
|
|
"track_status": "manual user action"
|
|
}
|
|
],
|
|
"estimated_effort": {
|
|
"method": "scope (per workflow.md §Tier 1 Track Initialization Rules). NO day estimates.",
|
|
"scope": "11 source files + 3 test files + 1 doc + 1 workflow.md section + 1 .gitignore; ~15 atomic commits across 6 phases."
|
|
},
|
|
"risk_register": [
|
|
{
|
|
"risk": "An existing Tier 2 run is using the old AppData config and its state cannot be migrated automatically",
|
|
"likelihood": "high",
|
|
"mitigation": "Document in the spec that the user's existing live_gui_test_fixes_20260618 run is unaffected by this change until re-bootstrap. State on AppData is discarded on next bootstrap."
|
|
},
|
|
{
|
|
"risk": "The AppData path strings are hard-coded in a downstream script we missed",
|
|
"likelihood": "medium",
|
|
"mitigation": "Run scripts/audit_no_temp_writes.py --strict after the changes. Run a grep for 'AppData' across scripts/ and conductor/ and docs/ as the final verification."
|
|
},
|
|
{
|
|
"risk": "The TIER2_STATE_DIR / TIER2_FAILURES_DIR env-var escape hatch is removed by mistake",
|
|
"likelihood": "low",
|
|
"mitigation": "The existing tests (tests/test_failcount.py:176,190,198 and tests/test_tier2_report_writer.py:25,33,40,71) monkeypatch the env var. They must still pass after the change."
|
|
}
|
|
]
|
|
} |