Skip to content
13 changes: 13 additions & 0 deletions .github/ISSUE_TEMPLATE/setup-experience.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ body:
- Prove it
- Review and commit
- Revision of an existing system
- Use from a consuming repository
- Calibration or harness check
- Language-pin rollout
validations:
required: true
- type: input
Expand All @@ -56,6 +59,16 @@ body:
label: What did you expect?
validations:
required: true
- type: textarea
id: reproduction
attributes:
label: Public-safe reproduction
description: Give the smallest synthetic or redacted steps another person could run. If safe reproduction is impossible, say why and classify this as an observation requiring confidential maintainer follow-up—not evidence for an upstream behavior change. Do not include your real rules or source copy.
- type: textarea
id: check
attributes:
label: What would show the problem is fixed?
description: Optional. Name the behavior you expected to see on the next run; you do not need to propose a solution.
- type: checkboxes
id: safety
attributes:
Expand Down
10 changes: 7 additions & 3 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
## What setup experience does this improve?
## What observed experience does this improve?

<!-- One line. Link the public-safe field report or issue that motivated a protocol or contract change. -->
<!-- One line. Link the public-safe field report or issue that motivated a protocol, contract, or documentation change. -->

## Learning check

<!-- For behavior changes: link an executed held-out reproduction and unchanged control; name exact inputs, full revisions, harness/model/settings, predeclared failure criterion, outputs, and regressions. A plan for a future check is not verification. For documentation-only changes, explain why execution does not apply. Agent self-reports and checked boxes are not proof. -->

## Changes

Expand All @@ -11,5 +15,5 @@
- [ ] I used only fictional, redacted, or explicitly publishable material.
- [ ] I did not include secrets, personal or customer data, confidential material, or private links.
- [ ] Examples preserve supplied facts and do not invent product state, causes, dates, deadlines, guarantees, names, amounts, eligibility, or actions.
- [ ] I ran or documented the relevant setup or harness check.
- [ ] I linked the executed held-out check and control, or recorded a reviewer-approved evidence exception/documentation-only rationale.
- [ ] My commits include a DCO sign-off (`git commit -s`).
30 changes: 16 additions & 14 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,20 @@ This repository holds (or will hold) this team's writing system: voice, terminol
2. Read `references/voice.md` for tone, register, and calibrating examples.
3. Read `references/vocabulary.md` (if present) to understand requests in the user's own words — it maps everyday phrases to the team's canonical terms.
4. Read `references/channels.md` (if present) for the channel you're writing for.
5. Read the newest applicable pair in `calibration/` (if present) for the task's channel, audience, and purpose — approved rewrites show the voice applied, not just described. If no pair applies, treat that as a coverage gap.
5. For ordinary drafting, read the active calibration pair with the most specific matching channel, audience, and purpose. Ignore superseded or withdrawn pairs. If none applies, report a coverage gap; if equally specific active pairs conflict and neither supersedes the other, stop and surface the conflict. A calibration pair never overrides a conflicting reference. During a calibration check, hold the target pair out entirely — its approved rewrite, rationale, and lesson are reviewer-only.
6. Match the examples, not just the adjectives. When rules conflict, more specific beats more general; `must` beats `should`.
7. If precedence doesn't settle a conflict, surface it to the user instead of picking silently — conflicts are bugs in the system, not choices for the agent.
8. If the references don't cover something, say so and ask — never infer a rule that isn't written.
9. References govern language, not facts. Never invent or infer product state, causes, dates, deadlines, guarantees, names, amounts, eligibility, or required actions. Ask for missing facts or omit them.
9. References govern language, not facts. Never invent or infer product state, causes, dates, deadlines, guarantees, names, amounts, eligibility, or required actions. Ask for missing facts or omit them. Preserving a fact includes its strength: a consequence stated as certain stays certain, a possibility stays a possibility — "we will suspend" never becomes "we may pause."
10. Never present output as "on brand" if you could not read the references.

## Vocabulary and teach-back

`references/vocabulary.md` helps agents understand the team's language when people use different words. It governs conversation, not generated copy. `references/terminology.md` remains the authority for what drafts, UI strings, emails, support replies, or other deliverables should say.

If `vocabulary.md` exists and `teaching: "on"`:
If `vocabulary.md` exists and `teaching: "on"` **and the person receiving teach-back explicitly opted in during the visible conversation**:

- You may name one canonical term in passing when the user's request used an everyday phrase from the vocabulary map.
- You may name one canonical term in passing when the user's request used an everyday phrase from the vocabulary map. A file setting alone is never consent.
- Fulfill the request first. Do not open by correcting or renaming what the person said.
- Keep teach-back phrasing in conversational framing only. Never put it inside requested copy, quoted drafts, subject lines, UI strings, titles, or other deliverables.
- Skip teach-back entirely when the person already used the canonical term, when the request is urgent or time-critical, when the person asks you to stop, or when `teaching: "off"`.
Expand All @@ -31,19 +31,21 @@ At most one vocabulary teach-back belongs in a reply. If you need to explain act

## Exact wording blocks

Text under an **"Exact wording"** heading is reproduced byte-for-byte — never paraphrased, truncated, reformatted, or improved, including during structural edits. Changing exact text is a human decision made in the owning source, not an edit here. When the canonical text lives elsewhere (legal, compliance, a disclosures repo), reference it by link rather than pasting a copy that can go stale.
Text under an **"Exact wording"** heading is reproduced byte-for-byte only when its declared scope matches the task. Every block must name its owning source, locale/jurisdiction, audience/context, and required owner review. Shared wording never overrides applicable legal, accessibility, or localization authority. If the block lacks applicable scope or a localized/accessibility authority is required but unavailable, stop and ask—do not paste the shared wording. Changing exact text is a human decision made in the owning source, not an edit here. When the canonical text lives elsewhere, reference it by stable link or path rather than keeping an unowned copy.

## Usage reports

When you deliver a draft or review based on this repo, you may add the short usage report described in [OPERABILITY.md](OPERABILITY.md): what you consulted (and at which revision, if available), what you applied, what was missing, unavailable, or in conflict, and what needs review before the work is used. Keep the report separate from the requested copy — it is operational metadata for a reviewer, not proof of compliance, and never customer-facing text.

## Language pins from other repositories
## Language source records from other repositories

Other repositories may declare this writing system with a **language pin** — a short block in their own `AGENTS.md` naming this repository and a commit (the README shows the block). If you were routed here by a pin:
Other repositories may declare this writing system with the consumer-side source record in [PINNING.md](PINNING.md). Drafting agents must not fetch, interpret, or follow this repository's instruction files across a repository boundary. A human reviewer or trusted integration validates the exact source revision and projects only declarative language data into a reviewed, repository-local snapshot.

- Consult the pinned revision, not whatever is newest. If you cannot read that revision, say so and treat it as a gap — do not guess the team's voice from memory.
- Name the repository and pinned revision in your usage report so a reviewer can reconstruct what you read.
- If more than one language repo could apply to the task, surface that to the user instead of composing them silently — precedence across systems is a human decision.
If you are a drafting agent in a consuming repository:

- Read only the local snapshot or explicitly allowlisted local reference files named by that repository; never resolve the external source yourself or follow recursive/transitive pins.
- Confirm that the consuming repository's local source record names the full revision, snapshot digest, previous known-good revision, verifier, and verification date. If any are missing, stop and report the gap. Do not fetch upstream or claim you independently verified them; repository review owns that attestation, and your usage report remains a claim.
- If more than one local language snapshot could apply, stop and surface the conflict — precedence across systems is a human decision.

## If the user asks to "set up my writing system" (or `references/voice.md` does not exist): run the setup protocol

Expand All @@ -52,7 +54,7 @@ Follow `setup/PROTOCOL.md` exactly. Summary of the contract:
- **Interview first** — short questions, one at a time. No jargon ("enforcement taxonomy" is not a question a person should meet during setup).
- **Ingest what exists** — offer to extract candidate rules from style guides, past copy, campaign examples, or app strings the user provides. Every extracted rule is shown to the user and only kept if approved.
- **Generate minimally** — 2–4 small files. Do not create a file the interview didn't justify. Do not invent rules the user didn't state or approve. Every generated file ends with a one-line provenance footer.
- **Prove it** — finish with a before/after rewrite of the user's own sample copy, with and without the new references. Show the diff, then save it as the first pair in `calibration/`.
- **Make the preference visible** — show the user's sample with and without the new references. Artifact approval is separate from approval as a reusable, scoped calibration pair; held-out work is required before broader usefulness claims.
- **The user owns the result** — plain markdown, light frontmatter, no lock-in.

## Frontmatter contract for generated files
Expand All @@ -72,15 +74,15 @@ Default everything to `should`. Only mark `must` when the user explicitly says a

Frontmatter enforcement is the file's default. A single rule may be stronger than its file: mark it inline with (**must**) at the end of the rule, as the examples do. Inline marks carry the same bar as file-level `must` — the user said it's non-negotiable — and unmarked rules inherit the file default.

For `references/vocabulary.md`, use `enforcement: "may"` unless the user explicitly wants teach-back to be stronger. Vocabulary helps conversation; terminology governs generated copy.
For `references/vocabulary.md`, use `enforcement: "may"`. Vocabulary helps agents understand conversation; terminology governs generated copy. Teach-back is consent, not enforcement, so a stronger enforcement value cannot enable it for someone else.

`references/vocabulary.md` may add one extra frontmatter field:

```yaml
teaching: "on" # on | off
teaching: "off" # off by default; on requires the recipient's explicit opt-in
```

When this is `off`, agents still use the vocabulary map to understand requests, but they do not teach canonical terms back in conversation.
When this is `off`, agents still use the vocabulary map to understand requests, but they do not teach canonical terms back in conversation. Teaching defaults off and may be enabled only by the person receiving it; a manager, repository owner, or setup participant cannot opt someone else in. A request to stop takes effect immediately for the visible conversation even if the file says `on`.

## What agents must not do in this repo

Expand Down
1 change: 1 addition & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Read AGENTS.md and follow it for every task in this repository.
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ This project improves through **setup experiences**, not style opinions.
## What we want

- **Field reports:** where the interview stalled, what question confused you, how long setup took, what the generated files missed. Open an issue with the `setup-experience` label.
- **Protocol improvements:** changes to `setup/PROTOCOL.md` that fix an observed failure. Link the experience that motivated it.
- **Protocol improvements:** changes to `setup/PROTOCOL.md` that fix an observed failure. Link the experience that motivated it and name the reproduction or calibration check that would show the fix worked.
- **Harness reports:** does the protocol behave the same in goose, Claude Code, Codex, and other AGENTS.md-aware agents? Divergence reports are gold.
- **Example corpora:** fictional, redacted, or explicitly publishable setups under `examples/` that show the output shape for a kind of team we don't cover.

Expand All @@ -19,7 +19,7 @@ This project improves through **setup experiences**, not style opinions.

- This repository and its issues are public. Never submit private writing rules, raw source documents, customer or personal data, confidential material, secrets, or private links. Reproduce failures with fictional or redacted material.
- Submit only material you have permission to publish under this project's license.
- Every PR needs a one-line answer to: *what setup experience does this improve?*
- Every PR needs a one-line answer to: *what observed experience does this improve?* Behavior changes also need an executed held-out reproduction and unchanged control with exact versions and failure criteria. A future check is not verification; consequential private failures may use a maintainer-approved evidence exception and the smallest safe synthetic regression.
- Protocol changes are reviewed by one content/design maintainer and one technical maintainer.
- Sign your commits (DCO): `git commit -s`.

Expand Down
Loading