@mriekki/project-forge 4.10.1 → 4.10.2

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,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
3
  "package": "@mriekki/project-forge",
4
- "version": "4.10.1",
4
+ "version": "4.10.2",
5
5
  "defaultProfile": "greenfield-project",
6
6
  "profiles": {
7
7
  "greenfield-project": {
@@ -21,7 +21,7 @@
21
21
  "canonicalDescriptor": "distributions/greenfield-workspace.json"
22
22
  },
23
23
  "deployment": {
24
- "revision": "6b13a6e66218c067771311db1336c73229d23899",
24
+ "revision": "5131dd0db9bbccda1647eee352f6bdcad7f5c112",
25
25
  "distribution": "greenfield-project",
26
26
  "descriptor": "assets/deployment/distribution.json",
27
27
  "sourceRoot": "assets/generated/deployment",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
3
  "package": "@mriekki/project-forge",
4
- "version": "4.10.1",
4
+ "version": "4.10.2",
5
5
  "components": {
6
6
  "core": {
7
7
  "revision": "8796fd8dc22df8b64078e5b460e1008a8c7a5f7d",
@@ -326,7 +326,7 @@
326
326
  ]
327
327
  },
328
328
  "deployment": {
329
- "revision": "6b13a6e66218c067771311db1336c73229d23899",
329
+ "revision": "5131dd0db9bbccda1647eee352f6bdcad7f5c112",
330
330
  "distribution": "greenfield-project",
331
331
  "files": [
332
332
  {
@@ -412,7 +412,7 @@
412
412
  {
413
413
  "source": "src/project_forge_deployment/cloudflare_route_apply.py",
414
414
  "destination": "tools/project-forge-deployment/project_forge_deployment/cloudflare_route_apply.py",
415
- "sha256": "eea7a5b4322e0601db36d28cb0529522d6acc37c55dfc9a7b41d91518fe14cd4"
415
+ "sha256": "9c41b4b35d15bc46e7828f0366dc53c58be47f4414e7d90dfd176ea922bf294a"
416
416
  },
417
417
  {
418
418
  "source": "src/project_forge_deployment/cli.py",
@@ -113,6 +113,20 @@ def _rollback_final_state(
113
113
  return errors
114
114
 
115
115
 
116
+ def _uncertain_recovery_error(
117
+ original_error: Exception,
118
+ recovery_error: Exception,
119
+ ) -> DeploymentKitError:
120
+ return DeploymentKitError(
121
+ "Cloudflare public-route final verification failed, and recovery could not read "
122
+ "the current host/provider state. External state is uncertain and rollback was "
123
+ "not attempted because current ownership could not be verified safely. "
124
+ f"Original verification error: {original_error} "
125
+ f"Recovery read failed: {recovery_error} "
126
+ "Inspect the managed host route, tunnel configuration, and DNS record before retrying."
127
+ )
128
+
129
+
116
130
  def apply_public_route(plan: dict[str, Any], *, api_token: str) -> dict[str, Any]:
117
131
  """Apply a reviewed public route with bounded post-write recovery.
118
132
 
@@ -140,8 +154,8 @@ def apply_public_route(plan: dict[str, Any], *, api_token: str) -> dict[str, Any
140
154
 
141
155
  try:
142
156
  state = _read_final_state(plan, api_token=api_token)
143
- except Exception:
144
- raise original_error
157
+ except Exception as recovery_error:
158
+ raise _uncertain_recovery_error(original_error, recovery_error) from recovery_error
145
159
 
146
160
  route_ok = state["route"] == plan["route"]
147
161
  config_ok = _reviewed_config_matches(state["config"], plan["desiredTunnelConfig"])
@@ -159,7 +173,9 @@ def apply_public_route(plan: dict[str, Any], *, api_token: str) -> dict[str, Any
159
173
  rollback_errors = _rollback_final_state(plan, state, api_token=api_token)
160
174
  if rollback_errors:
161
175
  raise DeploymentKitError(
162
- "Cloudflare public-route final verification failed and rollback was incomplete: "
176
+ "Cloudflare public-route final verification failed and rollback was incomplete; "
177
+ "external state may remain changed. "
163
178
  + "; ".join(rollback_errors)
179
+ + " Inspect the managed host route, tunnel configuration, and DNS record before retrying."
164
180
  ) from original_error
165
181
  raise original_error
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mriekki/project-forge",
3
- "version": "4.10.1",
3
+ "version": "4.10.2",
4
4
  "description": "Public consumer distribution and updater for Project Forge engineering assets.",
5
5
  "type": "module",
6
6
  "bin": {