S00-031: Document verified host context for the Codex sandbox probe

Changes: Add host-specific socket mask diagnosis and bounded inner workspace-write invocation to automation guidance; record independent evidence and QA handoff.
Validation: Approved host stat confirmed uid1000/mode0700; no-model inner sandbox exited 0 with project write/read/remove and outside write denial EROFS30. Final make check passed 72 tests and git diff --check passed. Initial verbose draft exceeded prompt budgets; compacted guidance passed the rerun. No storage task or model executed.

Task: S00-031
Agent: auto-ci-cd-d45ccd3ee7d6
Role: ci-cd
Action: claim
Status: review

Task title: Supply a verified private Codex app-server socket environment
This commit is contained in:
wt committed 2026-10-15 17:42:02 +07:00
1 parent 865f1e7a72
commit ace4f674d5
8 files changed
+133 -8

No files matched your search

+29
View File
@@ -65,6 +65,35 @@ Release только делает resolver готовым к проверяем
Журналы: `state/runs/<agent-id>/run.json`, `prompt.md`, `output.log`; хранить без secrets. Каждый report содержит task/role, exit/status, timeout/violation и результат, не включает private command environment.
## Вложенный sandbox: проверенный host context (S00-031)
На этом Linux host с Codex 0.159.0 `/tmp/codex-daemon-1000` имеет uid 1000,
mode 0700; внутри workspace sandbox тот же путь виден с mode 000.
Ошибка вложенного запуска `app-server socket directory must be a user-owned directory
with mode 0700` сама по себе не доказывает неверные host permissions.
Проверенный способ: одобренный внешний host execution
(`sandbox_permissions: require_escalated`) запускает **внутренний workspace-write sandbox**
из корня проекта, с timeout 20 секунд:
```sh
codex -c 'sandbox_mode="workspace-write"' -c sandbox_workspace_write.network_access=true sandbox -- python3 /tmp/luma-filesystem-sandbox-probe.py
```
До запуска проверить host `stat`: directory, owner=current uid, mode 0700.
Script содержит только synthetic project write/read/remove и exclusive-create вне
проекта с обязательным отказом EROFS/EACCES/EPERM. Его полный текст и воспроизводимая
команда сохранены в `state/evidence/S00-031-auto-ci-cd-d45ccd3ee7d6.md`;
временный `/tmp` script нужно сначала прочитать или восстановить из evidence.
Executor получил exit 0: project probe passed, outside write denied EROFS 30,
outside file не создан. Ни модель, ни storage task не запускались.
Не менять socket permissions/mask, writable roots или environment location.
Если approved host execution недоступен, выполнить blocker protocol.
Результат относится к этому host/version и одной filesystem boundary; QA повторяет
проверку независимо. Это не app readiness. Общие понятия:
[официальная документация OpenAI](https://developers.openai.com/codex/security).
## Гарантии инструмента
Dependency/role guards, retired reporter, recovery journal definitions+state, fresh subprocess IDs, bounded prompts, separate reviewer, automatic unblocking only after done и stop на внешнем blocker. Истинность evidence/качество модели/OS sandbox обеспечиваются реальным harness и review, а не названием роли.