fix: remove kapi runtime alias#225
Conversation
|
@kapi-agent review Revision explanation for current head What changed:
Why this closes the prior feedback:
Verification:
|
There was a problem hiding this comment.
kapi-agent review
Verdict: APPROVE
Final approval summary
Review journey
This PR removes the obsolete kapi runtime CLI alias while preserving intentional Kapi-named review and compatibility surfaces. The semantic scope is narrow: package bin metadata, the deleted runtime shim, CLI-bin regression tests, lockfile metadata, and product-name audit documentation. There was no prior kapi-agent review on this PR, so no review/fix ping-pong was required.
What changed
- Removed
kapifrompackage.jsonandpackage-lock.jsonpackage bins. - Deleted
bin/kapi.mjs. - Updated
test/cli-bin.test.tsto assert:ilchul --helpstill works.npm exec -- kapi --helpfails without rendering runtime help.- isolated prefix setup installs
ilchulonly and does not create akapishim.
- Updated
docs/product-name-audit.mdto document the retired runtime alias and remaining intentional Kapi surfaces.
Why this is correct
The public runtime command contract now matches the stated invariant: runtime control is exposed as ilchul, while kapi-review remains for the external review harness. Removing both the package bin entry and direct shim prevents local package and installed-prefix invocation through the old kapi runtime path. The tests guard the relevant npm/package boundaries rather than only checking static metadata.
Evidence
- Verifier gate: PASS —
npm ci && npm run verifyexited 0. - Size gate: PASS — 65 changed lines, under the 200-line semantic threshold.
- Revision-explanation status: not required; found in the PR body.
- Ilchul review harness gate: PASS — neutral/comment result, no blocking findings.
- Inspected:
package.json,package-lock.json,test/cli-bin.test.ts,docs/product-name-audit.md, and the deletedbin/kapi.mjsdiff.
Remaining risks and approval rationale
Remaining risk is limited to users still invoking the removed kapi runtime command, which is an intentional breaking cleanup for issue #209 and is documented by the PR. No security, artifact-contract, or workflow-integrity regressions were found. Approval is justified because the implementation, tests, docs, and verification evidence align with the stated contract.
Blocking issues
None.
Warnings / risks
- Removing
kapias a runtime bin is intentionally user-visible. Any external scripts still callingkapi --helporkapi start ...must migrate toilchul.
Suggestions
- If this change is included in a release, call out the CLI alias removal clearly in release notes or migration notes.
Looks good
- The PR removes the alias at all relevant package surfaces: metadata, lockfile, and the direct shim.
- Tests cover both package-local execution and isolated-prefix installation behavior.
- The audit document clearly distinguishes retired runtime alias surfaces from intentional
kapi-review,kapi-agent, slash command, and persisted workflow identifiers.
Verification notes
- Verifier gate: PASS —
npm ci && npm run verifycompleted successfully. - Size gate: PASS — 65 changed lines, with most change weight in tests/docs.
- Revision-explanation status: not required for this first kapi-agent review; PR body provides a detailed explanation.
- PR evidence includes full verify, targeted CLI-bin coverage, lock/package bin checks, residual
kapiscans, andgit diff --check.
Engine: pi
Summary
kapiruntime CLI package/bin alias so the only public runtime bin isilchul.bin/kapi.mjsshim and refreshes package-lock metadata.Linked issue
Related issue: devkade/ilchul issue 209
Problem
Issue #209 requires the final product-name normalization boundary to avoid retaining
kapias a runtime CLI compatibility surface. The docs already state that the canonical public runtime command isilchul, but package metadata still exposed akapibin and the repo still carriedbin/kapi.mjs, which allowed the old runtime command path to keep working.Invariant for this slice:
Options considered
kapiruntime invocation.kapi --helpfor runtime control must switch toilchul --help.kapias a compatibility exception — keep the bin and classify it in the audit.Selected approach
Selected option 1.
The old runtime alias is removed at the package/bin boundary and the direct shim is deleted, while intentionally preserved Kapi-named surfaces stay untouched:
/kapi-*slash commands,kapi_*tools, serialized workflow IDs, and the externalkapi-review/kapi-agentreview integration.Implementation
package.json/package-lock.jsonkapiruntime bin entry.ilchulandkapi-reviewas the remaining package bins.bin/kapi.mjstest/cli-bin.test.tsnpm exec -- kapi --helpmust fail and must not render runtime help.ilchulis installed; the generatedkapishim path must be absent.ilchul.docs/product-name-audit.mdWhy this fixes it
The old runtime command is no longer advertised by package metadata, no npm shim is generated for it, and the direct wrapper file that set
RUNCTL_COMMAND_NAME=kapino longer exists. The tests now prove both local package execution and prefix-installed CLI setup exposeilchulwithout retainingkapiruntime behavior.Remaining
kapioccurrences are still intentionally classified as compatibility/persisted/external-review surfaces rather than runtime CLI aliases.QA / Verification
npm test -- test/cli-bin.test.ts— pass; package script ran the fulltest/*.test.tssuite plus the requested file, 523 tests / 512 pass / 11 skipped.npm run verify— pass; 523 tests / 512 pass / 11 skipped,tsc --noEmit,tsc --noEmit --noUnusedLocals --noUnusedParameters, andquality:budgetscompleted. Quality budgets report one existingcode_smellswarning and no failing budget.git diff --check— pass.find src -iname '*kapi*' -print | sort— residuals limited tosrc/.kapi/**fixture state andsrc/cli/kapi-review-cli.tsexternal review integration.rg -n '"kapi"\s*:|bin/kapi|npm exec -- kapi|kapi compatibility alias|kapi --help' package.json package-lock.json README.md docs test bin src scripts— no package/bin alias remains; hits are the updated guard/audit text.node -e 'const p=require("./package.json"); console.log(JSON.stringify(p.bin,null,2)); if (Object.hasOwn(p.bin,"kapi")) process.exit(1)'— pass; package bins areilchulandkapi-reviewonly.Manual smoke, if applicable:
test/cli-bin.test.ts.Anomalies observed
npm test -- test/cli-bin.test.tsruns the full suite because the package script expandstest/*.test.tsbefore extra args.src/cli/kapi-review-cli.tsexecutable mode locally.git diff --summaryshowedmode change 100644 => 100755.chmod 644 src/cli/kapi-review-cli.ts; final branch is clean except intended files.quality:budgetsreports existingcode_smellswarning.BUDGET code_smells value=52 target="<=20" status=warn.Risks / Follow-up
kapiliterals in slash commands, tool names, workflow IDs, fixture state, andkapi-review/kapi-agentare intentional compatibility or external-integration surfaces, not runtime CLI aliases..kapistorage cleanup or serialized workflow migration was performed.kapi-agent review
@kapi-agent review.REQUEST_CHANGES, orCOMMENT, request re-review with a same-comment current-head revision explanation:@kapi-agent reviewRevision explanation for current head 71ae062ebb9da05a2e15b1ea80dae711bf922fd6What changedWhy this closes the prior feedbackVerification