Skip to content

fix(kirocrew): pin 0.5.0 and preserve managed restarts - #109

Merged
royosherove merged 3 commits into
mainfrom
chore/kirocrew-pin-0.4.1rc1
Sep 7, 2026
Merged

fix(kirocrew): pin 0.5.0 and preserve managed restarts#109
royosherove merged 3 commits into
mainfrom
chore/kirocrew-pin-0.4.1rc1

Conversation

@royosherove

@royosherove royosherove commented Sep 2, 2026

Copy link
Copy Markdown
Member

Problem / motivation

The KiroCrew pack on main still defaults to 0.3.0, while the current stable release is KiroCrew v0.5.0.

LowKey also installs the gateway as kirocrew-gateway.service, but KiroCrew 0.5's service-aware kirocrew restart only probes the canonical kirocrew.service name. Because it cannot see LowKey's active unit, it falls back to terminating the managed process and launching a detached gateway. That replacement does not inherit LowKey's systemd-only KIROCREW_HOST=0.0.0.0 / KIROCREW_BIND=0.0.0.0 environment, so it is no longer a healthy externally reachable backend for the ALB and CloudFront web path.

Why it matters

New LowKey installs should receive the requested stable KiroCrew release, and an operator restart must preserve both systemd supervision and the externally reachable bind. Otherwise a routine kirocrew restart can leave the local process running while the web experience returns an upstream error.

What changed

  • Pin the stable KiroCrew artifact to 0.5.0 in the installer fallback, CLI help, and pack manifest.
  • Retain the pin-consistency regression test so manifest, code, and help cannot drift independently.
  • Add Alias=kirocrew.service to the existing kirocrew-gateway.service unit's [Install] section.
    • LowKey keeps its legacy unit name for current automation and CloudFormation hooks.
    • systemctl enable kirocrew-gateway.service now exposes the canonical name KiroCrew 0.5 probes.
    • kirocrew restart therefore invokes systemctl restart kirocrew.service, which restarts the same LowKey-managed, 0.0.0.0-bound service instead of spawning a loopback-only process.
  • Add a regression assertion requiring the canonical alias.

Artifact verification

Verified independently rather than assuming the GitHub tag equals the installer version:

  • GitHub release v0.5.0 publishes kirocrew-0.5.0-py3-none-any.whl.
  • feed/stable/latest-cli.json reports version: 0.5.0 and the stable 0.5.0 wheel URL.
  • cli/stable/0.5.0/cli-manifest.json reports the same version and wheel URL, with SHA-256 48a722da4a1957b3962e42b675c83c19a4b898bca0d54af81a6305c4dd915d57.
  • The manifest's wheel URL returned HTTP 200 with content length 54,137,817 bytes.

Tests

  • CI=true bash packs/kirocrew/test.sh76/76 passed.
  • bash -n packs/kirocrew/install.sh packs/kirocrew/test.sh — passed.
  • Manifest YAML parse and explicit 0.5.0 assertion — passed.
  • git diff --check — passed.
  • Shellcheck warning identities are unchanged from origin/main (two pre-existing SC2034 warnings in install.sh; no new warnings).
  • Isolated systemctl --root smoke tests proved the alias is created for both:
    • a fresh unit enable; and
    • an already-enabled legacy unit after the updated pack reruns systemctl enable.
  • Negative test: deleting Alias=kirocrew.service from an isolated pack copy makes the pack test fail with kirocrew restart would bypass systemd.

Manual verification

The live gateway on this development host was not restarted, because doing so would interrupt this active KiroCrew session. The service-name mismatch was reproduced by inspecting KiroCrew 0.5's installed service controller (kirocrew.service) against LowKey's active unit (kirocrew-gateway.service), and the systemd alias behavior was exercised in isolated roots as described above.

No visual delta; screenshots are not applicable.

no linked issue: requested directly as a KiroCrew pack update and restart regression fix.

Bode (Kiro Crew Issue Radar) added 3 commits September 2, 2026 07:08
The kirocrew pack pinned 0.3.0 as its default version. Upstream has since
cut 0.4.1, which is the current Latest stable release on
kirodotdev/KiroCrew, so new installs were landing several releases behind.

Bump the pinned default in both places that carry it, and refresh the
user-facing text that names the version:

- packs/kirocrew/install.sh: pack_config_get fallback, the --kirocrew-version
  help default, and the stable-lane compatibility note.
- packs/kirocrew/manifest.yaml: the param default and the channel/version
  mismatch example.

The channel/version coupling documented in these strings is unchanged:
both values still form cli/<channel>/<version>/cli-manifest.json, so an
unmatched pair still 403s. Only the version they name moves.

Validation: packs/kirocrew/test.sh 73/73 pass, bash -n clean,
git diff --check clean, shellcheck -S warning reports only the two
pre-existing SC2034 warnings already present on main.
Review caught that the previous commit's pin of "0.4.1" is not installable.
The pack passes --version straight to the upstream installer, which builds
cli/<channel>/<version>/cli-manifest.json and kirocrew-<version>-py3-none-any.whl
from it. Upstream tags the release v0.4.1 but publishes the CLI artifact as
0.4.1rc1, so the tag and the artifact version are not interchangeable.

Measured against the real CDN the installer uses:

  stable/0.4.1     cli-manifest.json -> 403
  stable/0.4.1rc1  cli-manifest.json -> 200
  stable/0.4.1rc1  wheel             -> 200
  stable/0.3.0     cli-manifest.json -> 200   (old pin, control)

feed/stable/latest-cli.json independently reports version 0.4.1rc1 with
wheel_url .../cli/stable/0.4.1rc1/kirocrew-0.4.1rc1-py3-none-any.whl, and a
host already running the stable lane reports "kirocrew 0.4.1rc1".

Pinning "0.4.1" would therefore have 403'd every install -- the exact failure
mode this param's own documentation warns about.

Changes:
- Pin 0.4.1rc1 in the install.sh fallback and the manifest default.
- Rewrite the help text and manifest description to say this is the ARTIFACT
  version rather than the GitHub tag, and to name feed/stable/latest-cli.json
  as the way to confirm a pin before changing it. The prior wording ("cut on
  the stable lane only") was also misleading: a v0.4.1-insider.1 prerelease
  exists, and Insider carries a distinct version identifier.
- Add a "version pin consistency" test asserting manifest default == code
  fallback == help default, so a future bump cannot silently leave one of the
  three stale.

Validation: packs/kirocrew/test.sh 75/75 pass (73 before, +2 new). The new
assertion was negative-tested: drifting the manifest default to 9.9.9 in an
isolated copy fails with "pin disagrees: manifest='9.9.9' code='0.4.1rc1'
help='0.4.1rc1'". bash -n clean on both files, shellcheck -S warning clean on
test.sh, and install.sh's warning set is unchanged from origin/main (3 SC2034,
pre-existing).
Pin the stable installer artifact after verifying the feed, manifest, wheel URL, and release asset all publish 0.5.0. Expose LowKey's managed kirocrew-gateway unit through the canonical kirocrew.service alias used by KiroCrew 0.5's service-aware restart command, preserving the externally reachable bind and systemd supervision.
@royosherove royosherove changed the title chore(kirocrew): pin KiroCrew to stable 0.4.1rc1 fix(kirocrew): pin 0.5.0 and preserve managed restarts Sep 7, 2026
@royosherove

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Keep it up!

Reviewed commit: 80572a75a1

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@royosherove
royosherove merged commit 5471861 into main Sep 7, 2026
19 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.

1 participant