Status: public governance note
Scope: evidence required before Carry-forward, Reserved, or Experimental entries can move toward a more stable surface
Audience: maintainers, contributors, implementers, and reviewers evaluating operator-surface changes
This document explains the evidence bar for promoting non-Core operator
surfaces. It does not add a new operator, change v1.1.0 Core semantics, or
make any Reserved / Experimental entry available by default.
The authoritative semantic source remains
CogLang_Specification_v1_1_0_Draft.md. The operator catalog remains the
status index. This note records the review discipline that should sit between
roadmap interest and a specification change.
Promotion is allowed only when the evidence is public, reproducible, and narrow enough to preserve the existing compatibility story:
- canonical M-expression text remains the stability anchor
- errors remain explicit values
Enhanceddoes not rewriteBaselineorCore- host-specific behavior stays behind profiles, capabilities, examples, or host contracts unless it is deliberately promoted through specification and conformance work
The current catalog has three non-Core buckets that need different treatment.
| Bucket | Meaning | Default action without enough evidence |
|---|---|---|
Carry-forward |
A legacy or transitional entry has not yet been rewritten into the current v1.1.0 template. |
Rewrite, explicitly downgrade to Reserved, or remove ambiguity before it becomes permanent. |
Reserved |
A name, direction, signature, or bridge point is held for future work, but default execution is not required. | Keep StubError[...], profile-specific availability, or implementation-defined behavior explicit. |
Experimental |
A high-risk or immature direction exists only as exploratory material. | Keep outside default surfaces; normally move through Reserved before any stronger status. |
Future directions are not promotion candidates by default. They first need a
profile, extension, host-contract, or reserved entry that can be reviewed on its
own evidence.
Every promotion proposal should include these evidence categories.
State:
- the exact operator or direction name
- current status and proposed target status
- target layer:
Core,Enhanced, extension-backed, host-contract companion, or documentation-only - whether the name is frozen
- whether the signature is frozen
- whether any schema, envelope, or readable rendering shape is still informative rather than contractual
Define:
- normal execution behavior
- default missing-implementation behavior
- capability-denied behavior
- failure value shape
- interaction with canonical text
- interaction with existing error propagation rules
- whether the behavior depends on host state, external I/O, cross-instance messaging, or self-modification
If the proposal cannot write these fields without implementation-specific
language, it should not move into Core.
Provide a profile matrix at least as explicit as:
| Profile | Required behavior |
|---|---|
Baseline |
normal execution, StubError[...], or PermissionError[...] |
Enhanced |
normal execution, StubError[...], PermissionError[...], or explicitly profile-specific behavior |
Enhanced may add availability. It must not reinterpret an omitted option,
change a Core default, or make existing Baseline behavior mean something
else.
If the entry is capability-gated or extension-backed, document:
- stable capability strings
- denied-by-default behavior
- required manifest fields
- missing implementation error
- capability denied error
- default-enabled profiles
- whether an extension can be absent without making the implementation non-conformant
Permission failure must remain explicit. Silent degradation is not acceptable evidence.
Promotion needs executable evidence, not only prose.
Minimum test evidence should cover:
- parse and canonicalization behavior when syntax is involved
- normal execution or the required stub/error value
- capability denied behavior
- missing implementation versus installed implementation, when extension-backed
BaselineandEnhancedconsistency for existingCoreoperators- at least one negative case that preserves explicit error values
If the feature affects host envelopes, include host-level success and failure examples without widening the language-core claim.
Any proposal involving cross-instance communication, external I/O, host policy, self-inspection, self-modification, rule publishing, rollback, or adapter-specific behavior must state:
- which behavior belongs to language semantics
- which behavior belongs to host contract or companion examples
- which identifiers or envelopes are stable
- which trace or provenance fields are required
- which security or permission failure shape is required
Unfrozen host behavior should block Core promotion.
Accepted promotion work must update the public surface in a consistent order:
- main specification or profile/host-contract document
- conformance and regression tests
- operator catalog
- migration or release notes, if behavior changed
- README,
llms.txt,llms-full.txt, manifest/package data, and public extract assets when the new document or surface is public
The release-check surface should fail if a newly public governance or contract document is missing from the packaged assets.
Send is the remaining meaningful Carry-forward entry.
Before promotion, it needs public evidence for:
- cross-instance protocol
- default failure shape
- minimal trace requirements
- capability or permission behavior
- conformance examples for success and failure
If those boundaries remain unfrozen before the target version boundary, Send
should move to Reserved rather than stay indefinitely ambiguous.
Explain has a frozen name and a reserved observability role, but the plan
object schema is not frozen.
Promotion requires:
- a minimal result schema
- profile-specific availability rules
- behavior when no planner is installed
- examples proving that explanation does not change the value of the wrapped or analyzed expression
These entries depend on profile, capability, and host boundaries.
Promotion requires:
- explicit profile availability
- stable capability strings where needed
StubError[...]orPermissionError[...]behavior for unsupported paths- evidence that ordinary default
Query[...]behavior is unchanged - clear separation between informative host estimates and contractual language values
Instantiate, Probe, Explore, Estimate, Decompose, Defer, Resume,
and Merge are reserved shortcut heads, not promoted Core semantics.
Promotion requires:
- a stable signature
- a defined return value or error value
- evidence that the shortcut is not only host UI convenience
- conformance cases covering both supported and unsupported behavior
Rule candidate envelopes and publish/rollback chains are bridge points for future rule-induction workflows.
Promotion requires:
- stable envelope fields
- review and trace requirements
- rollback failure shape
- host ownership boundaries
- public examples that avoid binding a single reference host lifecycle into the language core
Concrete syntax for explicitly qualified names remains implementer-reserved.
Promotion requires:
- spelling rules
- canonicalization rules
- collision behavior
- extension lookup behavior
- failure values for unavailable or denied extensions
This is not ordinary teachable user syntax until those rules are stable.
Recover[...], stronger InspectSelf[...], rule self-modification, and
adapter-specific tightly coupled operators should normally pass through
Reserved first.
Direct promotion is blocked unless the proposal can prove:
- bounded behavior
- explicit permission failure
- no hidden host exceptions
- no silent mutation of rules or policy
- conformance coverage for denied and unsupported paths
Maintainers should close each promotion review with one of these outcomes:
promote: evidence is sufficient, docs and tests are updated, and the target status is explicitreserve: the direction is worth keeping but default behavior remainsStubError[...],PermissionError[...], or profile-specifickeep experimental: the direction is still exploratory or too riskydowngrade: a carry-forward or ambiguous entry becomesReservedremove: the entry conflicts with the current language line or no longer has a clear role
The decision should identify the missing evidence if the result is not
promote.
This document does not:
- define new stable syntax
- promise a
v1.2feature list - require every implementation to support
Enhanced - turn host-specific examples into language-core behavior
- replace conformance tests with prose
The goal is narrower: make promotion review predictable enough that Core,
Reserved, and Experimental remain meaningful compatibility tiers.