Confine each L1 worker's writes to its own staging dir
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
Research direction
Start by tracing where the runner launches each L1 engine and writes to findings/; inspect the existing l1_timeout_bin handling in run-stats for how a missing isolation tool is reported. Compare macOS sandbox-exec and Linux bwrap support, including the Claude state directory requirement. Done means workers can write only to their own staging directory and the runner copies their answer into findings/<date>/, with isolation status reported when unavailable.
Written by the indexing model from the issue text.
Description
Every L1 worker can write any path the user can, so no check on files in the findings dir can tell the runner's writes from a worker's. Fix the access, not the check: run each L1 engine under an OS sandbox that can write only its own staging directory, and have the runner copy the answer into findings/<date>/.
The workers hold Read and Write (claude: --tools Read Write under bypassPermissions; omp: --tools=Read,Write --allow-home). What that reaches today:
| A worker for session B can write | Effect |
|---|---|
session A's <hash>.json and .served together |
A's findings are forged or suppressed, and AUTODREAM_L1_REQUIRE_SERVED=1 cannot tell |
| A's file in the window between A's engine exiting and the runner signing it | the runner vouches for B's bytes as A's answer |
| a chunk answer between the merge and the check that reads its verdict | the merged findings carry a forged chunk under a match |
a new <anything>.json in the findings dir after the pre-L1 pass |
L2 reads every *.json there |
$AUTODREAM_DIR/config, or any script the runner executes |
the next run executes it as the runner |
https://github.com/STRML/autodream/pull/168 closed the two shapes https://github.com/STRML/autodream/issues/167 reported (key-shaped provenance, two-value files). A follow-up design that bound a SHA-256 digest of each answer into .served went to a four-vendor review panel and was dropped. The first three rows above survive any marker scheme, because the runner writes into the same directory the workers can.
The shape of the fix:
runner ─▶ sandbox(writes: staging/<hash>/ only) ─▶ engine
│ │
└── copies staging/<hash>/out.json ─▶ findings/<date>/<hash>.json
- macOS:
sandbox-execwith a profile that deniesfile-write*outside the staging dir and what the CLI itself needs (claude writes its own state under~/.claude, so that list is the open question). - Linux CI:
bwrap, or no isolation withl1_isolation: nonein run-stats, the wayl1_timeout_bin: nonereports a missing bound today. - Once writes are confined,
.servedand the runner marker can stay where they are. Only the runner can reach them.
- Dominant language
- Shell
- Stars
- 0
- Forks
- 2
- Avg merge
- 11h 31m
- Merged PRs (30d)
- 26
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from STRML/autodream
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 1 day
-
tmo fallback fails when the caller's stdin is closedPossibly taken @STRML claimed this today. Open
Difficulty 1/5 Under an hour Newbie friendliness 32/100
Maintainers usually reply within 1 day
-
Difficulty 3/5 Half a day Newbie friendliness 62/100
STRML/autodream#192 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 1-2 days Newbie friendliness 35/100
Maintainers usually reply within 1 day
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
humblemuzzu/dumbtv#206 ·
Maintainers usually reply within 2 days
-
fix(scripts): set-device-owner.ps1 fails to parse on Windows PowerShell 5.1 (UTF-8 without BOM)Open
Difficulty 1/5 Under an hour Newbie friendliness 84/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
bug infrastructure testing
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
agens-field/nuvrail#217 ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 90/100
fosrl/windows-linux#91 ·
Maintainers usually reply within 1 day