-
-
Notifications
You must be signed in to change notification settings - Fork 0
Candidate diff and change stream include Stella's own .stella/private/ SQLite sidecars #2038
Copy link
Copy link
Open
Labels
P0Drop everything — broken or embarrassing for usersDrop everything — broken or embarrassing for usersgoal:benchPillar 3 — benches easy to run and their numbers trustworthyPillar 3 — benches easy to run and their numbers trustworthygoal:tracesPillar 2 — every trace perfectly labelled, always: correct, complete, joinablePillar 2 — every trace perfectly labelled, always: correct, complete, joinablegoal:witnessPillar 1 — the witness flip must fire, honestly, on real tasksPillar 1 — the witness flip must fire, honestly, on real taskspain:token-efficiencyToken waste — redundant calls, bloated prompts, inefficient context/output useToken waste — redundant calls, bloated prompts, inefficient context/output use
Description
Metadata
Metadata
Assignees
Labels
P0Drop everything — broken or embarrassing for usersDrop everything — broken or embarrassing for usersgoal:benchPillar 3 — benches easy to run and their numbers trustworthyPillar 3 — benches easy to run and their numbers trustworthygoal:tracesPillar 2 — every trace perfectly labelled, always: correct, complete, joinablePillar 2 — every trace perfectly labelled, always: correct, complete, joinablegoal:witnessPillar 1 — the witness flip must fire, honestly, on real tasksPillar 1 — the witness flip must fire, honestly, on real taskspain:token-efficiencyToken waste — redundant calls, bloated prompts, inefficient context/output useToken waste — redundant calls, bloated prompts, inefficient context/output use
Problem
In a workspace whose
.gitignoredoes not exclude.stella/private/, Stella's own state files appear in the change stream the verifier and the deck are shown, as if they were the agent's work.Observed in a real run — the turn diff carried three entries, two of which were Stella's own SQLite sidecars:
.stella/private/codegraph.db-shm—modified, +2/-1, body full of binary escape bytes.stella/private/codegraph.db-wal—modified, +13/-0, likewisetest_regex.py—created, the only real workTwo consequences:
gather_diffpath is now safe here — PR fix(stella-pipeline): let the verifier read an untracked file's content, not just its name #2034 renders untracked binaries as git'sBinary files ... differsentence — but this stream is a different channel and is not covered.)witness::warrant::changed_pathsholds every changed path to the every-path-must-agree rules incrates/stella-pipeline/src/witness/warrant.rs. A.db-walpath is neither docs nor test, so its presence defeats aDocsOnly/TestsOnlywaiver that should have applied — the agent's own bookkeeping silently deciding whether a witness is owed.Why it does not reproduce in this repo
crates/stella-cli/src/agent/tools.rs'sGitRepoStatus::untracked_fingerprintsshellsgit ls-files --others --exclude-standard, which honours.gitignore. This repo ships a generated.stella/.gitignoreexcluding.stella/private/, so the sidecars are filtered here.A fresh workspace has no such exclusion: a Terminal-Bench task image, a
git initscratch dir, or any tree where that file was never generated — or was generated after the first fingerprint snapshot.Files
crates/stella-cli/src/agent/tools.rs—GitRepoStatus::untracked_fingerprintscrates/stella-pipeline/src/pipeline/verify_probes.rs—gather_diff, the untracked deltacrates/stella-tools/src/registry.rs—record_touch, the singleAgentEvent::FileChangeemittercrates/stella-pipeline/src/witness/warrant.rs—changed_pathsand the path rulesReproduce / verify
git inita scratch directory with no.stella/.gitignore.stella runtask there that touches the code graph, socodegraph.db-walis written..stella/private/paths.Definition of done
Stella's own state under
.stella/private/never appears in any verifier-facing diff,FileChangestream, or warrant path set, regardless of whether the workspace's.gitignoreexcludes it.The exclusion must be a property of the code, not of a generated file that may be missing — the ignore file stays a convenience for the user's
git status, never the mechanism verification depends on.A witness test should assert the exclusion holds with no
.gitignorepresent, since that is the failing configuration.Constraints
AGENTS.md§ "The.stella/directory (per-workspace state)" documents.stella/private/as owner-only generated local state — that is the definition to key off.mutating_actions).