Changelog
All notable changes to The Open Co-Prompting Standard are recorded here.
Versioning follows VERSIONING.md. Substantive decisions, including rejected proposals, are recorded with reasoning so a later reader can find out why the Standard is the way it is.
v0.2 (Draft) — 2026-08-06
Moves the shared spoken vocabulary out of individual profiles and into the core, where it belongs.
Added
- Core Section 7, Vocabulary — a normative cue registry of 21 spoken phrases, each bound to a state or an invariant and carrying that behavior's requirement level. Profiles inherit all of them.
- Universal call types —
Questionis now defined in core (Section 7.2) and inherited by every profile. - Dialects (Section 7.3) — a profile MAY substitute the phrase for a cue where its domain genuinely says something else, declared in
cueDialect. The meaning and requirement level are unchanged. cuesandcallTypesinspec/loop.json, withschema/loop.schema.jsonextended to match.cueDialectinschema/profile.schema.json.- Four validator cross-checks — every cue appears in the Section 7.1 table and the counts agree; no profile redeclares a universal call type; every dialect entry names a real cue; no dialect entry restates the core phrase unchanged.
Changed
- Core sections 7 through 12 renumbered to 8 through 13 to make room for Vocabulary. All internal and external cross-references updated.
profiles/software.jsonno longer declaresQuestion— it is inherited.profiles/aec.jsondeclares a two-entry dialect: "Listening" foracknowledge, "Already running" foralready_owned.- Both profile documents replace their "Additional vocabulary" tables with a pointer to core plus, where applicable, a dialect table.
Decisions recorded
-
Shared meaning, local wording. Profiles may substitute a cue's phrase but never its meaning or requirement level. The alternative — one mandated word per cue — was rejected because the two founding profiles were written from transcripts in which real practitioners say different words for the same act ("Ready" in software rooms, "Listening" in coordination meetings). A standard that requires people to stop saying what they already say gets ignored rather than adopted.
-
A dialect that restates the core phrase is an error, not a no-op. Caught by the validator. A profile listing substitutions identical to the defaults is padding that makes the real substitutions harder to find.
-
Questionis the only universal call type in this release. It is the only term with evidence in both founding profiles. Promoting speculative universals — a generic "Compliance" or "Risk" — before a third profile exists would be exactly the desk-invented vocabulary the authoring guide warns against. The registry is built to grow as profiles converge. -
Why this was a defect, not a refinement. Core invariant 5 requires the Owner to state aloud whether each augmentation was incorporated, and invariant 8.1 (now 9.1) requires labelling unadjudicated results preliminary — but the words for both existed only in the AEC profile. A software team reading their own profile was instructed to perform behaviors the Standard never gave them words for. The two profiles' vocabulary tables shared exactly one entry between them after a single day.
v0.1 (Draft) — 2026-08-06
First public draft.
Added
- Core specification (
spec/core.md) — five roles, ten states grouped under the four-beat Call / Claim / Co-prompt / Close loop, eight accountability invariants, four terminal states. - Conformance (
spec/conformance.md) — three levels: L1 Spoken, L2 Recorded, L3 Instrumented, with per-level requirements and machine-verifiable consistency rules for L3. - Glossary (
spec/glossary.md). - Background (
spec/background.md) — prior practice and research, with explicit wording discipline about what is and is not being claimed. - Machine-readable loop (
spec/loop.json) — the roles, beats, states, invariants, terminal states, and conformance levels as data, so verifiers and documentation sites do not have to parse prose.spec/core.mdremains authoritative, and the repository validator asserts the two agree on the state list, the counts, and the terminal states. - Schemas —
schema/session-event.schema.jsonfor the L3 event record,schema/profile.schema.jsonfor the profile format,schema/loop.schema.jsonfor the loop. - Worked examples as data — each profile carries its dialogue as structured turns in
worked_example, alongside the prose rendering in its markdown. - Profiles — Software Development and Architecture, Engineering and Construction, both written from transcripts of real sessions. Template and authoring guide for new profiles.
- Example — an L3 event stream for the AEC worked example.
Decisions recorded
-
The loop is published as data as well as prose. Two files stating the same thing will drift, so
spec/loop.jsonis not merely a convenience copy: the validator cross-checks it againstspec/core.mdand fails if the state list, the beat and state counts, the role names, the terminal states, or the conformance level names disagree. Anything rendering the Standard — including its own documentation site — consumes the data rather than restating it. -
The loop requires a restatement on claim. Acknowledgement alone does not distinguish heard from understood. The restatement is the only point where a mishearing surfaces before an agent runs, and it is cheap relative to discovering the error afterwards.
-
Speaking the prompt aloud is required at L2, not L1. L1 must be adoptable by a room with no recording and no shared screen, immediately, with nothing bought or installed. Requiring the spoken prompt at L1 would have made the entry level harder to reach than it needs to be. It remains RECOMMENDED at L1.
-
Declining an augmentation must be audible. An earlier draft required only that incorporated augmentations be acknowledged. That permitted the failure mode where a contributor believes their constraint was included and it silently was not. Both outcomes are now required to be stated.
-
The Owner may not adjudicate their own output in either published profile. This is a profile-level decision rather than a Core invariant, because there are legitimate domains — solo practice, low-stakes internal work — where self-adjudication is appropriate. Core requires only that the Adjudicator be qualified; profiles decide whether that can be the same person.
-
Terminal states include Parked and Superseded, not only Accepted and Rejected. Sessions in practice produce a large number of tasks blocked on something outside the room. Forcing those into Rejected loses the distinction between "we decided against it" and "we could not proceed," which is exactly the distinction the next meeting needs.
-
A silently discarded result is a conformance failure. An undisclosed discard is indistinguishable from work never attempted, and the question returns at the next session with no record of what was already tried.
-
Conformance applies to sessions, not organizations. Only a session can be assessed. Organizational claims would be unfalsifiable and would invite exactly the certification theatre this Standard has no mechanism to police.
-
No certification body, no conformance mark. Claims are self-asserted. Establishing a certification scheme for a draft standard with no adopters outside its authors would misrepresent its maturity.
Rejected
-
Naming the Standard after the Call / Claim / Close mnemonic. The three-word form abbreviates to a string strongly associated with the former Soviet Union, which would have required permanent correction, and it omitted the co-prompting step — the part with the least prior art. Recorded here because the mnemonic remains a good teaching device and this will be proposed again.
-
Naming the loop's third beat "Share" or "Speak" rather than "Co-prompt." Both were more immediately obvious, and both lost the specific meaning that the room contributes to the prompt rather than merely hearing it.