This policy defines how the project moves from the historical Kapi name toward the Ilchul product name without causing accidental code, API, command, or storage churn.
- Ilchul is the product, documentation, and brand name. Ilchul is product/docs/brand vocabulary, not a reusable core identifier prefix.
- Ilchul is the public runtime CLI command. Kapi remains only where it is a persisted workflow identifier, slash-command family, GitHub integration name, or historical reference until a scoped migration issue changes those surfaces. Internal runtime implementation names should prefer semantic
runctl/runtimenaming. - Reusable core code should prefer semantic vocabulary such as
run,contract,preset,harness,evidence,score,steer,worker,runtime,registry, andworkflowinstead of introducing broadilchulprefixes. - Do not perform broad
kapi -> ilchulreplacements. Any rename must identify the public surface, compatibility expectation, migration path, and rollback risk. - Active workflow/storage routing now uses
.ilchul/~/.ilchul. Legacy.kapifolders may remain on disk as historical local state, but runtime code must not use.kapias a fallback storage root or delete it implicitly.
Use Ilchul for:
- repository/product-level documentation;
- roadmap and issue titles that describe the product direction;
- user-facing prose that explains the harness as a product;
- review guidance for this repository's own review harness;
- future docs for explicitly approved
.ilchulstorage behavior.
Examples:
- "Ilchul is a Pi-native workflow harness."
- "Ilchul review harness contract"
- "Ilchul naming and compatibility policy"
Keep kapi when changing it would break an existing integration or stored contract without an approved migration:
- Slash commands and persisted workflow surfaces retained for compatibility such as
/kapi-ralph,/kapi-status, and/kapi-clear; - GitHub workflow/check names such as
kapi-agent/review; the formerkapi-reviewand proposedilchul-reviewlocal package bins are not exposed by Ilchul because deterministic review automation now belongs to the github-bot adapter; - existing workflow IDs and serialized identifiers such as
kapi-ralphandkapi-autoresearch; - existing local workspace state under
.kapi/and historical docs that describe current behavior; - compatibility docs for existing installations or migration windows.
A future migration may rename one of these surfaces, but it must be scoped, tested, and documented. The default is compatibility preservation.
Reusable code, serialized model fields, and APIs should name the concept they own rather than the product brand. Prefer:
| Concept | Preferred terms |
|---|---|
| run state | run, workflow, state, lifecycle |
| contracts | contract, preset, criteria, expectation |
| verification | evidence, completion, gate, review |
| evaluation | score, quality, dimension, hint |
| steering | steer, recommendation, nextAction |
| execution | worker, runtime, session, registry |
| adapters | github, cli, presentation, review |
Use Ilchul in code only when the identifier truly names a product-branded adapter, document, or user-facing artifact. Avoid names such as IlchulPolicyModule, IlchulContract, or IlchulScore for reusable core abstractions when PolicyModule, ContractPreset, or ScoringHint is the actual concept.
.ilchul is the canonical active workspace/storage root. New workflow artifacts, active pointers, registry records, runtime prompts, and default worker worktrees route to .ilchul / ~/.ilchul directly.
Storage rules:
- New local worktree/storage operations target
~/.ilchul. - Active workflow state uses
.ilchul/workflows,.ilchul/active.json,.ilchul/registry, and.ilchul/runtime-prompts. .kapiis legacy local state only. Runtime code must not read it as a fallback root, prefer it by precedence, or create dual-root discovery behavior.- Existing
.kapifolders must not be silently, eagerly, or destructively deleted. Any cleanup must be explicit, reviewed, reversible where practical, and authorized for the specific cleanup slice. - If old
.kapiand new.ilchulroots both exist, normal start/status/report paths use.ilchul;.kapiremains historical evidence until separately handled.
This means .ilchul is the active behavior, while .kapi is neither a compatibility routing root nor a cleanup target for normal workflow commands.
| Workspace condition | Active behavior | User-facing message |
|---|---|---|
| No existing storage root | Create and use .ilchul / ~/.ilchul for new local workflow and worker state. |
"Ilchul stores new workflow state under .ilchul." |
Existing .kapi only |
Ignore .kapi for active routing and create/use .ilchul; do not delete .kapi. |
"Legacy .kapi state may exist locally, but active Ilchul state is under .ilchul." |
Existing .ilchul only |
Treat .ilchul as the canonical storage root. |
"Using canonical .ilchul storage." |
Both .kapi and .ilchul present |
Use .ilchul; preserve .kapi as legacy evidence until explicit cleanup is authorized. |
"Using .ilchul; legacy .kapi was not modified." |
Remaining storage cleanup work, if needed, should be explicit and non-ambient:
- Add diagnostics that report legacy
.kapipresence without changing routing. - Add recovery docs for users who want to inspect or manually archive old
.kapistate. - Add explicit cleanup only after Kade authorizes the destructive scope for that slice.
No slice should hide deletion behind normal workflow start, status, report, or verification commands.
- Retained until scoped migration:
kapi,/kapi-*,kapi-agent,kapi-agent/review,kapi-ralph, andkapi-autoresearch. - Canonical public CLI command:
ilchulfor the runtime; there is nokapi,kapi-review, orilchul-reviewCLI compatibility alias in the Ilchul package. Internal runtime modules userunctl/runtimenaming. Review automation remains an externalkapi-agent/ github-bot responsibility, not a public package bin or reusable implementation module. - Active storage behavior:
.ilchul/~/.ilchul;.kapiis legacy local state only and is not an active fallback root. - Preferred for new product prose:
Ilchul. - Preferred for new reusable core identifiers: semantic terms from the vocabulary table.
- Deprecated pattern: mechanical brand-prefixing or broad string replacement across source/docs/tests.
Before approving a naming or storage change, verify:
- The change identifies the exact public or persisted surface being renamed.
- The PR does not contain broad mechanical
kapi -> ilchulreplacement. - Reusable core code uses semantic identifiers unless the product brand is the precise concept.
- Existing
.kapistate is preserved unless the issue explicitly authorizes migration/removal, and any.kapiretirement path names its cleanup authorization boundary. - Docs distinguish current behavior from forward direction.
- Tests cover any compatibility or migration behavior changed by the PR.
Issue #114 may link here as the policy source for Track B naming and compatibility decisions. Issues that implement .ilchul storage, command renames, or compatibility retirement should reference this policy and state which rule they intentionally change or instantiate.