Skip to content

2026-09-26 — Edit registry for kahn-hq org rename to kahn-tools, reconcile stale review dates


2026-09-26 — Edit registry for kahn-hq org rename to kahn-tools, reconcile stale review dates

Section titled “2026-09-26 — Edit registry for kahn-hq org rename to kahn-tools, reconcile stale review dates”

Date: 2026-09-26 Status: ratified Verb: petrova_act_registry_edit Slug: kahn-hq MR-compliance: MR-7, MR-12

GitHub org kahn-hq was renamed to kahn-tools (to fit the kahn.tools apex). Verified via gh api orgs/kahn-hq → 404, gh api orgs/kahn-tools → 200, org display name “KAHN”, blog field https://kahn.tools. Repo name under the org is unchanged (kahn) — structurally identical to the rocky-hq→erid-tech rename (docs/decisions/2026-09-25-registry-edit-rocky-hq-org-rename.md).

The registry slug is kept as kahn-hq — internal identifier, not a live pointer; renaming it would cascade into state/kahn-hq.yaml, the domain doc filename, and every cross-reference in prior decision docs, none of which need to change to fix the actual break (a stale url). Only registry.yaml > repos[kahn-hq].url is corrected.

Checked for the ROCKY_REMOTE-class footgun: no hardcoded KAHN_REMOTE clone-source constant exists in cli/src/verbs/cairnet_onboard.ts or cli/src/cairnet/fleet/kit-run.ts. cli/src/probes/ares.ts:89 references kahn-hq/kahn only inside a comment (example format string) — cosmetic, no functional change.

Rationale — integrations_applicability reconciliation

Section titled “Rationale — integrations_applicability reconciliation”

Two of kahn-hq’s not_applicable classifications had their own stated revisit triggers fire without being revisited:

  • rocky: set not_applicable 2026-05-17, review_by 2026-08-17, reasoned “no CAIRNET emission path; revisit if a CAIRNET emission path is built.” kahn-hq’s own contract has declared cairnet_emission: status: wired (kit cairnet-emit-v10) since 2026-05-20, evidence updated 2026-08-12 — over a month past the review date and object of the trigger itself. Reclassified to optional.
  • eva: set not_applicable under the estate-wide default (“eva consumption surface not yet published”). That surface now exists and is canonical per this repo’s own CLAUDE.md (“Where the playbook actually lives,” locked 2026-05-14): petrova.prompts.list/get + petrova_install_playbook. Reclassified to optional.
  • crumb: re-confirmed unchanged (no cards/ dir or CRUMB corpus in kahn-hq) — review_by extended 2026-08-01 → 2027-01-01, no reclassification.

optional records that kahn-hq may consume these integrations, not that it must — no fleets_allowed change, no new automation grant. This is fact-reconciliation against triggers kahn-hq’s own registry notes already set, same class as the arno-host contract reconciliation earlier this session, not a permission grant.

registry.yaml > repos[kahn-hq]:

  • url: https://github.com/kahn-hq/kahn → https://github.com/kahn-tools/kahn
  • integrations_applicability.rocky: not_applicable → optional
  • integrations_applicability.eva: not_applicable → optional
  • notes: appended rename record + reclassification rationale, cross-ref to this doc.

docs/domains/kahn-hq.md regenerated via npm run domains:generate (host package) — non-authored lines only.

  • kahn-hq’s own .petrova/contract.yaml (separate repo) still needs a matching edit — this doc only reconciles the petrova-codes registry side. Separate PR against kahn-tools/kahn.
  • kahn-tools org API reports total_private_repos: 1 — worth confirming which repo that is, since the registry url assumes the public-style github.com/kahn-tools/kahn path resolves.
  • Local checkout remotes (if any exist under ~/code/workspace/kahn-hq) not swept — housekeeping only, no repo-side consequence.