2026-05-13 — petrova.codes content partition
Status: proposed Author: ops@devarno.cloud Decides for: distribution surface content strategy, domain ownership
Context
Section titled “Context”The Petrova fleet has three public surfaces:
petrova.blog— Astro + Starlight, launched with narrative methodology + playbook docspetrova.host— operator console, control plane APIpetrova.codes— unbuilt, reserved for artifact distribution
petrova.blog currently contains skill packs and prompts with human-readable prose. As petrova.codes is built out, there is a risk of content duplication: the same skills/prompts would be surfaced across both domains with no clear differentiation, leading to drift and maintenance burden.
PRODUCT.md defines the distribution consumer archetype: “a staff engineer or agent-fleet operator visiting once to pull a versioned skill pack, prompt, or CLI binary.” This is distinct from the blog audience — methodology readers, not task-completion seekers.
Decision
Section titled “Decision”Establish a strict content partition between the two distribution surfaces:
petrova.blog (Substrate dialect) — narrative documentation:
- How to use each skill (prose explanations, context)
- What phases mean and how they work
- Playbook methodology, concepts, meta-rules
- Integration runbooks, recipes
- Decision history with editorial framing
- Target: someone learning the system
petrova.codes (Distribution dialect) — machine-consumable artifact registry:
- Raw skill pack SKILL.md files (no wrapper prose)
- Raw prompt files (no educational context)
- Verb schemas (JSON, human-readable rendering)
- Copy-to-clipboard install commands
- Version pins and metadata
- Machine-readable index (
manifest.json,llms.txt) - Target: someone executing a task, pulling a cached skill, running a verb
Content flows one direction: blog links out to codes for raw downloads. codes does not link back to blog — it is self-contained and minimal.
Enforcement: pull-content.ts (the prebuild script for codes/) sources from:
skills/petrova-*/SKILL.md— raw skill contentcore/prompts/*.md— raw promptsspec/verbs/*.schema.json— schemas
No additional prose is authored for codes/. The layout is utilitarian (Distribution dialect). Audience is the CLI operator and agent fleets, not readers.
Alternatives considered
Section titled “Alternatives considered”- Unified surface, two views. One source tree, two rendered outputs. Rejected: increases infrastructure coupling, makes versioning/deployment strategy complex.
- All content on .codes, link from .blog. Inverts the above. Rejected:
bloghas committed Starlight structure, would require massive refactor. - Deduplication by symlink. Share
docs/site/sections via symlinks incodes/. Rejected: unmaintainable, breaks Vercel builds, unclear ownership on edits.
Consequences
Section titled “Consequences”For code:
codes/scripts/pull-content.tssources onlyskills/,core/prompts/,spec/verbs/— neverdocs/site/.site/scripts/pull-content.tssources onlydocs/site/, neverskills/orspec/verbs/.codes/layout is Distribution dialect only — no Starlight, no navbar, task-optimized.
For docs:
docs/site/remains the narrative space for blog.skills/petrova-*/SKILL.mdis authored once, consumed by bothblog(as reference material) andcodes/(as raw download).- New prose about skills goes into
docs/site/skills/, not into skill pack bodies.
For in-flight phases:
- Phase launches for
petrova-codessurface align with TASKSET 5 completion.
For invariants:
- MR-3 (sibling files).
skills/petrova-*/SKILL.mdis a sibling to both domains; both read from it, no duplication of body. - MR-7 (decisions append-only). This decision records the partition; future conflicts resolved via new decision doc, never silent edits.
References
Section titled “References”PRODUCT.md— distribution consumer definitionDESIGN.md— Distribution dialect specdocs/decisions/2026-05-08-petrova-domain-pivot.md— domain acquisition and brand axiscodes/scaffold design (TASKSET 0–4 plan)
Sign-off
Section titled “Sign-off”- Subagent: OpenCode planning session (synthesis analysis)
- Human: awaiting confirmation