gowalk-cicd 1.0.155 → 1.0.156

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.
@@ -1 +1 @@
1
- 1.0.155
1
+ 1.0.156
@@ -1 +1 @@
1
- 1.0.155
1
+ 1.0.156
@@ -1 +1 @@
1
- 1.0.155
1
+ 1.0.156
@@ -122,7 +122,8 @@ def prepare(config, app, *, reader=collect, owner_reader=ownership_inventory, co
122
122
  inventory = reader(command, require_pools=False)
123
123
  if inventory.get('pool_failure'):
124
124
  raise NetworkFailure(inventory['pool_failure'])
125
- if not re.fullmatch(r'v?2\.\d+\.\d+', inventory['compose_version']):
125
+ # Compose 2 and 5 reuse a project network that carries no config-hash label (docs/BACKEND_NETWORKS.md).
126
+ if not re.fullmatch(r'v?(?:2|5)\.\d+\.\d+', inventory['compose_version']):
126
127
  raise NetworkFailure('compose_version_unsupported')
127
128
  rows.append(create_one(plan, inventory, reader, command))
128
129
  inventory = reader(command, require_pools=False)
@@ -28,9 +28,10 @@ class Host:
28
28
  self.calls = []
29
29
  self.pool_failure = ''
30
30
  self.lose_reply = False
31
+ self.compose_version = '2.39.4'
31
32
 
32
33
  def inventory(self, command, require_pools=True):
33
- return {'docker_version': '28.0.4', 'compose_version': '2.39.4', 'observed_at': '2026-09-15T00:00:00Z',
34
+ return {'docker_version': '28.0.4', 'compose_version': self.compose_version, 'observed_at': '2026-09-15T00:00:00Z',
34
35
  'python_version': '3.8.20', 'pool_source': 'fixture', 'pool_failure': self.pool_failure,
35
36
  'pools': [{'base': '172.28.0.0/22', 'size': 16}], 'networks': copy.deepcopy(self.networks),
36
37
  'host_excluded': [], 'host_records': [],
@@ -85,6 +85,27 @@ class PreparationTests(unittest.TestCase):
85
85
  self.assertEqual(set(values), {'172.28.1.0/24', '172.28.2.0/24'})
86
86
  self.assertEqual(len(host.calls), 2)
87
87
 
88
+ def test_reviewed_compose_majors_allocate_and_others_refuse_before_create(self):
89
+ for version in ('2.39.4', 'v2.40.3', '5.0.0', '5.3.1', 'v5.5.1'):
90
+ host = Host()
91
+ host.compose_version = version
92
+ result = prepare(config('first'), 'first', **host.arguments())
93
+ self.assertTrue(result['ok'])
94
+ self.assertEqual(result['compose_version'], version)
95
+ self.assertEqual(host.networks[-1]['Labels']['com.docker.compose.version'], version)
96
+ self.assertNotIn('com.docker.compose.config-hash', host.networks[-1]['Labels'])
97
+ self.assertEqual(len(host.calls), 1)
98
+ for version in ('1.29.2', '3.0.0', '4.1.0', '6.0.0', '5.3', '25.0.0'):
99
+ host = Host()
100
+ host.compose_version = version
101
+ with self.assertRaisesRegex(NetworkFailure, 'compose_version_unsupported'):
102
+ prepare(config('first'), 'first', **host.arguments())
103
+ self.assertEqual(host.calls, [])
104
+ host.networks.append(network('existing', '172.29.0.0/16'))
105
+ preserved = prepare(config('existing'), 'existing', **host.arguments())
106
+ self.assertEqual(preserved['networks'][0]['state'], 'preserved')
107
+ self.assertEqual(host.calls, [])
108
+
88
109
  def test_full_effective_pool_and_unknown_provenance_refuse_expansion(self):
89
110
  for unknown in (False, True):
90
111
  host = Host()
@@ -28,10 +28,21 @@ fingerprint. A later change to its network contract refuses before Compose rathe
28
28
  ignoring authored IPAM or replacing a network that may carry active workloads. An app requiring a
29
29
  different network must implement that deliberate migration in its own deployment.
30
30
 
31
- The helper intentionally does not manufacture `com.docker.compose.config-hash`. Compose 2 accepts a
32
- network with the correct project/network labels and no hash. A wrong hash can trigger replacement.
33
- Its own fingerprint protects replay, including configuration changes. Other Compose major versions
34
- require compatibility review before new-network preparation is admitted.
31
+ The helper intentionally does not manufacture `com.docker.compose.config-hash`. Compose 2 and Compose 5
32
+ accept a network with the correct project/network labels and no hash. A wrong hash can trigger
33
+ replacement. Its own fingerprint protects replay, including configuration changes. New-network
34
+ preparation admits Compose 2.x and 5.x; any other major version refuses with
35
+ `compose_version_unsupported` until it has been reviewed. Existing selected networks are preserved
36
+ under every Compose version because preservation never allocates.
37
+
38
+ Compose 5 review (2026-09-17, docker/compose tags v5.0.0, v5.3.1 and v5.5.1 against v2.40.3):
39
+ `resolveOrCreateNetwork` in `pkg/compose/create.go` at v5.0.0 and v5.3.1 returns the inspected
40
+ network when its `com.docker.compose.network` label matches and its config-hash label is empty or
41
+ equal (`hash == "" || hash == expected`), the same branch as v2.40.3; the remaining differences are
42
+ Docker client types, IPAM parsing and event emission. v5.5.1 moved reuse into `reconcileNetworks`
43
+ in `pkg/compose/reconcile.go`, whose observed state is scoped by the project label and which leaves a
44
+ network with no recorded hash untouched (`observed.ConfigHash == ""`). docker/compose carries no v3 or
45
+ v4 tags, and Compose 1 (`docker-compose`) stays unreviewed.
35
46
 
36
47
  ## Address-space proof
37
48
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gowalk-cicd",
3
- "version": "1.0.155",
3
+ "version": "1.0.156",
4
4
  "description": "Zero-config GitHub Actions delivery for iOS TestFlight and Android Google Play.",
5
5
  "type": "module",
6
6
  "bin": {