Candidate generation is not self-authorization
12.00 supplies explicit intent. 12.01 supplies measured deviation when a candidate is materialized. 12.02 supplies hard-protection and budget evidence. 12.03 supplies only bounded candidate descriptors and explicit rationale evidence.
Explicit maxCandidates, hard safety cap 64.
Deterministic diversity order.
Variant owner materializes geometry.
Rationale sufficiency is categorical.
12.03 owns packaging and rationale evidence
It does not own the geometry being proposed. The candidate points at a proposal or immutable materialized state owned elsewhere.
Candidate layer
Variant adapters, generation profile, bounded selection, dedupe, deterministic diversity and candidate identity.
Justification layer
Owner-qualified evidence, explicit structural requirement policy and categorical sufficiency evaluation.
12.04
Final Topic12 integration, hard-gate precedence, override scoring and consolidated tests.
owns_metrics=[]. Candidate count, evidence count and number of satisfied clauses are structural diagnostics, not independent scoring votes.
RuleBreakCandidateVariantEvidence
12.03 does not invent coordinates. It consumes an exact proposal/state identity from the module or service that actually owns candidate geometry.
RuleBreakCandidateVariantEvidence {
variantEvidenceRef,
variantRef,
variantOwnerRef,
variantModuleRef,
variantSnapshotRef,
materializationState:
PROPOSAL_ONLY
MATERIALIZED,
candidateStateRef?,
targetEvidenceRef,
intentRef,
targetFamily,
subjectRefs[],
canvasRef,
coordinateFrame,
sourceUnit,
diversityBucketKey,
evidenceRefs[],
confidence,
provenance,
status,
mutationAllowed: false
}
Opaque owner-qualified proposal. 12.03 may package it as a candidate but cannot claim measured deviation or protection/budget outcome.
Requires immutable candidateStateRef. Downstream 12.01/12.02 evidence may bind to that state.
Generation is explicit policy
No intent mode automatically forces candidate production. Even REQUEST_BREAK needs an explicit generation profile.
RuleBreakCandidateGenerationProfile {
candidateGenerationProfileRef,
profileSourceRef,
profileSourceOwnerRef,
allowedIntentModes[],
maxCandidates,
seed,
diversityMode:
SEEDED_ROUND_ROBIN_BUCKETS,
includeProposalOnly,
includeMaterialized,
requiredVariantOwnerRefs[],
provenance,
status,
mutationAllowed: false
}
Bounded seeded diversity
Generation validates, deduplicates and diversity-prunes an explicit variant pool. It never creates a Cartesian product of rule, subject, offset and rationale options.
diversityBucketKey and seeded round-robin exist only to prevent one explicit variant family from monopolizing a bounded set. A bucket has no canonical strength or rank.
RuleBreakCandidate
The output is a stable reference envelope. ordinal describes deterministic emission position and must never be read as desirability.
RuleBreakCandidate {
candidateRef,
candidateGenerationProfileRef,
variantEvidenceRef,
variantRef,
variantOwnerRef,
materializationState,
candidateStateRef?,
targetEvidenceRef,
intentRef,
intentMode,
targetFamily,
subjectRefs[],
diversityBucketKey,
seed,
ordinal,
confidence,
status: "OK",
provenance: "DERIVED",
derivedFrom[],
mutationAllowed: false
}
Justification must be evidence, not prose
A rationale can point to a human directive, style rationale, semantic policy or external policy, but it must have an explicit source and owner. Free-form text alone is not canonical proof.
RuleBreakJustificationEvidence {
justificationEvidenceRef,
candidateRef,
evidenceKind:
HUMAN_RATIONALE_REF
STYLE_RATIONALE_REF
SEMANTIC_POLICY_REF
EXTERNAL_POLICY_REF
INTENT_SOURCE_REF,
evidenceSourceRef,
evidenceSourceOwnerRef,
evidenceRefs[],
claimCode,
semanticIntentRefs[],
confidence,
provenance,
status,
mutationAllowed: false
}
Evidence must reference the exact candidateRef when the policy requires candidate-specific rationale.
“Looks dynamic”, remaining budget, protection PASS, small magnitude, high confidence, or a free-text note without an owner-qualified source.
Requirements are explicit, not universal
12.03 does not invent a global formula for “enough justification”. A policy declares exactly which evidence structure is required.
RuleBreakJustificationRequirementPolicy {
justificationPolicyRef,
policySourceRef,
policySourceOwnerRef,
appliesToIntentModes[],
requiredAllOfKinds[],
requiredAnyOfGroups[][],
minDistinctEvidenceOwners,
minEvidenceItems,
requireCandidateSpecificEvidence: true,
provenance,
status,
mutationAllowed: false
}
Categorical justification evaluation
Evidence is validated against one explicit policy. The result says whether the declared structural requirements are satisfied — not whether the composition is good.
| Status / decision | Meaning |
|---|---|
| OK / SUFFICIENT | All explicit structural evidence clauses are satisfied. |
| OK / INSUFFICIENT | Policy applies, but required kind/group/owner/item clause is missing. |
| N_A | No explicit applicable policy or no candidate-specific evidence is available. |
| INVALID | Malformed policy/evidence, wrong candidate lineage, identity collision or contradictory source contract. |
CandidateEvidenceBundle is only a container
A materialized candidate may accumulate refs to 12.01, 12.02 and 12.03 outputs. 12.03 stores their compatibility without combining them into final acceptance.
RuleBreakCandidateEvidenceBundle {
candidateEvidenceBundleRef,
candidateRef,
deviationMeasurementRef?,
protectionGateEvaluationRef?,
protectionGateDecision?,
budgetBundleEvaluationRef?,
budgetBundleDecision?,
justificationEvaluationRef?,
justificationDecision?,
evidenceRefs[],
status,
mutationAllowed: false
}
The bundle must not contain accepted, finalScore, overrideScore or beautyScore. Those belong to 12.04 or are forbidden.
Identity is lineage-sensitive
Set-like evidence lists are canonicalized; candidate state and explicit policy parameters are identity-bearing.
Rationale cannot become a loophole
12.03 is intentionally conservative: explicit intent and explicit rationale still do not authorize breaking hard constraints.
REQUEST_BREAK → priority; ordinal → rank; more evidence → score; budget left → rationale; protection PASS → rationale; free text → proof.
candidate != placement; descriptor != score; N_A != 0; correction request != foreign mutation; module order != priority; IDEA != CANON; EXPERIMENT != CANON.
Each Topic12 stage keeps its owner
12.03 can bind refs but cannot recompute upstream contracts.
| Owner | 12.03 rule |
|---|---|
| 12.00 | Consumes target/intent/resolution. Does not infer intent from candidate existence. |
| 12.01 | Consumes deviation measurement refs for materialized candidates only. Does not recompute magnitude. |
| 12.02 | Consumes protection/budget refs/results. Does not recompute gate or ledger. |
| 8/9/10 / candidate owner | Own actual proposal geometry and materialized state. |
| 12.03 | Owns bounded packaging + justification evidence/evaluation. |
| 12.04 | Owns final integration/scoring/tests. |
Bad evidence → owner-qualified correction request
12.03 never edits variant geometry, source policy, intent, budget or semantic evidence.
RuleBreakCandidateCorrectionRequest {
requestRef,
targetOwnerRef,
reasonCode,
evidenceRefs[],
suggestedAction,
status,
mutationAllowed: false
}
CANON → LAB → DATA → IDEAS
Whether a rationale is perceptually convincing is empirical. Canon only records explicit evidence structure and leaves semantic interpretation to its owner.
Store reasons, not only verdicts
These reason codes support later calibration without auto-mutating canon.
| Reason | Meaning |
|---|---|
| CANDIDATE_VARIANT_WRONG | Foreign proposal/state itself is wrong. |
| CANDIDATE_SET_TOO_NARROW | Explicit variant set failed to cover useful alternatives. |
| CANDIDATE_SET_TOO_BROAD | Candidate pool is operationally excessive. |
| CANDIDATE_DIVERSITY_WRONG | Bucket policy does not preserve useful diversity. |
| JUSTIFICATION_EVIDENCE_WRONG | Evidence source/claim is incorrect. |
| JUSTIFICATION_POLICY_TOO_STRICT | Explicit structural requirements reject useful rationale. |
| JUSTIFICATION_POLICY_TOO_WEAK | Explicit structural requirements accept weak rationale. |
| RATIONALE_NOT_CANDIDATE_SPECIFIC | Generic rationale does not support this exact candidate. |
| BREAK_READS_ACCIDENTAL | Candidate reads as error despite explicit intent. |
| BREAK_READS_INTENTIONAL_BUT_UNJUSTIFIED | Intent is legible, but rationale is not convincing. |
| TENSION_READS_AS_ERROR | Controlled tension fails perceptually. |
Visual laboratory hook
Three candidates can be equally valid descriptors while carrying different explicit rationale evidence. No visual order below implies ranking.
12.03 regression suite
Tests cover variant lineage, profile gating, materialization filters, bounded seeded diversity, collision handling, candidate identity, justification evidence/policies, categorical sufficiency, bundle consistency, no-mutation and Topic12 firewalls.
DATA FOR LAYOUT ENGINE
Machine-readable 12.03 canonical contract.
{
"module": "Compo 12.03",
"name": "rule_break_candidates_and_justification",
"version": "1.0-canonical",
"canonical_main_title": "Rule-break candidates and justification",
"topic": "12_НАРУШЕНИЕ_СЕТКИ_И_КОНТРОЛИРУЕМОЕ_НАПРЯЖЕНИЕ",
"scope": "BOUNDED_RULE_BREAK_CANDIDATE_PACKAGING_AND_EXPLICIT_JUSTIFICATION_EVIDENCE_ONLY",
"main_topic_contract": {
"topic_title": "Нарушение сетки и контролируемое напряжение",
"topic_goal": "formalize intentional breaking of grid and alignment: deviation magnitude, protected relations, exception budget and justification so controlled tension is distinguishable from error",
"expected_output": "RuleBreakIntent, deviation metrics, exception budget, evidence",
"planned_files": [
"12.00 Grid-break taxonomy and intent",
"12.01 Deviation magnitude",
"12.02 Protected relations and exception budgets",
"12.03 Rule-break candidates and justification",
"12.04 Override scoring and tests"
]
},
"ownership": {
"owner": "Compo12.03",
"owns": [
"RuleBreakCandidateVariantEvidence adapter schema",
"RuleBreakCandidateGenerationProfile",
"RuleBreakCandidate",
"bounded deterministic candidate generation from explicit owner-qualified variants",
"candidate deduplication and seeded diversity pruning",
"RuleBreakJustificationEvidence",
"RuleBreakJustificationRequirementPolicy",
"RuleBreakJustificationEvaluation",
"RuleBreakCandidateEvidenceBundle",
"RuleBreakCandidateCorrectionRequest",
"serializable candidate/justification observation record"
],
"does_not_own": [
"RuleBreakIntent taxonomy/source/target evidence — Compo12.00",
"deviation measurement or magnitude — Compo12.01",
"protected relation policy/gate or exception budget accounting — Compo12.02",
"upstream grid/alignment candidate geometry or materialization — Topics8/9/10 or explicit candidate owner",
"semantic interpretation of opaque semantic refs",
"override scoring or final Topic12 accept/reject synthesis — Compo12.04",
"global conflict priority",
"foreign mutation"
]
},
"consumes": [
"valid Compo12.00 RuleBreakTargetEvidence",
"valid Compo12.00 RuleBreakIntent",
"Compo12.00 RuleBreakIntentResolution with status OK and controlledTensionEligible=true",
"explicit owner-qualified RuleBreakCandidateVariantEvidence[]",
"optional Compo12.01 RuleBreakDeviationMeasurement refs for materialized candidates",
"optional Compo12.02 protection gate refs/results for materialized candidates",
"optional Compo12.02 budget evaluation/bundle refs/results for materialized candidates",
"explicit RuleBreakJustificationEvidence[]",
"explicit RuleBreakJustificationRequirementPolicy",
"optional opaque semanticIntentRefs[]",
"optional human feedback reason codes"
],
"provides": [
"RuleBreakCandidateVariantEvidence",
"RuleBreakCandidateGenerationProfile",
"RuleBreakCandidate[]",
"RuleBreakJustificationEvidence",
"RuleBreakJustificationRequirementPolicy",
"RuleBreakJustificationEvaluation",
"RuleBreakCandidateEvidenceBundle",
"RuleBreakCandidateCorrectionRequest",
"Topic12.03 observation record"
],
"owns_metrics": [],
"metric_ownership_note": "12.03 owns no MetricResult score and no independent numeric vote. Candidate count, evidence count and justification clause count are structural descriptors only.",
"candidate_variant_schema": {
"variantEvidenceRef": "stable 12.03 adapter identity",
"variantRef": "exact owner-qualified candidate variant/proposal identity",
"variantOwnerRef": "owner of candidate geometry/proposal",
"variantModuleRef": "exact upstream candidate-producing module/service",
"variantSnapshotRef": "exact proposal/materialized snapshot identity",
"materializationState": "PROPOSAL_ONLY|MATERIALIZED",
"candidateStateRef": "required iff MATERIALIZED; owner-qualified immutable state/snapshot ref",
"targetEvidenceRef": "exact 12.00 target ref",
"intentRef": "exact 12.00 intent ref",
"targetFamily": "must match target evidence",
"subjectRefs": "must equal canonical intent subject set",
"canvasRef": "must match target evidence",
"coordinateFrame": "must match target evidence",
"sourceUnit": "must match target evidence",
"diversityBucketKey": "explicit non-empty bucket label supplied by source/profile; bucket identity carries no preference",
"evidenceRefs": "one or more owner-qualified lineage refs",
"confidence": "0..1 evidence quality only",
"provenance": "canonical provenance class",
"status": "OK|N_A|INVALID",
"mutationAllowed": false
},
"generation_profile_schema": {
"candidateGenerationProfileRef": "stable identity",
"profileSourceRef": "explicit profile source",
"profileSourceOwnerRef": "owner of generation policy",
"allowedIntentModes": "explicit non-empty subset of ALLOW_EXCEPTION|EXPLORE_BREAK|REQUEST_BREAK",
"maxCandidates": "integer 1..64; 64 is implementation safety cap, not composition law",
"seed": "explicit deterministic integer",
"diversityMode": "SEEDED_ROUND_ROBIN_BUCKETS",
"includeProposalOnly": "boolean",
"includeMaterialized": "boolean",
"requiredVariantOwnerRefs": "optional explicit allowlist; empty means no owner restriction beyond valid explicit ownership",
"status": "OK|INVALID",
"provenance": "canonical provenance class",
"mutationAllowed": false
},
"candidate_generation_policy": {
"preconditions": [
"valid target",
"valid intent",
"resolution status OK and controlledTensionEligible=true",
"intentMode explicitly included in profile.allowedIntentModes",
"valid generation profile",
"one or more valid explicit owner-qualified variants"
],
"dedupe": "by variantEvidenceRef and candidateStateRef where present; identity collisions with inconsistent content are INVALID",
"ordering": "canonical source ordering first; seeded deterministic bucket rotation second",
"diversity_pruning": "seeded round-robin over explicit diversityBucketKey values",
"bounded": "take at most maxCandidates after validation/dedupe",
"complexity": "O(n log n) due to canonical sorting; no Cartesian product",
"no_geometry_invention": "12.03 never synthesizes grid/alignment coordinates or silently selects nearest rules/features",
"no_materialization": "12.03 does not move subjects or mutate layout; materialization belongs to explicit variant owner",
"intent_mode_semantics": {
"ALLOW_EXCEPTION": "candidate generation occurs only when the explicit profile includes ALLOW_EXCEPTION; allowance itself never triggers generation",
"EXPLORE_BREAK": "may generate when explicitly included",
"REQUEST_BREAK": "may generate when explicitly included; request does not gain priority or bypass downstream hard gates"
}
},
"candidate_schema": {
"candidateRef": "stable 12.03 identity",
"candidateGenerationProfileRef": "exact profile ref",
"variantEvidenceRef": "exact variant evidence ref",
"variantRef": "owner-qualified variant ref",
"variantOwnerRef": "owner of geometry/proposal",
"materializationState": "PROPOSAL_ONLY|MATERIALIZED",
"candidateStateRef": "required iff materialized",
"targetEvidenceRef": "exact 12.00 target ref",
"intentRef": "exact 12.00 intent ref",
"intentMode": "copied from 12.00 intent",
"targetFamily": "copied from target",
"subjectRefs": "canonical exact intent subject set",
"diversityBucketKey": "copied for auditability",
"seed": "copied profile seed",
"ordinal": "deterministic output ordinal; not preference/rank",
"confidence": "minimum source/target/intent evidence confidence; not quality",
"status": "OK",
"provenance": "DERIVED",
"derivedFrom": "explicit refs",
"mutationAllowed": false
},
"justification_evidence_schema": {
"justificationEvidenceRef": "stable identity",
"candidateRef": "exact 12.03 candidate ref",
"evidenceKind": "HUMAN_RATIONALE_REF|STYLE_RATIONALE_REF|SEMANTIC_POLICY_REF|EXTERNAL_POLICY_REF|INTENT_SOURCE_REF",
"evidenceSourceRef": "explicit source identity",
"evidenceSourceOwnerRef": "explicit source owner",
"evidenceRefs": "one or more owner-qualified refs",
"claimCode": "explicit symbolic claim code; free text alone is not proof",
"semanticIntentRefs": "optional opaque refs; not interpreted by 12.03",
"confidence": "0..1 evidence quality only",
"provenance": "canonical provenance class",
"status": "OK|N_A|INVALID",
"mutationAllowed": false
},
"justification_requirement_policy_schema": {
"justificationPolicyRef": "stable identity",
"policySourceRef": "explicit requirement-policy source",
"policySourceOwnerRef": "owner of requirement policy",
"appliesToIntentModes": "non-empty explicit subset of intent modes",
"requiredAllOfKinds": "distinct evidence kinds that must all be present",
"requiredAnyOfGroups": "array of non-empty distinct evidence-kind sets; every group requires at least one represented kind",
"minDistinctEvidenceOwners": "integer >=1",
"minEvidenceItems": "integer >=1",
"requireCandidateSpecificEvidence": true,
"status": "OK|INVALID",
"provenance": "canonical provenance class",
"mutationAllowed": false,
"default": "NONE — no universal rationale threshold is silently invented"
},
"justification_evaluation_policy": {
"SUFFICIENT": "policy applies, candidate-specific valid evidence satisfies all explicit structural clauses",
"INSUFFICIENT": "policy applies but one or more explicit evidence clauses are unsatisfied",
"N_A": "no explicit applicable justification policy or no candidate-specific evidence available",
"INVALID": "malformed/conflicting policy or evidence lineage",
"no_scalar": "No universal justificationScore is produced in 12.03.",
"not_compliance": [
"protection PASS is not justification",
"remaining budget is not justification",
"small deviation is not justification",
"REQUEST_BREAK is not sufficient justification by itself unless explicit policy accepts its source as evidence"
]
},
"candidate_evidence_bundle_schema": {
"candidateEvidenceBundleRef": "stable identity",
"candidateRef": "exact candidate ref",
"deviationMeasurementRef": "optional 12.01 ref; required only when supplied downstream",
"protectionGateEvaluationRef": "optional 12.02 ref",
"protectionGateDecision": "optional PASS|REJECT",
"budgetBundleEvaluationRef": "optional 12.02 ref",
"budgetBundleDecision": "optional PASS|REJECT",
"justificationEvaluationRef": "optional 12.03 ref",
"justificationDecision": "optional SUFFICIENT|INSUFFICIENT",
"evidenceRefs": "canonical lineage refs",
"status": "OK|N_A|INVALID",
"mutationAllowed": false,
"firewall": "Bundle is an evidence container only. 12.03 does not synthesize final candidate acceptance; 12.04 owns that."
},
"identity_policy": {
"variantEvidenceRef": "hash(owner-qualified variant identity/snapshot/materialization, target+intent scope, canonical subjects, geometry context, diversity bucket, evidence refs)",
"candidateGenerationProfileRef": "hash(profile source/owner, allowed intent modes, maxCandidates, seed, diversity mode, materialization inclusion flags, owner allowlist)",
"candidateRef": "hash(profileRef, variantEvidenceRef, targetEvidenceRef, intentRef, materialization/candidateStateRef)",
"justificationEvidenceRef": "hash(candidateRef, kind, source/owner, claimCode, canonical evidence refs, canonical semanticIntentRefs)",
"justificationPolicyRef": "hash(policy source/owner, intent modes, canonical all-of kinds, canonical any-of groups, minimum owner/item counts, candidate-specific flag)",
"justificationEvaluationRef": "hash(candidateRef, policyRef, canonical evidence refs, decision and missing-clause descriptors)",
"candidateEvidenceBundleRef": "hash(candidateRef and supplied downstream evaluation refs/decisions)",
"set_semantics": "set-like arrays canonicalized lexically; any-of groups canonicalized internally and as a set",
"excluded_from_identity": [
"display label",
"display color",
"free-form human comment",
"confidence"
]
},
"status_policy": {
"candidate_generation": "OK with 0..maxCandidates only when generation preconditions are valid; N_A when explicit intent/profile does not authorize generation or no applicable variants exist; INVALID on malformed/colliding evidence",
"justification_evaluation": "OK+SUFFICIENT | OK+INSUFFICIENT | N_A | INVALID",
"bundle": "OK when supplied refs are structurally consistent; N_A when only candidate exists and no downstream evidence is supplied; INVALID on contradiction",
"N_A_not_zero": true
},
"critical_firewalls": [
"candidate != placement",
"candidate != final accepted layout",
"candidate ordinal != rank",
"candidate count != score",
"diversity bucket != preference",
"REQUEST_BREAK != priority",
"ALLOW_EXCEPTION != generate automatically",
"EXPLORE_BREAK != accept",
"candidate generation cannot bypass hard protection",
"candidate generation cannot reserve/spend budget",
"candidate generation cannot invent authorization",
"materialized candidate state remains owned by its explicit variant owner",
"12.03 does not recompute 12.01 deviation",
"12.03 does not recompute 12.02 protection impact or budget",
"free-form text != justification proof",
"evidence confidence != justification strength",
"evidence count != score",
"protection PASS != justification",
"unused budget != justification",
"small deviation != justification",
"justification sufficient != final acceptance",
"justification insufficient != numeric zero",
"N_A != 0",
"module execution order != rule priority",
"correction request != foreign mutation",
"no universal beautyScore",
"IDEA != CANON",
"EXPERIMENT != CANON"
],
"deferred_downstream": {
"12.04": [
"final integration of intent + deviation + protection + budget + justification",
"override/local controlled-break scoring policy",
"hard rejection precedence",
"Topic12 independent vote if canonically justified",
"consolidated Topic12 tests"
]
},
"correction_request_schema": {
"requestRef": "stable request identity",
"targetOwnerRef": "owner whose variant/justification/policy evidence must be reviewed",
"reasonCode": "explicit",
"evidenceRefs": "canonicalized refs",
"suggestedAction": "non-mutating suggestion",
"status": "OPEN|INVALID",
"mutationAllowed": false
},
"IDEAS_REFS": [
"IDEA-01 full human test after all 72 topics; collect when rule-break candidates read as intentional vs accidental",
"IDEA-02 semantics required before placement; semanticIntentRefs remain opaque/deferred",
"IDEA-03 explicit rule priorities; REQUEST_BREAK and candidate order must never become hidden priority",
"IDEA-04 collect structured data for future composition model",
"IDEA-05 preserve reasons for human corrections",
"IDEA-06 structured machine-readable layer",
"IDEA-07 graphics-for-post-text research remains downstream/separate"
],
"DATA_CAPTURE": [
"sceneRef",
"candidateGenerationProfileRef",
"seed",
"variantEvidenceRefs[]",
"candidateRefs[]",
"candidateStateRefs[]",
"diversityBucketKeys[]",
"justificationPolicyRef",
"justificationEvidenceRefs[]",
"justificationDecision",
"missingAllOfKinds[]",
"missingAnyOfGroups[]",
"distinctEvidenceOwnerCount",
"evidenceItemCount",
"deviationMeasurementRef",
"protectionGateEvaluationRef",
"protectionGateDecision",
"budgetBundleEvaluationRef",
"budgetBundleDecision",
"humanReasonCodes[]",
"future overrideEvaluationRef"
],
"DEFERRED_SEMANTIC_INPUTS": [
"semanticIntentRefs[]",
"semantic meaning of claimCode",
"hierarchy/meaning rationale interpretation",
"brand/editorial rationale interpretation",
"future conflict-priority policy refs"
],
"HUMAN_FEEDBACK_HOOKS": [
"CANDIDATE_VARIANT_WRONG",
"CANDIDATE_SET_TOO_NARROW",
"CANDIDATE_SET_TOO_BROAD",
"CANDIDATE_DIVERSITY_WRONG",
"JUSTIFICATION_EVIDENCE_WRONG",
"JUSTIFICATION_POLICY_TOO_STRICT",
"JUSTIFICATION_POLICY_TOO_WEAK",
"RATIONALE_NOT_CANDIDATE_SPECIFIC",
"BREAK_READS_ACCIDENTAL",
"BREAK_READS_INTENTIONAL_BUT_UNJUSTIFIED",
"TENSION_READS_AS_ERROR"
],
"CONFLICT_PRIORITY_ASSUMPTIONS": [
"module execution order is not priority",
"candidate ordinal/list order is non-semantic",
"REQUEST_BREAK does not outrank hard protection or budget",
"justification sufficiency does not override protection or budget",
"multiple evidence kinds do not create implicit priority",
"future reviewed global conflict-priority owner remains authoritative"
],
"LAB_HOOKS": [
"human A/B: same deviation with different explicit rationale evidence",
"human A/B: same rationale with different candidate diversity sets",
"measure accidental-vs-intentional reading without auto-writing thresholds into canon",
"test whether candidate-specific rationale outperforms generic rationale",
"collect reason codes for overly broad/narrow candidate sets",
"compare explicit style-policy rationale vs human-directive rationale as empirical data only"
],
"observation_record": {
"moduleRef": "Compo12.03",
"metricResults": [],
"overrideEvaluationRefs": []
},
"stop_condition": "STOP after 12.03. Do not create 12.04 in this module."
}