2026-05-08 — Petrova brand pivot to host / codes / blog
Status: proposed (this PR)
Author: alex@devarno.com
Decides for: petrova-hq brand identity, docs canonical URL, future shard model
Plan reference: ~/.claude/plans/plan-the-adjustments-necessary-staged-frog.md
Context
Section titled “Context”Three new domains have been acquired and become the canonical brand surfaces for the petrova line:
petrova.blog— docs site (the playbook published).petrova.codes— source/skills/prompts/CLI distribution surface.petrova.host— control-plane / fleet API. Reserved.
Until now the docs site was published at petrova.devarno.cloud, and the
playbook had no first-class notion of a “brand axis” — every URL was
hardcoded. That blocks horizontal scalability (regional shards, per-tenant
fleets) and conflates the petrova brand with the broader devarno-cloud
operational namespace.
Decision
Section titled “Decision”-
Docs canonical URL.
petrova.blogreplacespetrova.devarno.cloudimmediately.site/astro.config.mjshonoursSITE_URLenv override so a regional shard (e.g.eu.petrova.blog) requires zero code changes. -
Brand axis lives in
.petrova/brand.yaml. New template atcore/templates/brand.yaml.tmpl. Three surfaces (blog/codes/host), each withbase+shard;codesadditionally carriesgh_org. Default shard isglobal; regional fleets override per-key. -
Bootstrap calibration.
00-bootstrap.mdgains an additive Q8 (“Which brand shard does this consumer join? defaultglobal”) and the file-copy section copiesbrand.yaml.tmpl→.petrova/brand.yaml. Q1–Q7 IDs are preserved per CLAUDE.md convention. -
Registry sharding.
registry.yamlandstate/<slug>.yamlgain an optionalshard:field (defaultglobal). Backward-compatible: absent means global. Enablesfleet-snapshotCI to group by shard once shards exist, without rewriting consumers. -
Skill links resolve through the brand axis.
skills/petrova-*/SKILL.mdreferencepetrova.blogand carry a one-line note that links resolve through.petrova/brand.yaml#blog.basefor shard fleets.
Out of scope (explicitly preserved)
Section titled “Out of scope (explicitly preserved)”The following are operational endpoints / orgs owned by adjacent products that the playbook integrates with via dedicated wire prompts. They remain unchanged:
cicd.devarno.cloud(ARES) —core/prompts/06-ares-wire.md.traceo.devarno.cloud(TRACEO) —core/prompts/07-traceo-*.hubble.devarno.cloud,hatch.devarno.cloud,rocky.devarno.cloud,mcp.devarno.cloud,ariel.devarno.cloud,casa.devarno.cloud.- GitHub org
devarno-cloud/*(ARES, CRUMB, LORE, HUBBLE, …) —core/prompts/08-crumb-wire.mdand thedevarno-cloudsuperproject entry inregistry.yaml.
Touching those would break wired consumer repos. Coordinate any future moves with the owning products.
Deferred follow-ups
Section titled “Deferred follow-ups”- Decision doc + manual GitHub org rename
petrova-hq→petrova-codes(with redirect grace window). Touches every external link to the org; needs its own MR-7 cycle. - Stand up
petrova.hostas a real control-plane endpoint. Currently placeholder-only;brand.host.baseresolves to a domain not yet wired.
Consequences
Section titled “Consequences”- MR-3 (sibling files).
docs/site/...andsite/src/content/docs/...duplicates are preserved; both updated. - MR-4 (absolute dates). This decision is dated
2026-05-08. - MR-7 (decisions append-only). No prior decision is edited; this doc introduces the brand axis as a new concept rather than mutating any superseded record.
- MR-12 (CLAUDE.md projection). Consumer
CLAUDE.mdreferences the docs site via<<DOCS_BASE>>(filled frombrand.blog.base), preserving the projection-not-source rule.
Verification
Section titled “Verification”grep -rn "petrova\.devarno\.cloud" .(excl.node_modules,dist) returns zero.grep -rn "devarno\.cloud\|devarno-cloud" .still surfaces operational references in the wire prompts and the superproject registry entry — confirms scope guardrail held.cd site && npm run buildsucceeds with the new canonical URL.yq '.brand' core/templates/brand.yaml.tmplparses; keysblog/codes/hosteach havebase+shard.