You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
## Summary
- infer successful one-shot services from Compose `depends_on.condition:
service_completed_successfully`
- preserve strict failure handling for unrelated services that merely
exit zero
- refresh lifecycle docs and agent-integration revision so stale
installed guidance is detectable
## Root cause
Hack v3.3.6 only accepted exited-zero services when they were dependency
installers or carried `hack.service.one-shot=true`. Valid Compose
completion gates such as Event Agent `db-ops` were therefore reported as
`E_STARTUP_INCOMPLETE` after the stack had started successfully.
## Verification
- `bun test` — 893 pass, 5 skip, 0 fail
- `bun run check`
- `bun run typecheck`
- `bun run build`
- focused startup/classifier regressions — 16 pass, 0 fail
Copy file name to clipboardExpand all lines: .codex/skills/hack-cli/SKILL.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,11 +12,11 @@ Use `hack` as the primary interface for local-first development.
12
12
13
13
## Integration freshness
14
14
15
-
- These instructions were generated by hack CLI v3.3.5; treat cached rules from another version as potentially stale.
15
+
- These instructions were generated by hack CLI v3.3.6; treat cached rules from another version as potentially stale.
16
16
- At session start, audit project and global integrations with `hack setup sync --all-scopes --check`.
17
17
- If anything is stale, missing, or deprecated, run `hack setup sync --all-scopes`, then reload the agent session so cached instructions are replaced.
18
18
- Never copy or hand-edit generated Hack rules to refresh them; update the CLI and run the sync command.
19
-
- Content revision: `b8663fad3ef4` (version alone is not a freshness guarantee).
19
+
- Content revision: `eef2b0142b95` (version alone is not a freshness guarantee).
20
20
21
21
## Product boundary
22
22
@@ -125,7 +125,7 @@ Use `hack` as the primary interface for local-first development.
125
125
- Inspect lifecycle status via `hack projects --details` and stream via `hack logs <service-or-process>`.
126
126
- Lifecycle session recovery is ownership-proven: Hack adopts healthy token-, definition-, and environment-matched sessions, replaces owned stale sessions, and refuses to kill same-name sessions without deterministic ownership proof.
127
127
-`hack doctor --fix` reaps an orphan lifecycle session only when mux ownership is proven and its Compose instance is absent; unverified same-name sessions are never modified.
128
-
- After `hack up` or `hack restart`, running services and successful one-shot services (`exited` with code 0) count as successful; other states return `E_STARTUP_INCOMPLETE`, and `hack doctor` warns about containers stuck in `Created`.
128
+
- After `hack up` or `hack restart`, running services and successful one-shot services (`exited` with code 0) count as successful. Hack recognizes dependency installers, `hack.service.one-shot=true`, and services referenced by Compose `condition: service_completed_successfully`; other states return `E_STARTUP_INCOMPLETE`, and `hack doctor` warns about containers stuck in `Created`.
129
129
- Detached startup is bounded; a hung Compose operation returns `E_STARTUP_TIMEOUT`, terminates its process group, and `hack doctor --fix` can start exact containers left in `Created`.
130
130
- Target only affected services with `hack up <service...> --detach`, `hack restart <service...>`, or `hack env apply --service <service>`; scoped operations skip project lifecycle hooks and implicit dependency startup.
131
131
- Use `hack env explain <KEY> --env <overlay> --service <service> --target <host|compose>` for redacted source, precedence, availability, and delivery diagnostics.
Copy file name to clipboardExpand all lines: .cursor/rules/hack.mdc
+3-3Lines changed: 3 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -7,11 +7,11 @@ Prefer `hack` when shell access is available. Use MCP only when shell access is
7
7
8
8
## Integration freshness
9
9
10
-
- These instructions were generated by hack CLI v3.3.5; treat cached rules from another version as potentially stale.
10
+
- These instructions were generated by hack CLI v3.3.6; treat cached rules from another version as potentially stale.
11
11
- At session start, audit project and global integrations with `hack setup sync --all-scopes --check`.
12
12
- If anything is stale, missing, or deprecated, run `hack setup sync --all-scopes`, then reload the agent session so cached instructions are replaced.
13
13
- Never copy or hand-edit generated Hack rules to refresh them; update the CLI and run the sync command.
14
-
- Content revision: `b8663fad3ef4` (version alone is not a freshness guarantee).
14
+
- Content revision: `eef2b0142b95` (version alone is not a freshness guarantee).
15
15
16
16
## Product boundary
17
17
@@ -73,7 +73,7 @@ Prefer `hack` when shell access is available. Use MCP only when shell access is
73
73
- Inspect lifecycle status via `hack projects --details` and stream via `hack logs <service-or-process>`.
74
74
- Lifecycle session recovery is ownership-proven: Hack adopts healthy token-, definition-, and environment-matched sessions, replaces owned stale sessions, and refuses to kill same-name sessions without deterministic ownership proof.
75
75
- `hack doctor --fix` reaps an orphan lifecycle session only when mux ownership is proven and its Compose instance is absent; unverified same-name sessions are never modified.
76
-
- After `hack up` or `hack restart`, running services and successful one-shot services (`exited` with code 0) count as successful; other states return `E_STARTUP_INCOMPLETE`, and `hack doctor` warns about containers stuck in `Created`.
76
+
- After `hack up` or `hack restart`, running services and successful one-shot services (`exited` with code 0) count as successful. Hack recognizes dependency installers, `hack.service.one-shot=true`, and services referenced by Compose `condition: service_completed_successfully`; other states return `E_STARTUP_INCOMPLETE`, and `hack doctor` warns about containers stuck in `Created`.
77
77
- Detached startup is bounded; a hung Compose operation returns `E_STARTUP_TIMEOUT`, terminates its process group, and `hack doctor --fix` can start exact containers left in `Created`.
78
78
- Target only affected services with `hack up <service...> --detach`, `hack restart <service...>`, or `hack env apply --service <service>`; scoped operations skip project lifecycle hooks and implicit dependency startup.
79
79
- Use `hack env explain <KEY> --env <overlay> --service <service> --target <host|compose>` for redacted source, precedence, availability, and delivery diagnostics.
- Inspect lifecycle status via `hack projects --details` and stream via `hack logs <service-or-process>`.
311
311
- Lifecycle session recovery is ownership-proven: Hack adopts healthy token-, definition-, and environment-matched sessions, replaces owned stale sessions, and refuses to kill same-name sessions without deterministic ownership proof.
312
312
-`hack doctor --fix` reaps an orphan lifecycle session only when mux ownership is proven and its Compose instance is absent; unverified same-name sessions are never modified.
313
-
- After `hack up` or `hack restart`, running services and successful one-shot services (`exited` with code 0) count as successful; other states return `E_STARTUP_INCOMPLETE`, and `hack doctor` warns about containers stuck in `Created`.
313
+
- After `hack up` or `hack restart`, running services and successful one-shot services (`exited` with code 0) count as successful. Hack recognizes dependency installers, `hack.service.one-shot=true`, and services referenced by Compose `condition: service_completed_successfully`; other states return `E_STARTUP_INCOMPLETE`, and `hack doctor` warns about containers stuck in `Created`.
314
314
- Detached startup is bounded; a hung Compose operation returns `E_STARTUP_TIMEOUT`, terminates its process group, and `hack doctor --fix` can start exact containers left in `Created`.
315
315
- Target only affected services with `hack up <service...> --detach`, `hack restart <service...>`, or `hack env apply --service <service>`; scoped operations skip project lifecycle hooks and implicit dependency startup.
316
316
- Use `hack env explain <KEY> --env <overlay> --service <service> --target <host|compose>` for redacted source, precedence, availability, and delivery diagnostics.
- Inspect lifecycle status via `hack projects --details` and stream via `hack logs <service-or-process>`.
181
181
- Lifecycle session recovery is ownership-proven: Hack adopts healthy token-, definition-, and environment-matched sessions, replaces owned stale sessions, and refuses to kill same-name sessions without deterministic ownership proof.
182
182
-`hack doctor --fix` reaps an orphan lifecycle session only when mux ownership is proven and its Compose instance is absent; unverified same-name sessions are never modified.
183
-
- After `hack up` or `hack restart`, running services and successful one-shot services (`exited` with code 0) count as successful; other states return `E_STARTUP_INCOMPLETE`, and `hack doctor` warns about containers stuck in `Created`.
183
+
- After `hack up` or `hack restart`, running services and successful one-shot services (`exited` with code 0) count as successful. Hack recognizes dependency installers, `hack.service.one-shot=true`, and services referenced by Compose `condition: service_completed_successfully`; other states return `E_STARTUP_INCOMPLETE`, and `hack doctor` warns about containers stuck in `Created`.
184
184
- Detached startup is bounded; a hung Compose operation returns `E_STARTUP_TIMEOUT`, terminates its process group, and `hack doctor --fix` can start exact containers left in `Created`.
185
185
- Target only affected services with `hack up <service...> --detach`, `hack restart <service...>`, or `hack env apply --service <service>`; scoped operations skip project lifecycle hooks and implicit dependency startup.
186
186
- Use `hack env explain <KEY> --env <overlay> --service <service> --target <host|compose>` for redacted source, precedence, availability, and delivery diagnostics.
"Inspect lifecycle status via `hack projects --details` and stream via `hack logs <service-or-process>`.",
207
207
"Lifecycle session recovery is ownership-proven: Hack adopts healthy token-, definition-, and environment-matched sessions, replaces owned stale sessions, and refuses to kill same-name sessions without deterministic ownership proof.",
208
208
"`hack doctor --fix` reaps an orphan lifecycle session only when mux ownership is proven and its Compose instance is absent; unverified same-name sessions are never modified.",
209
-
"After `hack up` or `hack restart`, running services and successful one-shot services (`exited` with code 0) count as successful; other states return `E_STARTUP_INCOMPLETE`, and `hack doctor` warns about containers stuck in `Created`.",
209
+
"After `hack up` or `hack restart`, running services and successful one-shot services (`exited` with code 0) count as successful. Hack recognizes dependency installers, `hack.service.one-shot=true`, and services referenced by Compose `condition: service_completed_successfully`; other states return `E_STARTUP_INCOMPLETE`, and `hack doctor` warns about containers stuck in `Created`.",
210
210
"Detached startup is bounded; a hung Compose operation returns `E_STARTUP_TIMEOUT`, terminates its process group, and `hack doctor --fix` can start exact containers left in `Created`.",
211
211
"Target only affected services with `hack up <service...> --detach`, `hack restart <service...>`, or `hack env apply --service <service>`; scoped operations skip project lifecycle hooks and implicit dependency startup.",
212
212
"Use `hack env explain <KEY> --env <overlay> --service <service> --target <host|compose>` for redacted source, precedence, availability, and delivery diagnostics.",
0 commit comments