Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
95e54e9
Add architect analysis for issue 805: per-task file restrictions
Feb 25, 2026
a75000b
WIP: auto-commit uncommitted work (architect) [issue-805]
Feb 25, 2026
a0d25c4
Add risk analysis for issue 805: per-session allowed_files
Feb 25, 2026
f051ad2
WIP: auto-commit uncommitted work (risk_analyst) [issue-805]
Feb 25, 2026
9850a5c
Add implementation plan for per-task file restrictions (#805)
Feb 25, 2026
ab627c6
WIP: auto-commit uncommitted work (task_planner) [issue-805]
Feb 25, 2026
7f31a9e
Add plan review verdict for issue #805: approved
Feb 25, 2026
7a5069f
Persist statefiles after plan phase
Feb 25, 2026
cbfe892
Add allowed_files to Session model and wire through API plumbing
Feb 25, 2026
56d417c
Add per-session file restriction enforcement in push validation
Feb 25, 2026
2a8e91b
Add escape hatch for per-task file restrictions
Feb 25, 2026
cb82ad8
Update plan template to document file restriction enforcement
Feb 25, 2026
b485743
Add comprehensive tests for per-task file restrictions
Feb 25, 2026
3d7a7eb
Document per-task file restriction enforcement (#805)
Feb 25, 2026
e58b6e9
Add comprehensive tests for per-task file restriction gaps
Feb 25, 2026
1b0646c
Fix lint and type errors in per-task file restriction code
Feb 25, 2026
2439376
Add implement phase check results for issue 805
Feb 25, 2026
cf0b860
Fix three review-blocking issues in per-task file restrictions
Feb 25, 2026
192bf88
Document per-task file restriction enforcement (#805)
Feb 25, 2026
485d6f4
Add comprehensive tests for per-task file restriction gaps
Feb 25, 2026
ddc0f2a
Fix lint and formatting in per-task file restriction code
Feb 25, 2026
e3d95ee
Update check results for issue 805 implement phase
Feb 25, 2026
2204dfd
Review verdict: 805-implement-contract-review approved
Feb 25, 2026
bedb308
Persist statefiles after implement phase
Feb 25, 2026
11f43ee
Fix ruff formatting in contract_cli.py
james-in-a-box[bot] Feb 25, 2026
639b4d0
Address review feedback on per-task file restriction enforcement
egg-reviewer[bot] Feb 25, 2026
aa0a567
Fix _matches_pattern to use exact match for non-glob file patterns
egg-reviewer[bot] Feb 25, 2026
afc57ea
Fix stale docstrings for _matches_pattern exact match behavior
egg-reviewer[bot] Feb 25, 2026
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
500 changes: 500 additions & 0 deletions .egg-state/agent-outputs/805-architect-output.json

Large diffs are not rendered by default.

74 changes: 74 additions & 0 deletions .egg-state/agent-outputs/805-integrator-output.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
{
"issue": 805,
"pipeline_id": "issue-805",
"phase": "implement",
"agent": "integrator",
"status": "pass",
"summary": "All 7076 tests pass. Three code review blocking issues were already fixed by coder in commit cf0b860fc. Integrator fixed lint (import ordering) and formatting (ruff format) issues in 3 files. All lint checks pass including ruff check, ruff format, mypy, shellcheck, and custom checks.",
"integration_commit": "ddc0f2ac2",
"test_results": {
"total": 7076,
"passed": 7076,
"failed": 0,
"skipped": 85,
"warnings": 4,
"duration_seconds": 78.87
},
"lint_results": {
"ruff_check": "pass",
"ruff_format": "pass",
"mypy": "pass",
"shellcheck": "pass",
"custom_checks": "pass"
},
"review_feedback_verification": {
"blocking_1_keyword_arg_mismatch": {
"status": "resolved",
"fix_commit": "cf0b860fc",
"description": "load_contract() call in container_spawner.py:113 now uses repo_root=Path(repo_path) matching the function signature at loader.py:60.",
"verified": true
},
"blocking_2_valueerror_handling": {
"status": "resolved",
"fix_commit": "cf0b860fc",
"description": "EGG_TASK_FILE_WARN_THRESHOLD int() parsing at gateway.py:915-918 is now wrapped in try/except (ValueError, TypeError) with fallback to 1.",
"verified": true
},
"blocking_3_strict_mode_hitl": {
"status": "resolved",
"fix_commit": "cf0b860fc",
"description": "Strict mode in session_request_file (gateway.py:3966-4024) now posts to orchestrator /api/v1/pipelines/{id}/decisions endpoint. Falls back to auto-approve with audit logging when orchestrator is unavailable.",
"verified": true
}
},
"issues_found": [
{
"severity": "low",
"component": "tests",
"description": "Import ordering violation (ruff I001) in gateway/tests/test_session_file_restriction_endpoints.py — import gateway was out of sort order.",
"fix": "Applied ruff --fix to sort imports.",
"files": ["gateway/tests/test_session_file_restriction_endpoints.py"]
},
{
"severity": "low",
"component": "formatting",
"description": "Ruff format violations in 3 files: gateway/gateway.py, gateway/tests/test_session_file_restriction_endpoints.py, orchestrator/tests/test_compute_allowed_files.py.",
"fix": "Applied ruff format to all 3 files.",
"files": ["gateway/gateway.py", "gateway/tests/test_session_file_restriction_endpoints.py", "orchestrator/tests/test_compute_allowed_files.py"]
},
{
"severity": "info",
"component": "push",
"description": "Push to remote blocked because branch contains .egg-state/ files from prior pipeline phases. Post-agent auto-commit will handle pushing code changes at container exit.",
"fix": "No action needed — gateway post-agent commit filters phase-restricted files.",
"files": []
}
],
"files_changed_by_integrator": [
"gateway/gateway.py",
"gateway/tests/test_session_file_restriction_endpoints.py",
"orchestrator/tests/test_compute_allowed_files.py"
],
"regressions": "none",
"integration_issues": "none"
}
378 changes: 378 additions & 0 deletions .egg-state/agent-outputs/805-risk_analyst-output.json

Large diffs are not rendered by default.

20 changes: 20 additions & 0 deletions .egg-state/checks/805-implement-results.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"all_passed": true,
"checks": [
{
"name": "lint",
"passed": true,
"output": "==> Ruff check...\nAll checks passed!\n==> Ruff format check...\n439 files already formatted\n==> Mypy...\nSuccess: no issues found in 120 source files\n==> Shellcheck...\n==> Yamllint...\nSKIP: yamllint not installed\n==> Hadolint...\nSKIP: hadolint not installed\n==> Actionlint...\nSKIP: actionlint not installed\n==> Custom checks...\n bin-symlinks...\nOK: All 2 bin/ symlinks are valid\n claude-imports...\nWarning: host-services directory not found at /home/egg/repos/egg/host-services\n container-host-boundary...\nOK: No forbidden host-services imports found in sandbox\n container-paths...\nOK: No problematic sys.path patterns found\n docker-and-claude-invocations...\nOK: No docker/claude invocation violations found\n gh-cli-usage...\nWarning: host-services directory not found at /home/egg/repos/egg/host-services\n hardcoded-ports...\nOK: No hardcoded port numbers found\n llm-api-calls...\nOK: No direct LLM API usage found outside sandbox\n model-versions...\nOK: No non-alias Claude model references found\n reviewer-job-names...\nOK: All reviewer jobs use the required naming prefix\n workflow-secrets...\nOK: No untrusted script execution with secrets found in workflows"
},
{
"name": "test",
"passed": true,
"output": "==> Running unit tests...\npytest tests/ gateway/tests/ orchestrator/tests/ -v\n7076 passed, 85 skipped, 4 warnings in 79.16s (0:01:19)"
},
{
"name": "security",
"passed": true,
"output": "==> Running security scan...\nSKIP: bandit not installed"
}
]
}
103 changes: 103 additions & 0 deletions .egg-state/contracts/805.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
{
"schemaVersion": "1.0",
"issue": {
"number": 805,
"title": "Issue #805",
"url": "https://github.com/jwbron/egg/issues/805"
},
"pipeline_id": null,
"current_phase": "refine",
"acceptance_criteria": [],
"phases": [],
"decisions": [],
"workflow_owner": null,
"audit_log": [],
"refine_review_cycles": 0,
"refine_review_feedback": "",
"plan_review_cycles": 0,
"plan_review_feedback": "",
"pr": null,
"feedback": null,
"phase_configs": null,
"agent_executions": [
{
"role": "coder",
"phase_id": null,
"status": "complete",
"started_at": "2026-02-25T06:40:18.726422Z",
"completed_at": "2026-02-25T06:46:02.309398Z",
"commit": null,
"checkpoint_id": null,
"outputs": {},
"error": null,
"retry_count": 0,
"conflicts": []
},
{
"role": "tester",
"phase_id": null,
"status": "complete",
"started_at": "2026-02-25T06:46:02.313406Z",
"completed_at": "2026-02-25T06:55:37.670191Z",
"commit": null,
"checkpoint_id": null,
"outputs": {},
"error": null,
"retry_count": 0,
"conflicts": []
},
{
"role": "documenter",
"phase_id": null,
"status": "complete",
"started_at": "2026-02-25T06:46:02.317594Z",
"completed_at": "2026-02-25T06:52:41.355056Z",
"commit": null,
"checkpoint_id": null,
"outputs": {},
"error": null,
"retry_count": 0,
"conflicts": []
},
{
"role": "integrator",
"phase_id": null,
"status": "complete",
"started_at": "2026-02-25T06:55:37.673886Z",
"completed_at": "2026-02-25T07:01:01.622612Z",
"commit": null,
"checkpoint_id": null,
"outputs": {},
"error": null,
"retry_count": 0,
"conflicts": []
},
{
"role": "reviewer_contract",
"phase_id": null,
"status": "complete",
"started_at": null,
"completed_at": "2026-02-25T07:07:53.289867Z",
"commit": null,
"checkpoint_id": null,
"outputs": {},
"error": null,
"retry_count": 0,
"conflicts": []
},
{
"role": "reviewer_code",
"phase_id": null,
"status": "complete",
"started_at": null,
"completed_at": "2026-02-25T07:07:58.082506Z",
"commit": null,
"checkpoint_id": null,
"outputs": {},
"error": null,
"retry_count": 0,
"conflicts": []
}
],
"multi_agent_config": null
}
Loading
Loading