RelGeo

Current Section Core

6. Error Model

Status dokumen: Normative

Resolver dan validator menghasilkan error yang deterministik. Setiap error memiliki kode unik dan path ke lokasi masalah dalam dokumen.


6.1 Resolution Errors

Error yang terjadi selama evaluasi dependency graph dan ekspresi.

KodeKondisi
UNKNOWN_REFERENCEMerujuk ke ID object, parameter, atau constant yang tidak terdefinisi
CIRCULAR_DEPENDENCYDua atau lebih nilai saling bergantung satu sama lain secara melingkar
INVALID_EXPRESSIONEkspresi tidak dapat dievaluasi (tipe tidak cocok, fungsi tidak dikenal, dll)
DIVISION_BY_ZEROEkspresi melakukan pembagian dengan nilai nol
INVALID_UNIT_VALUENilai unit tidak dapat diparse atau tidak valid

CIRCULAR_DEPENDENCY juga dipakai untuk kasus derived lokal di dalam component jika ia membentuk siklus dengan parameter, derived lokal lain, atau ekspresi internal component.


6.2 Geometry Errors

Error yang terjadi saat membangun geometri dari relasi yang diberikan.

KodeKondisi
NO_INTERSECTIONDua object diminta berpotongan, namun tidak ada perpotongan
MULTIPLE_INTERSECTIONSPerpotongan menghasilkan lebih dari satu titik tanpa instruksi pick
PATH_NOT_CLOSEDPath dengan closed: true memiliki titik akhir yang tidak sama dengan titik awal
PATH_JOIN_GAPDua item berurutan pada path.join tidak saling tersambung
PATH_JOIN_DIRECTION_MISMATCHTarget path.join path-like tetapi arah traversalnya tidak cocok dengan item sebelumnya
ELLIPSE_INVALID_RADIUSellipse.rx atau ellipse.ry bernilai nol, negatif, atau tidak valid
INVALID_OFFSETGagal menghitung offset (self-intersection ekstrem)
TANGENT_NOT_FOUNDTidak ada solusi garis singgung yang valid
DEGENERATE_ARCBusur tidak valid (3 titik segaris pada mode 3-point)
SELF_INTERSECTING_PATHPath memotong dirinya sendiri (kritikal untuk offset)
INVALID_CORNER_OPERATIONRadius fillet/chamfer melebihi panjang segmen yang tersedia
INVALID_JOIN_TARGETItem pada path.join bukan target lintasan yang valid
INVALID_CLOSE_WITHcloseWith dipakai pada mode/context path yang tidak valid
TURTLE_HEADING_UNAVAILABLESegment line relatif memakai turn atau forward tanpa heading awal yang valid
INVALID_TURTLE_FORWARDNilai forward pada relative line segment tidak valid
INVALID_TURTLE_TURNNilai turn pada relative line segment tidak valid

6.3 Geometry Operation Errors

KodeKondisi
INVALID_GEOMETRY_OPERATIONTipe operation object tidak dikenali atau tidak didukung
INVALID_OPERATION_TARGETtarget tidak kompatibel dengan operation yang diminta
INVALID_SCALE_FACTORscale.factor bernilai nol, negatif, atau bentuknya tidak valid
INVALID_MIRROR_AXISmirror.axis tidak valid untuk kontrak bahasa yang aktif
INVALID_REVERSE_TARGETreverse dipakai pada target yang tidak memiliki arah traversal yang valid
INVALID_SPLIT_TARGETsplit.target bukan geometri path-like yang didukung
SPLIT_POINT_OFF_TARGETTitik split.at tidak berada pada target dalam tolerance runtime
DEGENERATE_SPLITSplit terjadi tepat di ujung target terbuka atau menghasilkan bagian nol-panjang yang tidak sah
SPLIT_RESOLUTION_FAILEDTitik split sah secara kontrak, tetapi engine gagal membangun hasil split deterministik

6.4 Component Errors

KodeKondisi
COMPONENT_NOT_FOUNDNama component tidak terdefinisi di section components
COMPONENT_EXPORT_NOT_FOUNDMengakses export yang tidak terdefinisi di exports component

6.5 Validation Errors

Error yang terjadi sebelum resolver berjalan, saat validator memeriksa struktur dokumen.

KodeKondisi
INVALID_TYPETipe field tidak sesuai yang diharapkan
MISSING_REQUIRED_FIELDField wajib tidak ada
INVALID_VALUENilai field tidak valid (di luar enum, format salah, dll)
UNKNOWN_FIELDField tidak dikenal untuk struktur yang sedang divalidasi
OVER_CONSTRAINEDObject memiliki terlalu banyak constraint yang saling bertentangan
UNDER_CONSTRAINEDObject tidak memiliki cukup constraint untuk diselesaikan
ELLIPSE_SIZE_CONFLICTellipse memakai size bersamaan dengan rx/ry sehingga constraint menjadi ganda
INHERIT_TARGET_NOT_FOUNDReferensi inherit tidak ditemukan
INVALID_INHERIT_TARGETTarget inherit ada tetapi bukan structured value yang legal
CIRCULAR_INHERITRantai inherit membentuk siklus
INHERIT_TYPE_CONFLICTHasil merge inherit menghasilkan konflik tipe yang tidak legal

6.6 Post-resolution Constraint Diagnostics

Constraint diperiksa setelah resolver menghasilkan geometri.

Pada kontrak aktif v0.5:

  1. constraint failure tidak wajib dilempar sebagai validation error
  2. resolver boleh mengembalikan hasil resolved scene beserta diagnostics constraint
  3. diagnostics ini bersifat deterministik dan tidak boleh mengubah geometri untuk “memaksa” constraint terpenuhi
KodeKondisi
CONSTRAINT_VIOLATIONRelasi geometri tidak terpenuhi setelah seluruh object selesai di-resolve

Jika suatu aplikasi membutuhkan mode strict, aplikasi tersebut boleh memperlakukan diagnostics ini sebagai hard failure di layer compile, CI, atau publishing. Namun perilaku dasar runtime v0.5 tetap berupa laporan diagnostics pasca-resolve.


6.7 Validation Phases

Validator dan resolver dapat memeriksa dokumen dalam beberapa fase konseptual berikut:

  1. structural validation
  2. schema validation
  3. reference validation
  4. expression validation
  5. dependency validation
  6. geometry validation

Fase-fase ini tidak harus diekspos sebagai API terpisah, tetapi hasil akhirnya harus tetap deterministik dan konsisten terhadap kode error yang didefinisikan spec.


6.8 Collection & Repeat Errors

KodeKondisi
INVALID_GRID_SPACINGpitch dan gap keduanya ditentukan (mutually exclusive)
OVER_CONSTRAINED_REPEAT_LAYOUTAuto-layout aktif, namun item juga memiliki placement manual
INVALID_REPEAT_ALONG_TARGETrepeat.along.target bukan geometri lintasan yang valid
INVALID_REPEAT_ALONG_SPACINGNilai repeat.along.spacing tidak dikenal atau tidak cocok dengan field yang diberikan
INVALID_FIXED_DISTANCEMode fixed-distance dipakai tanpa distance yang valid
REPEAT_ALONG_LENGTH_FAILEDResolver gagal menghitung distribusi berbasis panjang pada target lintasan

6.9 Hole Errors

KodeKondisi
INVALID_HOLE_SHAPEObject di dalam holes bukan ClosedShape
HOLE_OUTSIDE_BOUNDARYLubang berada di luar atau melewati batas bentuk penampung
HOLE_OVERLAPDua lubang saling tumpang tindih

← 5. Semantic Guarantees  |  ↑ Index  |  7. Type System →