kettle-family 1.2.93 → 1.2.94

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a1a24d4a7f560730b58dea502aa74c1f7c2b6b5821c92bc565ee5d0eff79d8be
4
- data.tar.gz: 58f47810263c6279e727419acb896abb959ccac76bff444c83b19c88c85f64f5
3
+ metadata.gz: 60682b3f2d2f1017624cc67b428ff954b71f03eca4fdb6034cbe229183cba970
4
+ data.tar.gz: ea873857902fa44d2b2051e6449f21d84515139f005e1a9c148dfedf5062ce2f
5
5
  SHA512:
6
- metadata.gz: 7bb4085cb68b1d1ee1592ad1ab43d55afbc08a4c12a341ffffb6f1b3d712f43e51e0b8b4f59095fdd8402e1fa7c21822d6b43da8c8bd4caf340e102418d2974c
7
- data.tar.gz: c12db5ebfea5489500b221fbc39f8d638fc6f4ad119eb73a210e195b779804325be2effad8970a78b65f7a5f0b837a9d324bb12242ab33c61b782877de5d6343
6
+ metadata.gz: a14c847688ce762dbf03be0229b1c5ac0da23d3892e2e803467b8dc6efe73df4ede2b43d64a6ffedbccaf38f11da162bfad6bbf574a44b29739dafe8b8d70cba
7
+ data.tar.gz: 8ad7d29e783dace84ef807339b81907fe9e6e7c7f35ee60c4ac95b412a0972983c6eb7d9e8dad708801b270eda6ee0bb87d8759a22e3d4e29d6f254d4bfa6ff3
checksums.yaml.gz.sig CHANGED
@@ -1,3 +1,6 @@
1
- :��H+>��|L̖��~�̃���c:���j�yIs0���ٛ-I��W~i��E����fb�؃G�~�flX<�� $��u��"��7���/���v����]���# q,�/�2o��|.bM���xv.yA!�z�����xH�����0�=���g%r7�Sʶ!�X _���K����ei��V>Cu��
2
- � �,�M�pye� ��`�+
3
- 63`o�L���nW ��I��V"��[)Zg�%�d���'50���]�Ǖ�}A���Jb��<���}(�_[[��{Q��5����g���)/�2�ܓ�Τ�J
1
+ y;�"Ĕs$�5U[G*W8M}q?�x���eI��ݞaWf��<.�ePF��`���9@�
2
+ A��~ON��3��1��ݎ��[�#z
3
+ �Ѫ�N�#F�a΃��[�D�Ͽ���ҷHj��鼊c�/���{��������ʇ��p��
4
+ �{���>pp�L۹F|�^ҡ8��QS" ����ch�m<�=Pn�P�qK
5
+ I�j��97���H ��f�V*�<�zۗ��H�>���f�.���rFi�c�e��6� ����MM�?�s��c������|���l}���� �"���q1K�����j/Cx�8<0F�3$��6��"ā���{�md�Kǩ֫�¡!�8lr;
6
+ ��ƿ�H4cXKXF5�[;@�v@Oz�
data/CHANGELOG.md CHANGED
@@ -30,6 +30,19 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [1.2.94] - 2026-09-07
34
+
35
+ - TAG: [v1.2.94][1.2.94t]
36
+ - COVERAGE: 93.50% -- 6183/6613 lines in 35 files
37
+ - BRANCH COVERAGE: 78.04% -- 2512/3219 branches in 35 files
38
+ - 32.58% documented
39
+
40
+ ### Fixed
41
+
42
+ - Restrict inferred monorepo release path allowances to CI-resident paths, preserving external development overrides for local-only dependency work.
43
+
44
+ - Allow bup and bupb to commit explicitly selected development path graphs while continuing to reject unrequested local lockfile paths.
45
+
33
46
  ## [1.2.93] - 2026-09-07
34
47
 
35
48
  - TAG: [v1.2.93][1.2.93t]
@@ -2627,7 +2640,9 @@ Please file a bug if you notice a violation of semantic versioning.
2627
2640
  - Fixed CI load failures on engines without compatible `pty` support by falling back to Open3 for interactive release commands.
2628
2641
  - Fixed Ruby 3.2 version-bump support by loading Prism lazily and wiring the Prism gem only for MRI versions that need it.
2629
2642
 
2630
- [Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.93...HEAD
2643
+ [Unreleased]: https://github.com/kettle-dev/kettle-family/compare/v1.2.94...HEAD
2644
+ [1.2.94]: https://github.com/kettle-dev/kettle-family/compare/v1.2.93...v1.2.94
2645
+ [1.2.94t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.94
2631
2646
  [1.2.93]: https://github.com/kettle-dev/kettle-family/compare/v1.2.92...v1.2.93
2632
2647
  [1.2.93t]: https://github.com/kettle-dev/kettle-family/releases/tag/v1.2.93
2633
2648
  [1.2.92]: https://github.com/kettle-dev/kettle-family/compare/v1.2.91...v1.2.92
data/README.md CHANGED
@@ -255,13 +255,19 @@ release:
255
255
  - kettle-jem
256
256
  ```
257
257
 
258
- `family.local_path_env` names the environment variable that activates local
259
- path dependencies for this family. For an explicitly configured
260
- `family.mode: monorepo`, `kettle-family` derives a release-lock policy that
261
- allows only `family.members_root` (or the configured member root) and passes
262
- that policy to each `kettle-release` child. Those paths are valid because the
263
- same monorepo checkout exists in CI. The tracked `Gemfile.lock` remains a
264
- development lockfile and may retain those member `PATH` sources.
258
+ `family.local_path_env` names the environment variable that activates the
259
+ family's development path graph. It does not, by itself, make a path valid in
260
+ CI or safe to retain in a release lockfile. For an explicitly configured
261
+ `family.mode: monorepo`, `kettle-family` derives a release-lock policy only
262
+ when that path is contained by the family repository; this is the case when
263
+ the CI checkout contains the same member graph. The tracked `Gemfile.lock`
264
+ may then retain those member `PATH` sources.
265
+
266
+ A monorepo can also reference a separate checkout, for example a shared base
267
+ gem in its parent workspace. That is an external development override, not an
268
+ internal monorepo path: it is removed for release unless
269
+ `release.allowed_local_path_roots` and `release.allowed_local_path_env`
270
+ explicitly describe matching CI checkout provisioning.
265
271
 
266
272
  Sibling-repository families do not receive this exception. Their canonical
267
273
  lockfiles must use released dependencies: a local Kettle Dev workspace, or
@@ -607,9 +613,13 @@ family-root lockfile is also validated and committed for monorepos, where the
607
613
  root and members share one Git repository. A sibling-repository family root is
608
614
  updated for its orchestration bundle but is not included in any member commit.
609
615
  Use `--no-commit` for a working-tree-only refresh, or `--commit` to state the
610
- default explicitly. Local dependency environment variables are preserved when
611
- explicitly supplied, so use the family's local or released dependency mode
612
- deliberately before running it.
616
+ default explicitly. `bup` and `bupb` validate the development graph selected
617
+ by their explicit local-path environment and commit it by default; this keeps
618
+ template synchronization from being blocked by expected local-path lockfile
619
+ changes. Release workflows separately normalize and validate their
620
+ CI/release graph. A normal family-local graph and an unreleased external
621
+ Kettle toolchain are separate choices; project task wrappers should not
622
+ silently enable the latter for ordinary `bup` or `bupb` runs.
613
623
 
614
624
  Plan or update GitHub Actions workflow SHA pins across the selected family
615
625
  members:
@@ -1144,7 +1154,7 @@ Thanks for RTFM. ☺️
1144
1154
  [📌gitmoji]: https://gitmoji.dev
1145
1155
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
1146
1156
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
1147
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-6.591-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
1157
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-6.613-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
1148
1158
  [🔐security]: https://github.com/kettle-dev/kettle-family/blob/main/SECURITY.md
1149
1159
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
1150
1160
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
@@ -285,18 +285,29 @@ module Kettle
285
285
  end
286
286
 
287
287
  def release_allowed_local_path_roots
288
- inferred = configured_monorepo_release? ? [family_local_path_root] : []
288
+ inferred = ci_resident_monorepo_local_path_graph? ? [family_local_path_root] : []
289
289
  configured = Array(fetch_path("release", "allowed_local_path_roots"))
290
290
  .map { |path| expand_config_relative_path(path) }
291
291
  (inferred + configured).uniq
292
292
  end
293
293
 
294
294
  def release_allowed_local_path_env_names
295
- inferred = configured_monorepo_release? ? [family_local_path_env_name] : []
295
+ inferred = ci_resident_monorepo_local_path_graph? ? [family_local_path_env_name] : []
296
296
  configured = Array(fetch_path("release", "allowed_local_path_env"))
297
297
  (inferred + configured).compact.map(&:to_s).reject(&:empty?).uniq
298
298
  end
299
299
 
300
+ # A monorepo may still use an environment switch to reach a separate
301
+ # sibling checkout. Only a path contained by this repository can be
302
+ # inferred as CI-resident and retained in release lockfiles.
303
+ def ci_resident_monorepo_local_path_graph?
304
+ return false unless fetch_path("family", "mode") == "monorepo"
305
+
306
+ path_within_root?(family_local_path_root)
307
+ end
308
+
309
+ # This remains the repository-topology predicate used by release
310
+ # scheduling. CI-safe local path inference is deliberately narrower.
300
311
  def configured_monorepo_release?
301
312
  fetch_path("family", "mode") == "monorepo"
302
313
  end
@@ -371,6 +382,12 @@ module Kettle
371
382
 
372
383
  private
373
384
 
385
+ def path_within_root?(path)
386
+ expanded_path = File.expand_path(path)
387
+ expanded_root = File.expand_path(root)
388
+ expanded_path == expanded_root || expanded_path.start_with?("#{expanded_root}/")
389
+ end
390
+
374
391
  def expand_config_relative_path(value)
375
392
  text = value.to_s
376
393
  return text if text.start_with?("/")
@@ -5,7 +5,7 @@ module Kettle
5
5
  # Version namespace for this gem.
6
6
  module Version
7
7
  # Current gem version.
8
- VERSION = "1.2.93"
8
+ VERSION = "1.2.94"
9
9
  end
10
10
  # Current gem version exposed at the traditional constant location.
11
11
  VERSION = Version::VERSION # Traditional Constant Location
@@ -5580,7 +5580,7 @@ module Kettle
5580
5580
  "",
5581
5581
  0.0,
5582
5582
  false,
5583
- diagnostics.empty? ? nil : "bundle update produced release-invalid lockfile"
5583
+ diagnostics.empty? ? nil : "bundle update produced an unexpected local-path lockfile"
5584
5584
  )
5585
5585
  memo << result
5586
5586
  result.ok?
@@ -5606,8 +5606,35 @@ module Kettle
5606
5606
  ReadinessCheck.call(
5607
5607
  member: member,
5608
5608
  config: config,
5609
- allowed_local_path_roots: release_allowed_local_path_roots
5610
- ).stdout.lines.grep(/^release lockfile has local path remote at /).map(&:chomp)
5609
+ allowed_local_path_roots: bundle_update_allowed_local_path_roots
5610
+ ).stdout.lines.grep(/^release lockfile has local path remote at /).map do |line|
5611
+ line.sub("release lockfile", "bundle update lockfile").chomp
5612
+ end
5613
+ end
5614
+
5615
+ # Bundle updates record the graph intentionally selected by the caller.
5616
+ # Release validation remains stricter: it accepts only CI-resident paths.
5617
+ def bundle_update_allowed_local_path_roots
5618
+ explicit = explicit_local_path_env_overrides
5619
+ roots = release_allowed_local_path_roots.dup
5620
+ family_env_name = config.family_local_path_env_name
5621
+
5622
+ explicit.each do |name, value|
5623
+ next unless local_path_env_value?(value)
5624
+
5625
+ if name == family_env_name
5626
+ roots << config.family_local_path_root
5627
+ elsif explicit_local_path_root?(value)
5628
+ roots << File.expand_path(value, config.root)
5629
+ end
5630
+ end
5631
+
5632
+ roots.uniq
5633
+ end
5634
+
5635
+ def explicit_local_path_root?(value)
5636
+ text = value.to_s.strip
5637
+ !%w[true yes 1 on enabled].include?(text.downcase)
5611
5638
  end
5612
5639
 
5613
5640
  def commit_bex_changes(member:, runner:, memo:)
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kettle-family
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.93
4
+ version: 1.2.94
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -443,10 +443,10 @@ licenses:
443
443
  - AGPL-3.0-only
444
444
  metadata:
445
445
  homepage_uri: https://kettle-family.galtzo.com
446
- source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.2.93
447
- changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.93/CHANGELOG.md
446
+ source_code_uri: https://github.com/kettle-dev/kettle-family/tree/v1.2.94
447
+ changelog_uri: https://github.com/kettle-dev/kettle-family/blob/v1.2.94/CHANGELOG.md
448
448
  bug_tracker_uri: https://github.com/kettle-dev/kettle-family/issues
449
- documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.2.93
449
+ documentation_uri: https://www.rubydoc.info/gems/kettle-family/1.2.94
450
450
  funding_uri: https://github.com/sponsors/pboling
451
451
  wiki_uri: https://github.com/kettle-dev/kettle-family/wiki
452
452
  news_uri: https://www.railsbling.com/tags/kettle-family
metadata.gz.sig CHANGED
Binary file