Skip to content

feat: expose ilchul cli with runctl internals#208

Merged
devkade merged 4 commits into
devfrom
feat/issue-205-ilchul-cli-runctl-internals
May 17, 2026
Merged

feat: expose ilchul cli with runctl internals#208
devkade merged 4 commits into
devfrom
feat/issue-205-ilchul-cli-runctl-internals

Conversation

@devkade
Copy link
Copy Markdown
Owner

@devkade devkade commented May 17, 2026

Summary

  • expose the canonical public runtime CLI as ilchul while keeping kapi as the compatibility alias
  • rename internal runtime entrypoint/formatter/setup modules to runctl/runtime-oriented names
  • update README, naming policy, audit docs, and tests to reflect public ilchul + internal runctl

Closes #205

Verification

  • npm test -- test/cli-args.test.ts test/cli-bin.test.ts test/runctl-formatters.test.ts
  • npm run check
  • npm run check:unused
  • npm run quality:budgets

@devkade
Copy link
Copy Markdown
Owner Author

devkade commented May 17, 2026

@kapi-agent review

Revision explanation for current head 031a8e0aa55336fcd2fa428d657301e6a03e4a11:

What changed:

  • Exposed the canonical public runtime CLI as ilchul through the existing runtime wrapper and kept kapi as a compatibility alias.
  • Renamed internal runtime CLI modules, formatter modules, setup helper, imports, and tests to runctl / runtime-oriented names.
  • Updated README, naming policy, audit docs, package bin metadata, and package-lock metadata for the public ilchul + internal runctl decision.

Why this closes the prior feedback:

Verification:

  • npm test -- test/cli-args.test.ts test/cli-bin.test.ts test/runctl-formatters.test.ts passed.
  • npm run check passed.
  • npm run check:unused passed.
  • npm run quality:budgets passed with existing non-failing budget warning for code smells.

Copy link
Copy Markdown

@kapi-agent kapi-agent Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

kapi-agent review

Verdict: APPROVE

Final approval summary

Review journey

This PR’s original goal is to expose ilchul as the canonical public runtime CLI while preserving kapi compatibility and keeping internal implementation names product-neutral as runctl. The semantic scope is bounded: CLI bin wiring, runtime entrypoint/formatter renames, naming-policy/docs alignment, and regression tests for the public command surface. There was no prior kapi-agent review on this head, so no review/fix ping-pong was required.

What changed

Key paths inspected:

  • package.json
  • bin/runctl.mjs
  • bin/kapi.mjs
  • scripts/setup-runctl-cli.mjs
  • src/cli/runctl-cli.ts
  • src/presentation/commands.ts
  • README and naming/audit docs
  • CLI/bin/formatter tests

The package now exposes ilchul through the runtime bin shim, keeps kapi as a compatibility alias, and updates tests/docs from the prior public runctl examples to ilchul.

Why this is correct

The public CLI rename is implemented at the bin/package boundary without changing the underlying workflow/runtime contract. kapi explicitly sets the command-name environment to preserve compatibility help/error wording, while the canonical bin defaults to ilchul. The internal module rename to runctl-cli/runctl-formatters matches the stated policy of avoiding product-branded reusable implementation names.

Evidence

Verifier gate: PASS. npm ci && npm run verify exited 0.

Size gate: PASS with semantic review required. Although the PR is 288 changed lines, the effective source change is small and mostly rename/docs/test coverage; harness metrics reported 35 semantic/source lines and 201 test lines.

Revision-explanation status: not required; found.

Ilchul review harness gate: PASS, conclusion neutral, verdict COMMENT, blocking findings 0.

Remaining risks and approval rationale

Remaining risk is low and mostly operational: users with old muscle memory may still expect runctl, but the PR intentionally documents ilchul as canonical and keeps kapi as the tested compatibility alias. I found no blocking correctness, security, workflow-contract, or regression issue, and the test coverage directly exercises the renamed CLI/bin/setup paths.

Blocking issues

  • none.

Warnings / risks

  • bin/runctl.mjs: the canonical shim still honors an existing ILCHUL_RUNTIME_CLI_NAME environment variable before defaulting to ilchul. This is useful for aliasing/testing, but it means help/error text can be externally relabeled. I do not consider this blocking because it does not alter command behavior or execution target.

Suggestions

  • Consider adding a short migration note if any users previously installed or scripted a runctl command, since this PR removes runctl from the package bin surface and makes ilchul canonical.

Looks good

  • package.json cleanly exposes ilchul and preserves kapi.
  • bin/kapi.mjs correctly routes to the shared runtime entrypoint while forcing compatibility command naming.
  • README and docs/ilchul-naming-policy.md are aligned with the implementation.
  • Tests cover package-local bin usage, setup helper behavior, installed-prefix behavior, and formatter import renames.

Verification notes

  • Verifier gate: PASS — npm ci && npm run verify exited 0.
  • Size gate: PASS — 288 changed lines required semantic review; scope is bounded and mostly tests/docs/renames.
  • Revision-explanation status: not required; found.
  • Ilchul harness gate: PASS — neutral/comment with 0 blocking findings.
  • PR evidence includes targeted CLI/bin/check/unused/quality verification in the PR body, and the full verifier run confirms the broader suite passes.

Engine: pi

@devkade
Copy link
Copy Markdown
Owner Author

devkade commented May 17, 2026

@kapi-agent review

Copy link
Copy Markdown

@kapi-agent kapi-agent Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

kapi-agent review

Verdict: REQUEST_CHANGES

Blocking issues

  • Revision explanation gate failed. This PR was synchronized after a prior kapi-agent approval, but there is no current author explanation for what changed and why on the new head 7bb37fabed4865d578c463919cfaca56de93333a. Please add a review response summarizing the delta since the approved revision and why it closes/does not affect prior feedback before re-review.
  • README.md has a malformed fenced code block in the Local CLI Runtime section:
    npm run setup:cli
    ilchul --help```
    The closing fence is attached to the command, so the following prose can render incorrectly. Since this PR changes CLI documentation and repo instructions require README alignment with implementation, please fix the fence.

Warnings / risks

  • The PR summary says kapi is kept as a compatibility alias, but package.json now exposes only ilchul and kapi-review, and test/cli-bin.test.ts explicitly asserts no kapi runtime alias. If alias removal is intentional, update the PR/body wording and revision explanation so reviewers can distinguish an intentional compatibility break from an accidental regression.

Suggestions

  • Consider renaming the test title setup helper installs kapi into an isolated prefix in test/cli-bin.test.ts; the assertion now installs/runs ilchul, so the title is stale and may confuse future reviewers.

Looks good

  • The runtime bin wrapper points to src/cli/runctl-cli.ts and defaults the command name to ilchul, which matches the intended public CLI naming.
  • Tests cover package-local execution, isolated-prefix setup, production install without dev dependencies, and help output naming.
  • The implementation scope is mostly naming/bin/docs/test alignment rather than broad workflow behavior changes.

Verification notes

  • Verifier gate status: PASS — npm ci && npm run verify exited 0.
  • Size gate status: PASS with semantic review required — 435 changed lines, mostly tests/docs with 74 source lines and no sensitive-path lines reported.
  • Revision-explanation status: FAIL — required now and not found for the current synchronized revision.
  • Ilchul review harness gate: PASS — neutral/comment, no blocking findings.
  • Local inspection focused on README.md, package.json, bin/runctl.mjs, scripts/setup-runctl-cli.mjs, and test/cli-bin.test.ts.

Engine: pi

Copy link
Copy Markdown

@kapi-agent kapi-agent Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

kapi-agent review

Verdict: REQUEST_CHANGES

Blocking issues

  • Revision explanation gate failed. This PR was synchronized after a prior kapi-agent approval, but there is no current author explanation for what changed from the previously approved head and why. Please add a review response before requesting re-review.

  • The current revision appears to change the CLI compatibility contract without explanation. The prior approved review and current PR summary say kapi remains a compatibility alias, but current head removes bin/kapi.mjs and package.json no longer exposes a kapi bin. Tests now assert there is no kapi runtime alias. If this is intentional, the PR body and revision response need to say so and explain the migration/compatibility impact. If not intentional, restore the alias.

  • README.md has a malformed fenced block in the setup example:

    • `ilchul --help````
      This should close the code fence on its own line. Since README alignment is required for behavior/CLI workflow changes, please fix this.

Warnings / risks

  • The semantic scope is still bounded, but it touches public CLI behavior and docs. Removing a bin alias is user-visible and should be treated as a compatibility-breaking decision unless the linked issue explicitly approves it.

Suggestions

  • Consider adding a direct test for the intended kapi behavior either way:
    • if retained: npm exec -- kapi --help works;
    • if removed: documented migration/error expectations are explicit.

Looks good

  • The implementation consistently routes the public ilchul bin through bin/runctl.mjs and src/cli/runctl-cli.ts.
  • The formatter/module rename is mostly mechanical and covered by renamed tests.
  • npm ci && npm run verify passed.

Verification notes

  • Verification gate status: FAIL, because the revision explanation gate failed.
  • Size gate status: PASS; 435 changed lines crosses the semantic review threshold, but the change is mostly tests/docs/rename work with about 74 source lines.
  • Revision-explanation status: FAIL; required now, not found for current head.
  • Verifier evidence: npm ci && npm run verify exited 0.
  • Ilchul review harness gate: PASS / neutral COMMENT, with 0 blocking findings.

Engine: pi

@devkade
Copy link
Copy Markdown
Owner Author

devkade commented May 17, 2026

@kapi-agent review

Revision explanation for current head fc4da504afc20dd988cd8fd997ca96884826fc38:

What changed:

  • Restored the kapi runtime bin as a thin compatibility alias that dispatches the shared src/cli/runctl-cli.ts entrypoint with RUNCTL_COMMAND_NAME=kapi.
  • Re-added kapi to package.json and package-lock.json bin metadata while keeping ilchul as the canonical public runtime command.
  • Fixed the malformed README fenced code block in the Local CLI Runtime section.
  • Updated test/cli-bin.test.ts so package-local and isolated-prefix installs assert both canonical ilchul behavior and compatibility kapi behavior.
  • Renamed the stale setup-helper test title from kapi install wording to ilchul install wording.

Why this closes the prior feedback:

  • The compatibility-contract blocker is closed by retaining kapi exactly as issue Normalize reusable identifiers away from product names #205 requires: a compatibility alias, not a reusable internal implementation name.
  • The README rendering blocker is closed by putting the closing fence on its own line.
  • The revision-explanation gate is satisfied for the current head.

Verification:

  • npm test -- test/cli-bin.test.ts passed (runs the repo test glob plus the targeted file under the current npm script).
  • npm run check passed.
  • npm run check:unused passed.
  • git diff --check passed.
  • Earlier after the same README/package/bin compatibility fix: npm run verify passed, with existing non-failing code_smells budget warning only.

Copy link
Copy Markdown

@kapi-agent kapi-agent Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

kapi-agent review

Verdict: APPROVE

Final approval summary

Review journey

The original goal was to expose ilchul as the canonical public runtime CLI while keeping internal runtime implementation names product-neutral as runctl. The semantic scope is bounded to CLI bin wiring, entrypoint/formatter/setup renames, documentation/naming-policy alignment, and regression tests for the runtime command surface.

There was review/fix ping-pong after the prior approval: a later revision temporarily removed or failed to explain the kapi compatibility alias and had a malformed README fence. kapi-agent requested changes. The current revision includes an author explanation and addresses both issues.

What changed

The current revision:

  • restores bin/kapi.mjs as a thin compatibility alias;
  • exposes both ilchul and kapi in package.json / package-lock.json;
  • routes both bins through src/cli/runctl-cli.ts, with RUNCTL_COMMAND_NAME controlling displayed command name;
  • fixes the README fenced code block;
  • updates test/cli-bin.test.ts to assert both canonical ilchul behavior and compatibility kapi behavior;
  • keeps runctl naming for internal runtime modules and formatter paths.

Why this is correct

The compatibility alias is implemented at the bin boundary without changing workflow IDs, storage roots, registry semantics, artifact contracts, or worker behavior. kapi now explicitly sets RUNCTL_COMMAND_NAME=kapi, so help/usage output remains coherent for compatibility users, while the canonical ilchul bin defaults to RUNCTL_COMMAND_NAME=ilchul.

The prior README formatting issue is fixed, and the tests now cover the user-visible contract that was previously ambiguous.

Evidence

  • Verifier gate: PASS — npm ci && npm run verify exited 0.
  • Size gate: PASS — 437 changed lines triggered semantic review, but the effective source semantic scope is small and mostly rename/docs/test coverage.
  • Revision explanation status: PASS — author provided the required current-head explanation.
  • Ilchul review harness gate: PASS — neutral/comment, no blocking findings.
  • Inspected files included package.json, bin/kapi.mjs, bin/runctl.mjs, src/cli/runctl-cli.ts, scripts/setup-runctl-cli.mjs, test/cli-bin.test.ts, and README changes.

Remaining risks and approval rationale

Remaining risk is low: this is a public CLI surface change, but the canonical command and compatibility alias are both covered by install/help tests, and verification is green. Approval is justified because the previous blocking issues are resolved and no new correctness, safety, or workflow-contract blocker remains.

Blocking issues

  • none.

Warnings / risks

  • README.md emphasizes ilchul and no longer explicitly shows kapi usage in the Local CLI Runtime section. That is acceptable for canonical-command documentation, but if the migration window is important for users, consider adding one short compatibility sentence.

Suggestions

  • Consider adding a tiny README note such as: “The same runtime subcommands are also available through kapi as a compatibility alias during migration.” This would make the public contract more discoverable without making kapi the recommended command.

Looks good

  • bin/kapi.mjs is now a minimal compatibility wrapper and correctly sets the displayed command name.
  • package.json exposes both ilchul and kapi.
  • Tests verify package-local execution, isolated-prefix install behavior, and production install behavior.
  • The README fence issue from the previous review is fixed.
  • Internal implementation naming stays product-neutral through runctl paths.

Verification notes

  • Verifier gate: PASS.
  • Size gate: PASS; reviewed semantically, not rejected on raw line count.
  • Revision-explanation status: PASS.
  • PR evidence includes npm test, npm run check, npm run check:unused, npm run quality:budgets, and the gate-run npm ci && npm run verify.

Engine: pi

@devkade devkade merged commit dd77770 into dev May 17, 2026
2 checks passed
@devkade devkade deleted the feat/issue-205-ilchul-cli-runctl-internals branch May 17, 2026 09:14
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.

Normalize reusable identifiers away from product names

1 participant