S00-030: Confirm the host-context sandbox diagnostic for socket recovery

Changes: Clarify S00-030 host execution guidance in docs/AUTOMATION.md and record the successful bounded diagnostic with QA handoff.
Validation: Approved host wrapper and inner workspace-write probe exit 0; project write/read/remove passed, outside write denied EROFS 30. make check exit 0 with 72 tooling tests; git diff --check exit 0. No additional model or storage task ran; app readiness is outside scope.

Task: S00-030
Agent: auto-ci-cd-8c7bc1551426
Role: ci-cd
Action: claim
Status: review

Task title: Provide a valid Codex sandbox app-server socket directory
This commit is contained in:
wt committed 2026-10-15 17:46:48 +07:00
1 parent 263d365640
commit b4a27f2354
8 files changed
+87 -11

No files matched your search

@@ -0,0 +1,4 @@
Confirm the host-context sandbox diagnostic for socket recovery
Changes: Clarify S00-030 host execution guidance in docs/AUTOMATION.md and record the successful bounded diagnostic with QA handoff.
Validation: Approved host wrapper and inner workspace-write probe exit 0; project write/read/remove passed, outside write denied EROFS 30. make check exit 0 with 72 tooling tests; git diff --check exit 0. No additional model or storage task ran; app readiness is outside scope.
@@ -0,0 +1,37 @@
# S00-030 executor evidence
Agent: auto-ci-cd-8c7bc1551426 (ci-cd), 2026-10-15. Awaiting independent QA.
Input: assigned card/packet, previous handoff, required startup/task reads and reviewed S00-002/S00-031 evidence, reviews, handoffs and accepted stack ADR. Output: confirmation that supplied host context runs the bounded no-model sandbox diagnostic; scoped documentation clarification. Acceptance: no socket guard failure, project write/read/remove succeeds, outside write denied, no model/storage execution.
## Actual checks
- resume, show and packet for assigned S00-030: exit0 each; already in_progress, no repeated claim.
- Initial git status: exit0, only coordinator claim state/tasks.json modified.
- Read /tmp/luma-filesystem-sandbox-probe.py before execution. Exact text matches full probe in state/evidence/S00-031-auto-ci-cd-d45ccd3ee7d6.md; SHA256 cf27daee26667c9855204841271a4681f3878a9467b0627d2916a6c215df71f6. Synthetic data only; no subprocess/model/network inside probe.
- Approved exec_command sandbox_permissions=require_escalated ran this wrapper from project root (outer and inner exit0, timeout20 did not expire):
```python
import os, stat, subprocess
p = '/tmp/codex-daemon-1000'
s = os.stat(p)
print({'context':'host','path':p,'uid':s.st_uid,'mode':oct(stat.S_IMODE(s.st_mode)),'directory':stat.S_ISDIR(s.st_mode)}, flush=True)
assert s.st_uid == os.getuid() and stat.S_IMODE(s.st_mode) == 0o700 and stat.S_ISDIR(s.st_mode)
r = subprocess.run(['codex','-c','sandbox_mode="workspace-write"','-c','sandbox_workspace_write.network_access=true','sandbox','--','python3','/tmp/luma-filesystem-sandbox-probe.py'], timeout=20)
print({'sandbox_exit_code':r.returncode}, flush=True)
raise SystemExit(r.returncode)
```
Host result: directory=true, uid1000=current uid, mode0o700. Inner JSON: {"project_write_read_remove":"passed","outside_project_write":"denied","denial_errno":30,"outside_probe_created":false,"uid":1000}. sandbox_exit_code=0. No socket ownership/mode error. The host wrapper initializes the inner sandbox; it never executes the filesystem probe directly outside that sandbox.
- Restricted-shell Python stat/hash: exit0, same socket directory uid1000/mode0o0/directory=true; confirms documented context difference. Socket contents not accessed.
- codex --version: exit0, codex-cli0.159.0; read-only filesystem warning for PATH aliases did not prevent execution.
## Scope and limits
Only source edit: docs/AUTOMATION.md clarifies S00-030 must use supplied host context and host chmod is unnecessary. Existing S00-031 reproduction instructions retained. No socket/config/writable-root changes, additional model, authentication call or storage task. The inner workspace-write defaults including temporary roots remain intact; negative probe is /home/tola outside project/temp roots. One filesystem boundary is verified, not all sandbox capabilities or app readiness.
OpenAI Docs skill used; official https://developers.openai.com/codex/security opened 2026-10-15 (redirects to https://learn.chatgpt.com/docs/security) for general context. Host-specific conclusions derive from actual probe and reviewed supplied environment, not web documentation.
- `make check > /tmp/luma-S00-030-check.log 2>&1`: exit0; 72 tooling tests passed in18.770s, including prompt budgets. Foundation integrity only.
- `git diff --check`: exit0; source diff limited to docs/AUTOMATION.md, other changes workflow metadata.
+10
View File
@@ -1,3 +1,13 @@
# S00-030 executor handoff — bounded diagnostic passed
Executor: auto-ci-cd-8c7bc1551426 (ci-cd), 2026-10-15. Awaiting independent QA.
Reviewed S00-031 supplied host context and repeated approved outer host wrapper with inner workspace-write sandbox. Host socket uid1000/mode0700; inner exit0, synthetic project write/read/remove passed, outside /home/tola exclusive-create denied EROFS30, no outside file created. No socket/root/config changes or additional model/storage execution. Restricted-shell socket mode000 confirms why recursive invocation failed previously.
Source edit only docs/AUTOMATION.md: clarify S00-030 uses verified host context, without host chmod. Exact wrapper, inspected script hash, outputs and limits: state/evidence/S00-030-auto-ci-cd-8c7bc1551426.md. QA should inspect scoped diff/message and independently repeat the bounded approved host wrapper after inspecting/recovering the temporary script from S00-031 evidence. Do not run probe directly on host. make check exit0 (72 tooling tests,18.770s); git diff --check exit0. Review only S00-030; coordinator owns commit and subsequent fresh sessions.
## Previous blocker handoff (superseded diagnosis, retained history)
# S00-030 handoff — external socket environment still invalid
Executor: auto-ci-cd-d37c9faf28f3 (ci-cd). No source changes or additional model/storage execution.
+30 -6
View File
@@ -1,6 +1,6 @@
{
"schema_version": 1,
"revision": 100,
"revision": 102,
"tasks": {
"S00-001": {
"status": "done",
@@ -1419,18 +1419,19 @@
"reason": "Pinned libomemo.js@3.0.0 supplies real embedded WASM but is a different unaudited ratchet and excludes consumer SCE; no approved decision reconciles it with S00-022 retained audited engine/persistence requirement."
},
"S00-030": {
"status": "todo",
"owner": null,
"status": "review",
"owner": "auto-ci-cd-8c7bc1551426",
"external_wait": false,
"reason": null,
"started_at": "2026-10-15T10:30:53+00:00",
"updated_at": "2026-10-15T10:44:07+00:00",
"started_at": "2026-10-15T10:44:46+00:00",
"updated_at": "2026-10-15T10:46:42+00:00",
"blocked_by": [],
"resume_status": "in_progress",
"blocker_report": "state/blockers/S00-031.md",
"handoff": "state/handoffs/S00-030.md",
"previous_owner": "auto-ci-cd-d37c9faf28f3",
"resumed_after_blocker": true
"resumed_after_blocker": true,
"evidence": "state/evidence/S00-030-auto-ci-cd-8c7bc1551426.md"
},
"S00-031": {
"status": "done",
@@ -2709,6 +2710,29 @@
"to": "done",
"reason": null,
"evidence": "state/evidence/S00-031-review.md"
},
{
"revision": 101,
"at": "2026-10-15T10:44:46+00:00",
"action": "claim",
"task": "S00-030",
"agent": "auto-ci-cd-8c7bc1551426",
"role": "ci-cd",
"from": "todo",
"to": "in_progress",
"reason": null
},
{
"revision": 102,
"at": "2026-10-15T10:46:42+00:00",
"action": "submit",
"task": "S00-030",
"agent": "auto-ci-cd-8c7bc1551426",
"role": null,
"from": "in_progress",
"to": "review",
"reason": null,
"evidence": "state/evidence/S00-030-auto-ci-cd-8c7bc1551426.md"
}
],
"retired_agents": [