2026-05-08 — GitHub org rename `petrova-hq` → `petrova-codes`
Status: proposed (this PR)
Author: alex@devarno.com
Decides for: petrova-line GitHub org identity, registry slugs, submodule URLs, .petrova/contract.yaml slugs across the fleet
Supersedes (in part): 2026-05-08-petrova-domain-pivot.md — “Deferred follow-ups: GitHub org rename petrova-hq → petrova-codes”
Context
Section titled “Context”The brand pivot decision (2026-05-08-petrova-domain-pivot.md) deferred the GitHub
org rename to a separate MR-7 cycle on the grounds of blast radius. The operator
has now executed the rename externally on GitHub; gh api orgs/petrova-hq returns
404, petrova-codes/petrova resolves. GitHub provides repo-level URL redirects
(git clone/fetch/push are transparent for old URLs) but not org-level API
redirects — every gh api orgs/petrova-hq/... and gh api repos/petrova-hq/...
call hard-fails.
This decision records the corresponding in-repo bookkeeping. It is the second half of the brand pivot.
Decision
Section titled “Decision”-
GitHub URL/org rewrites. Every live (non-dated-decision) reference to
github.com/petrova-hq,petrova-hq/petrova,petrova-hq/prompts,petrova-hq/templates, andgh api .../petrova-hq/...becomes thepetrova-codesform. -
Submodule remotes.
.gitmodulesURLs flip; each submodule’s local.git/configoriginis repointed; future pushes targetpetrova-codes. -
Internal slug rename
petrova-hq→petrova-codes. The slug is used beyond just URLs:state/petrova-hq.yaml→state/petrova-codes.yaml(file rename viagit mv).slug:field inregistry.yaml,.petrova/contract.yaml, every consumer fixture, every cross-reference in plans/specs/runbooks/skills.- Eva integration maps in consumer states/contracts that reference
"petrova-hq": ...keys.
Renaming is strictly preferable to keeping the slug stale because the slug is also the directory name in
state/and the cross-fleet join key. Stale slugs would diverge from the GH org and confuse new consumer onboarding. -
Append-only preservation (MR-7). Dated decision docs under
docs/decisions/2026-0[1-5]-*.mdand findings underdocs/findings/are not edited. Their references describe the state at the time of writing. Readers follow the supersession chain via this doc. -
Local working-directory rename is OUT of scope. Operators may rename their local clone if they wish; the playbook does not require it.
Consequences
Section titled “Consequences”- Old links rot at the org level.
github.com/petrova-hq/<repo>repo URLs are redirected by GitHub; any link that hit the org page directly is broken. Acceptable: the new decision doc surfaces the mapping. - Open PRs need a one-time rebase or fresh push to the new origin URL.
Inflight branches authored under the old origin auto-redirect for
git pushbut webhook-driven CI may need itsclone_urlre-cached. - MR-3 sibling rule preserved:
docs/site/...andsite/src/content/docs/...mirrors both updated. - MR-4 absolute date in filename and body.
- MR-7 supersession explicitly cited (the deferred clause from the pivot doc is now closed by this one).
Verification
Section titled “Verification”gh api orgs/petrova-codes/repos --jq '.[].name'lists the live fleet.grep -rn "github\.com/petrova-hq" .(excl. node_modules, dist, dated decisions/findings) returns zero.grep -rn "petrova-hq" .remaining hits live only in dated decisions, findings, and the natural-language supersession references inside this doc and the pivot doc.git -C core/prompts remote -vandgit -C core/templates remote -vshowpetrova-codesURLs.cd cli && npm testpasses (test fixtures updated).petrova doctor(or current verify) green for the canarypetrova-codesslug entry.