Commit adc8456
Config, isolation, and verifying in the tree the change actually lands in
Three things this skill relies on but never wrote down: where per-repo settings
live, how work is kept out of the user's working tree, and why a green run in an
isolated tree is not evidence about the tree the change merges into.
`references/setup.md` (new) documents an optional `.old-coder.toml`:
`isolation`, `install`, `commit`, `commit_args`, `tracker`, `artifacts`, and
`[commands]`. Nothing blocks on it -- absent, everything defaults to `propose`
and `isolation = "auto"`.
The part worth arguing about is the restrict-only asymmetry. A TRACKED config
may tighten permissions and never loosen them: `install = "allow"` in a
committed file is ignored, because otherwise cloning a repo would hand its
config authority over the machine that cloned it. Grants live only in a
gitignored or absolute-path config, where they are the machine owner's
statement rather than the repo author's.
Alongside it, the permission rule stated once: an operation proceeds if policy
permits it AND (it is reversible OR an approver is present). Policy can grant
standing permission; it cannot manufacture a human. The consequence matters for
unattended runs -- with `propose` and nobody present, skip the operation, record
the consequence, and continue. A run that halts on configuration produces
neither code nor evidence.
Isolation is stated as an invariant rather than a mechanism: do not mutate the
user's working tree to do your work, and verify in the tree that will actually
receive the merge. The trap is worth the paragraph it gets -- a fresh worktree
contains no gitignored content, so the gauntlet frequently cannot run there
until dependencies are rebuilt, and the tempting move is to report green from a
tree that never ran the suite.
The second half of that invariant is the new integration-tree layer. A change
can pass every layer in a worktree and break the main tree on merge, because the
main tree has ignored files the isolated one lacked: a local `.env`, a built
asset, a stale generated module. The recipe applies the diff UNCOMMITTED and
reverts -- deliberately not a merge, rebase, or commit, since many repos forbid
committing to the landing branch, a worktree holding that branch blocks checkout
outright, and landing is the human's call after EVIDENCE, not a verification
step. The revert sequence is spelled out because shortening it silently leaves
new files behind.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>1 parent 57ead18 commit adc8456
3 files changed
Lines changed: 380 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
61 | 64 | | |
62 | 65 | | |
63 | 66 | | |
| |||
115 | 118 | | |
116 | 119 | | |
117 | 120 | | |
| 121 | + | |
118 | 122 | | |
119 | 123 | | |
120 | 124 | | |
| |||
268 | 272 | | |
269 | 273 | | |
270 | 274 | | |
271 | | - | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
272 | 307 | | |
273 | 308 | | |
274 | 309 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
143 | 143 | | |
144 | 144 | | |
145 | 145 | | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
146 | 193 | | |
147 | 194 | | |
148 | 195 | | |
| |||
0 commit comments