Skip to content

fix(release): the probe declares its commands before it doctors - #39

Merged
indykish merged 1 commit into
mainfrom
fix/release-probe-declares-commands
Sep 8, 2026
Merged

fix(release): the probe declares its commands before it doctors#39
indykish merged 1 commit into
mainfrom
fix/release-probe-declares-commands

Conversation

@indykish

@indykish indykish commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

0.10.6 did not publish. The release job's Install the packed tarball into a throwaway repository step failed, so npm view @agentsfleet/orly version still
reads 0.10.5 and the two lifecycle rules from #38 have not reached any consumer.

The probe is stale, not the code. Since 81b2875 taught orly doctor to refuse a
setup declaring no conform and no verify.*, it correctly refuses the probe's
own repository — which is a single main.go. init seeds commands by reading a
Makefile and package.json scripts; that repository offers neither, so it seeds
none, and the probe was asking doctor to bless a repository with no declared way
to check itself.

The probe now completes its setup before doctoring, which is what a real
repository does after init.

Session notes 1

Two options were on the table and Indy picked the second: give the probe a
Makefile so init infers from it, or declare the commands explicitly. Explicit
wins on intent — it exercises the declaration path that 81b2875 is about,
rather than leaning on inference heuristics that could drift independently.

  before                          after
  ──────                          ─────
  git init                        git init
  main.go                         main.go
  orly init ─► seeds no command   orly init ─► seeds no command
  orly doctor ─► 🔴 exit 1        declare conform + verify.unit
                                  orly doctor ─► 🟢 exit 0

commandSetupErrors (src/validation.ts:45-52) wants conform non-empty plus
one non-empty verify.*; it does not check runnability, so [["true"]] is an
honest minimum for a probe whose subject is installation, not testing.

The doctor change stays exactly as written. It is right, src/setup.test.ts
asserts it, and a repository that cannot say how it checks itself should not
pass a health check.

Review

No findings. One judgment call worth recording: the alternative fix — softening
doctor back to a warning — would have made this probe pass by undoing the
explicitness #38's follow-up commits deliberately introduced. Rejected on those
grounds rather than on effort.

CI/CD edits sit behind explicit approval in the operating model; Indy approved
this one and chose the shape.

Make

Reproduced against the actual packed 0.10.6 tarball, not a simulation:

$ npm pack --silent                       agentsfleet-orly-0.10.6.tgz
$ orly init          (probe repo)         🟢 44 written, 0 already current (8 packs)
                                          🟠 setup incomplete: declare conform …
                                          🟠 setup incomplete: declare at least one verify.* …
$ orly doctor        before the fix       exit 1   ← the CI failure, reproduced
$ node -e '…declare conform + verify.unit…'
$ orly doctor        after the fix        exit 0
                                          🟢 installed rules match .oracle/orly.json;
                                            work and verification commands are declared
$ git push  (pre-push governance chain)   exit 0, evidence written to .oracle/evidence.json

Merging this republishes: package.json already carries 0.10.6 and the registry
does not, so the release job will pack, probe, and publish on the merge commit.

🤖 Generated with Claude Code

https://claude.ai/code/session_018ZTshuX7LqgMRvdRxMFNmU

0.10.6 did not publish. The probe smoke-tests the packed tarball by running
`orly init` in a repository that is one `main.go`, then expecting `orly
doctor` to pass — and since 81b2875 taught doctor to refuse a setup that
declares no conform and no verify command, it correctly refuses that one.

`init` seeds commands by reading a Makefile and package.json scripts. A single
Go file offers neither, so it seeds none, and the probe was asking doctor to
bless a repository with no declared way to check itself.

So the probe completes its setup, which is what a real repository does after
init, and then doctors. It proves what it was always for: the tarball
installs, renders 44 files, and doctors clean once setup is finished.

Reproduced locally against the packed 0.10.6 tarball — doctor exits 1 before
the declaration and 0 after, with `🟢 installed rules match .oracle/orly.json;
work and verification commands are declared`.

The doctor change stays as written. It is right, it is tested in
src/setup.test.ts, and a repository that cannot say how it checks itself
should not pass a health check.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018ZTshuX7LqgMRvdRxMFNmU
@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@indykish
indykish merged commit bbe00b3 into main Sep 8, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants