Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

### Changed

- `unless` is gone from the engine. The parser has refused the keyword for a while, but `engine.Shell` still carried the guard and the agent read it from a step's free-form arguments — reachable by a forged request, by nothing a plan can write. A capability with no way to express it is a trap (#619).

### Fixed

- `archive.extract` checks what its members hold, not only that they are there: their digests are recorded at extract time and compared after, so a file emptied in place is no longer reported converged. It also costs less — an observe no longer opens the archive, where listing it decompressed the whole thing every run (#614).
Expand Down Expand Up @@ -37,8 +41,6 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

### Changed

- `unless` is gone from the engine. The parser has refused the keyword for a while, but `engine.Shell` still carried the guard and the agent still read it from a step's free-form arguments — reachable by a hand-forged request and by nothing a plan can write. A capability with no way to express it is a trap for the next reader (#619).

- The local checks reproduce CI. They pin the toolchain `go.mod` names — `GOTOOLCHAIN=auto` only ever upgrades, so a machine on a newer Go measured something CI never measured: coverage read 80.9% here and 81.8% there, and `deadcode` panicked outright. `test/lint.sh` runs golangci-lint at the workflow's version, which `go vet` cannot replace (#589).

- Plan loading moves out of `cmd/shellf` into `internal/project`: the layout, sibling defs, imports, and the def table a run resolves against. That table is why it is a package — `lang` cannot import `std`, so something must see both, and it should not be the layer that exits the process. `main.go`: 1206 lines down to 587 (#491).
Expand Down
Loading