Design System Reverse Engineering
Use this skill to infer a project-specific design system from existing code, design artifacts, and
knowledge bases, then publish outputs in Adobe Spectrum's structural taxonomy.
Non-negotiable constraints
- Treat Adobe Spectrum as a structure reference only.
- Derive all project rules from project evidence (code, design assets, documentation).
- Maintain deterministic pipelines with explicit finite states.
- Keep missing values explicit as
unknown or na; do not leave semantic gaps as blank.
- Record evidence links for every decision.
- Intent over implementation: design intent (why) takes precedence over implementation facts
(what). When intent and implementation diverge, flag the divergence and treat intent as
authoritative.
Source truth hierarchy
Sources are classified into intent sources (design meaning and purpose) and fact sources
(implementation reality). Intent sources have higher authority for design system documentation.
| Priority |
Source Type |
Authority |
Role |
| 1 (highest) |
Knowledge bases (Notion, docs) with MUST/SHOULD rules |
Design intent |
Product requirements and design constraints that govern all other decisions |
| 2 |
Design files (Figma) with annotations and structure |
Design intent |
Designer's structural decisions, visual semantics, and component relationships |
| 3 |
Architecture Decision Records (ADR) |
Technical intent |
Rationale for how intent is realized in code; bridges intent and implementation |
| 4 (lowest) |
Code implementation |
Implementation fact |
Current state of the codebase; used for validation, not as source of truth |
Rules:
- A code-only observation without intent backing is an implementation detail, not a design rule.
- A Notion/Figma observation without code backing is a design intent gap to be flagged, not
dismissed.
- When Notion MUST rules and code implementation conflict, the Notion rule is authoritative and the
code is flagged for remediation.
evidence_level classifies evidence reliability; source_truth_priority classifies authority for
design decisions. Both are tracked independently.
Architecture principles
- Declarative
- Self-describing
- Deterministic
- Explicit State
- Finite State
- Self-documenting
- Exhaustive
- Predictable
Required structure contract (Adobe Spectrum)
Principles
Foundation
design_tokens
platform_scale
theming
color
typography
object_styles
motion
states
iconography
illustration
inclusive_design
international_design
bi_directionality
data_visualization
Content
voice_and_tone
grammar_and_mechanics
language_and_inclusivity
inclusive_ux_writing
writing_about_people
writing_for_readability
writing_with_visuals
in_product_word_list
writing_for_errors
writing_for_onboarding
Inputs
Collect inputs into a single registry CSV first:
source_type
source_locator
source_section
evidence_level
priority
notes
All six columns are required. During normalization, blank source_section becomes unknown, blank
evidence_level and notes become na, and priority must be one of high, medium, or low.
Unsupported finite values make the row invalid with an explicit reason.
Start from assets/source-registry.template.csv and adapt per project.
Resource roles:
- Use
assets/foundation-observation-schema.template.csv when structuring Foundation observations.
- Use
assets/content-observation-schema.template.csv when structuring Content observations.
- Use
assets/spectrum-taxonomy.yaml when validating the final Spectrum structure mapping.
- Load
references/unified-modeling-theory.md and references/unified-modeling-practice.md only
when the task explicitly needs cross-layer domain, information-architecture, and design-system
modeling.
Data intake and normalization
- Ingest all source locators into one registry table.
- Normalize locators into machine-joinable identifiers.
- Validate required fields and supported source types.
- Deduplicate using deterministic canonical keys.
- Split invalid and duplicate rows into separate audit files.
- Freeze queue order before extraction.
Resolve two absolute bases before running the normalizer:
SKILL_ROOT: this skill directory; bundled scripts and assets resolve here.
WORKSPACE_ROOT: the repository or project being analyzed; generated inventory resolves here.
Only these two bases may be used. Pass relative --input and --out-dir values; the script rejects
absolute paths and .. traversal. Existing output files are not replaced unless --overwrite is
explicitly present.
Run:
python "$SKILL_ROOT/scripts/normalize_sources.py" \
--workspace-root "$WORKSPACE_ROOT" \
--input-scope skill \
--input assets/source-registry.template.csv \
--out-dir design-system-inventory/intake
Generated files:
normalized.csv
duplicates.csv
invalid.csv
summary.json
Finite states
Evidence lifecycle:
S0 Candidate
S1 Extracted
S2 Structured
S3a StructureValidated
S3b ContentValidated
S4 Approved
Allowed transitions:
S0 -> S1 -> S2 -> S3a -> S3b -> S4
- Do not skip states.
Execution flow
For work spanning multiple sources or more than one extraction phase, report a compact progress
update after Phase 0.5 and after each completed numbered phase. State the completed phase, artifact
paths, invalid or unresolved counts, and the next phase. Do not emit progress updates inside a short
single-phase task.
Phase 0: Input Freeze
- Freeze source scope (code, design, docs, operations records).
- Freeze branch/commit and extraction window.
- Define priority scope.
Phase 0.5: Deterministic Intake
- Normalize all source locators.
- Generate canonical keys and queue order.
- Isolate
invalid rows with explicit reasons.
- Persist duplicate logs.
Phase 1: Code Reverse Engineering
- Extract Foundation, Content, and Components observations from implementation.
- Keep line-level evidence references (
path:line).
- Mark non-applicable entries with reasons.
Phase 1.5: Knowledge Reverse Engineering
- Extract rules from documentation/knowledge sources.
- Separate first-class evidence from secondary evidence.
- Map statements into Foundation/Content/Components/Operations candidates.
Phase 2: Design Reverse Engineering
- Extract observations from design files (nodes, styles, variants, states).
- Normalize design node identifiers before extraction.
- Keep raw-response references and extraction parameters.
Phase 2.5: Foundation Schema Fixing
- Harmonize code/design/knowledge observations into one Foundation schema.
- Enforce conditional required fields by source type.
- Compute
identity_key and merge_key.
Phase 2.6: Layout Abstraction (Grid System x Canonical Layout)
- Separate
Grid System as the abstract layer and Canonical Layout as the concrete layer.
- Treat Material Design 2 layout grid as axis definitions only
(
columns/gutters/margins/container); never copy values directly.
- Treat Material Design 3 understanding-layout guidance as the layout behavior baseline; derive
concrete canonical templates from project evidence plus platform canonical references.
- Fix abstract observation axes to
columns, gutter, margin, container_max_width.
- Fix concrete observation axes to
layout_id, primary_regions, pane_count, navigation_mode,
transition_rule.
- Require
canonical_layout -> grid_rule_set_id linkage so concrete rules always reference abstract
rules.
- For abstract grid measurement, observe code evidence from
theme.breakpoints.values,
theme.spacing, maxWidth, padding, margin, gap, grid-template-columns, and
flex-basis.
- For abstract grid measurement, observe design evidence from Grid, Auto Layout, and Constraints
settings.
- Keep evidence references as
path:line for code and source_url + node_id for design.
- For canonical extraction, infer regions and pane transitions by responsibility plus window-size
class/breakpoint transitions.
- Promote a canonical candidate only when at least two independent screens reproduce the same
responsibility pattern.
- Build
grid_rule_set candidates per viewport bucket and rank canonical_layout candidates by
coverage, state completeness, and code/design agreement.
- Record unresolved conflicts as
layout_mismatch (abstract conflict) or canonical_mismatch
(concrete conflict) and route to conflict resolution.
- Validate by reapplying
canonical_layout + grid_rule_set to representative screens and log
layout-diff rows.
- Any residual diff must include
exception_reason or rule_set_split; no silent exceptions.
- Track layout abstraction state transitions explicitly:
LA0 RawObserved
LA1 GridMeasured
LA2 CanonicalHypothesized
LA3 Linked
LA4 Validated
LA5 Adopted
Phase 2.7: Content Schema Fixing
- Harmonize text and writing observations into one Content schema.
- Preserve state, audience, and language/inclusivity subtopics.
- Enforce per-element required keys.
Phase 2.8: Style Reverse Engineering
- Build a multi-source text corpus.
- Apply deterministic text normalization rules.
- Infer voice/tone, grammar/mechanics, inclusivity patterns.
- Log all style conflicts explicitly.
Phase 3: Principles Inference
- Infer project-specific principles from recurring evidence.
- Require counter-evidence checks before approval.
- For every conflict, record
conflict_type and resolve_action.
Phase 4: Structure Mapping
- Map all approved observations to Spectrum structure.
- Keep structure-fit and content-validity as separate fields.
- Keep unclassified records only with explicit reasons.
Phase 5: Gap and Decision
- Compute missing, duplicate, and conflicting rules.
- Record adoption decision (
adopt, defer, reject) with evidence.
Phase 6: Documentation
Publish intent-first design system documentation. Every section follows the Intent → Rule →
Evidence structure, not the reverse.
6.1 Intent-first section structure
Each Foundation element, Content element, and Component category must be documented in this order:
- Design Intent (Why) — The design purpose derived from priority-1/2 sources (Notion MUST
rules, Figma structure). Answers "why does this exist?" and "what problem does it solve for
users?"
- Usage Guidelines (When) — Do/Don't rules that tell practitioners when to use and when not to
use. Derived from intent + cross-source conflict resolutions.
- Token/Rule Specification (What) — The concrete values, scales, and schemas. Derived from all
sources, validated against intent.
- Evidence — Source pills indicating which sources support each rule, with priority-tagged
references.
Anti-pattern: listing implementation facts (token values, component props) without explaining why
they exist or when to use them.
6.2 Source attribution
Every rule and intent statement must include source attribution using source pills:
[Notion] for knowledge base / MUST/SHOULD rules (priority 1)
[Figma] for design file observations (priority 2)
[ADR] for architecture decision records (priority 3)
[Code] for implementation evidence (priority 4)
When a rule is supported by multiple sources, list all with their priorities. When only code
evidence exists, explicitly flag it as "implementation-only, intent unverified."
6.3 Connecting Principles to specifics
Each Principle must include:
- A "Why" block explaining the product requirement or design constraint it serves
- Connection links to the specific Foundation elements, Components, and Content rules it governs
- MUST rule references (if applicable) that this principle derives from
6.4 Divergence documentation
When intent (Notion/Figma) and implementation (code) diverge:
- Document the intent as the authoritative rule
- Flag the implementation as a known gap
- Include remediation guidance where possible
Publish:
design-system/principles.md
design-system/foundation.md
design-system/content.md
Output requirements
- Output structure must remain
Principles/Foundation/Content.
- Every section must lead with design intent (why), not implementation facts (what).
- Include evidence links for every normative rule, with source truth priority visible.
- Keep structure references and project-content evidence separated.
- Keep conflict logs and decision logs as first-class deliverables.
- Include layout abstraction artifacts as first-class outputs:
design-system-inventory/layout-grid-observations.csv
design-system-inventory/layout-grid-rules.csv
design-system-inventory/canonical-layout-observations.csv
design-system-inventory/canonical-layout-rules.csv
design-system-inventory/layout-abstraction-validation.csv
design-system-inventory/layout-abstraction-rulebook.md
Validation checklist
- Every Foundation element has an observed row or explicit non-applicable reason.
- Every Content element has an observed row or explicit non-applicable reason.
language_and_inclusivity includes all four subtopics.
- No approved rule is justified by secondary evidence only.
- No direct copy of Spectrum prose into project principles.
layout-grid-observations.csv rows always include viewport_bucket, columns, gutter,
margin, container_max_width, and evidence_ref.
layout-grid-rules.csv rules always include at least one code evidence and one figma
evidence; single-source rules remain pending.
canonical-layout-rules.csv rows always include layout_id, primary_regions, pane_count,
navigation_mode, transition_rule, and grid_rule_set_id.
layout-abstraction-validation.csv diff rows always include either conflict_type
(layout_mismatch or canonical_mismatch) or resolve_action.
- All pending conflicts have owners and statuses.
Load references/REFERENCE.md when defining schemas, canonical keys, state transitions, output
packages, or the final definition of done.
1---2name: design-system-reverse-engineering3description: Reverse-engineers existing implementations, design files, and documentation into a reusable design system while preserving Adobe Spectrum's Principles/Foundation/Content structure. Use when users ask to derive design rules from legacy projects, normalize heterogeneous inputs, and produce evidence-based design system documentation.4---56# Design System Reverse Engineering78Use this skill to infer a project-specific design system from existing code, design artifacts, and9knowledge bases, then publish outputs in Adobe Spectrum's structural taxonomy.1011## Non-negotiable constraints1213- Treat Adobe Spectrum as a structure reference only.14- Derive all project rules from project evidence (code, design assets, documentation).15- Maintain deterministic pipelines with explicit finite states.16- Keep missing values explicit as `unknown` or `na`; do not leave semantic gaps as blank.17- Record evidence links for every decision.18- **Intent over implementation**: design intent (why) takes precedence over implementation facts19 (what). When intent and implementation diverge, flag the divergence and treat intent as20 authoritative.2122## Source truth hierarchy2324Sources are classified into **intent sources** (design meaning and purpose) and **fact sources**25(implementation reality). Intent sources have higher authority for design system documentation.2627| Priority | Source Type | Authority | Role |28| ----------- | ----------------------------------------------------- | ----------------------- | ------------------------------------------------------------------------------- |29| 1 (highest) | Knowledge bases (Notion, docs) with MUST/SHOULD rules | **Design intent** | Product requirements and design constraints that govern all other decisions |30| 2 | Design files (Figma) with annotations and structure | **Design intent** | Designer's structural decisions, visual semantics, and component relationships |31| 3 | Architecture Decision Records (ADR) | **Technical intent** | Rationale for how intent is realized in code; bridges intent and implementation |32| 4 (lowest) | Code implementation | **Implementation fact** | Current state of the codebase; used for validation, not as source of truth |3334Rules:3536- A code-only observation without intent backing is an **implementation detail**, not a design rule.37- A Notion/Figma observation without code backing is a **design intent gap** to be flagged, not38 dismissed.39- When Notion MUST rules and code implementation conflict, the Notion rule is authoritative and the40 code is flagged for remediation.41- `evidence_level` classifies evidence reliability; `source_truth_priority` classifies authority for42 design decisions. Both are tracked independently.4344## Architecture principles45461. Declarative472. Self-describing483. Deterministic494. Explicit State505. Finite State516. Self-documenting527. Exhaustive538. Predictable5455## Required structure contract (Adobe Spectrum)5657- `Principles`58- `Foundation`59 - `design_tokens`60 - `platform_scale`61 - `theming`62 - `color`63 - `typography`64 - `object_styles`65 - `motion`66 - `states`67 - `iconography`68 - `illustration`69 - `inclusive_design`70 - `international_design`71 - `bi_directionality`72 - `data_visualization`73- `Content`74 - `voice_and_tone`75 - `grammar_and_mechanics`76 - `language_and_inclusivity`77 - `inclusive_ux_writing`78 - `writing_about_people`79 - `writing_for_readability`80 - `writing_with_visuals`81 - `in_product_word_list`82 - `writing_for_errors`83 - `writing_for_onboarding`8485## Inputs8687Collect inputs into a single registry CSV first:8889- `source_type`90- `source_locator`91- `source_section`92- `evidence_level`93- `priority`94- `notes`9596All six columns are required. During normalization, blank `source_section` becomes `unknown`, blank97`evidence_level` and `notes` become `na`, and `priority` must be one of `high`, `medium`, or `low`.98Unsupported finite values make the row `invalid` with an explicit reason.99100Start from `assets/source-registry.template.csv` and adapt per project.101102Resource roles:103104- Use `assets/foundation-observation-schema.template.csv` when structuring Foundation observations.105- Use `assets/content-observation-schema.template.csv` when structuring Content observations.106- Use `assets/spectrum-taxonomy.yaml` when validating the final Spectrum structure mapping.107- Load `references/unified-modeling-theory.md` and `references/unified-modeling-practice.md` only108 when the task explicitly needs cross-layer domain, information-architecture, and design-system109 modeling.110111## Data intake and normalization1121131. Ingest all source locators into one registry table.1142. Normalize locators into machine-joinable identifiers.1153. Validate required fields and supported source types.1164. Deduplicate using deterministic canonical keys.1175. Split invalid and duplicate rows into separate audit files.1186. Freeze queue order before extraction.119120Resolve two absolute bases before running the normalizer:121122- `SKILL_ROOT`: this skill directory; bundled scripts and assets resolve here.123- `WORKSPACE_ROOT`: the repository or project being analyzed; generated inventory resolves here.124125Only these two bases may be used. Pass relative `--input` and `--out-dir` values; the script rejects126absolute paths and `..` traversal. Existing output files are not replaced unless `--overwrite` is127explicitly present.128129Run:130131```bash132python "$SKILL_ROOT/scripts/normalize_sources.py" \133 --workspace-root "$WORKSPACE_ROOT" \134 --input-scope skill \135 --input assets/source-registry.template.csv \136 --out-dir design-system-inventory/intake137```138139Generated files:140141- `normalized.csv`142- `duplicates.csv`143- `invalid.csv`144- `summary.json`145146## Finite states147148Evidence lifecycle:149150- `S0 Candidate`151- `S1 Extracted`152- `S2 Structured`153- `S3a StructureValidated`154- `S3b ContentValidated`155- `S4 Approved`156157Allowed transitions:158159- `S0 -> S1 -> S2 -> S3a -> S3b -> S4`160- Do not skip states.161162## Execution flow163164For work spanning multiple sources or more than one extraction phase, report a compact progress165update after Phase 0.5 and after each completed numbered phase. State the completed phase, artifact166paths, invalid or unresolved counts, and the next phase. Do not emit progress updates inside a short167single-phase task.168169### Phase 0: Input Freeze170171- Freeze source scope (code, design, docs, operations records).172- Freeze branch/commit and extraction window.173- Define priority scope.174175### Phase 0.5: Deterministic Intake176177- Normalize all source locators.178- Generate canonical keys and queue order.179- Isolate `invalid` rows with explicit reasons.180- Persist duplicate logs.181182### Phase 1: Code Reverse Engineering183184- Extract Foundation, Content, and Components observations from implementation.185- Keep line-level evidence references (`path:line`).186- Mark non-applicable entries with reasons.187188### Phase 1.5: Knowledge Reverse Engineering189190- Extract rules from documentation/knowledge sources.191- Separate first-class evidence from secondary evidence.192- Map statements into Foundation/Content/Components/Operations candidates.193194### Phase 2: Design Reverse Engineering195196- Extract observations from design files (nodes, styles, variants, states).197- Normalize design node identifiers before extraction.198- Keep raw-response references and extraction parameters.199200### Phase 2.5: Foundation Schema Fixing201202- Harmonize code/design/knowledge observations into one Foundation schema.203- Enforce conditional required fields by source type.204- Compute `identity_key` and `merge_key`.205206### Phase 2.6: Layout Abstraction (Grid System x Canonical Layout)207208- Separate `Grid System` as the abstract layer and `Canonical Layout` as the concrete layer.209- Treat Material Design 2 layout grid as axis definitions only210 (`columns/gutters/margins/container`); never copy values directly.211- Treat Material Design 3 understanding-layout guidance as the layout behavior baseline; derive212 concrete canonical templates from project evidence plus platform canonical references.213- Fix abstract observation axes to `columns`, `gutter`, `margin`, `container_max_width`.214- Fix concrete observation axes to `layout_id`, `primary_regions`, `pane_count`, `navigation_mode`,215 `transition_rule`.216- Require `canonical_layout -> grid_rule_set_id` linkage so concrete rules always reference abstract217 rules.218- For abstract grid measurement, observe code evidence from `theme.breakpoints.values`,219 `theme.spacing`, `maxWidth`, `padding`, `margin`, `gap`, `grid-template-columns`, and220 `flex-basis`.221- For abstract grid measurement, observe design evidence from Grid, Auto Layout, and Constraints222 settings.223- Keep evidence references as `path:line` for code and `source_url + node_id` for design.224- For canonical extraction, infer regions and pane transitions by responsibility plus window-size225 class/breakpoint transitions.226- Promote a canonical candidate only when at least two independent screens reproduce the same227 responsibility pattern.228- Build `grid_rule_set` candidates per viewport bucket and rank `canonical_layout` candidates by229 coverage, state completeness, and code/design agreement.230- Record unresolved conflicts as `layout_mismatch` (abstract conflict) or `canonical_mismatch`231 (concrete conflict) and route to conflict resolution.232- Validate by reapplying `canonical_layout + grid_rule_set` to representative screens and log233 `layout-diff` rows.234- Any residual diff must include `exception_reason` or `rule_set_split`; no silent exceptions.235- Track layout abstraction state transitions explicitly:236 - `LA0 RawObserved`237 - `LA1 GridMeasured`238 - `LA2 CanonicalHypothesized`239 - `LA3 Linked`240 - `LA4 Validated`241 - `LA5 Adopted`242243### Phase 2.7: Content Schema Fixing244245- Harmonize text and writing observations into one Content schema.246- Preserve state, audience, and language/inclusivity subtopics.247- Enforce per-element required keys.248249### Phase 2.8: Style Reverse Engineering250251- Build a multi-source text corpus.252- Apply deterministic text normalization rules.253- Infer voice/tone, grammar/mechanics, inclusivity patterns.254- Log all style conflicts explicitly.255256### Phase 3: Principles Inference257258- Infer project-specific principles from recurring evidence.259- Require counter-evidence checks before approval.260- For every conflict, record `conflict_type` and `resolve_action`.261262### Phase 4: Structure Mapping263264- Map all approved observations to Spectrum structure.265- Keep structure-fit and content-validity as separate fields.266- Keep unclassified records only with explicit reasons.267268### Phase 5: Gap and Decision269270- Compute missing, duplicate, and conflicting rules.271- Record adoption decision (`adopt`, `defer`, `reject`) with evidence.272273### Phase 6: Documentation274275Publish intent-first design system documentation. Every section follows the **Intent → Rule →276Evidence** structure, not the reverse.277278#### 6.1 Intent-first section structure279280Each Foundation element, Content element, and Component category must be documented in this order:2812821. **Design Intent** (Why) — The design purpose derived from priority-1/2 sources (Notion MUST283 rules, Figma structure). Answers "why does this exist?" and "what problem does it solve for284 users?"2852. **Usage Guidelines** (When) — Do/Don't rules that tell practitioners when to use and when not to286 use. Derived from intent + cross-source conflict resolutions.2873. **Token/Rule Specification** (What) — The concrete values, scales, and schemas. Derived from all288 sources, validated against intent.2894. **Evidence** — Source pills indicating which sources support each rule, with priority-tagged290 references.291292Anti-pattern: listing implementation facts (token values, component props) without explaining why293they exist or when to use them.294295#### 6.2 Source attribution296297Every rule and intent statement must include source attribution using source pills:298299- `[Notion]` for knowledge base / MUST/SHOULD rules (priority 1)300- `[Figma]` for design file observations (priority 2)301- `[ADR]` for architecture decision records (priority 3)302- `[Code]` for implementation evidence (priority 4)303304When a rule is supported by multiple sources, list all with their priorities. When only code305evidence exists, explicitly flag it as "implementation-only, intent unverified."306307#### 6.3 Connecting Principles to specifics308309Each Principle must include:310311- A **"Why" block** explaining the product requirement or design constraint it serves312- **Connection links** to the specific Foundation elements, Components, and Content rules it governs313- **MUST rule references** (if applicable) that this principle derives from314315#### 6.4 Divergence documentation316317When intent (Notion/Figma) and implementation (code) diverge:318319- Document the intent as the authoritative rule320- Flag the implementation as a known gap321- Include remediation guidance where possible322323Publish:324325- `design-system/principles.md`326- `design-system/foundation.md`327- `design-system/content.md`328329## Output requirements330331- Output structure must remain `Principles/Foundation/Content`.332- **Every section must lead with design intent (why), not implementation facts (what).**333- Include evidence links for every normative rule, with source truth priority visible.334- Keep structure references and project-content evidence separated.335- Keep conflict logs and decision logs as first-class deliverables.336- Include layout abstraction artifacts as first-class outputs:337 - `design-system-inventory/layout-grid-observations.csv`338 - `design-system-inventory/layout-grid-rules.csv`339 - `design-system-inventory/canonical-layout-observations.csv`340 - `design-system-inventory/canonical-layout-rules.csv`341 - `design-system-inventory/layout-abstraction-validation.csv`342 - `design-system-inventory/layout-abstraction-rulebook.md`343344## Validation checklist345346- Every Foundation element has an observed row or explicit non-applicable reason.347- Every Content element has an observed row or explicit non-applicable reason.348- `language_and_inclusivity` includes all four subtopics.349- No approved rule is justified by secondary evidence only.350- No direct copy of Spectrum prose into project principles.351- `layout-grid-observations.csv` rows always include `viewport_bucket`, `columns`, `gutter`,352 `margin`, `container_max_width`, and `evidence_ref`.353- `layout-grid-rules.csv` rules always include at least one `code` evidence and one `figma`354 evidence; single-source rules remain `pending`.355- `canonical-layout-rules.csv` rows always include `layout_id`, `primary_regions`, `pane_count`,356 `navigation_mode`, `transition_rule`, and `grid_rule_set_id`.357- `layout-abstraction-validation.csv` diff rows always include either `conflict_type`358 (`layout_mismatch` or `canonical_mismatch`) or `resolve_action`.359- All pending conflicts have owners and statuses.360361Load `references/REFERENCE.md` when defining schemas, canonical keys, state transitions, output362packages, or the final definition of done.