Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
188 commits
Select commit Hold shift + click to select a range
0aa6c7b
docs: link shared fixtures in ruby README
pboling Jul 19, 2026
ce5c5fd
Bootstrap TSLP for templating runs
pboling Jul 19, 2026
3984d43
Use KETTLE_DEV_DEV for Kettle workspace paths
pboling Jul 19, 2026
b52b086
📝 Update docs
pboling Jul 19, 2026
0c8d686
Respect disabled local envs during templating setup
pboling Jul 19, 2026
c3e0bbb
Avoid nomono bootstrap for nomono Gemfile
pboling Jul 19, 2026
dfaf4ad
Handle parser bootstrap cold starts
pboling Jul 19, 2026
9312e8b
Load Bundler for prepare lock parsing
pboling Jul 19, 2026
04414e6
Preserve RBS merge blank line gaps
pboling Jul 19, 2026
fed7f3e
Centralize comment layout emission helpers
pboling Jul 19, 2026
be56827
Use shared layout helper in psych merge
pboling Jul 19, 2026
c5b61d9
Share ast merge line range helpers
pboling Jul 19, 2026
c2fe6ea
Share removed owner preservation logic
pboling Jul 19, 2026
28c7970
Share source region report helpers
pboling Jul 19, 2026
d22776a
Guard merge emission ownership scans
pboling Jul 19, 2026
2542521
Preserve Bash comment layout gaps
pboling Jul 19, 2026
a9508c0
Handle optional markdown provider fixtures
pboling Jul 19, 2026
91810b8
Share retained blank gap compliance
pboling Jul 19, 2026
0dfe203
Preserve recursive retained blank gaps
pboling Jul 19, 2026
8ff8315
Preserve TOML retained blank gaps
pboling Jul 19, 2026
9ea49df
📝 docs: explain TruffleRuby dep-heads Gemfile requirement
pboling Jul 19, 2026
0d87f07
Preserve JSON retained blank gaps
pboling Jul 19, 2026
389552a
🔒 Refresh generated gem lockfiles
pboling Jul 19, 2026
5d6d6c1
Route YAML merges through TreeHaver AST
pboling Jul 19, 2026
7fbd5c2
Preserve YAML retained blank gaps
pboling Jul 19, 2026
3916378
Preserve Ruby retained blank gaps
pboling Jul 19, 2026
1a5b42f
Share Ruby source region report helpers
pboling Jul 19, 2026
c56e256
Avoid duplicate removal-mode layout gaps
pboling Jul 19, 2026
67c749b
Stabilize RBS auto backend selection
pboling Jul 19, 2026
6e5387c
Revert RBS local auto backend override
pboling Jul 19, 2026
5e1acda
Constrain TreeHaver parser backend contracts
pboling Jul 19, 2026
6645d1d
Use TreeHaver parser contracts in substrates
pboling Jul 19, 2026
cc9d57d
Constrain provider parser contracts
pboling Jul 19, 2026
fc61efc
Route Bash parser paths through TreeHaver
pboling Jul 19, 2026
c3f764d
📦 Fix kettle-jem package manifest
pboling Jul 19, 2026
a44323f
⬆️ deps path normalizing
pboling Jul 19, 2026
61f04aa
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 19, 2026
e0024d3
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 19, 2026
216f16a
🔒 Normalize ast-merge templating lockfile
pboling Jul 19, 2026
32b391c
Revert "🔒 Normalize ast-merge templating lockfile"
pboling Jul 19, 2026
86878d6
Revert "🎨 Template bootstrap by kettle-jem v7.1.0"
pboling Jul 19, 2026
a0480f9
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 19, 2026
575dd8b
🔒 Normalize ast-merge vendored TSLP lockfile
pboling Jul 19, 2026
3a6da69
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 19, 2026
2f48efa
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 19, 2026
09c1cbe
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 19, 2026
a5f9fd7
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 19, 2026
9a5d77d
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 19, 2026
a0257bf
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 19, 2026
46cda00
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 19, 2026
c78de2d
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 19, 2026
5ab76de
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 19, 2026
99adbec
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 19, 2026
200008e
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 19, 2026
08cb5dd
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 19, 2026
8c7f702
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 20, 2026
e405ae9
✏️ Fix typo
pboling Jul 20, 2026
762ce27
🐛 Fix templating merge idempotency
pboling Jul 20, 2026
2f1c444
🐛 Pin TSLP fork in kettle-jem bundle
pboling Jul 20, 2026
47c4197
✨ Add kettle-jem event stream
pboling Jul 20, 2026
9ec97a3
✨ Expand kettle-jem event stream
pboling Jul 20, 2026
d50ae4f
Bootstrap html-merge sibling gem
pboling Jul 20, 2026
f0764af
Prune disabled engine jobs from workflow templates
pboling Jul 20, 2026
1ffbe35
Normalize Ruby Git diff driver naming
pboling Jul 20, 2026
9e478f4
Normalize smorg-rb git driver naming
pboling Jul 20, 2026
9ba1772
Bundle distinct install environments
pboling Jul 20, 2026
f1ff17b
Remove duplicated Gemfile sibling blocks
pboling Jul 20, 2026
9c55a11
Fix templating bundle graph setup
pboling Jul 20, 2026
e2269e4
Use released tree-sitter language pack
pboling Jul 20, 2026
c10bb51
Add corporate sponsor README template support
pboling Jul 20, 2026
8a0456d
Document sponsor template transfer entry
pboling Jul 20, 2026
593dd89
Add missed template transfer changelog entries
pboling Jul 20, 2026
32f68eb
Add RubyForum README support badge
pboling Jul 20, 2026
75b17ec
Prepare kettle-jem recipe planning for Ractors
pboling Jul 20, 2026
03eb79f
Clarify kettle-jem runtime loading boundaries
pboling Jul 20, 2026
10c1697
Add classified kettle-jem recipe planning
pboling Jul 20, 2026
fab58f1
Add experimental kettle-jem Ractor planning workers
pboling Jul 20, 2026
4807d1e
Add kettle-jem Ractor planning benchmarks
pboling Jul 20, 2026
95f7b23
Introduce kettle-jem write intents
pboling Jul 20, 2026
c33a2ea
Split kettle-jem integration specs
pboling Jul 20, 2026
3bc806f
Add phase-gated file work units
pboling Jul 20, 2026
0ae9950
Add opt-in Ractor file workers
pboling Jul 20, 2026
ed900d2
Benchmark Ractor file workers
pboling Jul 20, 2026
a720a2c
Benchmark one-shot Ractor templating
pboling Jul 20, 2026
1ce2f83
Record latest kettle-jem benchmark results
pboling Jul 20, 2026
bd466d3
Reuse static kettle-jem recipe constants
pboling Jul 20, 2026
d744152
Batch recipe planning Ractor work
pboling Jul 20, 2026
2c5dfae
Show kettle-jem benchmark progress
pboling Jul 20, 2026
3ffe3be
Clarify kettle-jem Ractor benchmark counters
pboling Jul 20, 2026
a569f34
Add thread-backed kettle-jem workers
pboling Jul 20, 2026
b814997
Add benchmark skip controls to kettle-jem
pboling Jul 20, 2026
283e119
Record kettle-jem benchmark timings
pboling Jul 21, 2026
b79620d
Batch ast-crispr README deletions
pboling Jul 21, 2026
a78e8db
Split TSLP dependency sources
pboling Jul 21, 2026
6ae5c04
📝 Document benchmarking commands
pboling Jul 21, 2026
8d18bbd
📝 Latest benchmarking results
pboling Jul 21, 2026
3afe600
📝 Document benchmarking commands
pboling Jul 21, 2026
11c2691
📝 Document benchmarking commands
pboling Jul 21, 2026
9ffb3e2
Improve benchmark worker defaults
pboling Jul 21, 2026
c5c63c4
Add benchmark baseline deltas
pboling Jul 21, 2026
751099e
Allow benchmark results summary
pboling Jul 21, 2026
c43e53f
Instrument README benchmark timings
pboling Jul 21, 2026
c24f0cf
Validate TSLP parser availability
pboling Jul 21, 2026
9e37004
Validate TSLP language registration
pboling Jul 21, 2026
e21f24f
Add kettle-jem benchmark variant selector
pboling Jul 21, 2026
904dfd1
Speed up kettle-jem templating defaults
pboling Jul 21, 2026
7818fca
Use TSLP ABI fix fork
pboling Jul 21, 2026
60f956b
Document TSLP git source benchmark setup
pboling Jul 21, 2026
079ede3
Improve structured diff review output
pboling Jul 21, 2026
badbdb7
Use released tree_sitter_language_pack
pboling Jul 21, 2026
b46eae0
Exclude benchmark fixtures from family members
pboling Jul 21, 2026
ad255ee
⬆️ Upgrade GHA SHA pins
pboling Jul 21, 2026
9a9f883
⬆️ Upgrade template deps
pboling Jul 21, 2026
9a7c593
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 21, 2026
9a5e875
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 21, 2026
de5a292
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 21, 2026
51474fe
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 21, 2026
283efa4
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 21, 2026
c0ef2ce
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 21, 2026
a1d1b2a
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 21, 2026
b66e58a
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 21, 2026
56efbe8
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 21, 2026
afe5fbe
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 21, 2026
348517f
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 21, 2026
5597e8e
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 21, 2026
02ca7c9
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 21, 2026
1ffedbf
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 21, 2026
c8bcb7f
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 21, 2026
786e679
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 21, 2026
c7cda9c
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 21, 2026
bb937c0
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 21, 2026
221bfc1
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 21, 2026
c907072
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 21, 2026
a4c1be5
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 21, 2026
2ae22ad
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 21, 2026
27cdaed
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 21, 2026
b660b6b
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 21, 2026
c71dd3a
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 21, 2026
56ce409
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 21, 2026
f1f98a4
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 21, 2026
9e4cac2
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 21, 2026
05a76f6
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 21, 2026
36590e3
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 21, 2026
19d6d80
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 21, 2026
4e6b815
🐛 Fix SimpleCov bootstrap templating migration
pboling Jul 21, 2026
418e0f3
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
a659f9b
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
36de766
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
3dc0157
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
609658d
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
14138bd
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
b279933
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
84215c7
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
032835e
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
9561c3d
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
b1c5406
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
07c31fa
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
3cc47ef
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
babe93c
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
ed26f5f
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
94708c9
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
0b98f39
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
5e417de
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
a57dcd0
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
275dc0f
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
a859457
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
f3099c7
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
259b062
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
cdc5d13
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
20f866f
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
73af5e9
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
43d4325
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
d558494
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
ae9e18e
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
aecf710
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
8e39e56
🐛 Run dep-heads directly from generated gemfile
pboling Jul 22, 2026
175ae98
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
2a11b84
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
215c401
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
b24b923
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
c9b801d
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
9b0bda0
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
34c5da8
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
55f634b
🎨 Template bootstrap by kettle-jem v7.1.0
pboling Jul 22, 2026
ac9cedf
🔥 Remove nomono activation ceremony
pboling Jul 22, 2026
8fc1adc
🐛 Link generated license details to source
pboling Jul 22, 2026
283668c
🐛 Use normal nomono local Gemfile loader
pboling Jul 22, 2026
dbe0796
🐛 Fix nomono loader retemplating
pboling Jul 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
/log/
/pkg/
**/results/
!gems/kettle-jem/benchmarks/results/
!gems/kettle-jem/benchmarks/results/README.md
/tmp/
/vendor/bundle/
.env.local
Expand Down
5 changes: 4 additions & 1 deletion .kettle-family.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ family:
members_root: gems

members:
exclude:
- "**/benchmarks/**"
order:
mode: dependency
hints:
Expand All @@ -17,6 +19,7 @@ members:
- bash-merge
- dotenv-merge
- rbs-merge
- html-merge
- json-merge
- yaml-merge
- toml-merge
Expand Down Expand Up @@ -114,7 +117,7 @@ release:
publish_command: bundle exec kettle-release
env:
GALTZO_FLOSS_DEV: false
KETTLE_RB_DEV: false
KETTLE_DEV_DEV: false
STRUCTUREDMERGE_DEV: false
TSLP_DEV: ""
family_changelog:
Expand Down
97 changes: 93 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,17 +20,38 @@ Please file a bug if you notice a violation of semantic versioning.

### Added

- `ast-crispr` now provides `Ast::Crispr::DeleteBatch` for deleting matches from
multiple structural selectors through one parsed document context.
- Added `html-merge` as a StructuredMerge Ruby family member with TreeHaver
HTML parsing, feature profile reporting, and an initial ast-crispr-backed HTML
structural edit adapter.
- TreeHaver RSpec dependency tags now support parser capability checks, and
`ruby-merge` exposes TSLP Ruby capability tags for import records, top-level
call records, and namespace-form equivalence.
- `kettle-jem` benchmark results now include README timing breakdowns for both
the baseline and fastest non-baseline variant.

### Changed

- `kettle-jem` now migrates existing SimpleCov bootstrap files for packaged
monorepo subgems even when the selected template profile does not otherwise
manage per-gem harness files.
- `kettle-jem` RuboCop guidance now treats `.rubocop_gradual.lock` as a work
list rather than a baseline, and documents explicit config and inline
exceptions for intentional style deviations.
- Current CI now detects changed monorepo gems and runs each changed gem's own
`kettle-test` suite instead of installing the root aggregate bundle.
- `kettle-jem` templating now defaults no-option runs to classified thread
planning and file work with half of the available CPU cores.
- `kettle-jem` Ractor-backed file work now batches file units by worker count
instead of spawning one Ractor per file.
- `kettle-jem` README processing now reuses structural owner scans and batches
several Markdown deletions to reduce repeated parser passes.
- `kettle-jem` main Gemfile templating now removes repeated direct sibling
execution blocks left behind by older `nomono` bootstrap output while applying
the simplified `require "nomono/bundler"` loader.
- `smorg-rb` diff-driver output now appends a unified review hunk with exact
removed and added source text after the semantic structured-diff summary.
- Retemplated generated project metadata, support documentation, CI workflows,
binstubs, and development dependency floors across the StructuredMerge Ruby
gem family with `kettle-jem` v7.0.0.
Expand All @@ -39,12 +60,38 @@ Please file a bug if you notice a violation of semantic versioning.
on bespoke workspace scripts.
- `kettle-jem` gem templates now require `kettle-dev` 2.0.8 or newer.
- `ast-merge` now requires `token-resolver` 2.0.1 or newer.
- Gems that use `tree_sitter_language_pack` now resolve it through the
StructuredMerge Ruby 4-compatible fork branch in their development Gemfiles
until an upstream Ruby 4-compatible release is available.
- `ast-merge` now provides shared comment/layout emission helpers for root
boundary text, leading segments, retained blank lines, and equivalent-region
ownership checks, and RBS, Bash, dotenv, and Psych merges now use that common
path where their semantics are format-neutral. Those helpers reuse shared
line-range normalization instead of duplicating owner location handling.
- RBS, Bash, and dotenv removal-mode comment promotion now uses the shared
`ast-merge` removed-owner preservation path for leading segments, trailing
regions, and fallback layout gaps.
- `ast-merge` now provides shared source-region report helpers for comment-block
attachment and blank interstitial ownership, and `ruby-merge` uses those
helpers for its Ruby fixture/report APIs instead of carrying local copies of
format-neutral ownership mechanics. The shared helpers now also cover
interstitial region construction, public owner projection, source spans,
source content slices, and attached leading comment regions.
- `kettle-jem` benchmark runs now support `--only` and
`KETTLE_JEM_BENCHMARK_ONLY` selectors so combined worker variants can be
measured without also running planning-only and file-only split variants.
- Root architecture specs now guard merge emission files against new ad hoc
comment or blank-line ownership scans, keeping the remaining cleanup debt
explicit while shared ast-merge attachment and layout helpers are adopted.
- Development Gemfiles for gems that use `tree_sitter_language_pack` now default
to the StructuredMerge fork branch with the Ruby ABI platform-gem fix until
that fix is released upstream.
- Structured merge gems now fail closed when no registered TreeHaver backend is
available instead of falling back to direct parser-library paths outside the
TreeHaver and ast-merge stack.
- `TreeHaver.parser_for` now accepts backend-type and contract constraints so
substrate gems can request normalized tree-sitter semantics without being
hijacked by parser-specific provider gems registered for the same language.
- `yaml-merge` now routes merge emission through TreeHaver/TSLP-backed AST
owners and ast-merge result mechanics instead of canonicalizing merged YAML
through Ruby object rendering.

### Deprecated

Expand All @@ -55,6 +102,41 @@ Please file a bug if you notice a violation of semantic versioning.

### Fixed

- TreeHaver now smoke-tests `tree_sitter_language_pack` parser execution for the
requested language before registering the TSLP backend, so broken native gem
artifacts fail closed with a useful reason instead of surfacing parser
self-conversion `TypeError`s during JSON merges.
- `json-merge` file analysis now registers its TreeHaver JSON backend before
direct parsing, preventing templating from failing with `No parser registered
for json` when JSON smart merges instantiate file analysis directly.
- RBS recursive member merges no longer duplicate destination-owned comments
before matched nested declarations across repeated templating runs.
- RBS merges now preserve retained declaration and nested member blank-line
gaps, preventing templating from compacting existing `.rbs` whitespace.
- Bash merges now preserve floating first-owner and removed-node comment gaps,
and avoid duplicating a comment block that was already promoted from a removed
destination-only node.
- Bash and RBS removal-mode merges no longer duplicate a blank gap when a
removed destination-only owner preserves the same gap later seen as a retained
matched owner's leading gap.
- Bash, dotenv, and RBS merges now share a retained blank-gap compliance
contract and preserve destination-owned blank gaps between retained matched
owners, including template-preferred matched output.
- RBS recursive member merges now use a shared retained blank-gap contract and
preserve destination-owned nested member separators when template-preferred
member bodies are emitted.
- TOML template-preferred merges now preserve destination-owned retained blank
gaps for matched top-level keys and keys inside matched tables.
- JSON template-preferred merges now preserve destination-owned retained blank
gaps for matched top-level and nested object pairs.
- Ruby merges now preserve destination-owned retained blank gaps between matched
top-level declarations when emitting TSLP-backed merge results.
- YAML merges now preserve comments, blank lines, anchors, aliases,
multi-document separators, and scalar spelling for the shared formatting
preservation fixture while retaining destination-owned sequence values.
- Markdown backend feature fixtures now account for optional provider backends
that are only available after their provider gems register concrete TreeHaver
integrations in the current process.
- Ast-merge changed-gem CI no longer times out or fails when exercising
isolated fixture integrations that require Prism-backed Ruby merging.
- Changed-gem CI suites now pass in isolated gem bundles by loading required
Expand All @@ -65,6 +147,9 @@ Please file a bug if you notice a violation of semantic versioning.
template-only direct methods during scoped intra-owner declaration merges.
- TreeHaver now normalizes nested object fields from tree-sitter-language-pack
process results, including span objects, before building parser analysis.
- `bash-merge` now routes explicit `parser_path:` overrides through scoped
TreeHaver language registration instead of passing parser library paths
directly to parser construction.

- Byte-offset rewrites in `kettle-jem` and `prism-merge` now splice source with
byte-aware slicing so non-ASCII content before an edited AST node does not
Expand All @@ -82,7 +167,7 @@ Please file a bug if you notice a violation of semantic versioning.
- `kettle-jem` JRuby 9.4 workflow templates now install RubyGems 3.6.9 and
Bundler 2.6.9 instead of using the default JRuby toolchain.
- Local template stack reinstalls now uninstall the selected StructuredMerge Ruby
gems before reinstalling them, and no longer install sibling `kettle-rb` or
gems before reinstalling them, and no longer install sibling `kettle-dev` or
`galtzo-floss` gems by default.
- Ruby merges now place template-only top-level nodes at their template anchor by
default instead of appending them to the destination tail.
Expand All @@ -102,6 +187,10 @@ Please file a bug if you notice a violation of semantic versioning.
raising during recursive merge policy checks.
- `kettle-jem` now normalizes GitHub Actions pins for all existing workflow
files after templating, including workflows outside the active recipe set.
- `kettle-jem install` now completes raw `bundle gem` skeleton bootstrap by
generating the modular Gemfiles required by the generated Gemfile before
running setup, and skips RuboCop Gradual autocorrect when the destination does
not define that task.

### Security

Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ Troubleshooting Git diffs
- Use `git diff --no-ext-diff` to compare against Git's built-in diff output.
- Use `git diff --no-textconv` when a textconv projection obscures the raw file bytes you need to inspect.
- If Git reports a missing `smorg-*` executable, rerun `bundle install` and the setup command above, then check `git config --local --get-regexp '^diff\.smorg-'`.
- To remove managed local entries, run `K_JEM_TEMPLATING=true kettle-jem install --undo`; remove global command registrations with `git config --global --unset-all diff.smorg-ruby.command`.
- To remove managed local entries, run `K_JEM_TEMPLATING=true kettle-jem install --undo`; remove global command registrations with `git config --global --unset-all diff.smorg-rb.command`.

For a quick starting point, this repository’s `mise.toml` defines the shared defaults, and `.env.local` can override them locally. Copy `.env.local.example` to `.env.local`, use `KEY=value` lines, and either activate `mise` in your shell or run commands through `mise exec -C /path/to/project -- ...`.

Expand Down
25 changes: 8 additions & 17 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,26 +1,17 @@
kettle_rb_dev = ENV.fetch("KETTLE_RB_DEV", "false")
kettle_dev_dev = ENV.fetch("KETTLE_DEV_DEV", "false")

source "https://rubygems.org"

tslp_dev = ENV.fetch("TSLP_DEV", nil)
if tslp_dev.to_s.empty?
gem(
"tree_sitter_language_pack",
git: "https://github.com/structuredmerge/tree-sitter-language-pack.git",
branch: "fix/ruby-parser-api-methods",
glob: "packages/ruby/*.gemspec",
)
else
gem "tree_sitter_language_pack", path: tslp_dev
end
# Use released TSLP with the Ruby ABI platform-gem fix.
gem "tree_sitter_language_pack", "~> 1.13", ">= 1.13.3"

unless kettle_rb_dev.casecmp("false").zero?
unless kettle_dev_dev.casecmp("false").zero?
require "nomono/bundler"

eval_nomono_gems(
gems: %w[kettle-dev kettle-family kettle-test],
prefix: "KETTLE_RB",
path_env: "KETTLE_RB_DEV",
prefix: "KETTLE_DEV",
path_env: "KETTLE_DEV_DEV",
vendored_gems_env: "VENDORED_GEMS",
vendor_gem_dir_env: "VENDOR_GEM_DIR",
debug_env: "KETTLE_DEV_DEBUG",
Expand Down Expand Up @@ -79,10 +70,10 @@ gem "appraisal2", "~> 3.1", ">= 3.1.1"

gem "bundler-audit", "~> 0.9.3"

if kettle_rb_dev.casecmp("false").zero?
if kettle_dev_dev.casecmp("false").zero?
gem "kettle-dev", "~> 2.2", ">= 2.2.25"

gem "kettle-family", ">= 1.0.0"
gem "kettle-family", ">= 1.0.4"

gem "kettle-test", "~> 2.0", ">= 2.0.11"
end
Expand Down
Loading
Loading