Skip to content

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

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.

  1. Docs canonical URL. petrova.blog replaces petrova.devarno.cloud immediately. site/astro.config.mjs honours SITE_URL env override so a regional shard (e.g. eu.petrova.blog) requires zero code changes.

  2. Brand axis lives in .petrova/brand.yaml. New template at core/templates/brand.yaml.tmpl. Three surfaces (blog / codes / host), each with base + shard; codes additionally carries gh_org. Default shard is global; regional fleets override per-key.

  3. Bootstrap calibration. 00-bootstrap.md gains an additive Q8 (“Which brand shard does this consumer join? default global”) and the file-copy section copies brand.yaml.tmpl.petrova/brand.yaml. Q1–Q7 IDs are preserved per CLAUDE.md convention.

  4. Registry sharding. registry.yaml and state/<slug>.yaml gain an optional shard: field (default global). Backward-compatible: absent means global. Enables fleet-snapshot CI to group by shard once shards exist, without rewriting consumers.

  5. Skill links resolve through the brand axis. skills/petrova-*/SKILL.md reference petrova.blog and carry a one-line note that links resolve through .petrova/brand.yaml#blog.base for shard fleets.

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.md and the devarno-cloud superproject entry in registry.yaml.

Touching those would break wired consumer repos. Coordinate any future moves with the owning products.

  • Decision doc + manual GitHub org rename petrova-hqpetrova-codes (with redirect grace window). Touches every external link to the org; needs its own MR-7 cycle.
  • Stand up petrova.host as a real control-plane endpoint. Currently placeholder-only; brand.host.base resolves to a domain not yet wired.
  • MR-3 (sibling files). docs/site/... and site/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.md references the docs site via <<DOCS_BASE>> (filled from brand.blog.base), preserving the projection-not-source rule.
  1. grep -rn "petrova\.devarno\.cloud" . (excl. node_modules, dist) returns zero.
  2. grep -rn "devarno\.cloud\|devarno-cloud" . still surfaces operational references in the wire prompts and the superproject registry entry — confirms scope guardrail held.
  3. cd site && npm run build succeeds with the new canonical URL.
  4. yq '.brand' core/templates/brand.yaml.tmpl parses; keys blog/codes/host each have base + shard.