Intent is not permission
12.00 proves that the break was explicitly intended. 12.01 measures it. 12.02 answers two different questions: “what must not be broken?” and “how much explicit exception capacity remains?”.
Cannot be overridden by Topic12 budget.
Explicit finite capacity. Missing ≠ infinite.
Immutable accounting snapshot.
Capacity is a gate, never preference.
12.02 owns gates and accounting
Grid/alignment owners continue to own relation geometry. 12.02 only adapts their identities/evaluations into explicit protection and capacity contracts.
Protection
Protected relation adapters, explicit hard-protection policy and local gate evaluation.
Budget
Scope, dimensions, usage adapters, immutable ledger accounting and hypothetical proposal evaluation.
12.03 / 12.04
Candidate generation, justification evidence, override scoring and final Topic12 decision.
owns_metrics=[]. Count, magnitude usage, capacity and remaining budget are descriptors/constraints, not MetricResult votes.
ProtectedRelationEvidence
A protected relation is never guessed from visual salience or break intent. It references an exact upstream relation/rule and its canonical owner.
ProtectedRelationEvidence {
protectedRelationRef,
relationRef,
relationOwnerRef,
relationModuleRef,
relationSnapshotRef,
relationFamily,
subjectRefs[],
canvasRef,
coordinateFrame,
sourceUnit,
evidenceRefs[],
confidence,
provenance,
status,
mutationAllowed: false
}
In Topic12 v1.0 a declared protected relation is not “expensive”; it is non-overridable by the Topic12 exception budget.
A generator or 12.02 itself cannot invent protection merely because a relation appears important. The declaration needs an explicit source/policy.
ProtectedRelationPolicy
Missing policy and explicit empty policy are different states.
ProtectedRelationPolicy {
protectionPolicyRef,
policySourceRef,
policySourceOwnerRef,
scopeRef,
canvasRef,
subjectRefs[],
protectedRelationRefs[],
policyMode: "HARD_PROTECT_ONLY",
confidence,
provenance,
status,
mutationAllowed: false
}
Relation impact stays owner-qualified
12.02 does not re-run Topic8/9/10 geometry. It consumes an explicit evaluation of whether a protected relation survives the proposed/observed state.
ProtectedRelationImpactEvidence {
impactEvidenceRef,
protectedRelationRef,
relationRef,
impactEvaluationRef,
impactEvaluationOwnerRef,
impactSnapshotRef,
impactState:
PRESERVED
BROKEN
UNKNOWN,
evidenceRefs[],
confidence,
provenance,
status,
mutationAllowed: false
}
For the hard-protection gate the canonical fact is whether the upstream relation remains valid. Numeric relation diagnostics, if any, remain with their upstream owner.
Protection gate
Budget never participates in this decision.
| Input state | Gate | Meaning |
|---|---|---|
| Explicit empty policy | PASS | No hard-protected relation declared in exact scope. |
| All protected impacts PRESERVED | PASS | Break may continue to budget/justification gates. |
| Any protected impact BROKEN | REJECT | Topic12 break is blocked. |
| Any required impact UNKNOWN/missing | N_A | Cannot claim protected relations survive. |
| Lineage/conflict malformed | INVALID | Evidence contract failed. |
ExceptionBudgetScope
No global “default exception pool” exists. Every budget declares where it applies.
ExceptionBudgetScope {
budgetScopeRef,
scopeSourceRef,
scopeSourceOwnerRef,
canvasRef,
targetFamilies[],
subjectRefs[],
status,
mutationAllowed: false
}
Three explicit budget dimensions
Budgets may constrain count, homogeneous metric magnitude, homogeneous normalized magnitude, or a combination. Every applicable usage must be charged by at least one declared dimension.
| Dimension | Charge | Selector |
|---|---|---|
| EXCEPTION_COUNT | 1 per unique applicable usage | none |
| METRIC_MAGNITUDE_SUM | magnitudeMetric | exact family + measurement kind + axis + metricContextRef + metricUnit |
| NORMALIZED_MAGNITUDE_SUM | normalizedMagnitude | exact family + measurement kind + axis + normalizationRef |
ExceptionBudgetDimension {
dimensionRef,
dimensionKind,
capacity,
numericalEpsilon,
selector?,
provenance,
status
}
capacity = 0 explicitly means no capacity in that dimension. It is not N_A.
12.02 v1.0 does not introduce weighted “exception points”, beauty credits or family-specific hidden weights.
ExceptionBudgetPolicy
Absence of a budget does not mean unlimited freedom.
ExceptionBudgetPolicy {
exceptionBudgetRef,
budgetSourceRef,
budgetSourceOwnerRef,
budgetScopeRef,
dimensionRefs[],
confidence,
provenance,
status,
mutationAllowed: false
}
ExceptionUsageEvidence
12.02 can account committed state and evaluate hypothetical proposed usage, but it does not authorize either.
ExceptionUsageEvidence {
usageRef,
accountingState:
COMMITTED
PROPOSED,
authorizationRef?,
targetEvidenceRef,
intentRef,
targetFamily,
subjectRefs[],
deviationMeasurementRef?,
metricContextRef?,
normalizationRef?,
measurementKind?,
axis?,
magnitudeMetric?,
metricUnit?,
normalizedMagnitude?,
evidenceRefs[],
confidence,
status,
mutationAllowed: false
}
Requires an external authorizationRef. 12.02 records/accountants it but does not create the authorization.
Hypothetical charge only. Evaluation does not mutate the committed ledger or reserve capacity.
Immutable ledger snapshot
The ledger is derived from a canonical set of committed usages. Re-running with the same evidence yields the same identity and totals.
ExceptionBudgetLedgerSnapshot {
ledgerRef,
exceptionBudgetRef,
committedUsageRefs[],
dimensionAccounting[]: {
dimensionRef,
capacity,
committedUsage,
remainingBeforeProposal
},
status,
reasonCode,
derivedFrom[],
mutationAllowed: false
}
Hypothetical budget evaluation
A proposal is evaluated against a ledger snapshot. The result is a capacity decision, not a quality estimate.
ExceptionBudgetEvaluation {
budgetEvaluationRef,
exceptionBudgetRef,
ledgerRef,
proposedUsageRefs[],
dimensionAccounting[]: {
dimensionRef,
capacity,
committedUsage,
proposedUsage,
resultingUsage,
remainingAfterProposal,
withinCapacity
},
status,
decision:
WITHIN_BUDGET
EXCEEDS_BUDGET,
reasonCode,
mutationAllowed: false
}
Multiple budgets: all applicable constraints survive
List order does not create priority. If several explicit budgets cover the same proposal, each constrains it.
Identity is policy + evidence + immutable state
Set-like arrays are canonicalized. Confidence and presentation metadata never affect identity.
Budget must not become a hidden aesthetic optimizer
The module separates permission capacity from quality or desirability.
unused budget → generate more breaks; large budget → better; remaining → score; REQUEST_BREAK → bypass; budget → break protected relation; missing → unlimited.
N_A != 0; descriptor != score; local != global; one owner per contract; module order != priority; proposed usage != committed mutation.
Topic12 chain remains separated
Each submodule owns one stage of the controlled-break contract.
| Owner | Contract |
|---|---|
| 12.00 | Target evidence + explicit break intent. No permission from observed deviation. |
| 12.01 | Deviation magnitude descriptors. No budget charge semantics. |
| 12.02 | Hard-protection gate + explicit exception-capacity accounting. |
| 12.03 | Bounded rule-break candidates + candidate-specific justification evidence. |
| 12.04 | Override/local controlled-break scoring/tests and consolidated Topic12 evaluation. |
| 8/9/10 | Continue to own grid/alignment geometry and relation validity. |
Wrong policy/evidence → correction request
12.02 never edits upstream relations, budget sources or authorization state.
RuleBreakProtectionBudgetCorrectionRequest {
requestRef,
targetOwnerRef,
reasonCode,
evidenceRefs[],
suggestedAction,
status,
mutationAllowed: false
}
CANON → LAB → DATA → IDEAS
How strict budgets should be is an empirical/style question unless an explicit policy says otherwise. 12.02 provides the hooks without inventing universal thresholds.
Preserve why humans disagree
Budget calibration is useless if corrections are stored only as accept/reject.
| Reason | Meaning |
|---|---|
| RELATION_SHOULD_BE_HARD_PROTECTED | A relation should have been protected. |
| RELATION_SHOULD_NOT_BE_HARD_PROTECTED | Protection declaration was too strict/wrong. |
| PROTECTION_IMPACT_EVALUATED_WRONG | Preserved/Broken/Unknown evaluation is wrong. |
| BUDGET_TOO_LARGE | Explicit capacity feels too permissive. |
| BUDGET_TOO_SMALL | Explicit capacity feels too restrictive. |
| BUDGET_SCOPE_WRONG | Canvas/family/subject scope is wrong. |
| BUDGET_DIMENSION_WRONG | Count/metric/normalized constraint is inappropriate. |
| EXCEPTION_CHARGED_WRONG | Usage was charged to the wrong dimension/budget. |
| EXCEPTION_NOT_CHARGED | An applicable usage escaped accounting. |
| TENSION_READS_AS_ERROR | Even policy-compliant break reads as accidental/error-like. |
Visual laboratory hook
Protection and budget are intentionally visualized as orthogonal gates.
12.02 regression suite
Tests cover protection identity/gating, explicit empty policy, missing-policy N_A, budget scope, all three budget dimensions, immutable ledgers, proposal evaluation, multiple-budget bundles, zero-capacity semantics, lineage, no-mutation and Topic12 firewalls.
DATA FOR LAYOUT ENGINE
Machine-readable 12.02 canonical contract.
{
"module": "Compo 12.02",
"name": "protected_relations_and_exception_budgets",
"version": "1.0-canonical",
"canonical_main_title": "Protected relations and exception budgets",
"topic": "12_НАРУШЕНИЕ_СЕТКИ_И_КОНТРОЛИРУЕМОЕ_НАПРЯЖЕНИЕ",
"scope": "EXPLICIT_HARD_PROTECTION_AND_IMMUTABLE_EXCEPTION_BUDGET_ACCOUNTING_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.02",
"owns": [
"ProtectedRelationEvidence adapter schema",
"ProtectedRelationPolicy",
"ProtectedRelationImpactEvidence adapter schema",
"ProtectedRelationGateEvaluation",
"ExceptionBudgetScope",
"ExceptionBudgetDimension",
"ExceptionBudgetPolicy",
"ExceptionUsageEvidence adapter schema",
"ExceptionBudgetLedgerSnapshot",
"ExceptionBudgetEvaluation",
"ExceptionBudgetBundleEvaluation",
"RuleBreakProtectionBudgetCorrectionRequest",
"serializable protection/budget observation record"
],
"does_not_own": [
"RuleBreakIntent taxonomy/source/target evidence — Compo12.00",
"deviation magnitude, metric conversion or normalization — Compo12.01",
"upstream grid/alignment relation geometry or validation — Topics8/9/10",
"rule-break candidate generation or justification — Compo12.03",
"override scoring or final Topic12 vote — Compo12.04",
"global conflict priority",
"foreign mutation or budget authorization state"
]
},
"consumes": [
"valid Compo12.00 RuleBreakTargetEvidence",
"valid Compo12.00 RuleBreakIntent",
"owner-qualified upstream relation identities for protection",
"owner-qualified relation-impact evidence",
"valid Compo12.01 RuleBreakDeviationMeasurement where a magnitude-based budget dimension is used",
"explicit budget source/policy evidence",
"optional externally authorized committed exception usage refs",
"optional opaque semanticIntentRefs[]",
"optional human feedback reason codes"
],
"provides": [
"ProtectedRelationEvidence",
"ProtectedRelationPolicy",
"ProtectedRelationImpactEvidence",
"ProtectedRelationGateEvaluation",
"ExceptionBudgetScope",
"ExceptionBudgetDimension",
"ExceptionBudgetPolicy",
"ExceptionUsageEvidence",
"ExceptionBudgetLedgerSnapshot",
"ExceptionBudgetEvaluation",
"ExceptionBudgetBundleEvaluation",
"RuleBreakProtectionBudgetCorrectionRequest",
"Topic12.02 observation record"
],
"owns_metrics": [],
"metric_ownership_note": "12.02 owns capacities, charges and remaining-budget descriptors; none is a MetricResult score or independent vote.",
"target_families": [
"COLUMN_GRID",
"MODULAR_GRID",
"PAIRWISE_ALIGNMENT",
"TEXT_BASELINE_ALIGNMENT",
"SHARED_AXIS_ALIGNMENT"
],
"protection_contract": {
"canonical_mode_v1": "HARD_PROTECT_ONLY",
"meaning": "A protected relation is a hard local constraint for Topic12. A Topic12 exception budget cannot buy permission to break it.",
"explicit_empty_policy": "A valid ProtectedRelationPolicy may explicitly declare an empty protectedRelationRefs[] set; this means no hard-protected relations in that exact scope, not missing evidence.",
"missing_policy": "N_A, never silently interpreted as an empty policy.",
"impact_states": {
"PRESERVED": "upstream owner-qualified impact evidence says the relation remains valid",
"BROKEN": "upstream owner-qualified impact evidence says the relation would/does fail",
"UNKNOWN": "impact cannot be established from current evidence"
},
"gate": {
"PASS": "all explicitly protected relations are PRESERVED, or explicit policy set is empty",
"REJECT": "one or more explicitly protected relations are BROKEN",
"N_A": "policy/required impact evidence is missing or UNKNOWN",
"INVALID": "malformed, conflicting or lineage-incompatible protection evidence"
}
},
"protected_relation_evidence_schema": {
"protectedRelationRef": "stable 12.02 adapter identity",
"relationRef": "exact upstream relation/rule identity",
"relationOwnerRef": "canonical upstream owner",
"relationModuleRef": "exact upstream module/service ref",
"relationSnapshotRef": "exact upstream version/snapshot identity",
"relationFamily": "one of Topic12 supported target families",
"subjectRefs": "one or more canonical subjects participating in the protected relation",
"canvasRef": "explicit canvas/domain identity",
"coordinateFrame": "explicit coordinate-frame identity",
"sourceUnit": "explicit upstream geometric unit",
"evidenceRefs": "one or more owner-qualified refs supporting relation existence/protection eligibility",
"confidence": "0..1 evidence quality only",
"provenance": "canonical provenance class",
"status": "OK|N_A|INVALID",
"mutationAllowed": false
},
"protected_relation_policy_schema": {
"protectionPolicyRef": "stable policy identity",
"policySourceRef": "explicit source of hard-protection declaration",
"policySourceOwnerRef": "owner of declaration",
"scopeRef": "explicit policy scope identity",
"canvasRef": "required",
"subjectRefs": "optional exact/set-like scope; empty means canvas-wide within declared relation set",
"protectedRelationRefs": "explicit set; may be empty only when the policy source explicitly declares no hard protections",
"policyMode": "HARD_PROTECT_ONLY",
"confidence": "0..1 evidence quality only",
"provenance": "canonical provenance class",
"status": "OK|INVALID",
"mutationAllowed": false
},
"protected_relation_impact_schema": {
"impactEvidenceRef": "stable 12.02 adapter identity",
"protectedRelationRef": "exact protected relation adapter ref",
"relationRef": "must match protected relation evidence",
"impactEvaluationRef": "required owner-qualified evaluation identity",
"impactEvaluationOwnerRef": "owner/evaluator of relation impact",
"impactSnapshotRef": "observed/predicted scene snapshot identity",
"impactState": "PRESERVED|BROKEN|UNKNOWN",
"evidenceRefs": "one or more refs",
"confidence": "0..1 evidence quality only",
"provenance": "canonical provenance class",
"status": "OK|N_A|INVALID",
"mutationAllowed": false
},
"budget_scope_schema": {
"budgetScopeRef": "stable identity",
"scopeSourceRef": "explicit source identity",
"scopeSourceOwnerRef": "owner of scope declaration",
"canvasRef": "required",
"targetFamilies": "one or more distinct supported target families",
"subjectRefs": "optional scope; empty means any subject on canvas within targetFamilies",
"status": "OK|INVALID",
"mutationAllowed": false
},
"budget_dimension_taxonomy": {
"EXCEPTION_COUNT": "charges 1 for every applicable unique ExceptionUsageEvidence",
"METRIC_MAGNITUDE_SUM": "charges magnitudeMetric only when an exact declared measurement signature matches",
"NORMALIZED_MAGNITUDE_SUM": "charges normalizedMagnitude only when exact normalizationRef and declared measurement signature match"
},
"budget_dimension_schema": {
"dimensionRef": "stable identity",
"dimensionKind": "EXCEPTION_COUNT|METRIC_MAGNITUDE_SUM|NORMALIZED_MAGNITUDE_SUM",
"capacity": "finite >=0; integer for EXCEPTION_COUNT",
"numericalEpsilon": "finite >=0; 0 for EXCEPTION_COUNT; computational comparison tolerance only",
"selector": {
"EXCEPTION_COUNT": "null",
"METRIC_MAGNITUDE_SUM": "targetFamily + measurementKind + axis + metricContextRef + metricUnit",
"NORMALIZED_MAGNITUDE_SUM": "targetFamily + measurementKind + axis + normalizationRef"
},
"zero_capacity": "legal explicit budget; distinct from missing budget",
"provenance": "canonical provenance class",
"status": "OK|INVALID"
},
"budget_policy_schema": {
"exceptionBudgetRef": "stable budget identity",
"budgetSourceRef": "explicit source identity",
"budgetSourceOwnerRef": "owner of the budget declaration",
"budgetScopeRef": "exact ExceptionBudgetScope ref",
"dimensionRefs": "one or more unique explicit dimensions",
"confidence": "0..1 evidence quality only",
"provenance": "canonical provenance class",
"status": "OK|INVALID",
"mutationAllowed": false,
"default": "NONE — no implicit infinite budget"
},
"exception_usage_schema": {
"usageRef": "stable identity",
"accountingState": "COMMITTED|PROPOSED",
"authorizationRef": "required for COMMITTED; 12.02 does not create authorization",
"targetEvidenceRef": "exact 12.00 target ref",
"intentRef": "exact 12.00 intent ref",
"targetFamily": "copied for auditability",
"subjectRefs": "canonical intent subject set",
"deviationMeasurementRef": "optional for count-only budgets; required when magnitude dimension applies",
"metricContextRef": "copied when measurement is present",
"normalizationRef": "copied when measurement is present",
"measurementKind": "copied when measurement is present",
"axis": "copied when measurement is present",
"magnitudeMetric": "copied only from valid 12.01 measurement",
"metricUnit": "copied only from valid 12.01 measurement",
"normalizedMagnitude": "copied only from valid 12.01 measurement",
"evidenceRefs": "explicit lineage refs",
"confidence": "0..1 evidence quality only",
"status": "OK|INVALID",
"mutationAllowed": false
},
"budget_accounting": {
"applicability": "usage is applicable when canvas/targetFamily and optional subject scope match the explicit ExceptionBudgetScope",
"dimension_charge": {
"EXCEPTION_COUNT": "1",
"METRIC_MAGNITUDE_SUM": "magnitudeMetric for exact selector match",
"NORMALIZED_MAGNITUDE_SUM": "normalizedMagnitude for exact selector match"
},
"unaccounted_usage": "If an applicable usage matches no budget dimension, evaluation is INVALID; 12.02 never silently grants a free exception.",
"ledger": "immutable snapshot computed only from unique applicable COMMITTED usages",
"proposal": "PROPOSED usages are evaluated hypothetically against the immutable ledger; they do not mutate or spend it",
"decision": {
"WITHIN_BUDGET": "all resulting dimension usage <= capacity + explicit numerical epsilon",
"EXCEEDS_BUDGET": "at least one dimension exceeds capacity beyond numerical epsilon",
"N_A": "no explicit applicable budget or no applicable proposed usage for that evaluation",
"INVALID": "malformed policy, duplicate/overlapping usage identities, unaccounted applicable usage, incompatible measurement lineage or units"
}
},
"bundle_policy": {
"multiple_applicable_budgets": "all explicitly applicable budgets constrain the usage; no priority is inferred from order",
"decision": {
"PASS": "at least one budget applies and every applicable budget evaluation is WITHIN_BUDGET",
"REJECT": "at least one applicable budget evaluation EXCEEDS_BUDGET",
"N_A": "no budget applies",
"INVALID": "any applicable budget evaluation is invalid or budget identity collision exists"
},
"firewall": "budget bundle decision is a hard capacity gate only, not a score"
},
"identity_policy": {
"protectedRelationRef": "hash(relationRef, relationOwnerRef, relationModuleRef, relationSnapshotRef, relationFamily, canonical subjects, canvas/frame/unit, evidence refs)",
"protectionPolicyRef": "hash(policy source/owner, scope, canvas, canonical subjects, canonical protected relation refs, mode)",
"impactEvidenceRef": "hash(protectedRelationRef, relationRef, evaluator refs, snapshot, impactState, evidence refs)",
"budgetScopeRef": "hash(scope source/owner, canvas, canonical target families, canonical subject refs)",
"dimensionRef": "hash(kind, capacity, numericalEpsilon, canonical selector)",
"exceptionBudgetRef": "hash(budget source/owner, budgetScopeRef, canonical dimension refs)",
"usageRef": "hash(accountingState, authorizationRef?, targetEvidenceRef, intentRef, targetFamily, canonical subjects, deviationMeasurementRef?, evidence refs)",
"ledgerRef": "hash(exceptionBudgetRef, canonical committed usage refs, resulting per-dimension accounting)",
"budgetEvaluationRef": "hash(exceptionBudgetRef, ledgerRef, canonical proposed usage refs, resulting accounting)",
"set_semantics": "all set-like ref arrays are lexically canonicalized",
"excluded_from_identity": [
"display label",
"display color",
"free-form human comment",
"confidence"
]
},
"status_policy": {
"protection_gate": "OK+PASS | OK+REJECT | N_A | INVALID",
"budget_evaluation": "OK+WITHIN_BUDGET | OK+EXCEEDS_BUDGET | N_A | INVALID",
"bundle_evaluation": "OK+PASS | OK+REJECT | N_A | INVALID",
"zero_capacity": "valid explicit capacity, not N_A",
"zero_usage": "valid numeric usage, not N_A",
"missing_budget": "N_A, not infinite capacity"
},
"critical_firewalls": [
"protected relation != ordinary break target permission",
"protected relation break cannot be purchased with exception budget",
"REQUEST_BREAK does not override hard protection",
"REQUEST_BREAK does not override exhausted budget",
"protection confidence != protection strength",
"budget capacity != score",
"remaining budget != preference",
"unused budget != invitation to create exceptions",
"larger budget != better composition",
"larger deviation does not receive more budget automatically",
"budget numerical epsilon != extra design allowance",
"zero capacity != N_A",
"zero usage != N_A",
"missing budget != unlimited budget",
"proposed usage does not mutate committed ledger",
"COMMITTED requires external authorizationRef",
"12.02 does not create authorization",
"12.02 does not generate candidates",
"12.02 does not produce justification",
"12.02 does not score override quality",
"budget order != priority",
"module execution order != rule priority",
"correction request != foreign mutation",
"N_A != 0",
"no universal beautyScore",
"IDEA != CANON",
"EXPERIMENT != CANON"
],
"deferred_downstream": {
"12.03": [
"bounded rule-break candidate generation",
"candidate-specific protected-relation impact production/collection",
"candidate-specific proposed exception usage production",
"explicit justification evidence and verdict"
],
"12.04": [
"override/local controlled-break evaluation",
"Topic12 independent vote if canonically introduced",
"final combination of intent, deviation, protection, budget and justification",
"consolidated Topic12 tests"
]
},
"correction_request_schema": {
"requestRef": "stable request identity",
"targetOwnerRef": "owner whose protection/budget/impact/source 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 where protected relations feel essential",
"IDEA-02 semantics required before placement; semanticIntentRefs remain opaque/deferred",
"IDEA-03 explicit rule priorities; protected/budget gates must not become hidden global 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",
"protectionPolicyRef",
"protectedRelationRefs[]",
"impactEvidenceRefs[]",
"protectionGateStatus",
"protectionGateDecision",
"exceptionBudgetRefs[]",
"budgetScopeRefs[]",
"budgetDimensionRefs[]",
"committedUsageRefs[]",
"proposedUsageRefs[]",
"ledgerRefs[]",
"budgetEvaluationRefs[]",
"bundleDecision",
"dimensionUsageBefore",
"dimensionUsageProposed",
"dimensionUsageAfter",
"dimensionRemaining",
"humanReasonCodes[]",
"future candidateRef",
"future justificationEvidenceRef",
"future overrideEvaluationRef"
],
"DEFERRED_SEMANTIC_INPUTS": [
"semanticIntentRefs[]",
"semantic reason a relation must be protected",
"meaning/hierarchy rationale",
"brand/editorial tolerance rationale",
"future conflict-priority policy refs"
],
"HUMAN_FEEDBACK_HOOKS": [
"RELATION_SHOULD_BE_HARD_PROTECTED",
"RELATION_SHOULD_NOT_BE_HARD_PROTECTED",
"PROTECTION_IMPACT_EVALUATED_WRONG",
"BUDGET_TOO_LARGE",
"BUDGET_TOO_SMALL",
"BUDGET_SCOPE_WRONG",
"BUDGET_DIMENSION_WRONG",
"EXCEPTION_CHARGED_WRONG",
"EXCEPTION_NOT_CHARGED",
"TENSION_READS_AS_ERROR"
],
"CONFLICT_PRIORITY_ASSUMPTIONS": [
"module execution order is not priority",
"hard protected relation cannot be overridden by Topic12 budget",
"budget exhaustion is a capacity gate, not a score penalty",
"multiple applicable budgets all constrain; list order is non-semantic",
"REQUEST_BREAK does not gain priority over protection/budget gates",
"future reviewed global conflict-priority owner remains authoritative"
],
"LAB_HOOKS": [
"human A/B: same break with/without one hard-protected relation preserved",
"human A/B: different explicit exception-count budgets",
"compare count-only vs normalized-magnitude budget policies",
"measure whether users interpret unused budget as invitation to overuse exceptions",
"collect disagreement reason codes for protection and budget scope",
"test budget policy transfer across formats without writing thresholds into canon"
],
"observation_record": {
"moduleRef": "Compo12.02",
"metricResults": [],
"candidateRefs": [],
"justificationRefs": [],
"overrideEvaluationRefs": []
}
}