@feigi/fleet-ctl 3.82.9 → 3.82.11

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.
@@ -38,7 +38,17 @@ ls-tree -r --name-only origin/main`):
38
38
  `scripts/test`, a tracked `agent-test`).
39
39
 
40
40
  Propose one Install step, one Check step and one Test entrypoint, all shell
41
- commands run from the repository root by `sh -c`:
41
+ commands run from the repository root by `sh -c`.
42
+
43
+ **The Test entrypoint and the Check step need no running service — including
44
+ one the command starts itself.** A *running service* is anything a command
45
+ needs that it does not start as its own child process: a Docker daemon (so any
46
+ container, compose stack or testcontainers use), a database or other server
47
+ installed on the host, a host daemon, secrets or credentials in the
48
+ environment. A test that spawns its own server process as a child needs none.
49
+ Network reachability is not a service: the fleet machine is assumed online.
50
+ The Install step is exempt. Whether that service happens to be up while you
51
+ derive never changes the answer.
42
52
 
43
53
  - **Install step** — the form that installs exactly what the repository pins
44
54
  and rewrites nothing: the frozen or locked mode where the tool has one.
@@ -48,7 +58,7 @@ commands run from the repository root by `sh -c`:
48
58
  the frozen or locked mode in the command; never rely on the environment to
49
59
  imply it.
50
60
  - **Test entrypoint** — every test step in the merge-gating CI jobs that can
51
- run in a fresh worktree on this host. Which steps qualify is yours to
61
+ run in a fresh worktree without a running service. Which steps qualify is yours to
52
62
  decide, by reading CI and the repository. Members run it with their own
53
63
  arguments appended (`sh -c '<test> "$@"'`), so it is one invocation: an
54
64
  `&&` chain hands those arguments to its last command alone. Prefer a form
@@ -61,8 +71,8 @@ commands run from the repository root by `sh -c`:
61
71
  resolves under its own directory option, e.g.
62
72
  `git -C web ls-files -- '*.test.ts'`: the reader accepts a quoted pattern
63
73
  unchecked.
64
- - **Check step** — every merge-gating CI step that is not a test step and that
65
- the Test entrypoint does not run: the format, lint and type checks the
74
+ - **Check step** — every merge-gating CI step that is not a test step, that
75
+ the Test entrypoint does not run, and that needs no running service: the format, lint and type checks the
66
76
  repository's CI gates on, whatever they are. One invocation, in the same form
67
77
  as the Test entrypoint: a single command, run from the repository root, with
68
78
  the same shape rules. `true` when the repository's CI has no such step. It
@@ -73,10 +83,15 @@ commands run from the repository root by `sh -c`:
73
83
  of `{"step": "<the CI step>", "reason": "<why it is left out>"}`, `'[]'` when
74
84
  it leaves out nothing. When no single invocation covers every qualifying
75
85
  step, take the widest one and list every qualifying step it leaves out; that
76
- is never a reason to report `RECIPE NOT PROVEN`. A test step that cannot run
77
- here — it needs a service this host lacks, secrets, or another OS — is listed
78
- too, with that reason. A non-test step that is red on `origin/main` is listed
79
- with the reason `red on origin/main`.
86
+ is never a reason to report `RECIPE NOT PROVEN`. A test step or a non-test
87
+ step that needs a running service is always listed too, with that reason,
88
+ whether or not the service is up while you derive; so is a test step that
89
+ needs another OS. A non-test step that is red on `origin/main` is listed
90
+ with the reason `red on origin/main`. When no merge-gating test step runs
91
+ without a running service, there is nothing to prove: report `RECIPE NOT
92
+ PROVEN` with the cause **needs a running service**, never an entrypoint
93
+ that needs one. That is not the case above of no single invocation covering
94
+ every qualifying step.
80
95
 
81
96
  ## 2. Prove it — this procedure exactly
82
97
 
@@ -162,5 +177,8 @@ Your last message is exactly one of:
162
177
  (the Check step is red there, so it cannot be the Check step),
163
178
  **timed out** (a command the proof runs — the Install step, the Check step,
164
179
  the Test entrypoint or a mutation — hung until the script's own bound stopped it),
165
- or **unreadable** (you could not tell from the repository how it is built or
166
- tested).
180
+ **unreadable** (you could not tell from the repository how it is built or
181
+ tested), or **needs a running service** (every merge-gating test step needs
182
+ one). With **needs a running service** no run happened: give each
183
+ merge-gating test step and the service it needs in place of the reason and
184
+ the commands.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@feigi/fleet-ctl",
3
- "version": "3.82.9",
3
+ "version": "3.82.11",
4
4
  "description": "Agent fleet: run-team controller, merge bot, PR reviewer, and the ticket pipeline they share",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -17,10 +17,9 @@ a `git archive` snapshot, a `cp -R` subset — has no `./agent-test`
17
17
  unless the repository tracks its own, and a member told to run one
18
18
  stalls on a missing script (observed with a rebase-resolver in a
19
19
  prior-run worktree). There, tell the member the runner is absent and to
20
- run docker-free suites directly — the Recipe's Test entrypoint
20
+ run the Recipe's Test entrypoint directly
21
21
  (`~/.fleet/bin/fleet-run derive-testcmd.sh <main checkout> test --at origin/main` prints
22
- it) only when it brings up no shared stack to collide on, else that
23
- repo's own stack-free command.
22
+ it).
24
23
 
25
24
  **A reused worktree may also be on the wrong COMMIT.** `git worktree add <path>
26
25
  <branch>` checks out the existing LOCAL branch and never consults the remote, so