Skip to content

v7.1.8

Choose a tag to compare

@pboling pboling released this 26 Aug 14:40
· 1493 commits to main since this release
v7.1.8
e55af6a

7.1.8 - 2026-09-07

  • TAG: v7.1.8
  • COVERAGE: 0.00% -- 0/0 lines in 0 files
  • BRANCH COVERAGE: 0.00% -- 0/0 branches in 0 files
  • 73.88% documented

Added

  • Raise the minimum supported tree_sitter_language_pack version to 1.16.2,
    the first released TSLP version containing the Ruby platform-gem metadata fix.
  • Add a repository-local benchmark report formatter that writes stable,
    idempotent Markdown tables from JSON reports or standard input.
  • Add comprehensive --help output and usage examples to the repository-local
    benchmark launchers.
  • Document all benchmark profiles and distinguish raw runs, aggregate reports,
    and performance evidence in the benchmark guide.
  • Include benchmark selection mode, affected-path counts, neighbor counts, and
    selected case IDs in Markdown reports so profile differences are visible.
  • Render configured competitor coverage and outcome summaries in competitive
    Markdown reports, and document that competitor executables must be supplied
    explicitly.
  • Expose the existing Git competitor adapter through --git so local
    competitive runs can compare against the Git executable selected by PATH
    without requiring the currently broken Mergiraf build.
  • Include competitor reported versions, executable paths, and binary digests in
    the Markdown competitive report for reproducibility.
  • Make the repository-local benchmark launcher use the canonical reviewed sibling corpus by default while retaining explicit corpus selection.
  • Add a repository-local benchmark launcher that forces all cold workers to use the current StructuredMerge monorepo providers.
  • Preserve structured provider diagnostics in merge2 benchmark results so installed-stack and local-provider mismatches identify the actual unavailable provider.
  • Make YAML recursive resolution handle normalized MappingEntry nodes without assuming parser-wrapper predicates are present, restoring Psych provider conformance.
  • Make the local benchmark runner fail closed for non-Ruby corpus providers by recording them as unsupported coverage, support independently owned nested Markdown leaf sections while preserving ancestor framing, and compose independent direct-method edits inside Prism Ruby owners.
  • Add the generic ruby.ruby workflow provider over the Ruby substrate, accepting TreeHaver tree-sitter runtimes while keeping Prism as a distinct native backend provider.
  • Record the Ruby golden-master adapter identity, source revision and dirty state, executable digest, complete benchmark configuration, requested merge and parser providers, and allowlisted runtime environment in every local benchmark run and aggregate report.
  • Add a binary-safe, persistent JSONL benchmark adapter and performance-only run mode that measures many Ruby golden-master operations in one process without changing correctness classification.
  • Accept versioned adapter descriptors for cross-runtime benchmark runs, recording the candidate source state, executable digest, runtime environment, actual merge/parser providers, and declared support without mislabeling the candidate or treating out-of-scope neighbor cases as errors.
  • Add bounded process-level parallelism for independent cold benchmark cases with deterministic result ordering and explicit worker-process evidence.
  • Add explicit full-corpus nightly and competitor-enabled competitive benchmark profiles, and reject competitor sweeps from ordinary correctness profiles.
  • Separate benchmark process-spawn, first-request startup/loading, adapter execution, JSONL/IPC harness overhead, and warm round-trip timing evidence.
  • Add shared RSpec support for deterministic TreeHaver/provider contract snapshots, namespaced native-extension evidence, and serialization differential replay.
  • Add provider-owned Prism, Psych, RBS, and Markly snapshot extensions, and share one native RBS semantic projection between merge verification and contract evidence.
  • Add a clean-producer, one-process-per-replay capture driver for the seven representative Ruby golden-master provider snapshot targets.
  • Record workflow package identity and complete request/result transport evidence in provider snapshot differential replays.
  • Return unbalanced Ruby block directives as structured Prism provider parse failures instead of leaking exceptions.
  • Move source-preserving YAML provider mechanics into yaml-merge, add its TSLP workflow provider, and make psych-merge supply only its native parser projection.
  • Retain provider-owned native Psych AST extensions in production analysis results so coarse Alef workflow hosts can forward them without reparsing or flattening the native tree.
  • Let cross-runtime benchmark descriptors declare operation and dialect support plus merge-provider identity per format family, avoiding false support claims from Cartesian-product capability lists.
  • Load ast-merge-git's optional benchmark providers from STRUCTUREDMERGE_DEV during local development so benchmarks exercise the current monorepo providers.
  • Reuse YAML's recursive AST resolver in its workflow provider so nested template-only mapping leaves merge without sacrificing destination values or source-line provenance.
  • Route structurally rich TOML merge2 provider requests through the existing TreeHaver-backed TOML substrate merger, sharing table and dotted-key behavior across TSLP, Citrus, and Parslet providers.
  • Add the reviewed nested-table TOML merge2 sentinel to local benchmark profiles and recognize TOML provider identity in cross-runtime benchmark evidence.
  • Promote the shared Ruby class/method merge2 fixture into the local benchmark corpus and recognize the Rust Ruby substrate as a cross-runtime candidate.
  • Promote source-preserving Markdown heading-section merge2 into the mandatory benchmark profile and recognize the Rust Markdown substrate as a cross-runtime candidate.
  • Promote source-preserving TypeScript independent-function merge3 into the mandatory benchmark profile and map both Ruby and Rust TypeScript provider paths to affected-case selection.
  • Promote source-preserving Go independent-function merge3 into the mandatory benchmark profile and map both Ruby and Rust Go provider paths to affected-case selection.
  • Promote source-preserving Rust independent-function merge3 into the mandatory benchmark profile and map both Ruby and Rust-language provider paths to affected-case selection.
  • Promote source-preserving Bash independent-function merge3 into the mandatory benchmark profile and map both Ruby and Rust Bash provider paths to affected-case selection.
  • Add a reviewed Python merge3 gold case for the explicitly limited Rust
    generic TSLP provider, including deterministic changed-path selection without
    claiming a Ruby Python provider or adding it to the mandatory GM profile.
  • Validate the expanded reviewed-history corpus, including pinned Alef Rust
    source and Markdown conflict resolutions, a clean JSON schema merge, and
    reviewed Cargo TOML, Kubernetes Go/YAML, and RBS histories.
  • Record the Git baseline executable path, version, and digest in benchmark
    environment provenance.
  • Add an opt-in competitive Git merge-file adapter with pinned corpus
    provenance and the same strict version and digest checks as other tools.
  • Add per-competitor supported and eligible case counts with explicit coverage
    ratios so comparative outcomes are not read without their denominators.
  • Add preservation-only line and lexeme agreement details to benchmark results;
    these metrics do not affect merge correctness or safety gates.

Fixed

  • Align generated modular development Gemfiles with the nomono 1.1.5
    bootstrap requirement used by the owning Gemfiles.

  • Let TreeHaver's TSLP adapter parse valid UTF-8 filesystem bytes whose Ruby
    string is binary-labelled, without transcoding bytes or accepting invalid
    UTF-8 as text.

  • Preserve destination-customized Markdown heading sections during provider merge2, insert parser-proven incoming-only sections according to shared ordering constraints, and reuse this source-preserving behavior across TSLP, Markly, Commonmarker, and Kramdown providers.

  • Let the RBS workflow provider honor explicit native RBS or TSLP TreeHaver selection, including the canonical kreuzberg-language-pack selector, across analysis, diff, and two- or three-way merge operations; route two-way operations through the RBS substrate so destination customizations survive; and reject TSLP's embedded inline-RBS parse mode for document merges.

  • Normalize object and hash tree-sitter points in shared line-range mechanics, and let RBS wrappers reuse that contract so TSLP merges do not fail on point shape.

  • Preserve shared layout-owned leading blank lines before template-only Prism Ruby nodes that have no leading comments.

  • Accept shared snake_case diagnostics from non-Ruby benchmark adapters so expected parser rejections are classified as successful fail-closed outcomes.

  • Compare YAML diff2 entries by semantic value and parser attributes rather than owned source fragments, so mapping order and formatting changes do not become semantic edits.

  • Normalize Citrus TOML pair ranges to their parsed value extent so comments following arrays are not emitted both as pair content and as shared owned comments.

  • Pin released StructuredMerge fixtures v7.1.8 for provider validation and benchmark profiles.

  • Run the Git benchmark competitor probe through a shell so CI can resolve the Git executable.

  • Make the default bup task commit CI-usable lockfiles against local StructuredMerge monorepo siblings while reserving deps-local for non-committing integration with unreleased Kettle sources.

  • Keep the root orchestration bundle on released tooling while passing local dependency overrides only to member bundle updates, preventing deps-local from polluting the root lockfile.

  • Run the default bupb task against local StructuredMerge siblings, matching the normal bup workflow.

Official Discord 👉️ Live Chat on Discord

Many paths lead to being a sponsor or a backer of this project. Are you on such a path?

Sponsor Me on Github Liberapay Goal Progress Donate on PayPal

Buy me a coffee Donate on Polar Donate to my FLOSS efforts at ko-fi.com Donate to my FLOSS efforts using Patreon