composition rule
composition.dyad-formation
Use an admitted typed dyad Formation core and full identity.
- product: error
- marketing: error
- public: warning
- docs: warning
Rationale
No separate rationale is authored; the rule statement above is authoritative.
Guidance
No separate guidance is authored. The rule's authored examples and fix policies follow below.
Checker behavior
Message
{captured} is not a valid Canon composition.
Applies in
- heading
- body
- blockquote
- list item
- table cell
- json key
- glossary term
- notation token
Detection
- detector
- composition.dyad-formation
- kind
- delegated
Authored examples and fix policies
- subtypes
[ { "examples": { "correct": [ { "check_input": { "expectation": { "attempt": { "axis": "formation.dyad.axis.capacity", "composition_id": "compose.dyad-formation", "emphasis": [ "formation.emphasis.kind.channel", "axis.bond" ], "emphasis_partner": null, "family": "formation.dyad.family.carried", "family_partner": "formation.dyad.partner.a", "member_id": "formation.dyad.identity.carried.countered.capacity.balanced.channel-b.a.none.none", "shape": "formation.dyad.shape.countered", "state": "formation.dyad.state.balanced", "state_partner": null }, "components": [ { "end": 81, "role": "family", "start": 0 }, { "end": 81, "role": "shape", "start": 0 }, { "end": 81, "role": "axis", "start": 0 }, { "end": 81, "role": "state", "start": 0 } ], "kind": "composition-attempt" }, "kind": "typed-value", "node": "notation_token" }, "format": "text", "id": "dyad-core-valid", "profile": "general-prose", "surface": "docs", "text": "formation.dyad.identity.carried.countered.capacity.balanced.channel-b.a.none.none" } ], "incorrect": [ { "captured": "invalid dyad core", "check_input": { "expectation": { "attempt": { "axis": null, "composition_id": "compose.dyad-formation", "emphasis": [ "formation.emphasis.kind.none" ], "emphasis_partner": null, "family": "formation.dyad.family.nope", "family_partner": null, "member_id": null, "shape": null, "state": null, "state_partner": null }, "components": [ { "end": 17, "role": "family", "start": 0 }, { "end": 17, "role": "shape", "start": 0 }, { "end": 17, "role": "axis", "start": 0 }, { "end": 17, "role": "state", "start": 0 } ], "kind": "composition-attempt" }, "kind": "typed-value", "node": "notation_token" }, "format": "text", "id": "dyad-core-invalid", "outcome_id": "violation", "profile": "general-prose", "surface": "docs", "text": "invalid dyad core" } ] }, "id": "core", "outcomes": [ { "disposition": "structural", "fix": { "interactive": "retry", "unattended": "retry" }, "id": "violation" } ], "supersedes": [] }, { "examples": { "correct": [ { "check_input": { "expectation": { "attempt": { "axis": "formation.dyad.axis.capacity", "composition_id": "compose.dyad-formation", "emphasis": [ "formation.emphasis.kind.channel", "axis.bond" ], "emphasis_partner": null, "family": "formation.dyad.family.carried", "family_partner": "formation.dyad.partner.a", "member_id": "formation.dyad.identity.carried.countered.capacity.balanced.channel-b.a.none.none", "shape": "formation.dyad.shape.countered", "state": "formation.dyad.state.balanced", "state_partner": null }, "components": [ { "end": 81, "role": "family", "start": 0 }, { "end": 81, "role": "shape", "start": 0 }, { "end": 81, "role": "axis", "start": 0 }, { "end": 81, "role": "state", "start": 0 } ], "kind": "composition-attempt" }, "kind": "typed-value", "node": "notation_token" }, "format": "text", "id": "dyad-identity-valid", "profile": "general-prose", "surface": "docs", "text": "formation.dyad.identity.carried.countered.capacity.balanced.channel-b.a.none.none" } ], "incorrect": [ { "captured": "invalid dyad identity", "check_input": { "expectation": { "attempt": { "axis": "formation.dyad.axis.capacity", "composition_id": "compose.dyad-formation", "emphasis": [ "formation.emphasis.kind.channel", "axis.bond" ], "emphasis_partner": null, "family": "formation.dyad.family.carried", "family_partner": "formation.dyad.partner.a", "member_id": "compose.dyad-formation.identity.wrong", "shape": "formation.dyad.shape.countered", "state": "formation.dyad.state.balanced", "state_partner": null }, "components": [ { "end": 21, "role": "family", "start": 0 }, { "end": 21, "role": "shape", "start": 0 }, { "end": 21, "role": "axis", "start": 0 }, { "end": 21, "role": "state", "start": 0 } ], "kind": "composition-attempt" }, "kind": "typed-value", "node": "notation_token" }, "format": "text", "id": "dyad-identity-invalid", "outcome_id": "violation", "profile": "general-prose", "surface": "docs", "text": "invalid dyad identity" } ] }, "id": "identity", "outcomes": [ { "disposition": "structural", "fix": { "interactive": "retry", "unattended": "retry" }, "id": "violation" } ], "supersedes": [] } ]