SPECIFICATION

DASH Schema Versioning Policy

문서 버전: 1.0.0 | 최초 작성: 2026-03-26

원칙

DASH.md 스키마는 [Semantic Versioning](https://semver.org/)을 따릅니다.

DASH-schema-vMAJOR.json

  • MAJOR 증가: 이전 버전과 호환되지 않는 변경 (breaking change)
  • MINOR/PATCH: 파일명에 포함하지 않음 — 하위 호환 변경은 같은 메이저 파일 업데이트

  • 호환 정책

    v1 → v2 이전 (MAJOR 업그레이드)

    | 항목 | 정책 |

    |------|------|

    | 이전 기간 | v2 릴리즈 후 6개월 v1 병행 지원 |

    | 병행 지원 | DASH-schema-v1.jsonDASH-schema-v2.json 동시 유효 |

    | Dash Store | v1 Dash 기존 설치 유지, 신규 제출은 v2 권장 |

    | 런타임 | 파서가 두 버전 모두 해석 가능해야 함 |

    | 개발자 마이그레이션 | 마이그레이션 가이드 + CLI 자동 변환 도구 제공 |

    하위 호환 변경 (v1.x — Breaking 없음)

  • 새 선택적 필드 추가: 기존 Dash는 새 필드 없이도 유효
  • enum 값 추가: 기존 값은 유지
  • pattern 완화: 더 많은 값을 허용하는 방향만 허용
  • Breaking 변경 예시 (→ MAJOR 증가 필요)

  • 기존 필수 필드 제거 또는 이름 변경
  • 선택 필드를 필수로 변경
  • enum 값 제거
  • pattern 강화 (기존 유효 값이 유효하지 않게 됨)
  • 레이어 구조 변경 (Meta/Trigger/Skin/Skill/Protocol 재편)

  • 파일 명명 규칙

    | 파일 | 설명 |

    |------|------|

    | docs/specs/DASH-schema-v1.json | v1 공식 스키마 |

    | docs/specs/DASH-schema-v2.json | v2 (출시 시 추가) |

    | docs/specs/DASH-template.md | 최신 버전 DASH.md 공식 템플릿 |

    | docs/specs/DASH-template-v1.md | v1 전용 템플릿 (버전 고정 시) |

    | docs/specs/sample-dashes/ | 공식 샘플 DASH.md 파일 모음 |

    | docs/specs/versioning-policy.md | 이 문서 |


    스키마 레지스트리 (메시지 스키마)

    schemas/ 폴더의 메시지 스키마는 DASH 스키마와 별도로 버전됩니다.

    schemas/
    

    WeatherData.v1.json

    WeatherData.v2.json ← v1과 병행 유지 (같은 정책)

    ScheduleEvent.v1.json

    LocationData.v1.json

  • 파일명 규칙: {SchemaName}.v{N}.json
  • 이름: PascalCase
  • 버전: 정수 (v1, v2, ...)
  • DASH.md protocol.schema 필드: "WeatherData.v1" 형식으로 참조

  • 변경 이력

    | 버전 | 날짜 | 변경 내용 |

    |------|------|----------|

    | v1.0.0 | 2026-03-26 | 초기 5-Layer 스키마 정의 (Meta/Trigger/Skin/Skill/Protocol) |