You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(worker): surface workspace cleanup failures; close out #12 container artifacts (#62)
With the container backend (#5) merged, the repo checkout is now removed on
every path — host and container (--rm) — so the last #12 gap is that a cleanup
FAILURE was silently swallowed (.ok()), which #12 flags as leaving private code
on disk. Now a failure that leaves the checkout behind is logged loudly and
audited (workspace_cleanup_failed). Docs move repo_checkout and container-log
handling from deferred to covered.
Closes#12.
Signed-off-by: Val Alexander <bunsthedev@gmail.com>
Copy file name to clipboardExpand all lines: docs/data-retention.md
+14-4Lines changed: 14 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,8 +25,9 @@ survives.
25
25
|`audit_events`| Yes |`api_audit`, table states below | See [Audit events](#audit-events). |
26
26
|`memory_activity`| Opt-in, retention-limited |`memory_activity`| Per-installation; see [issue #6](memory-contract.md). |
27
27
|`logs` / `transcripts`| Not persisted by the adapter | — | Streamed/redacted only; durable transcripts are out of scope until opt-in retention is designed. |
28
-
|`repo_checkout`|**Never** after task cleanup | ephemeral workspace | Workspace is deleted after every task. Container-isolated cleanup is issue #5. |
29
-
|`tokens` / `secrets`|**Never**| — | The brief is tokenless (#4); results, comments, Check Runs, and stored fields are redacted. |
28
+
|`repo_checkout`|**Never** after task cleanup | ephemeral workspace | The per-task workspace is deleted after every task (success or failure); the container backend also removes the container (`--rm`). A cleanup failure that would leave a checkout on disk is surfaced and audited (`workspace_cleanup_failed`), never swallowed. |
29
+
|`container_logs`|**Not persisted**| — | The container backend (#5) captures no stdout/stderr into any store; only the redacted failure detail reaches `task_attempts.detail`. |
30
+
|`tokens` / `secrets`|**Never**| — | The brief is tokenless (#4); the git token travels to the runtime by environment name only (never in argv or container-inspect output); results, comments, Check Runs, and stored fields are redacted. |
30
31
31
32
## Redaction
32
33
@@ -78,10 +79,19 @@ never logged or stored.
78
79
| Memory | Operator-managed, off by default | Opt-in, per-installation, revocable |
79
80
| Worker isolation | May run on host | Container-isolated per task (#5) |
80
81
82
+
## Worker execution artifacts
83
+
84
+
The worker runs each task in a per-task workspace, then deletes it — on every
85
+
path, success or failure. In the container backend (#5) the task runs in a
86
+
fresh container removed by `--rm` (and killed by name on timeout), with a
87
+
read-only root, dropped capabilities, resource limits, and only the workspace
88
+
mounted; the git token is forwarded by environment *name*, so it never enters
89
+
argv or `docker inspect`. If workspace removal ever fails while the checkout is
90
+
still on disk, the worker logs it loudly and records a `workspace_cleanup_failed`
91
+
audit entry rather than silently leaving private code behind.
92
+
81
93
## Not yet covered
82
94
83
-
- Container-scoped artifact handling — `repo_checkout` cleanup guarantees and
84
-
container log retention — lands with hosted worker isolation (#5).
85
95
- A unified append-only audit-event log (the tables above already provide the
86
96
equivalent records; a single stream is a possible future consolidation).
87
97
- Durable, opt-in agent transcripts with their own redaction/retention policy.
0 commit comments