1
0
mirror of https://github.com/bestnite/quadlet-migrator-skill.git synced 2026-04-26 21:01:54 +00:00

Skill: harden decision gates and port conflict detection

- Elevate deployment mode (rootless/rootful) and volume strategy to
  required planning items and hard-stop bullets
- Add host port conflict detection for PublishPort= in planning,
  hard stops, compose-mapping, and validation checklist
- Add execution-phase confirmation gate before writing files
- Add degradation rule for unavailable structured input tools
This commit is contained in:
2026-04-19 02:04:44 +10:00
parent d2eb13b0d6
commit 5babe1fc14
3 changed files with 16 additions and 1 deletions
+1
View File
@@ -51,6 +51,7 @@ Use this file when converting `docker-compose.yml` or `compose.yaml` into Quadle
- For a standalone service, map to `PublishPort=` on the `.container`.
- For a pod-based topology, prefer `PublishPort=` on the `.pod` when the published ports belong to the pod boundary rather than one child container.
- When `PublishPort=` maps a host-side port, detect whether that host port is already in use before finalizing the mapping. Check for TCP/UDP listeners on the host using an available port-detection method. If a conflict is found, stop and ask the user whether to change the host port, skip the mapping, or resolve the conflict manually. Do not silently remap occupied host ports to an alternative.
### `volumes`
+2
View File
@@ -97,6 +97,7 @@ Runnable-output gate checklist template:
- [ ] intra-pod service listeners that must accept sibling-container traffic are reachable on `127.0.0.1` or `0.0.0.0`, unless upstream docs require another reviewed bind address
- [ ] service-management scripts operate on the same artifact set that was reviewed
- [ ] no required support file, env key, or typo-suspect mismatch remains unresolved
- [ ] host-side `PublishPort=` ports are free on the target host
Do not call the result runnable until every item above is checked.
@@ -113,6 +114,7 @@ Do not call the result runnable until every item above is checked.
- required repo-local config, init assets, or helper scripts missing from the installed artifact set
- permissions on rootless bind mounts
- readiness assumptions hidden behind `depends_on`
- host port already in use by another service or process, causing `PublishPort=` binding to fail at start
## Troubleshooting Posture