Releases
Changelogs for safe-chains, workon, jjpr, branchdiff, specdiff · RSS
-
safe-chains v0.222.0 2026-08-04
- feat *(regions)* A grant may name a credential store
- feat *(regions)* A third face, so a directory can be written into but not replaced
- fix *(pulumi)* Bound
configto its bare form, and remove thegetallowance - fix *(pathgate)* Let a gate carry both a handler and flags
- fix *(pulumi)* Support -C/--cwd with a locus gate, and repair a file I corrupted
- fix *(registry)* Remove 30 dead duplicate declarations found by the tree guard
- fix *(registry)* Clear the last 5 duplicate declarations; backlog now empty
- fix *(registry)* Assert a
candidatesub declares no nested subs - fix *(repo)* Restore COMMANDS.md and make its generation atomic
- fix *(regions)* A grant covers the subtree it names
- fix *(regions)* Freeze writes to the harness settings file safe-chains trusts
- fix *(nudge)* Tell the user how to allow a credential path
- fix *(regions)* Compare the naming test against the deepest secret node
- fix *(registry)* Stdin is not a workspace file for any executor
- fix *(engine)* A process substitution is never an executor
- fix *(nudge)* Stop advising a grant for a write that can never be granted
- fix *(engine)* An informational flag is not a write with a hidden target
- fix *(rmdir)* Gate the operand locus, like every other destroy
- fix *(regions)* Stop a grant relocating the trust root
- fix *(regions)* A home-anchored node must protect the absolute spelling too
- fix *(engine)* Three defects in the rebind face, found reviewing it
- fix *(cli)* Default --root to --cwd, as the hook already does
- fix *(regions)* A freeze must survive a raised level, not just a grant
- fix *(targets)* Claude permission files are trust for Claude only
- fix *(pathgate)* Hand a colon-bearing value to the executor gate
- fix *(engine)* A URL is never an executor
- fix *(pathgate)* Judge a declared flag value instead of pre-filtering it
- fix *(pathgate)* Drop the positional pre-filter too, and delete it
- fix *(fuzz)* Silence the config diagnostic under cargo fuzz
- fix *(cli)* The CLI is the Claude persona, so it honors Claude grants
- fix *(cli)* Decide as the hook decides, coverage included
- other *(copy)* Write the shipped copy in sentences, not dashes
- other *(regions)* Canonicalize at the choke point, not per caller
- other *(pathgate)* Hide the fuzz-only judge seams from the public API
- other *(todo)* Correct the find "scale gap" entry — it was a misreading
- other *(todo)* Re-verify the exec-gate class, and correct two stale headings
- other *(pulumi)* Replace the doc-guessed config research with measured facts
- other *(pulumi)* The config blocker rested on a wrong premise — config is a local FILE
- other *(pulumi)* RESOLVE the config set question — the backend is ambient
- other *(todo)* Record three structural classes probed clean, and the one real gap
- other *(design)* Spec the refusal copy, keyed to emission rather than harness
- other *(design)* Add ten worked examples to the refusal-copy spec, and a style rule
- other *(design)* Revise the refusal examples on review, and record a UX inconsistency
- other *(design)* Spec acknowledged grants so a user statement can cut through
- other *(design)* A grant should cover what it names, not require an acknowledgement
- other *(design)* Record partial-implementation risks for both specs
- other *(design)* Enumerate every carve-out kind and rule on each
- other *(design)* Decide system-integrity is absolute, correcting a false argument
- other *(design)* Record what is settled and what still needs checking
- other *(design)* Draft the user-facing docs change for grants
- other *(design)* Record a blocker in the grants plan, and close two checks
- other Document that a grant covers what it names
- other *(regions)* Remove a doc comment stranded by the peer shield removal
- other Say what write = true on a credential store actually allows
- other Record what safe-chains cannot see, and the ~ decision
- other *(todo)* Record what this stack defers, with the evidence
- other *(todo)* Clear the nightly slow-units, and record how to measure them
- other *(registry)* Guard the command TREE, not just its contents
- other *(fuzz)* Replay every target per push, and test for drift
-
jjpr v0.39.1 2026-08-04
- fix *(graph)* Truncate commit ids by chars, not bytes
-
jjpr v0.39.0 2026-08-03
- fix *(watch)* [**breaking**] Give up after a failing submit, refresh, or merge phase
- other *(mutants)* Skip a sweep, and stop reporting zeros as a pass
-
jjpr v0.38.0 2026-08-03
- feat *(auth)* Report why forge detection failed, and add --remote
- other *(config)* Document the [identity] section
- other Format the tree with rustfmt's 2024 style edition
- other Enforce cargo fmt and document the per-change gates
-
jjpr v0.37.0 2026-08-03
- fix *(forge)* Ignore empty path components in remote URLs
- other Fail CI when jj is missing instead of skipping silently
- other *(mutants)* Force diff prefixes so the gate cannot silently pass
- other *(mutants)* Ignore mutants.out and record what triage gets wrong
-
jjpr v0.36.1 2026-08-02
- other *(forge)* Reject a remote path missing either owner or repo
- other *(graph)* Cover the segment link when the leaf is traversed first
- other *(mutants)* Mutation-test changed code on PRs and pushes
- other Install jj so the integration suites actually run
- other *(release)* 0.36.1
-
jjpr v0.36.0 2026-08-02
- feat Recognize GitHub native stacks; add get_stack for the merge pre-flight
- feat *(submit)* Refuse to publish both copies of a divergent change
- fix *(merge)* Screen the whole segment range for conflicts before pushing
- fix *(jj)* Treat a bookmark line with no identity as malformed
- fix *(graph)* Never close a cycle in the adjacency list
- fix *(graph)* Key the change graph by commit id, not change id
- other *(notes)* GitHub native stacks public preview — merge unblocked
- other *(notes)* Map GitHub's stack-merge behavior and jjpr's response
- other *(notes)* Answer the three design-blocking questions
- other *(dev)* Map the reconcile machinery; why GitHub declines and what jjpr can know
- other *(agents)* Record jjpr's fuzzing specifics
- other *(recovery)* Fix the equivalent-restacks flake; assert the race that actually happens
- other *(fuzz)* Add a cargo-fuzz workspace with six targets
- other *(repo)* Ignore Playwright MCP session artifacts
- other *(fuzz)* Replay the corpus per push, explore overnight
-
safe-chains v0.221.0 2026-08-02
- feat *(parse)* Parse arithmetic bodies so their substitutions are classified
- feat *(cargo)* Support cargo fuzz, with --fuzz-dir gated at the executor locus
- feat *(find)* -delete delegates like -exec rm, so the traversal locus decides it
- feat *(find)* Give find a registry entry and an output claim
- feat *(cargo)* Support cargo fuzz --version, bounded by max_positional = 0
- fix *(engine)* An executor slot must not accept a command line as a path
- fix *(docs)* Stop leaking a name and url per command doc
- fix *(parse)* Bound the parse work budget so nesting cannot buy itself time
- fix *(cargo)* Withhold the cargo fuzz subs whose positional is a corpus path
- fix *(parse)* Recognise NESTED arithmetic, so it stops reading as a subshell
- fix *(cargo)* Withhold
cargo fuzz add— its target NAME is a path component - fix *(pulumi)* Close
pulumi config, and guard the shape that hid it - other *(find)* Move the primary vocabulary to TOML, deleting the WordSets
- other *(todo)* Close the $VAR path-prefix idea — measured unsound
- other *(todo)* Record the analysis for the three reported prompts
- other *(todo)* Profile the nesting blow-up; correct the find diagnosis; add cargo fuzz
- other *(todo)* Record the find output-claim blockers, including an -exec scale gap
- other *(todo)* Find conversion plan, and derive that -delete is a false deny
- other *(todo)* Design the find conversion from the handler's actual structure
- other *(todo)* Correct the find data-move design; drift is avoided by deletion
- other *(todo)* Decide the find examples stay in the handler; conversion complete
- other *(todo)* Record the missing positional READER audit
- other *(fuzz)* Let the equivalence target reach command-LINE values
- other *(cargo)* Withdraw cargo fuzz entirely — the surface is not bounded yet
-
safe-chains v0.220.0 2026-07-31
- feat *(registry)* Add the
atomoutput kind, wired fail-closed - feat *(regions)* Drop the peer dot-shield; the credential shield carries it
- feat *(engine)* Confine a flanked atom leaf under its literal prefix
- feat *(engine)* Add the
locus.anchoringaxis and explain an unconfined path as one - fix *(ci)* Install cargo-fuzz the supported way in the property-target job
- fix *(engine)* Dot-only flanking does not confine an atom
- fix *(engine)* --help / --version void a command's output claim
- fix *(hook)* Render internal substitution sentinels as
$(…)before a human sees them - fix *(hook)* A sentinel LOOKALIKE must not truncate the path a nudge reports
- fix *(hook)* An interpolated path keeps its credential warning
- other *(todo)* Revise atom layer 1 — the tagged-substitution sentinel already carries it
- other *(todo)* Record the $SCRATCH residue found in adversarial review
- feat *(registry)* Add the
-
safe-chains v0.219.1 2026-07-31
- fix *(herb)* Correct the lint flag surface against 0.10.2