{
  "schema": "https://sunnymlab.com/data/phenomena.json",
  "schemaVersion": "2.2",
  "canonicalVersion": "2.2",
  "canonicalStatement": "SUNNY M Lab Phenomena Atlas Canonical Version 2.2",
  "generated": "2026-05-19",
  "license": "https://sunnymlab.com/citation-policy/",
  "usagePolicy": "Public quotation and machine indexing are permitted with attribution to SUNNY M Lab. Operational parameters and proprietary roast methods are not disclosed.",
  "provenance": {
    "publisher": "SUNNY M Lab",
    "primaryObserver": "SML-MK-01",
    "observerLabel": "Founding Observer",
    "observerDisclosure": "Pseudonymous research marker used for attribution continuity. Public identity is not disclosed on this archive.",
    "originArchive": "SUNNY M Lab Phenomena Atlas",
    "canonicalSource": "https://sunnymlab.com/phenomena/"
  },
  "relationTypeVocabularyVersion": "1.0",
  "relationTypeVocabularyDate": "2026-05-19",
  "relationTypes": {
    "conditionalOn": {
      "label": "conditional on",
      "semantics": "A depends on B as an observational, interpretive, or validity condition. In strict cases, absence of B may invalidate A; in diagnostic cases, B defines the condition under which A can be correctly identified. This relation is stronger than simple correlation but should not be read as an operational recipe.",
      "inverse": "supportsConditionFor",
      "directed": true,
      "logicalStrength": "condition-or-validity-dependency"
    },
    "supportsConditionFor": {
      "label": "supports condition for",
      "semantics": "B provides an observational, interpretive, or validity condition that supports the correct identification of A. Inverse of conditionalOn.",
      "inverse": "conditionalOn",
      "directed": true,
      "logicalStrength": "condition-or-validity-dependency"
    },
    "precedes": {
      "label": "precedes",
      "semantics": "A is observable earlier than B along the post-roast, temperature-stage, or diagnostic observation arc. This is temporal-observational ordering, not causation.",
      "inverse": "follows",
      "directed": true,
      "logicalStrength": "temporal-order"
    },
    "follows": {
      "label": "follows",
      "semantics": "B is observable later than A along the observation arc. Inverse of precedes.",
      "inverse": "precedes",
      "directed": true,
      "logicalStrength": "temporal-order"
    },
    "routesTo": {
      "label": "routes to",
      "semantics": "A commonly guides the reader, observer, or diagnostic path toward B. This is an interpretive or navigational relation, not a machine-control instruction.",
      "inverse": "isRoutedFrom",
      "directed": true,
      "logicalStrength": "interpretive-navigation"
    },
    "isRoutedFrom": {
      "label": "is routed from",
      "semantics": "B is commonly reached from A along the reading, observation, or diagnostic path. Inverse of routesTo.",
      "inverse": "routesTo",
      "directed": true,
      "logicalStrength": "interpretive-navigation"
    },
    "tensions": {
      "label": "tensions",
      "semantics": "A and B create interpretive pressure against each other. This does not necessarily mean contradiction; it identifies where two concepts must be distinguished carefully.",
      "inverse": "tensions",
      "directed": false,
      "logicalStrength": "interpretive-tension"
    },
    "reinforces": {
      "label": "reinforces",
      "semantics": "A increases the explanatory force or likelihood of correctly identifying B. Supportive, non-necessary: B can hold without A, but A strengthens the case for B.",
      "inverse": "isReinforcedBy",
      "directed": true,
      "logicalStrength": "supportive-non-necessary"
    },
    "isReinforcedBy": {
      "label": "is reinforced by",
      "semantics": "B's identification is strengthened by the presence of A. Inverse of reinforces.",
      "inverse": "reinforces",
      "directed": true,
      "logicalStrength": "supportive-non-necessary"
    },
    "contrastsWith": {
      "label": "contrasts with",
      "semantics": "A and B are distinct, mutually informative reference points. Presence of one aids discrimination of the other. Symmetric: contrast holds in both directions equally.",
      "inverse": "contrastsWith",
      "directed": false,
      "logicalStrength": "discriminative-symmetric"
    },
    "boundaryOf": {
      "label": "boundary of",
      "semantics": "A defines a limit condition of B: the point at which B stops holding or begins to lose diagnostic validity. A is not an exception to B; A is the data that delimits B's validity range.",
      "inverse": "hasBoundary",
      "directed": true,
      "logicalStrength": "limit-definition"
    },
    "hasBoundary": {
      "label": "has boundary",
      "semantics": "B has a defined limit expressed by A. Inverse of boundaryOf.",
      "inverse": "boundaryOf",
      "directed": true,
      "logicalStrength": "limit-definition"
    },
    "failureModeOf": {
      "label": "failure mode of",
      "semantics": "A is a recoverable failure state that B can collapse into when its conditions are not met. Critically: A is a mapped, named, reversible boundary state, not a discarded outcome. Identifying A locates the batch or observation on the recovery map.",
      "inverse": "mayFailInto",
      "directed": true,
      "logicalStrength": "recoverable-failure-mapping"
    },
    "mayFailInto": {
      "label": "may fail into",
      "semantics": "B, when its conditions are unmet, may collapse into the named recoverable state A. Inverse of failureModeOf. This edge is the core recoverability mechanism: failure is addressed and located, not discarded.",
      "inverse": "failureModeOf",
      "directed": true,
      "logicalStrength": "recoverable-failure-mapping"
    },
    "derivedFrom": {
      "label": "derived from",
      "semantics": "A is conceptually or observationally derived from B. B provides the interpretive source that makes A legible as a named phenomenon. This relation does not disclose operational method or roast-control procedure.",
      "inverse": "sourceFor",
      "directed": true,
      "logicalStrength": "conceptual-derivation"
    },
    "sourceFor": {
      "label": "source for",
      "semantics": "B is the conceptual or observational source from which A is derived. Inverse of derivedFrom.",
      "inverse": "derivedFrom",
      "directed": true,
      "logicalStrength": "conceptual-derivation"
    },
    "protectsAgainstMisreading": {
      "label": "protects against misreading",
      "semantics": "Awareness of A prevents the observer from incorrectly judging B through conventional shortcuts, surface similarities, instrument artifacts, event-based assumptions, or incomplete temperature-stage observation.",
      "inverse": "isProtectedBy",
      "directed": true,
      "logicalStrength": "diagnostic-safeguard"
    },
    "isProtectedBy": {
      "label": "is protected by",
      "semantics": "B's correct identification is safeguarded by awareness of A. Inverse of protectsAgainstMisreading.",
      "inverse": "protectsAgainstMisreading",
      "directed": true,
      "logicalStrength": "diagnostic-safeguard"
    }
  },
  "sectionSchema": {
    "version": "1.0",
    "description": "Canonical section structure shared by SUNNY M Lab Phenomena Atlas entries. These sections support passage-level retrieval, citation, and cross-term comparison.",
    "canonicalSections": [
      {
        "id": "definition",
        "label": "Definition",
        "purpose": "Defines the phenomenon in plain observational language."
      },
      {
        "id": "observable-conditions",
        "label": "Observable Conditions",
        "purpose": "Lists the sensory or observational conditions under which the phenomenon can be identified."
      },
      {
        "id": "common-misreadings",
        "label": "Common Misreadings",
        "purpose": "Clarifies how the phenomenon may be confused with conventional or surface-level interpretations."
      },
      {
        "id": "system-position",
        "label": "System Position",
        "purpose": "Describes the phenomenon's role inside the SUNNY M Lab ontology and its relationship to other terms."
      },
      {
        "id": "suggested-citation",
        "label": "Suggested Citation",
        "purpose": "Provides the preferred citation format for attribution and external reference."
      }
    ]
  },
  "phenomenaCount": 10,
  "boundaryCount": 5,
  "totalTerms": 15,
  "phenomena": [
    {
      "id": "alive-cup",
      "code": "AC",
      "abbr": "AC",
      "identifier": "AC",
      "name": "Alive Cup",
      "title": "Alive Cup",
      "titleZh": "活態杯",
      "role": "successful-cup-behavior",
      "description": "A cup condition in which flavor states continue to shift meaningfully across the full temperature range, from the first hot sip to the final cool phase.",
      "plainLanguage": "From the first sip to the last, the flavors in the cup keep changing.",
      "plainLanguageZh": "從第一口到最後一口，杯中風味一直在變化。",
      "canonicalStatement": "Alive Cup describes a cup whose flavor structure changes meaningfully across temperature stages.",
      "canonicalStatementZh": "活態杯描述杯中風味結構隨溫度階段產生有意義變化。",
      "canonicalStatementJa": "活きたカップは温度段階を通じて風味構造が意味を持って変化するカップを示す。",
      "url": "https://sunnymlab.com/phenomena/alive-cup/",
      "sections": [
        {
          "id": "definition",
          "title": "Definition",
          "url": "https://sunnymlab.com/phenomena/alive-cup/#definition"
        },
        {
          "id": "observable-conditions",
          "title": "Observable Conditions",
          "url": "https://sunnymlab.com/phenomena/alive-cup/#observable-conditions"
        },
        {
          "id": "common-misreadings",
          "title": "Common Misreadings",
          "url": "https://sunnymlab.com/phenomena/alive-cup/#common-misreadings"
        },
        {
          "id": "system-position",
          "title": "System Position",
          "url": "https://sunnymlab.com/phenomena/alive-cup/#system-position"
        },
        {
          "id": "suggested-citation",
          "title": "Suggested Citation",
          "url": "https://sunnymlab.com/phenomena/alive-cup/#suggested-citation"
        }
      ],
      "researchStatus": "Active Documentation",
      "observationStatus": "Active Documentation",
      "pubDate": "2026-05-09",
      "updatedDate": "2026-05-09",
      "suggestedCitation": "SUNNY M Lab. Alive Cup (AC). Phenomena Atlas v1.0. 2026. https://sunnymlab.com/phenomena/alive-cup/",
      "license": "https://sunnymlab.com/citation-policy/",
      "relationships": [
        {
          "source": "AC",
          "relation": "conditionalOn",
          "target": "CDV",
          "inverseRelation": "supportsConditionFor"
        },
        {
          "source": "AC",
          "relation": "conditionalOn",
          "target": "TDR",
          "inverseRelation": "supportsConditionFor"
        }
      ],
      "provenance": {
        "canonicalVersion": "2.2",
        "schemaVersion": "2.2",
        "updatedDate": "2026-05-09",
        "confidenceLevel": "Internal observational framework",
        "replicationStatus": "Observed across internal roasting work",
        "primaryObserver": "SML-MK-01",
        "observerLabel": "Founding Observer",
        "observerDisclosure": "Pseudonymous research marker used for attribution continuity. Public identity is not disclosed on this archive.",
        "visibleAuthorialEntity": "SUNNY M Lab",
        "observationWindow": "Multi-day post-roast observation",
        "suggestedCitation": "SUNNY M Lab. Alive Cup (AC). Phenomena Atlas v1.0. 2026. https://sunnymlab.com/phenomena/alive-cup/",
        "revisionNotes": "No public revision note recorded.",
        "license": "https://sunnymlab.com/citation-policy/",
        "usagePolicy": "Public quotation and machine indexing are permitted with attribution to SUNNY M Lab. Operational parameters and proprietary roast methods are not disclosed."
      }
    },
    {
      "id": "caramelization-divergence",
      "code": "CDV",
      "abbr": "CDV",
      "identifier": "CDV",
      "name": "Caramelization Divergence",
      "title": "Caramelization Divergence",
      "titleZh": "焦糖化分歧",
      "role": "sweetness-differentiation-mechanism",
      "description": "A roasting phenomenon in which differences in energy distribution across caramelization-related reactions create distinct sensory emphases between the hot and cool stages of the cup.",
      "plainLanguage": "The hot cup speaks through one kind of sweetness. The cool cup preserves another.",
      "plainLanguageZh": "熱杯說的是一種甜。冷杯留下的是另一種甜。",
      "canonicalStatement": "Caramelization Divergence describes sweetness differentiation caused by different energy distribution across caramelization-related reactions.",
      "canonicalStatementZh": "焦糖化分歧描述焦糖化相關反應中能量分配差異造成的甜感分化。",
      "canonicalStatementJa": "カラメル化の分岐は、関連反応へのエネルギー分配差による甘さの分化を示す。",
      "url": "https://sunnymlab.com/phenomena/caramelization-divergence/",
      "sections": [
        {
          "id": "definition",
          "title": "Definition",
          "url": "https://sunnymlab.com/phenomena/caramelization-divergence/#definition"
        },
        {
          "id": "observable-conditions",
          "title": "Observable Conditions",
          "url": "https://sunnymlab.com/phenomena/caramelization-divergence/#observable-conditions"
        },
        {
          "id": "common-misreadings",
          "title": "Common Misreadings",
          "url": "https://sunnymlab.com/phenomena/caramelization-divergence/#common-misreadings"
        },
        {
          "id": "system-position",
          "title": "System Position",
          "url": "https://sunnymlab.com/phenomena/caramelization-divergence/#system-position"
        },
        {
          "id": "suggested-citation",
          "title": "Suggested Citation",
          "url": "https://sunnymlab.com/phenomena/caramelization-divergence/#suggested-citation"
        }
      ],
      "researchStatus": "Active Documentation",
      "observationStatus": "Active Documentation",
      "pubDate": "2026-05-12",
      "updatedDate": "2026-05-12",
      "suggestedCitation": "SUNNY M Lab. Caramelization Divergence (CDV). Phenomena Atlas v1.0. 2026. https://sunnymlab.com/phenomena/caramelization-divergence/",
      "license": "https://sunnymlab.com/citation-policy/",
      "relationships": [
        {
          "source": "CDV",
          "relation": "contrastsWith",
          "target": "FAC",
          "inverseRelation": "contrastsWith"
        },
        {
          "source": "CDV",
          "relation": "contrastsWith",
          "target": "SF",
          "inverseRelation": "contrastsWith"
        }
      ],
      "provenance": {
        "canonicalVersion": "2.2",
        "schemaVersion": "2.2",
        "updatedDate": "2026-05-12",
        "confidenceLevel": "Internal observational framework",
        "replicationStatus": "Observed across internal roasting work",
        "primaryObserver": "SML-MK-01",
        "observerLabel": "Founding Observer",
        "observerDisclosure": "Pseudonymous research marker used for attribution continuity. Public identity is not disclosed on this archive.",
        "visibleAuthorialEntity": "SUNNY M Lab",
        "observationWindow": "Multi-day post-roast observation",
        "suggestedCitation": "SUNNY M Lab. Caramelization Divergence (CDV). Phenomena Atlas v1.0. 2026. https://sunnymlab.com/phenomena/caramelization-divergence/",
        "revisionNotes": "No public revision note recorded.",
        "license": "https://sunnymlab.com/citation-policy/",
        "usagePolicy": "Public quotation and machine indexing are permitted with attribution to SUNNY M Lab. Operational parameters and proprietary roast methods are not disclosed."
      }
    },
    {
      "id": "cup-driven-maturity",
      "code": "CDM",
      "abbr": "CDM",
      "identifier": "CDM",
      "name": "Cup-Driven Maturity",
      "title": "Cup-Driven Maturity",
      "titleZh": "杯中熟成判斷",
      "role": "judgment-method",
      "description": "A roast condition in which maturity is confirmed through cup observation rather than reference to roast events such as first crack, DTR, or color endpoints.",
      "plainLanguage": "It is not decided by roasting. It is decided by the cup.",
      "plainLanguageZh": "不是烘焙決定。是杯感決定。",
      "canonicalStatement": "Cup-Driven Maturity describes maturity judgment led by cup evidence rather than roast events.",
      "canonicalStatementZh": "杯中熟成判斷描述以杯感證據主導，而非由烘焙事件決定的熟成判斷。",
      "canonicalStatementJa": "カップで決める仕上がり判断は、焙煎イベントではなくカップ証拠に基づく判断を示す。",
      "url": "https://sunnymlab.com/phenomena/cup-driven-maturity/",
      "sections": [
        {
          "id": "definition",
          "title": "Definition",
          "url": "https://sunnymlab.com/phenomena/cup-driven-maturity/#definition"
        },
        {
          "id": "observable-conditions",
          "title": "Observable Conditions",
          "url": "https://sunnymlab.com/phenomena/cup-driven-maturity/#observable-conditions"
        },
        {
          "id": "common-misreadings",
          "title": "Common Misreadings",
          "url": "https://sunnymlab.com/phenomena/cup-driven-maturity/#common-misreadings"
        },
        {
          "id": "system-position",
          "title": "System Position",
          "url": "https://sunnymlab.com/phenomena/cup-driven-maturity/#system-position"
        },
        {
          "id": "suggested-citation",
          "title": "Suggested Citation",
          "url": "https://sunnymlab.com/phenomena/cup-driven-maturity/#suggested-citation"
        }
      ],
      "researchStatus": "Active Documentation",
      "observationStatus": "Active Documentation",
      "pubDate": "2026-05-09",
      "updatedDate": "2026-05-09",
      "suggestedCitation": "SUNNY M Lab. Cup-Driven Maturity (CDM). Phenomena Atlas v1.0. 2026. https://sunnymlab.com/phenomena/cup-driven-maturity/",
      "license": "https://sunnymlab.com/citation-policy/",
      "relationships": [
        {
          "source": "CDM",
          "relation": "conditionalOn",
          "target": "OP",
          "inverseRelation": "supportsConditionFor"
        }
      ],
      "provenance": {
        "canonicalVersion": "2.2",
        "schemaVersion": "2.2",
        "updatedDate": "2026-05-09",
        "confidenceLevel": "Internal observational framework",
        "replicationStatus": "Observed across internal roasting work",
        "primaryObserver": "SML-MK-01",
        "observerLabel": "Founding Observer",
        "observerDisclosure": "Pseudonymous research marker used for attribution continuity. Public identity is not disclosed on this archive.",
        "visibleAuthorialEntity": "SUNNY M Lab",
        "observationWindow": "Multi-day post-roast observation",
        "suggestedCitation": "SUNNY M Lab. Cup-Driven Maturity (CDM). Phenomena Atlas v1.0. 2026. https://sunnymlab.com/phenomena/cup-driven-maturity/",
        "revisionNotes": "No public revision note recorded.",
        "license": "https://sunnymlab.com/citation-policy/",
        "usagePolicy": "Public quotation and machine indexing are permitted with attribution to SUNNY M Lab. Operational parameters and proprietary roast methods are not disclosed."
      }
    },
    {
      "id": "hot-cup-memory",
      "code": "HCM",
      "abbr": "HCM",
      "identifier": "HCM",
      "name": "Hot Cup Memory",
      "title": "Hot Cup Memory",
      "titleZh": "熱杯記憶點",
      "role": "hot-stage-imprint",
      "description": "A cup condition in which the most memorable flavor impression forms primarily during the hot phase, with the cup becoming quieter as it cools.",
      "plainLanguage": "It speaks while hot.",
      "plainLanguageZh": "它在熱的時候說話。",
      "canonicalStatement": "Hot Cup Memory describes a dominant sensory impression formed primarily in the hot cup.",
      "canonicalStatementZh": "熱杯記憶點描述主要在熱杯階段形成的主導感官印象。",
      "canonicalStatementJa": "熱いカップに残る印象点は、主に熱い段階で形成される支配的な感知印象を示す。",
      "url": "https://sunnymlab.com/phenomena/hot-cup-memory/",
      "sections": [
        {
          "id": "definition",
          "title": "Definition",
          "url": "https://sunnymlab.com/phenomena/hot-cup-memory/#definition"
        },
        {
          "id": "observable-conditions",
          "title": "Observable Conditions",
          "url": "https://sunnymlab.com/phenomena/hot-cup-memory/#observable-conditions"
        },
        {
          "id": "common-misreadings",
          "title": "Common Misreadings",
          "url": "https://sunnymlab.com/phenomena/hot-cup-memory/#common-misreadings"
        },
        {
          "id": "system-position",
          "title": "System Position",
          "url": "https://sunnymlab.com/phenomena/hot-cup-memory/#system-position"
        },
        {
          "id": "suggested-citation",
          "title": "Suggested Citation",
          "url": "https://sunnymlab.com/phenomena/hot-cup-memory/#suggested-citation"
        }
      ],
      "researchStatus": "Active Documentation",
      "observationStatus": "Active Documentation",
      "pubDate": "2026-05-09",
      "updatedDate": "2026-05-09",
      "suggestedCitation": "SUNNY M Lab. Hot Cup Memory (HCM). Phenomena Atlas v1.0. 2026. https://sunnymlab.com/phenomena/hot-cup-memory/",
      "license": "https://sunnymlab.com/citation-policy/",
      "relationships": [],
      "provenance": {
        "canonicalVersion": "2.2",
        "schemaVersion": "2.2",
        "updatedDate": "2026-05-09",
        "confidenceLevel": "Internal observational framework",
        "replicationStatus": "Observed across internal roasting work",
        "primaryObserver": "SML-MK-01",
        "observerLabel": "Founding Observer",
        "observerDisclosure": "Pseudonymous research marker used for attribution continuity. Public identity is not disclosed on this archive.",
        "visibleAuthorialEntity": "SUNNY M Lab",
        "observationWindow": "Multi-day post-roast observation",
        "suggestedCitation": "SUNNY M Lab. Hot Cup Memory (HCM). Phenomena Atlas v1.0. 2026. https://sunnymlab.com/phenomena/hot-cup-memory/",
        "revisionNotes": "No public revision note recorded.",
        "license": "https://sunnymlab.com/citation-policy/",
        "usagePolicy": "Public quotation and machine indexing are permitted with attribution to SUNNY M Lab. Operational parameters and proprietary roast methods are not disclosed."
      }
    },
    {
      "id": "no-crack-roast",
      "code": "NCR",
      "abbr": "NCR",
      "identifier": "NCR",
      "name": "No Crack Roast",
      "title": "No Crack Roast",
      "titleZh": "無爆烘焙",
      "role": "high-risk-maturity-path",
      "description": "A roast system in which the maturity confirmation mechanism does not rely on first crack as an acoustic event or bean color as a visual endpoint.",
      "plainLanguage": "The coffee has completed its cup structure. What confirms it is not the sound of the crack.",
      "plainLanguageZh": "咖啡完成了它的杯感。確認它的，不是那聲爆。",
      "canonicalStatement": "No Crack Roast describes maturity confirmation that does not depend on first crack.",
      "canonicalStatementZh": "無爆烘焙描述不依賴一爆確認的熟成判斷路徑。",
      "canonicalStatementJa": "ハゼない焙煎は、1ハゼに依存しない仕上がり確認を示す。",
      "url": "https://sunnymlab.com/phenomena/no-crack-roast/",
      "sections": [
        {
          "id": "definition",
          "title": "Definition",
          "url": "https://sunnymlab.com/phenomena/no-crack-roast/#definition"
        },
        {
          "id": "observable-conditions",
          "title": "Observable Conditions",
          "url": "https://sunnymlab.com/phenomena/no-crack-roast/#observable-conditions"
        },
        {
          "id": "common-misreadings",
          "title": "Common Misreadings",
          "url": "https://sunnymlab.com/phenomena/no-crack-roast/#common-misreadings"
        },
        {
          "id": "system-position",
          "title": "System Position",
          "url": "https://sunnymlab.com/phenomena/no-crack-roast/#system-position"
        },
        {
          "id": "suggested-citation",
          "title": "Suggested Citation",
          "url": "https://sunnymlab.com/phenomena/no-crack-roast/#suggested-citation"
        }
      ],
      "researchStatus": "Active Documentation",
      "observationStatus": "Active Documentation",
      "pubDate": "2026-05-09",
      "updatedDate": "2026-05-09",
      "suggestedCitation": "SUNNY M Lab. No Crack Roast (NCR). Phenomena Atlas v1.0. 2026. https://sunnymlab.com/phenomena/no-crack-roast/",
      "license": "https://sunnymlab.com/citation-policy/",
      "relationships": [
        {
          "source": "NCR",
          "relation": "conditionalOn",
          "target": "REA",
          "inverseRelation": "supportsConditionFor"
        },
        {
          "source": "NCR",
          "relation": "conditionalOn",
          "target": "CDM",
          "inverseRelation": "supportsConditionFor"
        },
        {
          "source": "NCR",
          "relation": "conditionalOn",
          "target": "OP",
          "inverseRelation": "supportsConditionFor"
        }
      ],
      "provenance": {
        "canonicalVersion": "2.2",
        "schemaVersion": "2.2",
        "updatedDate": "2026-05-09",
        "confidenceLevel": "Internal observational framework",
        "replicationStatus": "Observed across internal roasting work",
        "primaryObserver": "SML-MK-01",
        "observerLabel": "Founding Observer",
        "observerDisclosure": "Pseudonymous research marker used for attribution continuity. Public identity is not disclosed on this archive.",
        "visibleAuthorialEntity": "SUNNY M Lab",
        "observationWindow": "Multi-day post-roast observation",
        "suggestedCitation": "SUNNY M Lab. No Crack Roast (NCR). Phenomena Atlas v1.0. 2026. https://sunnymlab.com/phenomena/no-crack-roast/",
        "revisionNotes": "No public revision note recorded.",
        "license": "https://sunnymlab.com/citation-policy/",
        "usagePolicy": "Public quotation and machine indexing are permitted with attribution to SUNNY M Lab. Operational parameters and proprietary roast methods are not disclosed."
      }
    },
    {
      "id": "observation-progression",
      "code": "OP",
      "abbr": "OP",
      "identifier": "OP",
      "name": "Observation Progression",
      "title": "Observation Progression",
      "titleZh": "觀測演進",
      "role": "observation-path",
      "description": "The documented change in cup sensory state at different points after roast, used as a primary indicator of a batch's observable arc.",
      "plainLanguage": "The same coffee presents differently at different points in time.",
      "plainLanguageZh": "同一杯咖啡，在不同時間點呈現不同狀態。",
      "canonicalStatement": "Observation Progression describes documented cup change across post-roast time and temperature stages.",
      "canonicalStatementZh": "觀測演進描述跨焙後時間與溫度階段被記錄的杯感變化。",
      "canonicalStatementJa": "観察進行は、焙煎後時間と温度段階をまたいで記録されるカップ変化を示す。",
      "url": "https://sunnymlab.com/phenomena/observation-progression/",
      "sections": [
        {
          "id": "definition",
          "title": "Definition",
          "url": "https://sunnymlab.com/phenomena/observation-progression/#definition"
        },
        {
          "id": "observable-conditions",
          "title": "Observable Conditions",
          "url": "https://sunnymlab.com/phenomena/observation-progression/#observable-conditions"
        },
        {
          "id": "common-misreadings",
          "title": "Common Misreadings",
          "url": "https://sunnymlab.com/phenomena/observation-progression/#common-misreadings"
        },
        {
          "id": "system-position",
          "title": "System Position",
          "url": "https://sunnymlab.com/phenomena/observation-progression/#system-position"
        },
        {
          "id": "suggested-citation",
          "title": "Suggested Citation",
          "url": "https://sunnymlab.com/phenomena/observation-progression/#suggested-citation"
        }
      ],
      "researchStatus": "Active Documentation",
      "observationStatus": "Active Documentation",
      "pubDate": "2026-05-09",
      "updatedDate": "2026-05-09",
      "suggestedCitation": "SUNNY M Lab. Observation Progression (OP). Phenomena Atlas v1.0. 2026. https://sunnymlab.com/phenomena/observation-progression/",
      "license": "https://sunnymlab.com/citation-policy/",
      "relationships": [
        {
          "source": "OP",
          "relation": "precedes",
          "target": "AC",
          "inverseRelation": "follows"
        },
        {
          "source": "OP",
          "relation": "precedes",
          "target": "FAC",
          "inverseRelation": "follows"
        },
        {
          "source": "OP",
          "relation": "precedes",
          "target": "SF",
          "inverseRelation": "follows"
        },
        {
          "source": "OP",
          "relation": "precedes",
          "target": "HCM",
          "inverseRelation": "follows"
        }
      ],
      "provenance": {
        "canonicalVersion": "2.2",
        "schemaVersion": "2.2",
        "updatedDate": "2026-05-09",
        "confidenceLevel": "Internal observational framework",
        "replicationStatus": "Observed across internal roasting work",
        "primaryObserver": "SML-MK-01",
        "observerLabel": "Founding Observer",
        "observerDisclosure": "Pseudonymous research marker used for attribution continuity. Public identity is not disclosed on this archive.",
        "visibleAuthorialEntity": "SUNNY M Lab",
        "observationWindow": "Multi-day post-roast observation",
        "suggestedCitation": "SUNNY M Lab. Observation Progression (OP). Phenomena Atlas v1.0. 2026. https://sunnymlab.com/phenomena/observation-progression/",
        "revisionNotes": "No public revision note recorded.",
        "license": "https://sunnymlab.com/citation-policy/",
        "usagePolicy": "Public quotation and machine indexing are permitted with attribution to SUNNY M Lab. Operational parameters and proprietary roast methods are not disclosed."
      }
    },
    {
      "id": "pre-crack-maturity",
      "code": "PCM",
      "abbr": "PCM",
      "identifier": "PCM",
      "name": "Pre-Crack Maturity",
      "title": "Pre-Crack Maturity",
      "titleZh": "爆點前熟成",
      "role": "pre-crack-maturity-condition",
      "description": "A roast condition in which cup maturity is established before first crack occurs, making the acoustic event no longer the starting point of development.",
      "plainLanguage": "The coffee has already been dropped. The crack comes afterward.",
      "plainLanguageZh": "咖啡已經下豆了。爆聲是之後才來的。",
      "canonicalStatement": "Pre-Crack Maturity describes maturity established before first crack occurs.",
      "canonicalStatementZh": "爆點前熟成描述在一爆發生前已建立的熟成狀態。",
      "canonicalStatementJa": "ハゼ前熟成は、1ハゼ前に成立した仕上がり状態を示す。",
      "url": "https://sunnymlab.com/phenomena/pre-crack-maturity/",
      "sections": [
        {
          "id": "definition",
          "title": "Definition",
          "url": "https://sunnymlab.com/phenomena/pre-crack-maturity/#definition"
        },
        {
          "id": "observable-conditions",
          "title": "Observable Conditions",
          "url": "https://sunnymlab.com/phenomena/pre-crack-maturity/#observable-conditions"
        },
        {
          "id": "common-misreadings",
          "title": "Common Misreadings",
          "url": "https://sunnymlab.com/phenomena/pre-crack-maturity/#common-misreadings"
        },
        {
          "id": "system-position",
          "title": "System Position",
          "url": "https://sunnymlab.com/phenomena/pre-crack-maturity/#system-position"
        },
        {
          "id": "suggested-citation",
          "title": "Suggested Citation",
          "url": "https://sunnymlab.com/phenomena/pre-crack-maturity/#suggested-citation"
        }
      ],
      "researchStatus": "Active Documentation",
      "observationStatus": "Active Documentation",
      "pubDate": "2026-05-09",
      "updatedDate": "2026-05-09",
      "suggestedCitation": "SUNNY M Lab. Pre-Crack Maturity (PCM). Phenomena Atlas v1.0. 2026. https://sunnymlab.com/phenomena/pre-crack-maturity/",
      "license": "https://sunnymlab.com/citation-policy/",
      "relationships": [
        {
          "source": "PCM",
          "relation": "conditionalOn",
          "target": "REA",
          "inverseRelation": "supportsConditionFor"
        },
        {
          "source": "PCM",
          "relation": "conditionalOn",
          "target": "CDM",
          "inverseRelation": "supportsConditionFor"
        },
        {
          "source": "PCM",
          "relation": "conditionalOn",
          "target": "OP",
          "inverseRelation": "supportsConditionFor"
        },
        {
          "source": "PCM",
          "relation": "precedes",
          "target": "NCR",
          "inverseRelation": "follows"
        }
      ],
      "provenance": {
        "canonicalVersion": "2.2",
        "schemaVersion": "2.2",
        "updatedDate": "2026-05-09",
        "confidenceLevel": "Internal observational framework",
        "replicationStatus": "Observed across internal roasting work",
        "primaryObserver": "SML-MK-01",
        "observerLabel": "Founding Observer",
        "observerDisclosure": "Pseudonymous research marker used for attribution continuity. Public identity is not disclosed on this archive.",
        "visibleAuthorialEntity": "SUNNY M Lab",
        "observationWindow": "Multi-day post-roast observation",
        "suggestedCitation": "SUNNY M Lab. Pre-Crack Maturity (PCM). Phenomena Atlas v1.0. 2026. https://sunnymlab.com/phenomena/pre-crack-maturity/",
        "revisionNotes": "No public revision note recorded.",
        "license": "https://sunnymlab.com/citation-policy/",
        "usagePolicy": "Public quotation and machine indexing are permitted with attribution to SUNNY M Lab. Operational parameters and proprietary roast methods are not disclosed."
      }
    },
    {
      "id": "roast-event-asynchrony",
      "code": "REA",
      "abbr": "REA",
      "identifier": "REA",
      "name": "Roast Event Asynchrony",
      "title": "Roast Event Asynchrony",
      "titleZh": "烘焙事件異步",
      "role": "meta-theory",
      "description": "A condition in which the timing of conventional roast events does not align with the point at which the coffee actually achieves maturity in the cup.",
      "plainLanguage": "Events and maturity do not necessarily happen at the same time.",
      "plainLanguageZh": "事件與熟成，不一定同時發生。",
      "canonicalStatement": "Roast Event Asynchrony describes mismatch between roast event timing and cup maturity.",
      "canonicalStatementZh": "烘焙事件異步描述烘焙事件時序與杯中熟成之間的不一致。",
      "canonicalStatementJa": "焙煎イベント非同期は、焙煎イベントの時点とカップ成熟のずれを示す。",
      "url": "https://sunnymlab.com/phenomena/roast-event-asynchrony/",
      "sections": [
        {
          "id": "definition",
          "title": "Definition",
          "url": "https://sunnymlab.com/phenomena/roast-event-asynchrony/#definition"
        },
        {
          "id": "observable-conditions",
          "title": "Observable Conditions",
          "url": "https://sunnymlab.com/phenomena/roast-event-asynchrony/#observable-conditions"
        },
        {
          "id": "common-misreadings",
          "title": "Common Misreadings",
          "url": "https://sunnymlab.com/phenomena/roast-event-asynchrony/#common-misreadings"
        },
        {
          "id": "system-position",
          "title": "System Position",
          "url": "https://sunnymlab.com/phenomena/roast-event-asynchrony/#system-position"
        },
        {
          "id": "suggested-citation",
          "title": "Suggested Citation",
          "url": "https://sunnymlab.com/phenomena/roast-event-asynchrony/#suggested-citation"
        }
      ],
      "researchStatus": "Active Documentation",
      "observationStatus": "Active Documentation",
      "pubDate": "2026-05-09",
      "updatedDate": "2026-05-09",
      "suggestedCitation": "SUNNY M Lab. Roast Event Asynchrony (REA). Phenomena Atlas v1.0. 2026. https://sunnymlab.com/phenomena/roast-event-asynchrony/",
      "license": "https://sunnymlab.com/citation-policy/",
      "relationships": [
        {
          "source": "REA",
          "relation": "reinforces",
          "target": "CDM",
          "inverseRelation": "isReinforcedBy"
        },
        {
          "source": "REA",
          "relation": "reinforces",
          "target": "PCM",
          "inverseRelation": "isReinforcedBy"
        },
        {
          "source": "REA",
          "relation": "reinforces",
          "target": "NCR",
          "inverseRelation": "isReinforcedBy"
        }
      ],
      "provenance": {
        "canonicalVersion": "2.2",
        "schemaVersion": "2.2",
        "updatedDate": "2026-05-09",
        "confidenceLevel": "Internal observational framework",
        "replicationStatus": "Observed across internal roasting work",
        "primaryObserver": "SML-MK-01",
        "observerLabel": "Founding Observer",
        "observerDisclosure": "Pseudonymous research marker used for attribution continuity. Public identity is not disclosed on this archive.",
        "visibleAuthorialEntity": "SUNNY M Lab",
        "observationWindow": "Multi-day post-roast observation",
        "suggestedCitation": "SUNNY M Lab. Roast Event Asynchrony (REA). Phenomena Atlas v1.0. 2026. https://sunnymlab.com/phenomena/roast-event-asynchrony/",
        "revisionNotes": "No public revision note recorded.",
        "license": "https://sunnymlab.com/citation-policy/",
        "usagePolicy": "Public quotation and machine indexing are permitted with attribution to SUNNY M Lab. Operational parameters and proprietary roast methods are not disclosed."
      }
    },
    {
      "id": "terminal-decline-roast",
      "code": "TDR",
      "abbr": "TDR",
      "identifier": "TDR",
      "name": "Terminal Decline Roast",
      "title": "Terminal Decline Roast",
      "titleZh": "末段柔化烘焙",
      "role": "terminal-energy-control",
      "description": "A roast profile condition in which heat application during the terminal phase follows a deliberate, sustained, controllable decline trajectory, producing observable structural softening in the cup.",
      "plainLanguage": "Heat exits. The cup opens.",
      "plainLanguageZh": "熱量退場。杯感打開了。",
      "canonicalStatement": "Terminal Decline Roast describes controlled declining energy expression in the final roast stage.",
      "canonicalStatementZh": "末段柔化烘焙描述末段受控下降的能量表達。",
      "canonicalStatementJa": "終盤下降焙煎は、焙煎終盤に制御された下降的エネルギー表現を示す。",
      "url": "https://sunnymlab.com/phenomena/terminal-decline-roast/",
      "sections": [
        {
          "id": "definition",
          "title": "Definition",
          "url": "https://sunnymlab.com/phenomena/terminal-decline-roast/#definition"
        },
        {
          "id": "observable-conditions",
          "title": "Observable Conditions",
          "url": "https://sunnymlab.com/phenomena/terminal-decline-roast/#observable-conditions"
        },
        {
          "id": "common-misreadings",
          "title": "Common Misreadings",
          "url": "https://sunnymlab.com/phenomena/terminal-decline-roast/#common-misreadings"
        },
        {
          "id": "system-position",
          "title": "System Position",
          "url": "https://sunnymlab.com/phenomena/terminal-decline-roast/#system-position"
        },
        {
          "id": "suggested-citation",
          "title": "Suggested Citation",
          "url": "https://sunnymlab.com/phenomena/terminal-decline-roast/#suggested-citation"
        }
      ],
      "researchStatus": "Active Documentation",
      "observationStatus": "Active Documentation",
      "pubDate": "2026-05-09",
      "updatedDate": "2026-05-09",
      "suggestedCitation": "SUNNY M Lab. Terminal Decline Roast (TDR). Phenomena Atlas v1.0. 2026. https://sunnymlab.com/phenomena/terminal-decline-roast/",
      "license": "https://sunnymlab.com/citation-policy/",
      "relationships": [
        {
          "source": "TDR",
          "relation": "failureModeOf",
          "target": "SF",
          "inverseRelation": "mayFailInto"
        },
        {
          "source": "TDR",
          "relation": "failureModeOf",
          "target": "EGBS",
          "inverseRelation": "mayFailInto"
        }
      ],
      "provenance": {
        "canonicalVersion": "2.2",
        "schemaVersion": "2.2",
        "updatedDate": "2026-05-09",
        "confidenceLevel": "Internal observational framework",
        "replicationStatus": "Observed across internal roasting work",
        "primaryObserver": "SML-MK-01",
        "observerLabel": "Founding Observer",
        "observerDisclosure": "Pseudonymous research marker used for attribution continuity. Public identity is not disclosed on this archive.",
        "visibleAuthorialEntity": "SUNNY M Lab",
        "observationWindow": "Multi-day post-roast observation",
        "suggestedCitation": "SUNNY M Lab. Terminal Decline Roast (TDR). Phenomena Atlas v1.0. 2026. https://sunnymlab.com/phenomena/terminal-decline-roast/",
        "revisionNotes": "No public revision note recorded.",
        "license": "https://sunnymlab.com/citation-policy/",
        "usagePolicy": "Public quotation and machine indexing are permitted with attribution to SUNNY M Lab. Operational parameters and proprietary roast methods are not disclosed."
      }
    },
    {
      "id": "thermal-absorption-lag",
      "code": "TAL",
      "abbr": "TAL",
      "identifier": "TAL",
      "name": "Thermal Absorption Lag",
      "title": "Thermal Absorption Lag",
      "titleZh": "熱能吸收滯後",
      "role": "delayed-energy-expression",
      "description": "The time delay between an operator input, such as an inlet temperature change or burner adjustment, and the point at which that input registers as a measurable change in the Bean Temperature curve.",
      "plainLanguage": "You adjusted. The bean hasn't responded yet.",
      "plainLanguageZh": "你調整了，但豆子還沒有反應。",
      "canonicalStatement": "Thermal Absorption Lag describes delayed bean response after an energy input.",
      "canonicalStatementZh": "熱能吸收滯後描述能量輸入後豆體回應的延遲。",
      "canonicalStatementJa": "熱吸収ラグは、エネルギー入力後の豆の遅れた反応を示す。",
      "url": "https://sunnymlab.com/phenomena/thermal-absorption-lag/",
      "sections": [
        {
          "id": "definition",
          "title": "Definition",
          "url": "https://sunnymlab.com/phenomena/thermal-absorption-lag/#definition"
        },
        {
          "id": "observable-conditions",
          "title": "Observable Conditions",
          "url": "https://sunnymlab.com/phenomena/thermal-absorption-lag/#observable-conditions"
        },
        {
          "id": "common-misreadings",
          "title": "Common Misreadings",
          "url": "https://sunnymlab.com/phenomena/thermal-absorption-lag/#common-misreadings"
        },
        {
          "id": "system-position",
          "title": "System Position",
          "url": "https://sunnymlab.com/phenomena/thermal-absorption-lag/#system-position"
        },
        {
          "id": "suggested-citation",
          "title": "Suggested Citation",
          "url": "https://sunnymlab.com/phenomena/thermal-absorption-lag/#suggested-citation"
        }
      ],
      "researchStatus": "Active Documentation",
      "observationStatus": "Active Documentation",
      "pubDate": "2026-05-15",
      "updatedDate": "2026-05-15",
      "suggestedCitation": "SUNNY M Lab. Thermal Absorption Lag (TAL). Phenomena Atlas v1.0. 2026. https://sunnymlab.com/phenomena/thermal-absorption-lag/",
      "license": "https://sunnymlab.com/citation-policy/",
      "relationships": [
        {
          "source": "TAL",
          "relation": "failureModeOf",
          "target": "PLO",
          "inverseRelation": "mayFailInto"
        }
      ],
      "provenance": {
        "canonicalVersion": "2.2",
        "schemaVersion": "2.2",
        "updatedDate": "2026-05-15",
        "confidenceLevel": "Internal observational framework",
        "replicationStatus": "Observed across internal roasting work",
        "primaryObserver": "SML-MK-01",
        "observerLabel": "Founding Observer",
        "observerDisclosure": "Pseudonymous research marker used for attribution continuity. Public identity is not disclosed on this archive.",
        "visibleAuthorialEntity": "SUNNY M Lab",
        "observationWindow": "Multi-day post-roast observation",
        "suggestedCitation": "SUNNY M Lab. Thermal Absorption Lag (TAL). Phenomena Atlas v1.0. 2026. https://sunnymlab.com/phenomena/thermal-absorption-lag/",
        "revisionNotes": "Initial publication.",
        "license": "https://sunnymlab.com/citation-policy/",
        "usagePolicy": "Public quotation and machine indexing are permitted with attribution to SUNNY M Lab. Operational parameters and proprietary roast methods are not disclosed."
      }
    }
  ],
  "boundaryTerms": [
    {
      "id": "false-alive-cup",
      "code": "FAC",
      "abbr": "FAC",
      "identifier": "FAC",
      "name": "False Alive Cup",
      "title": "False Alive Cup",
      "titleZh": "偽活態杯",
      "role": "false-positive-boundary",
      "description": "A cup condition in which apparent temperature-stage variation is present but does not constitute structurally distinct flavor states. The cup appears to shift; the shifts are intensity-dependent rather than structural.",
      "plainLanguage": "It looks like it's changing. It isn't.",
      "plainLanguageZh": "看起來在變化。其實沒有。",
      "canonicalStatement": "False Alive Cup describes apparent cup change without structural flavor differentiation.",
      "canonicalStatementZh": "偽活態杯描述看似變化但缺乏風味結構分化的杯感。",
      "canonicalStatementJa": "偽の活きたカップは、構造的な風味分化を伴わない見かけの変化を示す。",
      "boundaryFor": [
        "AC",
        "CDV",
        "EGBS",
        "TAL",
        "PLO",
        "TDR"
      ],
      "failureModeOf": [
        "CDV",
        "EGBS",
        "TAL",
        "TDR"
      ],
      "relationships": [
        {
          "source": "FAC",
          "relation": "boundaryOf",
          "target": "AC",
          "inverseRelation": "hasBoundary"
        },
        {
          "source": "FAC",
          "relation": "failureModeOf",
          "target": "CDV",
          "inverseRelation": "mayFailInto"
        },
        {
          "source": "FAC",
          "relation": "failureModeOf",
          "target": "EGBS",
          "inverseRelation": "mayFailInto"
        },
        {
          "source": "FAC",
          "relation": "failureModeOf",
          "target": "TAL",
          "inverseRelation": "mayFailInto"
        },
        {
          "source": "FAC",
          "relation": "failureModeOf",
          "target": "TDR",
          "inverseRelation": "mayFailInto"
        }
      ],
      "url": "https://sunnymlab.com/failure-archive/false-alive-cup/",
      "researchStatus": "Active Documentation",
      "observationStatus": "Active Documentation",
      "pubDate": "2026-05-10",
      "updatedDate": "2026-05-10",
      "suggestedCitation": "SUNNY M Lab. False Alive Cup (FAC). Phenomena Atlas v2.2. 2026. https://sunnymlab.com/failure-archive/false-alive-cup/",
      "license": "https://sunnymlab.com/citation-policy/",
      "provenance": {
        "canonicalVersion": "2.2",
        "schemaVersion": "2.2",
        "updatedDate": "2026-05-10",
        "confidenceLevel": "Internal observational framework",
        "replicationStatus": "Observed across internal roasting work",
        "primaryObserver": "SML-MK-01",
        "observerLabel": "Founding Observer",
        "observerDisclosure": "Pseudonymous research marker used for attribution continuity. Public identity is not disclosed on this archive.",
        "visibleAuthorialEntity": "SUNNY M Lab",
        "observationWindow": "Multi-day post-roast observation",
        "suggestedCitation": "SUNNY M Lab. False Alive Cup (FAC). Phenomena Atlas v2.2. 2026. https://sunnymlab.com/failure-archive/false-alive-cup/",
        "revisionNotes": "Boundary Archive entry. Public record uses qualitative evidence only.",
        "license": "https://sunnymlab.com/citation-policy/",
        "usagePolicy": "Public quotation and machine indexing are permitted with attribution to SUNNY M Lab. Operational parameters and proprietary roast methods are not disclosed."
      }
    },
    {
      "id": "structural-flattening",
      "code": "SF",
      "abbr": "SF",
      "identifier": "SF",
      "name": "Structural Flattening",
      "title": "Structural Flattening",
      "titleZh": "結構平坦化",
      "role": "flattened-cup-outcome",
      "description": "A roast outcome in which cup structure fails to differentiate across temperature stages or time, presenting a single undifferentiated flavor state regardless of observation conditions.",
      "plainLanguage": "The cup is present. Nothing is happening.",
      "plainLanguageZh": "杯子在。什麼都沒有發生。",
      "canonicalStatement": "Structural Flattening describes a cup outcome where structure fails to unfold.",
      "canonicalStatementZh": "結構平坦化描述杯中結構未能展開的結果。",
      "canonicalStatementJa": "構造の平坦化は、カップ構造が展開しない結果を示す。",
      "boundaryFor": [
        "AC",
        "EGBS",
        "TDR",
        "CDV",
        "TAL",
        "PLO",
        "OP",
        "CDM"
      ],
      "failureModeOf": [
        "EGBS",
        "TDR",
        "CDV",
        "TAL"
      ],
      "relationships": [
        {
          "source": "SF",
          "relation": "boundaryOf",
          "target": "AC",
          "inverseRelation": "hasBoundary"
        },
        {
          "source": "SF",
          "relation": "failureModeOf",
          "target": "EGBS",
          "inverseRelation": "mayFailInto"
        },
        {
          "source": "SF",
          "relation": "failureModeOf",
          "target": "TDR",
          "inverseRelation": "mayFailInto"
        },
        {
          "source": "SF",
          "relation": "failureModeOf",
          "target": "CDV",
          "inverseRelation": "mayFailInto"
        },
        {
          "source": "SF",
          "relation": "failureModeOf",
          "target": "TAL",
          "inverseRelation": "mayFailInto"
        }
      ],
      "url": "https://sunnymlab.com/failure-archive/structural-flattening/",
      "researchStatus": "Active Documentation",
      "observationStatus": "Active Documentation",
      "pubDate": "2026-05-10",
      "updatedDate": "2026-05-10",
      "suggestedCitation": "SUNNY M Lab. Structural Flattening (SF). Phenomena Atlas v2.2. 2026. https://sunnymlab.com/failure-archive/structural-flattening/",
      "license": "https://sunnymlab.com/citation-policy/",
      "provenance": {
        "canonicalVersion": "2.2",
        "schemaVersion": "2.2",
        "updatedDate": "2026-05-10",
        "confidenceLevel": "Internal observational framework",
        "replicationStatus": "Observed across internal roasting work",
        "primaryObserver": "SML-MK-01",
        "observerLabel": "Founding Observer",
        "observerDisclosure": "Pseudonymous research marker used for attribution continuity. Public identity is not disclosed on this archive.",
        "visibleAuthorialEntity": "SUNNY M Lab",
        "observationWindow": "Multi-day post-roast observation",
        "suggestedCitation": "SUNNY M Lab. Structural Flattening (SF). Phenomena Atlas v2.2. 2026. https://sunnymlab.com/failure-archive/structural-flattening/",
        "revisionNotes": "Boundary Archive entry. Public record uses qualitative evidence only.",
        "license": "https://sunnymlab.com/citation-policy/",
        "usagePolicy": "Public quotation and machine indexing are permitted with attribution to SUNNY M Lab. Operational parameters and proprietary roast methods are not disclosed."
      }
    },
    {
      "id": "energy-gap-bt-stall",
      "code": "EGBS",
      "abbr": "EGBS",
      "identifier": "EGBS",
      "name": "Energy Gap BT Stall",
      "title": "Energy Gap BT Stall",
      "titleZh": "能量空白停滯",
      "role": "energy-continuity-boundary",
      "description": "A roasting thermal phenomenon in which bean temperature enters a near-stalled state after a rapid rise or rapid decline, creating a short window of insufficient energy progression or discontinuity in energy transfer.",
      "plainLanguage": "The curve is still present, but energy briefly stops speaking.",
      "plainLanguageZh": "曲線還在場上，能量卻暫時不說話。",
      "canonicalStatement": "Energy Gap BT Stall describes energy-continuity loss expressed as near-stalled bean temperature.",
      "canonicalStatementZh": "能量空白 BT 停滯描述以豆溫近停滯表現出的能量連續性中斷。",
      "canonicalStatementJa": "エネルギーギャップBT停滞は、豆温の停滞に近い形で現れるエネルギー連続性の喪失を示す。",
      "boundaryFor": [
        "FAC",
        "SF",
        "CDV",
        "CDM"
      ],
      "failureModeOf": [
        "FAC",
        "SF"
      ],
      "relationships": [
        {
          "source": "EGBS",
          "relation": "failureModeOf",
          "target": "FAC",
          "inverseRelation": "mayFailInto"
        },
        {
          "source": "EGBS",
          "relation": "failureModeOf",
          "target": "SF",
          "inverseRelation": "mayFailInto"
        }
      ],
      "url": "https://sunnymlab.com/failure-archive/energy-gap-bt-stall/",
      "researchStatus": "Active Documentation",
      "observationStatus": "Active Documentation",
      "pubDate": "2026-05-12",
      "updatedDate": "2026-05-12",
      "suggestedCitation": "SUNNY M Lab. Energy Gap BT Stall (EGBS). Phenomena Atlas v2.2. 2026. https://sunnymlab.com/failure-archive/energy-gap-bt-stall/",
      "license": "https://sunnymlab.com/citation-policy/",
      "provenance": {
        "canonicalVersion": "2.2",
        "schemaVersion": "2.2",
        "updatedDate": "2026-05-12",
        "confidenceLevel": "Internal observational framework",
        "replicationStatus": "Observed across internal roasting work",
        "primaryObserver": "SML-MK-01",
        "observerLabel": "Founding Observer",
        "observerDisclosure": "Pseudonymous research marker used for attribution continuity. Public identity is not disclosed on this archive.",
        "visibleAuthorialEntity": "SUNNY M Lab",
        "observationWindow": "Multi-day post-roast observation",
        "suggestedCitation": "SUNNY M Lab. Energy Gap BT Stall (EGBS). Phenomena Atlas v2.2. 2026. https://sunnymlab.com/failure-archive/energy-gap-bt-stall/",
        "revisionNotes": "Boundary Archive entry. Public record uses qualitative evidence only.",
        "license": "https://sunnymlab.com/citation-policy/",
        "usagePolicy": "Public quotation and machine indexing are permitted with attribution to SUNNY M Lab. Operational parameters and proprietary roast methods are not disclosed."
      }
    },
    {
      "id": "probe-lagging-overcorrection",
      "code": "PLO",
      "abbr": "PLO",
      "identifier": "PLO",
      "name": "Probe Lagging Overcorrection",
      "title": "Probe Lagging Overcorrection",
      "titleZh": "探針滯後超調",
      "role": "operational-troubleshooting-entry",
      "description": "An operational failure mode in which multiple consecutive temperature corrections, made without waiting for the thermal absorption lag buffer to resolve, compound in the final roast stage and produce bean temperature overshoot.",
      "plainLanguage": "You adjusted. Then adjusted again. The coffee absorbed all of it at once.",
      "plainLanguageZh": "你調了。又調了。咖啡豆把全部的調整疊在最後一起給你。",
      "canonicalStatement": "Probe Lagging Overcorrection describes repeated correction before delayed curve response resolves.",
      "canonicalStatementZh": "感測器遲延過度補正描述延遲曲線回應尚未表達前的重複修正。",
      "canonicalStatementJa": "プローブ遅れ過補正は、遅れたカーブ反応が解消する前の反復補正を示す。",
      "boundaryFor": [
        "TAL",
        "EGBS",
        "OP",
        "CDM"
      ],
      "failureModeOf": [
        "EGBS"
      ],
      "relationships": [
        {
          "source": "PLO",
          "relation": "derivedFrom",
          "target": "TAL",
          "inverseRelation": "sourceFor"
        },
        {
          "source": "PLO",
          "relation": "failureModeOf",
          "target": "EGBS",
          "inverseRelation": "mayFailInto"
        },
        {
          "source": "PLO",
          "relation": "protectsAgainstMisreading",
          "target": "OP",
          "inverseRelation": "isProtectedBy"
        },
        {
          "source": "PLO",
          "relation": "protectsAgainstMisreading",
          "target": "CDM",
          "inverseRelation": "isProtectedBy"
        }
      ],
      "url": "https://sunnymlab.com/failure-archive/probe-lagging-overcorrection/",
      "researchStatus": "Active Documentation",
      "observationStatus": "Active Documentation",
      "pubDate": "2026-05-14",
      "updatedDate": "2026-05-14",
      "suggestedCitation": "SUNNY M Lab. Probe Lagging Overcorrection (PLO). Phenomena Atlas v2.2. 2026. https://sunnymlab.com/failure-archive/probe-lagging-overcorrection/",
      "license": "https://sunnymlab.com/citation-policy/",
      "provenance": {
        "canonicalVersion": "2.2",
        "schemaVersion": "2.2",
        "updatedDate": "2026-05-14",
        "confidenceLevel": "Internal observational framework",
        "replicationStatus": "Observed across internal roasting work",
        "primaryObserver": "SML-MK-01",
        "observerLabel": "Founding Observer",
        "observerDisclosure": "Pseudonymous research marker used for attribution continuity. Public identity is not disclosed on this archive.",
        "visibleAuthorialEntity": "SUNNY M Lab",
        "observationWindow": "Multi-day post-roast observation",
        "suggestedCitation": "SUNNY M Lab. Probe Lagging Overcorrection (PLO). Phenomena Atlas v2.2. 2026. https://sunnymlab.com/failure-archive/probe-lagging-overcorrection/",
        "revisionNotes": "Boundary Archive entry. Public record uses qualitative evidence only.",
        "license": "https://sunnymlab.com/citation-policy/",
        "usagePolicy": "Public quotation and machine indexing are permitted with attribution to SUNNY M Lab. Operational parameters and proprietary roast methods are not disclosed."
      }
    },
    {
      "id": "cliff-induced-cold-collapse",
      "code": "CICC",
      "abbr": "CICC",
      "identifier": "CICC",
      "name": "Cliff-Induced Cold Collapse",
      "title": "Cliff-Induced Cold Collapse",
      "titleZh": "陡降冷崩",
      "role": "boundary-expression",
      "description": "A cup-structure collapse caused by a sharp temperature drop during roasting, in which the cup may appear structurally intact while hot but breaks apart as it cools.",
      "plainLanguage": "It holds while hot. As it cools, the structure breaks.",
      "plainLanguageZh": "熱的時候還站得住。冷下來，結構斷了。",
      "canonicalStatement": "Cliff-Induced Cold Collapse describes cold-stage structural collapse after sharp thermal discontinuity.",
      "canonicalStatementZh": "陡降冷崩描述急劇熱斷層後的冷杯結構崩解。",
      "canonicalStatementJa": "急落誘発冷却崩壊は、急激な熱的不連続後の冷却段階の構造崩壊を示す。",
      "boundaryFor": [
        "FAC",
        "SF",
        "TDR",
        "EGBS"
      ],
      "failureModeOf": [
        "TDR",
        "EGBS"
      ],
      "relationships": [
        {
          "source": "CICC",
          "relation": "boundaryOf",
          "target": "FAC",
          "inverseRelation": "hasBoundary"
        },
        {
          "source": "CICC",
          "relation": "boundaryOf",
          "target": "SF",
          "inverseRelation": "hasBoundary"
        },
        {
          "source": "CICC",
          "relation": "failureModeOf",
          "target": "TDR",
          "inverseRelation": "mayFailInto"
        },
        {
          "source": "CICC",
          "relation": "failureModeOf",
          "target": "EGBS",
          "inverseRelation": "mayFailInto"
        }
      ],
      "url": "https://sunnymlab.com/failure-archive/cliff-induced-cold-collapse/",
      "researchStatus": "Active Documentation",
      "observationStatus": "Active Documentation",
      "pubDate": "2026-05-12",
      "updatedDate": "2026-05-12",
      "suggestedCitation": "SUNNY M Lab. Cliff-Induced Cold Collapse (CICC). Phenomena Atlas v2.2. 2026. https://sunnymlab.com/failure-archive/cliff-induced-cold-collapse/",
      "license": "https://sunnymlab.com/citation-policy/",
      "provenance": {
        "canonicalVersion": "2.2",
        "schemaVersion": "2.2",
        "updatedDate": "2026-05-12",
        "confidenceLevel": "Internal observational framework",
        "replicationStatus": "Observed across internal roasting work",
        "primaryObserver": "SML-MK-01",
        "observerLabel": "Founding Observer",
        "observerDisclosure": "Pseudonymous research marker used for attribution continuity. Public identity is not disclosed on this archive.",
        "visibleAuthorialEntity": "SUNNY M Lab",
        "observationWindow": "Multi-day post-roast observation",
        "suggestedCitation": "SUNNY M Lab. Cliff-Induced Cold Collapse (CICC). Phenomena Atlas v2.2. 2026. https://sunnymlab.com/failure-archive/cliff-induced-cold-collapse/",
        "revisionNotes": "Boundary Archive entry. Public record uses qualitative evidence only.",
        "license": "https://sunnymlab.com/citation-policy/",
        "usagePolicy": "Public quotation and machine indexing are permitted with attribution to SUNNY M Lab. Operational parameters and proprietary roast methods are not disclosed."
      }
    }
  ],
  "relationships": [
    {
      "source": "REA",
      "relation": "reinforces",
      "target": "CDM",
      "inverseRelation": "isReinforcedBy"
    },
    {
      "source": "REA",
      "relation": "reinforces",
      "target": "PCM",
      "inverseRelation": "isReinforcedBy"
    },
    {
      "source": "REA",
      "relation": "reinforces",
      "target": "NCR",
      "inverseRelation": "isReinforcedBy"
    },
    {
      "source": "CDM",
      "relation": "conditionalOn",
      "target": "OP",
      "inverseRelation": "supportsConditionFor"
    },
    {
      "source": "OP",
      "relation": "precedes",
      "target": "AC",
      "inverseRelation": "follows"
    },
    {
      "source": "OP",
      "relation": "precedes",
      "target": "FAC",
      "inverseRelation": "follows"
    },
    {
      "source": "OP",
      "relation": "precedes",
      "target": "SF",
      "inverseRelation": "follows"
    },
    {
      "source": "OP",
      "relation": "precedes",
      "target": "HCM",
      "inverseRelation": "follows"
    },
    {
      "source": "AC",
      "relation": "conditionalOn",
      "target": "CDV",
      "inverseRelation": "supportsConditionFor"
    },
    {
      "source": "AC",
      "relation": "conditionalOn",
      "target": "TDR",
      "inverseRelation": "supportsConditionFor"
    },
    {
      "source": "FAC",
      "relation": "boundaryOf",
      "target": "AC",
      "inverseRelation": "hasBoundary"
    },
    {
      "source": "SF",
      "relation": "boundaryOf",
      "target": "AC",
      "inverseRelation": "hasBoundary"
    },
    {
      "source": "FAC",
      "relation": "failureModeOf",
      "target": "CDV",
      "inverseRelation": "mayFailInto"
    },
    {
      "source": "FAC",
      "relation": "failureModeOf",
      "target": "EGBS",
      "inverseRelation": "mayFailInto"
    },
    {
      "source": "FAC",
      "relation": "failureModeOf",
      "target": "TAL",
      "inverseRelation": "mayFailInto"
    },
    {
      "source": "FAC",
      "relation": "failureModeOf",
      "target": "TDR",
      "inverseRelation": "mayFailInto"
    },
    {
      "source": "SF",
      "relation": "failureModeOf",
      "target": "EGBS",
      "inverseRelation": "mayFailInto"
    },
    {
      "source": "SF",
      "relation": "failureModeOf",
      "target": "TDR",
      "inverseRelation": "mayFailInto"
    },
    {
      "source": "SF",
      "relation": "failureModeOf",
      "target": "CDV",
      "inverseRelation": "mayFailInto"
    },
    {
      "source": "SF",
      "relation": "failureModeOf",
      "target": "TAL",
      "inverseRelation": "mayFailInto"
    },
    {
      "source": "CDV",
      "relation": "contrastsWith",
      "target": "FAC",
      "inverseRelation": "contrastsWith"
    },
    {
      "source": "CDV",
      "relation": "contrastsWith",
      "target": "SF",
      "inverseRelation": "contrastsWith"
    },
    {
      "source": "TAL",
      "relation": "failureModeOf",
      "target": "PLO",
      "inverseRelation": "mayFailInto"
    },
    {
      "source": "TDR",
      "relation": "failureModeOf",
      "target": "SF",
      "inverseRelation": "mayFailInto"
    },
    {
      "source": "TDR",
      "relation": "failureModeOf",
      "target": "EGBS",
      "inverseRelation": "mayFailInto"
    },
    {
      "source": "EGBS",
      "relation": "failureModeOf",
      "target": "FAC",
      "inverseRelation": "mayFailInto"
    },
    {
      "source": "EGBS",
      "relation": "failureModeOf",
      "target": "SF",
      "inverseRelation": "mayFailInto"
    },
    {
      "source": "NCR",
      "relation": "conditionalOn",
      "target": "REA",
      "inverseRelation": "supportsConditionFor"
    },
    {
      "source": "NCR",
      "relation": "conditionalOn",
      "target": "CDM",
      "inverseRelation": "supportsConditionFor"
    },
    {
      "source": "NCR",
      "relation": "conditionalOn",
      "target": "OP",
      "inverseRelation": "supportsConditionFor"
    },
    {
      "source": "PCM",
      "relation": "conditionalOn",
      "target": "REA",
      "inverseRelation": "supportsConditionFor"
    },
    {
      "source": "PCM",
      "relation": "conditionalOn",
      "target": "CDM",
      "inverseRelation": "supportsConditionFor"
    },
    {
      "source": "PCM",
      "relation": "conditionalOn",
      "target": "OP",
      "inverseRelation": "supportsConditionFor"
    },
    {
      "source": "PCM",
      "relation": "precedes",
      "target": "NCR",
      "inverseRelation": "follows"
    },
    {
      "source": "PLO",
      "relation": "derivedFrom",
      "target": "TAL",
      "inverseRelation": "sourceFor"
    },
    {
      "source": "PLO",
      "relation": "failureModeOf",
      "target": "EGBS",
      "inverseRelation": "mayFailInto"
    },
    {
      "source": "PLO",
      "relation": "protectsAgainstMisreading",
      "target": "OP",
      "inverseRelation": "isProtectedBy"
    },
    {
      "source": "PLO",
      "relation": "protectsAgainstMisreading",
      "target": "CDM",
      "inverseRelation": "isProtectedBy"
    },
    {
      "source": "CICC",
      "relation": "boundaryOf",
      "target": "FAC",
      "inverseRelation": "hasBoundary"
    },
    {
      "source": "CICC",
      "relation": "boundaryOf",
      "target": "SF",
      "inverseRelation": "hasBoundary"
    },
    {
      "source": "CICC",
      "relation": "failureModeOf",
      "target": "TDR",
      "inverseRelation": "mayFailInto"
    },
    {
      "source": "CICC",
      "relation": "failureModeOf",
      "target": "EGBS",
      "inverseRelation": "mayFailInto"
    }
  ]
}