Contributor operations manual

Open source.
Machine-assisted.
Human-directed.

Cerneala is free to inspect, use, modify, and improve in public. Maintainer time is finite. Developers who need faster bug-fix attention or custom implementation work can pay for a priority lane.

OWNER & SOLE MAINTAINER Chevalier12
maintainer://cernealaLIVE POLICY

> repository.mode

OPEN_SOURCE

> execution.model

AI_NATIVE + HUMAN_REVIEW

> preferred.engineering_model

OPENAI_GPT_5_6_OR_NEWER

> contributor.rule

USE_THE_REPO_TOOLING

> forbidden.mutations

CLAUDE_MD
EVIDENCESOURCE + TESTSEXPERIMENTCSIGATEGREEN SUITE
Open code, finite attention

Source access is free. Priority is a service.

Commercial support does not create a private, better Cerneala. It purchases scheduled maintainer attention for the problem that matters to your project.

COMMUNITY LANEOpen source
CostFree
  • Public source and documentation
  • Issues, discussions, and pull requests
  • Community-driven diagnosis and fixes
  • Maintainer review as time permits

No guaranteed response window. A good reproduction, a red test, CSI evidence, and a narrow PR move dramatically faster than "button weird, please fix."

Open an issue
PRIORITY LANEPaid support
CostScoped directly
  • Faster triage and attention for blocking bugs
  • Prioritized fixes against an agreed reproduction
  • Custom controls, integrations, or framework capabilities
  • Implementation reviewed against Cerneala architecture

You are paying for focused maintainer time, not permission to bypass tests, architecture, documentation, or the public quality bar.

Contact the maintainer
Repository lineage

This codebase was built with AI. Maintain it the same way.

Do not try to hold the entire repository in your human working memory. That is not a test of intelligence. It is an inefficient way to misunderstand a large, fast-evolving system.

5.5
Project origin

GPT-5.5 started the build

It established a large part of the initial surface and also made several architectural and implementation mistakes. Historical contribution acknowledged. New engineering work not approved.

5.6SOL
Current baseline

GPT-5.6 repaired and extended it

Sol corrected substantial parts of the earlier work, implemented major systems properly, strengthened repository navigation and tests, and became the minimum trusted OpenAI engineering baseline.

+
Forward policy

Better models inherit the repo

OpenAI 5.6 or newer is approved. Any Anthropic model with version 5.5 or higher (for example Opus 5.5, Sonnet 5.5, Haiku 5.5) is approved for core engineering and visual work. Any Anthropic model below version 5.5, including Fable 5.1, is not approved for core engineering. Future models earn trust through observed compliance and repository evidence, not provider branding.

PRIME DIRECTIVE Do not raw-dog this repository with your unaided human brain.

Cerneala has the surface area of a repository that would normally require 40+ developers. Its maintainer is one person. Trying to understand every subsystem at once is not diligence; it is a fast route to losing your mind. Give a capable agent the exact scenario, let it load the local context, read the repository instructions, read files directly, use rg for text search and Roslyn MCP for C# symbols, run focused experiments, create tests, and show you evidence. Your job is intent, judgment, review, and deeply understanding the slice you are actually changing.

CHOOSE YOUR ENTRY POINT

Understand the repository without making it a personality test.

There is no sacred way to learn Cerneala. Read the implementation, ask a capable AI to translate it into simple language, or work through the enormous documentation surface. Mix all three if that is faster. The choice is yours.

PATH 01

Read the code

Read files directly for definitions, tests, and the surrounding contracts; use rg for text search.

Browse the source
PATH 02

Ask AI directly

Ask what happens, why it exists, and which contracts matter. Request a simple explanation grounded in current files, symbols, tests, and runtime flow. Then inspect the cited evidence instead of trusting confident vapor.

Explain simply how this subsystem works. Show me the relevant source and tests.
PATH 03

Read the gigantic docs

Use the API reference, architecture notes, WPF Compendium, roadmap, plans, diagrams, and system guides. The documentation is deliberately massive because the framework is deliberately massive.

API referenceWPF Compendium
THE RULEChoose the fastest path to real understanding. Current source and green tests settle disagreements.
Intentionally opinionated

Model policy. Yes, the maintainer will notice.

This is a repository contribution policy, not a universal leaderboard. Core engineering requires models that can sustain architecture, tool discipline, long context, testing, and precise changes across a large C# codebase.

Provider / modelCore engineeringVisual workMaintainer verdict
OpenAI GPT-5.6+5.6 is the baselineApprovedApprovedPreferred for repository work
Anthropic, version 5.5+Any model with version 5.5 or higher, e.g. Opus 5.5, Sonnet 5.5, Haiku 5.5ApprovedApprovedApproved for repository and visual work since 2026-10-09
Anthropic, below version 5.5Any model with a version below 5.5, including Fable 5.1RejectedRestrictedUnreliable and dangerous for Cerneala core work
Older OpenAI modelsIncluding historical 5.5RejectedCase by caseHistory, not the current quality floor
Anthropic visual work, below 5.5CSS, composition, visual direction onlyNot allowedAllowedReview carefully; the exception stops before engineering
Repository skills / Codex + Claude Code

Ten skills. Pick the narrowest one, then let it finish the job.

Every workflow below is an executable skill versioned with Cerneala. Codex loads it from .codex/skills/ and Claude Code loads it from .claude/skills/. Both copies enforce the same contract; the Claude Code copies are adapted to Claude Code's tools.

HOW TO CALL ONE Codex: $cerneala-fix-bug <your request> Claude Code: /cerneala-fix-bug <your request>
WHERE THEY LIVE .codex/skills/<skill-name>/SKILL.md .claude/skills/<skill-name>/SKILL.md
TYPICAL FLOW Discuss the change → checklist-plan → implement-plan → pull request. A regression found on the way goes to fix-bug; a frame-time problem with a number attached goes to performance-gate. In Claude Code, these three skills and repo-cleanup end by running session commit & push, which never commits on master: it works on a branch and opens a pull request against master. Any bug discovered along the way is proven and filed through github-issue-raise.
PLAN & BUILD / 01Planning
$cerneala-checklist-plan/cerneala-checklist-plan

Checklist Plan

Use it after the behavior, architecture, and open questions have already been discussed. It turns that settled discussion into one or more implementation-ready Markdown plans under docs/plans/, grounded in the current code.

  • Builds staged [ ] checklists with explicit, observable gates
  • Names the tests, documentation, dependencies, and definition of done for every stage
  • Runs a semantic audit that tries to falsify the plan, and never starts the implementation
USE WHENThe discussion is settled and you need an executable planCodexClaude
PLAN & BUILD / 02Implementation
$cerneala-implement-plan/cerneala-implement-plan

Implement Plan

Give it a plan name. It executes the plan end to end, exactly one stage per batch, and checks a stage off in the plan file only after that stage is verified.

  • Audits what is already done before touching code
  • Keeps code, tests, API documentation, and the source plan synchronized
  • Finishes with the full suite and a final audit, not with “looks done”
  • In Claude Code: ends by running /git-session-commit-push, which commits on a branch and opens a pull request
Codex, GPT-5.6 Sol Medium / High
~45 min to ~2 hours per plan
Codex $100 plan
~10-15% of weekly usage per plan
USE WHENA checklist plan exists and should be finishedCodexClaude
FIX & MEASURE / 03Bug repair
$cerneala-fix-bug/cerneala-fix-bug

Fix Bug

Give it the visible failure, the expected result, the reproduction steps, and any diagnostics. It reproduces the failure, proves it with a RED test, makes the smallest architecture-correct fix, and verifies the same scenario again.

  • Reproduces first: unit test, CSI, Servo-driven runtime, or a native harness
  • Requires a RED regression test before any production change
  • Ends with the full green suite and exact steps for your own manual check
  • In Claude Code: ends by running /git-session-commit-push, which commits on a branch and opens a pull request
Codex, typical duration
~20-30 minutes per bug fix
Codex $100 plan
~5% of weekly usage per bug fix
USE WHENSomething is broken and should be fixedCodexClaude
FIX & MEASURE / 04Performance repair
$cerneala-performance-gate/cerneala-performance-gate

Performance Gate

Use it for observable lag, stutter, slow startup, CPU, allocation, memory, GPU, or frame-time failures, and only with a concrete threshold. “Make it faster” is not a gate.

  • Freezes the workload, metric, percentile, hardware, and warmup before measuring
  • Measures a RED baseline and attributes the cost before changing production code
  • Reruns the identical gate plus visual, memory, and correctness checks
  • In Claude Code: ends by running /git-session-commit-push, which commits on a branch and opens a pull request
USE WHENAn observed performance problem has a numeric gateCodexClaude
FIX & MEASURE / 05Bug reporting
$github-issue-raise/github-issue-raise

GitHub Issue Raise

Turns a discovered Cerneala bug into a GitHub issue that meets the contribution bar. The other skills invoke it on their own when they find a defect.

  • Proves the bug first: a faithful reproduction, an expected behavior grounded in a contract, and a duplicate check
  • Writes the issue in the format of issue #3: What happens, Minimal reproduction, Expected behavior, Acceptance criteria
  • Posts only after the maintainer approves. While nobody is around, the drafts wait in .artifacts/issue-drafts/
USE WHENA real bug was found and should be trackedCodexClaude
ATTACK & RESEARCH / 06Red-team audit
$cerneala-breaker/cerneala-breaker

Breaker

Give it a concrete Cerneala API, subsystem, backend, feature, or scenario. It tries to break the documented contract with bounded hostile tests. Unsupported criticism does not count as a finding.

  • Targets crashes, hangs, lifecycle, rendering, input, and performance failures
  • Classifies every anomaly before blaming Cerneala and keeps minimized evidence
  • Leaves each confirmed defect as an active RED regression test; it does not fix production code outside Servo and Detective
USE WHENYou want an adversarial audit, not a routine fixCodexClaude
ATTACK & RESEARCH / 07Algorithm selection
$algorithm-market/algorithm-market

Algorithm Market

Use it before committing Cerneala to a nontrivial algorithm. It researches established candidates across primary research and production implementations, then separates the strongest absolute method from the best fit for the actual constraints.

  • Normalizes the target contract and hard gates before scoring candidates
  • Requires broad family coverage, search saturation, and source and license evidence
  • Returns a comparison and an implementation outline without editing code by default
MAINTAIN / 08Cleanup and refactoring
$repo-cleanup/repo-cleanup

Repo Cleanup

Use it to simplify, deduplicate, or modularize a named area without changing behavior. Leaving sound code alone is a valid result.

  • Reads the full implementation, its callers, and its tests before proposing a change
  • Works in small verified batches, with characterization tests first when coverage is missing
  • Asks before touching public contracts, ownership, or dependencies, and never mass-formats
  • In Claude Code: ends by running /git-session-commit-push, which commits on a branch and opens a pull request
USE WHENThe code works but carries unnecessary complexityCodexClaude
MAINTAIN / 09API documentation
$writing-api-documentation/writing-api-documentation

Writing API Documentation

Use it to create or update public API documentation from the implementation, tests, established contracts, and existing canonical pages. Names alone are not evidence of behavior.

  • Produces focused WPF-style class or member documentation with real APIs
  • Groups public members for scanning and keeps examples minimal and factual
  • Writes only to docs-site/documentation/classes/ and keeps the manifest in sync
USE WHENA public API or documented behavior changesCodexClaude
MAINTAIN / 10Commit and push
/git-session-commit-push

Session Commit & Push

Commits and pushes the work of the current conversation in Cerneala's structured commit style, always on a branch, and opens a pull request against master. Invoking it is the approval; it does not ask again. It ships in .claude/skills/; Codex users keep it as a personal skill.

  • Never commits on master: from master it fast-forwards to origin/master and opens a session/… branch; on another branch it commits there
  • Checks the pull request for conflicts with master and asks before merging master in to resolve them
  • Stages only changes that belong to this conversation; unrelated work stays untouched
  • Writes a type(scope): subject commit with themed sections and a Verification block
  • Pushes normally: no force, no rebase, no hook bypass, and it stops when the upstream has diverged
  • Opens the pull request, or reuses the branch's open one, and does not merge it unless you ask
USE WHENThe session's work is verified and ready to publishClaude
AGENT TOOLING / READ-ONLYC# symbol navigation
cerneala_roslyn

Roslyn MCP (mcpRoslyn)

Not a skill, but the tool the skills lean on. This local MCP server gives Codex and Claude Code real C# symbol navigation over the saved Cerneala.slnx, including members generated from markup. It answers “who calls this?” and “what implements this?” with compiler-level identity instead of text matches. It is pinned to mcpRoslyn v1.4.0 (MIT) with a Roslyn 5.9 patch.

  • Install it once with pwsh -NoProfile -File ./Tools/scripts/Install-RoslynMcp.ps1, then run dotnet build ./CernealaPresentation/CernealaPresentation.csproj -c Debug so the source generators have build outputs for the workspace to load
  • It is connected for Codex in .codex/config.toml and for Claude Code in .mcp.json. The Codex config allows twelve navigation tools (workspace_symbol, find_references, find_callers, …) and denies rename_symbol. .mcp.json only registers the server, so Claude Code users restrict its tools in their own local settings
  • The first query loads the whole solution and takes about 30–60 s. Later queries take about a second
  • Every connected agent session runs its own mcpRoslyn.exe. It loads the solution at the first Roslyn call and holds about 1 GB of RAM while it is used. 60 seconds after the last call it unloads the solution and drops to about 100–240 MB, and the next call loads it again in 25–50 seconds. The launcher ends it together with its session
USE WHENYou need symbol identity, not a text matchRead README
SELECTION RULE Use the narrowest matching skill. Research is not implementation, an adversarial audit is not a bug fix, and performance work without a frozen numeric gate is guesswork.
READY-TO-USE PROMPTCreate the plan
Use the cerneala-checklist-plan skill to turn our completed discussion into implementation-ready Cerneala checklist plans under docs/plans/. Do not implement the code yet.
READY-TO-USE PROMPTImplement the plan
Use the cerneala-implement-plan skill to implement <plan-name> end to end. Work one stage per batch and check off each stage only after it is implemented and verified.
READY-TO-ADAPT PROMPTFix a Cerneala bug
Use the cerneala-fix-bug skill to investigate and fix this Cerneala bug end to end.

Location / custom view:
[describe the affected scenario]

Reproduction:
1. [exact action]
2. [exact action]
3. [observed failure]

Expected:
[what should happen]

Actual:
[what happens instead]

Diagnostics:
[exceptions, traces, screenshots, frame stats, or none]

Reproduce the failure before editing production code, add a focused RED regression test, implement the smallest architecture-correct fix, repeat the automated reproduction, and run the complete repository test suite until GREEN.

Do not claim that you manually tested the real application scenario. Give me the exact steps and expected result so I can perform that validation myself.
Before maintainer review

The PR should arrive with evidence, not optimism.

NON-NEGOTIABLE RELEASE GATE User scenario confirmed. Automated repository suite GREEN.

The agent owns automated evidence. The user owns the real application check. If either side is still red or unconfirmed, the PR is not ready.

01Focused scope

No unrelated cleanup, accidental metadata churn, or wholesale rewrite because the agent became artistically inspired.

02Reproduction or plan

Bug PRs carry a reliable reproduction. Feature PRs carry the staged checklist that governed the work.

03Full green suite

A bug began red. New behavior has contract tests. Every repository test passes after the final implementation.

04User runtime confirmation

The user exercised the actual view or Playground scenario and reported the result. The agent must not fabricate this evidence.

05Current docs

Public APIs and developer-facing contracts are documented in the repository source of truth.

06Honest handoff

Known gaps and uncertainty are stated plainly. The maintainer should not need archaeology to discover what remains.