domainforge 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cargo/config.toml +6 -0
- package/.claude/settings.local.json +18 -0
- package/.coderabbit.yml +43 -0
- package/.codex/skills/release-management/SKILL.md +151 -0
- package/.codex/skills/release-management/agents/openai.yaml +4 -0
- package/.github/actions/decrypt-secrets/action.yml +121 -0
- package/.github/agents/Coder.agent.md +97 -0
- package/.github/agents/DeepResearch.agent.md +61 -0
- package/.github/chatmodes/tdd.vibepro.chatmode.md +1183 -0
- package/.github/copilot-instructions.md +13 -0
- package/.github/dependabot.yml +68 -0
- package/.github/workflows/README.md +165 -0
- package/.github/workflows/ci.yml +335 -0
- package/.github/workflows/dependabot-automerge.yml +114 -0
- package/.github/workflows/dependency-review.yml +27 -0
- package/.github/workflows/deploy.yml +87 -0
- package/.github/workflows/prepare-release.yml +168 -0
- package/.github/workflows/release-crates.yml +42 -0
- package/.github/workflows/release-npm.yml +137 -0
- package/.github/workflows/release-please.yml +29 -0
- package/.github/workflows/release-pypi.yml +96 -0
- package/.gitkeep +1 -0
- package/.release-please-manifest.json +5 -0
- package/.sea-registry.toml +10 -0
- package/.serena/project.yml +133 -0
- package/.sops.yaml +10 -0
- package/AGENTS.md +216 -0
- package/CHANGELOG.md +400 -0
- package/CLAUDE.md +62 -0
- package/CONTRIBUTING.md +323 -0
- package/Cargo.lock +3612 -0
- package/Cargo.toml +12 -0
- package/LICENSE +201 -0
- package/README.md +660 -0
- package/README_PYTHON.md +256 -0
- package/README_TYPESCRIPT.md +305 -0
- package/README_WASM.md +329 -0
- package/RELEASE_NOTES.md +41 -0
- package/bun.lock +378 -0
- package/bunfig.toml +11 -0
- package/check_output.txt +83 -0
- package/clippy_output.txt +80 -0
- package/commitlint.config.cjs +8 -0
- package/deny.toml +42 -0
- package/devbox.json +14 -0
- package/devbox.lock +76 -0
- package/docs/RELEASE_PROCESS.md +360 -0
- package/docs/diagnostics.md +161 -0
- package/docs/doc_guidelines.md +53 -0
- package/docs/explanations/README.md +21 -0
- package/docs/explanations/architecture-overview.md +109 -0
- package/docs/explanations/cross-language-binding-strategy.md +68 -0
- package/docs/explanations/graph-store-design.md +47 -0
- package/docs/explanations/performance-benchmarks.md +63 -0
- package/docs/explanations/policy-evaluation-logic.md +106 -0
- package/docs/explanations/semantic-modeling-concepts.md +109 -0
- package/docs/explanations/three-valued-logic.md +66 -0
- package/docs/explanations/versioning-strategy.md +45 -0
- package/docs/governance.md +168 -0
- package/docs/how-tos/README.md +46 -0
- package/docs/how-tos/ci-cd-validation.md +93 -0
- package/docs/how-tos/create-custom-units.md +125 -0
- package/docs/how-tos/define-policies.md +119 -0
- package/docs/how-tos/export-to-calm.md +110 -0
- package/docs/how-tos/export-to-protobuf.md +312 -0
- package/docs/how-tos/extend-grammar.md +133 -0
- package/docs/how-tos/generate-rdf-turtle.md +106 -0
- package/docs/how-tos/import-from-calm.md +114 -0
- package/docs/how-tos/import-from-sbvr.md +249 -0
- package/docs/how-tos/install-cli.md +126 -0
- package/docs/how-tos/parse-sea-files.md +132 -0
- package/docs/how-tos/policy-evaluation-modes.md +30 -0
- package/docs/how-tos/run-cross-language-tests.md +115 -0
- package/docs/how-tos/troubleshoot-napi-builds.md +55 -0
- package/docs/how-tos/use-modules-imports.md +285 -0
- package/docs/index.md +13 -0
- package/docs/plans/canonical-normalizer.md +121 -0
- package/docs/plans/cd_improvement.md +112 -0
- package/docs/plans/cli-ast.md +29 -0
- package/docs/plans/expression-bindings-and-normalizer-integration.md +174 -0
- package/docs/plans/protobuf_advanced_features_plan.md +597 -0
- package/docs/plans/protobuf_plan.yml +525 -0
- package/docs/plans/refactor_dsl_architecture.md +131 -0
- package/docs/plans/release-plan.md +163 -0
- package/docs/plans/sea_fmt_implementation_plan.md +516 -0
- package/docs/playbooks/README.md +18 -0
- package/docs/playbooks/adding-new-primitive.md +68 -0
- package/docs/playbooks/debugging-parser-failures.md +42 -0
- package/docs/playbooks/local-release-preparation.md +139 -0
- package/docs/playbooks/migrating-schema-versions.md +43 -0
- package/docs/playbooks/onboarding-contributors.md +64 -0
- package/docs/playbooks/releasing-beta.md +86 -0
- package/docs/playbooks/secret-management.md +64 -0
- package/docs/reference/README.md +199 -0
- package/docs/reference/ast-json-api.md +427 -0
- package/docs/reference/calm-mapping.md +519 -0
- package/docs/reference/cli-commands.md +588 -0
- package/docs/reference/configuration.md +202 -0
- package/docs/reference/error-codes.md +664 -0
- package/docs/reference/generated-artifacts-policy.md +53 -0
- package/docs/reference/grammar-spec.md +255 -0
- package/docs/reference/primitives-api.md +317 -0
- package/docs/reference/protobuf-api.md +426 -0
- package/docs/reference/python-api.md +485 -0
- package/docs/reference/registry.md +50 -0
- package/docs/reference/sea-dsl-ai-cheatsheet.yaml +913 -0
- package/docs/reference/security-model.md +74 -0
- package/docs/reference/typescript-api.md +508 -0
- package/docs/reference/wasm-api.md +420 -0
- package/docs/semantic-pack-review.md +144 -0
- package/docs/semantic-pack-signing.md +234 -0
- package/docs/semantic-packs.md +284 -0
- package/docs/specs/ADR-001-sea-dsl-semantic-source-of-truth.md +33 -0
- package/docs/specs/ADR-002-projection-first-class-construct.md +50 -0
- package/docs/specs/ADR-003-protobuf-projection-target.md +51 -0
- package/docs/specs/ADR-004-projection-compatibility-semantics.md +57 -0
- package/docs/specs/ADR-005-multi-language-support-strategy.md +112 -0
- package/docs/specs/ADR-006-error-handling-strategy.md +115 -0
- package/docs/specs/ADR-007-policy-evaluation-engine.md +95 -0
- package/docs/specs/ADR-008-knowledge-graph-integration.md +90 -0
- package/docs/specs/ADR-009-module-resolution-strategy.md +115 -0
- package/docs/specs/ADR-010-unit-system.md +106 -0
- package/docs/specs/PRD-001-sea-projection-framework.md +155 -0
- package/docs/specs/PRD-002-sea-cli-tooling.md +169 -0
- package/docs/specs/PRD-003-dsl-core-capabilities.md +275 -0
- package/docs/specs/README.md +62 -0
- package/docs/specs/SDS-001-protobuf-projection-engine.md +451 -0
- package/docs/specs/SDS-002-sea-core-architecture.md +268 -0
- package/docs/specs/SDS-003-parser-semantic-graph.md +377 -0
- package/docs/specs/SDS-004-policy-engine-design.md +362 -0
- package/docs/specs/SDS-005-knowledge-graph-module.md +364 -0
- package/docs/specs/SDS-006-calm-integration.md +367 -0
- package/docs/specs/SDS-007-sbvr-import.md +347 -0
- package/docs/templates/template_explanation.md +14 -0
- package/docs/templates/template_howto.md +21 -0
- package/docs/templates/template_playbook.md +21 -0
- package/docs/templates/template_reference.md +17 -0
- package/docs/templates/template_tutorial.md +24 -0
- package/docs/tutorials/README.md +12 -0
- package/docs/tutorials/first-sea-model.md +85 -0
- package/docs/tutorials/getting-started.md +98 -0
- package/docs/tutorials/python-binding-quickstart.md +107 -0
- package/docs/tutorials/typescript-binding-quickstart.md +91 -0
- package/docs/tutorials/wasm-in-browser.md +75 -0
- package/domainforge-core/CHANGELOG.md +138 -0
- package/domainforge-core/Cargo.toml +101 -0
- package/domainforge-core/MIGRATING.md +32 -0
- package/domainforge-core/README.md +197 -0
- package/domainforge-core/benchmark_results.txt +51 -0
- package/domainforge-core/build.rs +6 -0
- package/domainforge-core/deny.toml +31 -0
- package/domainforge-core/docs/specs/projections/sbvr_kg_mapping.md +43 -0
- package/domainforge-core/examples/basic.sea +7 -0
- package/domainforge-core/examples/cli/import_export_workflow.sh +38 -0
- package/domainforge-core/examples/cli/validate_example.sh +30 -0
- package/domainforge-core/examples/evolution_semantics.sea +31 -0
- package/domainforge-core/examples/parser_demo.rs +203 -0
- package/domainforge-core/grammar/sea.pest +408 -0
- package/domainforge-core/schemas/calm-v1.schema.json +170 -0
- package/domainforge-core/schemas/shacl/sea_shapes.ttl +19 -0
- package/domainforge-core/src/authority/compiler.rs +309 -0
- package/domainforge-core/src/authority/environment.rs +203 -0
- package/domainforge-core/src/authority/error.rs +164 -0
- package/domainforge-core/src/authority/fact_resolver.rs +224 -0
- package/domainforge-core/src/authority/mod.rs +25 -0
- package/domainforge-core/src/authority/pack.rs +133 -0
- package/domainforge-core/src/authority/policy.rs +224 -0
- package/domainforge-core/src/authority/resolver.rs +446 -0
- package/domainforge-core/src/authority/trace.rs +217 -0
- package/domainforge-core/src/authority/transform.rs +168 -0
- package/domainforge-core/src/authority/types.rs +617 -0
- package/domainforge-core/src/bin/domainforge.rs +25 -0
- package/domainforge-core/src/calm/export.rs +538 -0
- package/domainforge-core/src/calm/import.rs +1220 -0
- package/domainforge-core/src/calm/mod.rs +9 -0
- package/domainforge-core/src/calm/models.rs +108 -0
- package/domainforge-core/src/calm/sbvr_import.rs +9 -0
- package/domainforge-core/src/cli/authority.rs +149 -0
- package/domainforge-core/src/cli/format.rs +85 -0
- package/domainforge-core/src/cli/import.rs +133 -0
- package/domainforge-core/src/cli/mod.rs +64 -0
- package/domainforge-core/src/cli/normalize.rs +180 -0
- package/domainforge-core/src/cli/pack.rs +904 -0
- package/domainforge-core/src/cli/parse.rs +112 -0
- package/domainforge-core/src/cli/project.rs +294 -0
- package/domainforge-core/src/cli/registry.rs +41 -0
- package/domainforge-core/src/cli/test.rs +12 -0
- package/domainforge-core/src/cli/validate.rs +195 -0
- package/domainforge-core/src/cli/validate_kg.rs +80 -0
- package/domainforge-core/src/concept_id.rs +89 -0
- package/domainforge-core/src/error/diagnostics.rs +426 -0
- package/domainforge-core/src/error/fuzzy.rs +253 -0
- package/domainforge-core/src/error/mod.rs +13 -0
- package/domainforge-core/src/formatter/comments.rs +223 -0
- package/domainforge-core/src/formatter/config.rs +114 -0
- package/domainforge-core/src/formatter/mod.rs +22 -0
- package/domainforge-core/src/formatter/printer.rs +906 -0
- package/domainforge-core/src/graph/mod.rs +858 -0
- package/domainforge-core/src/graph/to_ast.rs +66 -0
- package/domainforge-core/src/kg.rs +1476 -0
- package/domainforge-core/src/kg_import.rs +251 -0
- package/domainforge-core/src/lib.rs +203 -0
- package/domainforge-core/src/module/mod.rs +1 -0
- package/domainforge-core/src/module/resolver.rs +260 -0
- package/domainforge-core/src/parser/ast.rs +2919 -0
- package/domainforge-core/src/parser/ast_convert.rs +494 -0
- package/domainforge-core/src/parser/ast_schema.rs +491 -0
- package/domainforge-core/src/parser/error.rs +291 -0
- package/domainforge-core/src/parser/lint.rs +39 -0
- package/domainforge-core/src/parser/mod.rs +193 -0
- package/domainforge-core/src/parser/printer.rs +702 -0
- package/domainforge-core/src/parser/profiles.rs +71 -0
- package/domainforge-core/src/parser/string_utils.rs +138 -0
- package/domainforge-core/src/patterns.rs +68 -0
- package/domainforge-core/src/policy/core.rs +1148 -0
- package/domainforge-core/src/policy/expression.rs +399 -0
- package/domainforge-core/src/policy/mod.rs +18 -0
- package/domainforge-core/src/policy/normalize.rs +1028 -0
- package/domainforge-core/src/policy/quantifier.rs +940 -0
- package/domainforge-core/src/policy/three_valued.rs +140 -0
- package/domainforge-core/src/policy/three_valued_microbench.rs +104 -0
- package/domainforge-core/src/policy/type_inference.rs +67 -0
- package/domainforge-core/src/policy/violation.rs +36 -0
- package/domainforge-core/src/primitives/concept_change.rs +61 -0
- package/domainforge-core/src/primitives/entity.rs +224 -0
- package/domainforge-core/src/primitives/flow.rs +111 -0
- package/domainforge-core/src/primitives/instance.rs +93 -0
- package/domainforge-core/src/primitives/mapping_contract.rs +50 -0
- package/domainforge-core/src/primitives/metric.rs +79 -0
- package/domainforge-core/src/primitives/mod.rs +25 -0
- package/domainforge-core/src/primitives/projection_contract.rs +50 -0
- package/domainforge-core/src/primitives/quantity.rs +56 -0
- package/domainforge-core/src/primitives/relation.rs +68 -0
- package/domainforge-core/src/primitives/resource.rs +237 -0
- package/domainforge-core/src/primitives/resource_instance.rs +88 -0
- package/domainforge-core/src/primitives/role.rs +49 -0
- package/domainforge-core/src/projection/buf.rs +404 -0
- package/domainforge-core/src/projection/contracts.rs +22 -0
- package/domainforge-core/src/projection/engine.rs +19 -0
- package/domainforge-core/src/projection/mod.rs +16 -0
- package/domainforge-core/src/projection/protobuf.rs +3331 -0
- package/domainforge-core/src/projection/registry.rs +43 -0
- package/domainforge-core/src/python/authority.rs +253 -0
- package/domainforge-core/src/python/error.rs +227 -0
- package/domainforge-core/src/python/formatter.rs +86 -0
- package/domainforge-core/src/python/graph.rs +366 -0
- package/domainforge-core/src/python/mod.rs +9 -0
- package/domainforge-core/src/python/policy.rs +651 -0
- package/domainforge-core/src/python/primitives.rs +796 -0
- package/domainforge-core/src/python/registry.rs +98 -0
- package/domainforge-core/src/python/semantic_pack.rs +619 -0
- package/domainforge-core/src/python/units.rs +96 -0
- package/domainforge-core/src/registry/mod.rs +432 -0
- package/domainforge-core/src/registry/tests.rs +210 -0
- package/domainforge-core/src/sbvr.rs +744 -0
- package/domainforge-core/src/semantic_pack/builder.rs +470 -0
- package/domainforge-core/src/semantic_pack/canonical_json.rs +184 -0
- package/domainforge-core/src/semantic_pack/diagnostics.rs +214 -0
- package/domainforge-core/src/semantic_pack/diff.rs +216 -0
- package/domainforge-core/src/semantic_pack/mod.rs +31 -0
- package/domainforge-core/src/semantic_pack/pack_set.rs +240 -0
- package/domainforge-core/src/semantic_pack/resolver.rs +437 -0
- package/domainforge-core/src/semantic_pack/review.rs +125 -0
- package/domainforge-core/src/semantic_pack/schema.rs +342 -0
- package/domainforge-core/src/semantic_pack/signing.rs +105 -0
- package/domainforge-core/src/semantic_pack/validator.rs +368 -0
- package/domainforge-core/src/semantic_version.rs +140 -0
- package/domainforge-core/src/test_utils.rs +12 -0
- package/domainforge-core/src/typescript/authority.rs +184 -0
- package/domainforge-core/src/typescript/error.rs +146 -0
- package/domainforge-core/src/typescript/formatter.rs +76 -0
- package/domainforge-core/src/typescript/graph.rs +391 -0
- package/domainforge-core/src/typescript/mod.rs +9 -0
- package/domainforge-core/src/typescript/policy.rs +564 -0
- package/domainforge-core/src/typescript/primitives.rs +784 -0
- package/domainforge-core/src/typescript/registry.rs +88 -0
- package/domainforge-core/src/typescript/semantic_pack.rs +470 -0
- package/domainforge-core/src/typescript/units.rs +76 -0
- package/domainforge-core/src/units/mod.rs +462 -0
- package/domainforge-core/src/uuid_module.rs +42 -0
- package/domainforge-core/src/validation_error.rs +818 -0
- package/domainforge-core/src/validation_result.rs +30 -0
- package/domainforge-core/src/wasm/authority.rs +192 -0
- package/domainforge-core/src/wasm/error.rs +145 -0
- package/domainforge-core/src/wasm/formatter.rs +69 -0
- package/domainforge-core/src/wasm/graph.rs +471 -0
- package/domainforge-core/src/wasm/mod.rs +16 -0
- package/domainforge-core/src/wasm/policy.rs +607 -0
- package/domainforge-core/src/wasm/primitives.rs +295 -0
- package/domainforge-core/src/wasm/semantic_pack.rs +471 -0
- package/domainforge-core/src/wasm/units.rs +62 -0
- package/domainforge-core/std/aws.sea +6 -0
- package/domainforge-core/std/core.sea +6 -0
- package/domainforge-core/std/http.sea +27 -0
- package/domainforge-core/tests/aggregation_enhanced_tests.rs +162 -0
- package/domainforge-core/tests/aggregation_eval_tests.rs +248 -0
- package/domainforge-core/tests/aggregation_integration_tests.rs +379 -0
- package/domainforge-core/tests/aggregation_parser_tests.rs +92 -0
- package/domainforge-core/tests/aggregation_tests.rs +102 -0
- package/domainforge-core/tests/authority_conformance_tests.rs +1173 -0
- package/domainforge-core/tests/calm_round_trip_tests.rs +283 -0
- package/domainforge-core/tests/calm_schema_validation_tests.rs +137 -0
- package/domainforge-core/tests/cast_operator_tests.rs +85 -0
- package/domainforge-core/tests/cli_binary_check.rs +37 -0
- package/domainforge-core/tests/cli_import_tests.rs +291 -0
- package/domainforge-core/tests/cli_path_traversal_tests.rs +124 -0
- package/domainforge-core/tests/cli_tests.rs +63 -0
- package/domainforge-core/tests/diagnostics_tests.rs +203 -0
- package/domainforge-core/tests/dimension_unit_tests.rs +80 -0
- package/domainforge-core/tests/entity_tests.rs +69 -0
- package/domainforge-core/tests/evolution_semantics_tests.rs +157 -0
- package/domainforge-core/tests/flow_tests.rs +78 -0
- package/domainforge-core/tests/flow_unit_validation_tests.rs +31 -0
- package/domainforge-core/tests/graph_integration_tests.rs +218 -0
- package/domainforge-core/tests/graph_tests.rs +626 -0
- package/domainforge-core/tests/import_parsing_tests.rs +23 -0
- package/domainforge-core/tests/instance_integration_tests.rs +98 -0
- package/domainforge-core/tests/instance_parsing_tests.rs +58 -0
- package/domainforge-core/tests/instance_tests.rs +61 -0
- package/domainforge-core/tests/kg_uri_encoding_tests.rs +53 -0
- package/domainforge-core/tests/lint_tests.rs +19 -0
- package/domainforge-core/tests/metric_tests.rs +143 -0
- package/domainforge-core/tests/module_resolution_tests.rs +100 -0
- package/domainforge-core/tests/namespace_registry_tests.rs +247 -0
- package/domainforge-core/tests/null_handling_tests.rs +26 -0
- package/domainforge-core/tests/parser_ast_v3.rs +53 -0
- package/domainforge-core/tests/parser_dimension_registry_tests.rs +20 -0
- package/domainforge-core/tests/parser_integration_tests.rs +294 -0
- package/domainforge-core/tests/parser_metadata_tests.rs +97 -0
- package/domainforge-core/tests/parser_resource_domain_only_graph_test.rs +21 -0
- package/domainforge-core/tests/parser_resource_limits_tests.rs +122 -0
- package/domainforge-core/tests/parser_tests.rs +512 -0
- package/domainforge-core/tests/pattern_semantics_tests.rs +87 -0
- package/domainforge-core/tests/phase_14_determinism_tests.rs +166 -0
- package/domainforge-core/tests/phase_15_validation_error_tests.rs +136 -0
- package/domainforge-core/tests/phase_16_unicode_tests.rs +248 -0
- package/domainforge-core/tests/phase_17_export_tests.rs +285 -0
- package/domainforge-core/tests/phase_17_round_trip_tests.rs +264 -0
- package/domainforge-core/tests/policy_tests.rs +635 -0
- package/domainforge-core/tests/primitives_integration_tests.rs +151 -0
- package/domainforge-core/tests/print_rdf_xml.rs +14 -0
- package/domainforge-core/tests/printer_tests.rs +204 -0
- package/domainforge-core/tests/profile_tests.rs +35 -0
- package/domainforge-core/tests/projection_contracts_tests.rs +154 -0
- package/domainforge-core/tests/protobuf_projection_tests.rs +199 -0
- package/domainforge-core/tests/quantity_tests.rs +41 -0
- package/domainforge-core/tests/rdf_xml_typed_literal_tests.rs +105 -0
- package/domainforge-core/tests/registry_schema_tests.rs +33 -0
- package/domainforge-core/tests/resource_tests.rs +50 -0
- package/domainforge-core/tests/resource_unit_tests.rs +24 -0
- package/domainforge-core/tests/roles_relations_tests.rs +61 -0
- package/domainforge-core/tests/round_trip_tests.rs +34 -0
- package/domainforge-core/tests/runtime_toggle_tests.rs +70 -0
- package/domainforge-core/tests/sbvr_fact_schema_tests.rs +60 -0
- package/domainforge-core/tests/sbvr_flow_facts_tests.rs +55 -0
- package/domainforge-core/tests/sbvr_parsing_tests.rs +53 -0
- package/domainforge-core/tests/semantic_pack_alias_resolution.rs +197 -0
- package/domainforge-core/tests/semantic_pack_build.rs +302 -0
- package/domainforge-core/tests/semantic_pack_consumer_smoke.rs +150 -0
- package/domainforge-core/tests/semantic_pack_pack_set.rs +160 -0
- package/domainforge-core/tests/semantic_pack_signing.rs +157 -0
- package/domainforge-core/tests/semantic_pack_three_valued.rs +250 -0
- package/domainforge-core/tests/semantic_pack_validate.rs +196 -0
- package/domainforge-core/tests/std_lib_tests.rs +37 -0
- package/domainforge-core/tests/temporal_evaluation_tests.rs +159 -0
- package/domainforge-core/tests/temporal_semantics_tests.rs +214 -0
- package/domainforge-core/tests/three_valued_quantifiers_tests.rs +164 -0
- package/domainforge-core/tests/turtle_entity_export_tests.rs +38 -0
- package/domainforge-core/tests/turtle_escaping_tests.rs +53 -0
- package/domainforge-core/tests/turtle_resource_export_tests.rs +34 -0
- package/domainforge-core/tests/type_inference_tests.rs +40 -0
- package/domainforge-core/tests/unicode_validation_tests.rs +169 -0
- package/domainforge-core/tests/unit_tests.rs +81 -0
- package/domainforge-core/tests/validate_tests.rs +38 -0
- package/domainforge-core/tests/validation_unit_mismatch_tests.rs +83 -0
- package/domainforge-core/tests/wasm_tests.rs +229 -0
- package/domainforge-python/CHANGELOG-python.md +12 -0
- package/domainforge-python/MIGRATING.md +24 -0
- package/domainforge-python/README.md +256 -0
- package/domainforge-python/domainforge/__init__.py +95 -0
- package/domainforge-python/domainforge/domainforge.pyi +519 -0
- package/domainforge-python/pyproject.toml +36 -0
- package/domainforge-typescript/CHANGELOG-typescript.md +12 -0
- package/domainforge-typescript/LICENSE +201 -0
- package/domainforge-typescript/MIGRATING.md +24 -0
- package/domainforge-typescript/README.md +305 -0
- package/domainforge-typescript/index.d.ts +452 -0
- package/domainforge-typescript/index.js +361 -0
- package/domainforge-typescript/package.json +60 -0
- package/example.js +61 -0
- package/examples/browser.html +366 -0
- package/examples/namespaces/finance/cashflow.sea +5 -0
- package/examples/namespaces/logistics/core.sea +7 -0
- package/examples/observability_metrics.sea +38 -0
- package/fixtures/semantic_packs/acme_procurement/domain/entities.sea +39 -0
- package/fixtures/semantic_packs/acme_procurement/domain/metrics.sea +11 -0
- package/fixtures/semantic_packs/acme_procurement/domain/relations.sea +7 -0
- package/fixtures/semantic_packs/acme_procurement/domain/resources.sea +9 -0
- package/fixtures/semantic_packs/acme_procurement/review/acme.procurement.semantic-review.jsonl +7 -0
- package/fixtures/semantic_packs/acme_procurement/tests/ambiguous_vendor_alias.sea +8 -0
- package/fixtures/semantic_packs/acme_procurement/tests/deprecated_vendor_alias.sea +8 -0
- package/fixtures/semantic_packs/acme_procurement/tests/invalid_relation.sea +3 -0
- package/fixtures/semantic_packs/acme_procurement/tests/proposed_concept.sea +8 -0
- package/fixtures/semantic_packs/acme_procurement/tests/rejected_concept.sea +8 -0
- package/fixtures/semantic_packs/acme_procurement/tests/unit_mismatch.sea +7 -0
- package/fixtures/semantic_packs/acme_procurement/tests/unknown_vendor_policy.sea +8 -0
- package/fixtures/semantic_packs/acme_procurement/tests/valid_purchase_policy.sea +8 -0
- package/index.d.ts +2 -0
- package/index.js +8 -0
- package/justfile +200 -0
- package/lefthook.yml +13 -0
- package/lib/validate_native_exports.d.ts +4 -0
- package/lib/validate_native_exports.js +12 -0
- package/package.json +22 -0
- package/pytest.ini +5 -0
- package/python/tests/test_registry.py +75 -0
- package/python/tests/test_units.py +18 -0
- package/release-please-config.json +49 -0
- package/requirements-dev.txt +3 -0
- package/requirements.txt +3 -0
- package/rust-toolchain.toml +3 -0
- package/schemas/ast-v1.schema.json +72 -0
- package/schemas/ast-v2.schema.json +1200 -0
- package/schemas/ast-v3.schema.json +1200 -0
- package/schemas/sea-registry.schema.json +45 -0
- package/scripts/build-python.sh +37 -0
- package/scripts/build-release.sh +279 -0
- package/scripts/build-typescript.sh +13 -0
- package/scripts/build-wasm.sh +113 -0
- package/scripts/bump-version.sh +245 -0
- package/scripts/check_unused_test_imports.py +85 -0
- package/scripts/ci_tasks.py +379 -0
- package/scripts/clear_debug_test.sh +10 -0
- package/scripts/create-github-release.sh +262 -0
- package/scripts/create-tag.sh +203 -0
- package/scripts/find_and_link_test_binary.sh +70 -0
- package/scripts/generate-changelog.sh +271 -0
- package/scripts/generate-release-notes.sh +205 -0
- package/scripts/lint_release_security.py +96 -0
- package/scripts/lint_release_workflows.py +82 -0
- package/scripts/lint_workflow_gates.py +113 -0
- package/scripts/optimized-wasm-build.sh +61 -0
- package/scripts/patch_napi_types.py +62 -0
- package/scripts/pre-release-check.sh +289 -0
- package/scripts/prepare_rust_debug.sh +52 -0
- package/scripts/release.sh +373 -0
- package/scripts/resolve_rust_binary.py +230 -0
- package/scripts/run_commitlint.sh +29 -0
- package/scripts/test-all.sh +77 -0
- package/scripts/update_launch_program.py +93 -0
- package/secrets/README.md +27 -0
- package/secrets/secrets.yaml +21 -0
- package/test_integration.py +67 -0
- package/tests/test_authority.py +328 -0
- package/tests/test_ci_tasks.py +143 -0
- package/tests/test_expression.py +256 -0
- package/tests/test_golden_payment_flow.py +42 -0
- package/tests/test_graph.py +127 -0
- package/tests/test_instance.py +136 -0
- package/tests/test_parser.py +82 -0
- package/tests/test_primitives.py +68 -0
- package/tests/test_role_relation_parity.py +56 -0
- package/tests/test_runtime_toggle.py +156 -0
- package/tests/test_semantic_pack.py +639 -0
- package/tests/test_three_valued_eval.py +159 -0
- package/tsconfig.json +30 -0
- package/typescript-tests/advanced.test.ts +165 -0
- package/typescript-tests/authority.test.ts +216 -0
- package/typescript-tests/expression.test.ts +228 -0
- package/typescript-tests/golden-payment-flow.test.ts +51 -0
- package/typescript-tests/graph.test.ts +142 -0
- package/typescript-tests/native-binding.test.ts +20 -0
- package/typescript-tests/primitives.test.ts +88 -0
- package/typescript-tests/registry.test.ts +122 -0
- package/typescript-tests/role_relation.test.ts +63 -0
- package/typescript-tests/runtime_toggle.test.ts +141 -0
- package/typescript-tests/semantic-pack.test.ts +556 -0
- package/typescript-tests/three_valued_eval.test.ts +135 -0
- package/typescript-tests/units.test.ts +36 -0
- package/vitest.config.ts +13 -0
- package/wasm_demo.html +225 -0
|
@@ -0,0 +1,664 @@
|
|
|
1
|
+
# Error Code Catalog
|
|
2
|
+
|
|
3
|
+
This document provides a comprehensive catalog of all error codes used in the SEA DSL validation system.
|
|
4
|
+
|
|
5
|
+
## Error Code Format
|
|
6
|
+
|
|
7
|
+
Error codes follow the format `EXXX` where:
|
|
8
|
+
|
|
9
|
+
- `E` indicates an error
|
|
10
|
+
- `XXX` is a three-digit number organized by category
|
|
11
|
+
|
|
12
|
+
## Error Categories
|
|
13
|
+
|
|
14
|
+
- **E001-E099**: Syntax and Parsing Errors
|
|
15
|
+
- **E100-E199**: Type System Errors
|
|
16
|
+
- **E200-E299**: Unit and Dimension Errors
|
|
17
|
+
- **E300-E399**: Scope and Reference Errors
|
|
18
|
+
- **E400-E499**: Policy Validation Errors
|
|
19
|
+
- **E500-E599**: Namespace and Module Errors
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## E001-E099: Syntax and Parsing Errors
|
|
24
|
+
|
|
25
|
+
_Note:_ Codes in the range **E011–E099** are currently reserved for future syntax/parse error additions and will be documented as the project expands. For now, E001–E010 cover the commonly used parsing diagnostics.
|
|
26
|
+
|
|
27
|
+
### E001: Undefined Entity
|
|
28
|
+
|
|
29
|
+
**Description**: Reference to an entity that has not been defined.
|
|
30
|
+
|
|
31
|
+
**Example**:
|
|
32
|
+
|
|
33
|
+
```sea
|
|
34
|
+
Flow "Materials" from "Warehouse" to "Factory" quantity 100
|
|
35
|
+
// Error: Entity "Warehouse" is not defined
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Common Fixes**:
|
|
39
|
+
|
|
40
|
+
- Define the entity before referencing it
|
|
41
|
+
- Check for typos in the entity name
|
|
42
|
+
- Ensure the entity is in the correct namespace
|
|
43
|
+
|
|
44
|
+
**Suggestion**: The error will suggest similar entity names if available using fuzzy matching.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
### E002: Undefined Resource
|
|
49
|
+
|
|
50
|
+
**Description**: Reference to a resource that has not been defined.
|
|
51
|
+
|
|
52
|
+
**Example**:
|
|
53
|
+
|
|
54
|
+
```sea
|
|
55
|
+
Flow "Steel" from "Supplier" to "Factory" quantity 100
|
|
56
|
+
// Error: Resource "Steel" is not defined
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**Common Fixes**:
|
|
60
|
+
|
|
61
|
+
- Define the resource before using it
|
|
62
|
+
- Check for typos in the resource name
|
|
63
|
+
- Verify the resource is in scope
|
|
64
|
+
|
|
65
|
+
**Suggestion**: The error will suggest similar resource names if available.
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
### E003: Unit Mismatch (moved)
|
|
70
|
+
|
|
71
|
+
**Description**: This entry was previously documented in the Syntax/Parsing section and has been moved to the Unit/Dimension category (E200–E299). See `E200: Dimension Mismatch` and `E203: Incompatible Dimensions` for details and suggested fixes.
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
_Note:_ The old `E004: Type Mismatch` entry has been moved into the Type System section (E100–E199). See `E100: Incompatible Types` for details and suggested fixes.
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
### E005: Syntax Error
|
|
80
|
+
|
|
81
|
+
**Description**: General syntax error in DSL parsing.
|
|
82
|
+
|
|
83
|
+
**Example**:
|
|
84
|
+
|
|
85
|
+
```sea
|
|
86
|
+
Entity "Warehouse" in logistics
|
|
87
|
+
Flow "Materials" from "Warehouse" to // Missing destination
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**Common Fixes**:
|
|
91
|
+
|
|
92
|
+
- Check for missing or extra tokens
|
|
93
|
+
- Verify proper DSL syntax
|
|
94
|
+
- Look for unclosed quotes or brackets
|
|
95
|
+
|
|
96
|
+
**Suggestion**: Shows line and column of the error.
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
### E006: Invalid Expression
|
|
101
|
+
|
|
102
|
+
**Description**: An expression that is syntactically valid but semantically invalid.
|
|
103
|
+
|
|
104
|
+
**Example**:
|
|
105
|
+
|
|
106
|
+
```sea
|
|
107
|
+
Entity "API"
|
|
108
|
+
Resource "Payload" units
|
|
109
|
+
Flow "Payload" from "API" to "API"
|
|
110
|
+
|
|
111
|
+
Policy invalid_expr as:
|
|
112
|
+
Payload and 42
|
|
113
|
+
// Error: mixes a resource reference and a number without a valid operator
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**Common Fixes**:
|
|
117
|
+
|
|
118
|
+
- Review expression logic
|
|
119
|
+
- Check operator precedence
|
|
120
|
+
- Verify operand types
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
### E007: Duplicate Declaration
|
|
125
|
+
|
|
126
|
+
**Description**: An entity, resource, or other item is declared more than once.
|
|
127
|
+
|
|
128
|
+
**Example**:
|
|
129
|
+
|
|
130
|
+
```sea
|
|
131
|
+
Entity "Warehouse" in logistics
|
|
132
|
+
Entity "Warehouse" in manufacturing
|
|
133
|
+
// Error: "Warehouse" is already defined
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**Common Fixes**:
|
|
137
|
+
|
|
138
|
+
- Use unique names for each declaration
|
|
139
|
+
- Remove duplicate declarations
|
|
140
|
+
- Use namespaces to avoid conflicts
|
|
141
|
+
|
|
142
|
+
**Suggestion**: Shows both declaration locations.
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
### E008: Undefined Variable
|
|
147
|
+
|
|
148
|
+
**Description**: Reference to a variable that is not in scope.
|
|
149
|
+
|
|
150
|
+
**Example**:
|
|
151
|
+
|
|
152
|
+
```sea
|
|
153
|
+
Entity "API"
|
|
154
|
+
Resource "Payload" units
|
|
155
|
+
// Missing entity definition for Backend
|
|
156
|
+
Flow "Payload" from "API" to "Backend"
|
|
157
|
+
// Error: "Backend" is referenced but never declared
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**Common Fixes**:
|
|
161
|
+
|
|
162
|
+
- Define the variable before use
|
|
163
|
+
- Check variable scope
|
|
164
|
+
- Verify spelling
|
|
165
|
+
|
|
166
|
+
**Suggestion**: Suggests similar variable names in scope.
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
### E009: Invalid Quantity
|
|
171
|
+
|
|
172
|
+
**Description**: A quantity value is invalid or malformed.
|
|
173
|
+
|
|
174
|
+
**Example**:
|
|
175
|
+
|
|
176
|
+
```sea
|
|
177
|
+
Flow "Steel" from "Mine" to "Refinery" quantity -100
|
|
178
|
+
// Error: Negative quantity
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
**Common Fixes**:
|
|
182
|
+
|
|
183
|
+
- Use positive quantities
|
|
184
|
+
- Check numeric format
|
|
185
|
+
- Verify units
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
### E010: Invalid Identifier
|
|
190
|
+
|
|
191
|
+
**Description**: An identifier (name) is invalid or uses reserved keywords.
|
|
192
|
+
|
|
193
|
+
**Example**:
|
|
194
|
+
|
|
195
|
+
```sea
|
|
196
|
+
Entity "Entity" in logistics
|
|
197
|
+
// Error: "Entity" is a reserved keyword
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
**Common Fixes**:
|
|
201
|
+
|
|
202
|
+
- Use different names
|
|
203
|
+
- Avoid reserved keywords
|
|
204
|
+
- Follow naming conventions
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## E100-E199: Type System Errors
|
|
209
|
+
|
|
210
|
+
### E100: Incompatible Types
|
|
211
|
+
|
|
212
|
+
**Description**: Types cannot be used together in the given context.
|
|
213
|
+
|
|
214
|
+
**Note**: This entry also covers `Type Mismatch` cases (previously E004) such as assigning a string where a number is expected.
|
|
215
|
+
|
|
216
|
+
**Example**:
|
|
217
|
+
|
|
218
|
+
```sea
|
|
219
|
+
Policy upload_capacity as:
|
|
220
|
+
"high" + 5
|
|
221
|
+
// Error: cannot add a string and a number
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
**Common Fixes**:
|
|
225
|
+
|
|
226
|
+
- Ensure types match in assignments
|
|
227
|
+
- Use appropriate type conversions
|
|
228
|
+
- Check function signatures and type requirements
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
### E101: Invalid Type Conversion
|
|
233
|
+
|
|
234
|
+
**Description**: Attempted type conversion is not allowed.
|
|
235
|
+
|
|
236
|
+
**Common Fixes**:
|
|
237
|
+
|
|
238
|
+
- Use valid conversion functions
|
|
239
|
+
- Check if conversion is necessary
|
|
240
|
+
- Verify source and target types
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
### E102: Type Inference Failed
|
|
245
|
+
|
|
246
|
+
**Description**: The type system cannot infer the type of an expression.
|
|
247
|
+
|
|
248
|
+
**Common Fixes**:
|
|
249
|
+
|
|
250
|
+
- Add explicit type annotations
|
|
251
|
+
- Provide more context
|
|
252
|
+
- Simplify the expression
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
### E103: Invalid Operand Type
|
|
257
|
+
|
|
258
|
+
**Description**: An operator is used with an incompatible operand type.
|
|
259
|
+
|
|
260
|
+
**Common Fixes**:
|
|
261
|
+
|
|
262
|
+
- Check operator requirements
|
|
263
|
+
- Use correct operand types
|
|
264
|
+
- Review operator documentation
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
268
|
+
### E104: Invalid Comparison Type
|
|
269
|
+
|
|
270
|
+
**Description**: Types cannot be compared with the given operator.
|
|
271
|
+
|
|
272
|
+
**Common Fixes**:
|
|
273
|
+
|
|
274
|
+
- Use comparable types
|
|
275
|
+
- Check comparison operator
|
|
276
|
+
- Add type conversions if needed
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## E200-E299: Unit and Dimension Errors
|
|
281
|
+
|
|
282
|
+
### E200: Dimension Mismatch
|
|
283
|
+
|
|
284
|
+
**Description**: Operations on quantities with incompatible dimensions.
|
|
285
|
+
|
|
286
|
+
**Example**:
|
|
287
|
+
|
|
288
|
+
```sea
|
|
289
|
+
Policy dimension_collision as:
|
|
290
|
+
10 "kg" + 5 "meters"
|
|
291
|
+
// Error: Cannot add Mass and Length
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
**Common Fixes**:
|
|
295
|
+
|
|
296
|
+
- Use quantities with the same dimension
|
|
297
|
+
- Add unit conversions
|
|
298
|
+
- Review calculation logic
|
|
299
|
+
|
|
300
|
+
---
|
|
301
|
+
|
|
302
|
+
_Note_: `E003: Unit Mismatch` was historically listed in the Syntax/Parsing category (E003) and has been consolidated under the Unit/Dimension category. Consult `E200`/`E203` for dimension/unit mismatches.
|
|
303
|
+
|
|
304
|
+
### E201: Invalid Unit
|
|
305
|
+
|
|
306
|
+
**Description**: A unit is not recognized or is invalid in context.
|
|
307
|
+
|
|
308
|
+
**Common Fixes**:
|
|
309
|
+
|
|
310
|
+
- Use standard unit names
|
|
311
|
+
- Check unit definitions
|
|
312
|
+
- Verify unit spelling
|
|
313
|
+
|
|
314
|
+
---
|
|
315
|
+
|
|
316
|
+
### E202: Unit Conversion Failed
|
|
317
|
+
|
|
318
|
+
**Description**: Cannot convert between the specified units.
|
|
319
|
+
|
|
320
|
+
**Common Fixes**:
|
|
321
|
+
|
|
322
|
+
- Ensure units are convertible
|
|
323
|
+
- Check conversion factors
|
|
324
|
+
- Verify dimension compatibility
|
|
325
|
+
|
|
326
|
+
---
|
|
327
|
+
|
|
328
|
+
### E203: Incompatible Dimensions
|
|
329
|
+
|
|
330
|
+
**Description**: Dimensions cannot be used together in the operation.
|
|
331
|
+
|
|
332
|
+
**Common Fixes**:
|
|
333
|
+
|
|
334
|
+
- Use compatible dimensions
|
|
335
|
+
- Review operation requirements
|
|
336
|
+
- Add dimension conversions
|
|
337
|
+
|
|
338
|
+
---
|
|
339
|
+
|
|
340
|
+
## E300-E399: Scope and Reference Errors
|
|
341
|
+
|
|
342
|
+
### E300: Variable Not In Scope
|
|
343
|
+
|
|
344
|
+
**Description**: A variable is referenced outside its scope.
|
|
345
|
+
|
|
346
|
+
**Example**:
|
|
347
|
+
|
|
348
|
+
```sea
|
|
349
|
+
Policy scoped_check as:
|
|
350
|
+
exists e in entities: (e.name = "service")
|
|
351
|
+
|
|
352
|
+
Policy leak_scope as:
|
|
353
|
+
e.name = "api" // Error: `e` is not in scope here
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
**Common Fixes**:
|
|
357
|
+
|
|
358
|
+
- Move variable reference inside scope
|
|
359
|
+
- Expand variable scope
|
|
360
|
+
- Define variable in outer scope
|
|
361
|
+
|
|
362
|
+
**Suggestion**: Shows available variables in scope.
|
|
363
|
+
|
|
364
|
+
---
|
|
365
|
+
|
|
366
|
+
### E301: Undefined Reference
|
|
367
|
+
|
|
368
|
+
**Description**: General reference to an undefined item.
|
|
369
|
+
|
|
370
|
+
**Common Fixes**:
|
|
371
|
+
|
|
372
|
+
- Define the referenced item
|
|
373
|
+
- Check spelling and case
|
|
374
|
+
- Verify namespace
|
|
375
|
+
|
|
376
|
+
---
|
|
377
|
+
|
|
378
|
+
### E302: Circular Reference
|
|
379
|
+
|
|
380
|
+
**Description**: A circular dependency exists between items.
|
|
381
|
+
|
|
382
|
+
**Example**:
|
|
383
|
+
|
|
384
|
+
```sea
|
|
385
|
+
Entity "A"
|
|
386
|
+
Entity "B"
|
|
387
|
+
Flow "Data" from "A" to "B" quantity 1
|
|
388
|
+
Flow "Data" from "B" to "A" quantity 1
|
|
389
|
+
// Error: circular dependency between A and B
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
**Common Fixes**:
|
|
393
|
+
|
|
394
|
+
- Break the circular dependency
|
|
395
|
+
- Restructure definitions
|
|
396
|
+
- Use forward declarations if supported
|
|
397
|
+
|
|
398
|
+
---
|
|
399
|
+
|
|
400
|
+
### E303: Invalid Reference
|
|
401
|
+
|
|
402
|
+
**Description**: A reference is malformed or points to an invalid target.
|
|
403
|
+
|
|
404
|
+
**Common Fixes**:
|
|
405
|
+
|
|
406
|
+
- Check reference syntax
|
|
407
|
+
- Verify target exists
|
|
408
|
+
- Review reference path
|
|
409
|
+
|
|
410
|
+
---
|
|
411
|
+
|
|
412
|
+
## E400-E499: Policy Validation Errors
|
|
413
|
+
|
|
414
|
+
### E400: Policy Evaluation Failed
|
|
415
|
+
|
|
416
|
+
**Description**: A policy could not be evaluated.
|
|
417
|
+
|
|
418
|
+
**Common Fixes**:
|
|
419
|
+
|
|
420
|
+
- Check policy expression syntax
|
|
421
|
+
- Verify policy inputs
|
|
422
|
+
- Review policy logic
|
|
423
|
+
|
|
424
|
+
---
|
|
425
|
+
|
|
426
|
+
### E401: Invalid Policy Expression
|
|
427
|
+
|
|
428
|
+
**Description**: A policy expression is invalid or malformed.
|
|
429
|
+
|
|
430
|
+
**Common Fixes**:
|
|
431
|
+
|
|
432
|
+
- Review policy syntax
|
|
433
|
+
- Check expression operators
|
|
434
|
+
- Verify operand types
|
|
435
|
+
|
|
436
|
+
---
|
|
437
|
+
|
|
438
|
+
### E402: Determinism Violation
|
|
439
|
+
|
|
440
|
+
**Description**: A policy or expression is non-deterministic when determinism is required.
|
|
441
|
+
|
|
442
|
+
**Common Fixes**:
|
|
443
|
+
|
|
444
|
+
- Remove non-deterministic operations
|
|
445
|
+
- Use deterministic alternatives
|
|
446
|
+
- Review determinism requirements
|
|
447
|
+
|
|
448
|
+
**Suggestion**: Provides hints on making the code deterministic.
|
|
449
|
+
|
|
450
|
+
---
|
|
451
|
+
|
|
452
|
+
### E403: Invalid Modality
|
|
453
|
+
|
|
454
|
+
**Description**: A policy modality (must, should, may) is invalid in context.
|
|
455
|
+
|
|
456
|
+
**Common Fixes**:
|
|
457
|
+
|
|
458
|
+
- Use correct modality
|
|
459
|
+
- Review policy requirements
|
|
460
|
+
- Check modality syntax
|
|
461
|
+
|
|
462
|
+
---
|
|
463
|
+
|
|
464
|
+
## E500-E599: Namespace and Module Errors
|
|
465
|
+
|
|
466
|
+
### E500: Namespace Not Found
|
|
467
|
+
|
|
468
|
+
**Description**: A referenced namespace does not exist.
|
|
469
|
+
|
|
470
|
+
**Common Fixes**:
|
|
471
|
+
|
|
472
|
+
- Define the namespace
|
|
473
|
+
- Check namespace spelling
|
|
474
|
+
- Verify namespace imports
|
|
475
|
+
|
|
476
|
+
---
|
|
477
|
+
|
|
478
|
+
### E501: Ambiguous Namespace
|
|
479
|
+
|
|
480
|
+
**Description**: A namespace reference is ambiguous (multiple matches).
|
|
481
|
+
|
|
482
|
+
**Common Fixes**:
|
|
483
|
+
|
|
484
|
+
- Use fully qualified names
|
|
485
|
+
- Add namespace aliases
|
|
486
|
+
- Resolve namespace conflicts
|
|
487
|
+
|
|
488
|
+
---
|
|
489
|
+
|
|
490
|
+
### E502: Invalid Namespace
|
|
491
|
+
|
|
492
|
+
**Description**: A namespace definition or reference is invalid.
|
|
493
|
+
|
|
494
|
+
**Common Fixes**:
|
|
495
|
+
|
|
496
|
+
- Check namespace syntax
|
|
497
|
+
- Verify namespace rules
|
|
498
|
+
- Review namespace structure
|
|
499
|
+
|
|
500
|
+
---
|
|
501
|
+
|
|
502
|
+
### E503: Module Not Found
|
|
503
|
+
|
|
504
|
+
**Description**: A referenced module cannot be found.
|
|
505
|
+
|
|
506
|
+
**Example**:
|
|
507
|
+
|
|
508
|
+
```sea
|
|
509
|
+
import "missing_module"
|
|
510
|
+
// Error: Module 'missing_module' could not be found
|
|
511
|
+
```
|
|
512
|
+
|
|
513
|
+
**Common Fixes**:
|
|
514
|
+
|
|
515
|
+
- Check module path
|
|
516
|
+
- Verify module file exists
|
|
517
|
+
- Review import statements
|
|
518
|
+
|
|
519
|
+
---
|
|
520
|
+
|
|
521
|
+
### E504: Symbol Not Exported
|
|
522
|
+
|
|
523
|
+
**Description**: A symbol is imported from a module but is not exported by that module.
|
|
524
|
+
|
|
525
|
+
**Example**:
|
|
526
|
+
|
|
527
|
+
```sea
|
|
528
|
+
import { Secret } from "utils"
|
|
529
|
+
// Error: Symbol 'Secret' is not exported by module 'utils'. Available exports: PublicHelper
|
|
530
|
+
```
|
|
531
|
+
|
|
532
|
+
**Common Fixes**:
|
|
533
|
+
|
|
534
|
+
- Check symbol name spelling
|
|
535
|
+
- Verify the symbol is exported (`export Entity X`) in the source module
|
|
536
|
+
- Use `import * as alias` to inspect available exports
|
|
537
|
+
- Check available exports listed in the error message
|
|
538
|
+
|
|
539
|
+
---
|
|
540
|
+
|
|
541
|
+
### E505: Circular Dependency
|
|
542
|
+
|
|
543
|
+
**Description**: A circular dependency exists between modules (e.g., A imports B, and B imports A).
|
|
544
|
+
|
|
545
|
+
**Example**:
|
|
546
|
+
|
|
547
|
+
```sea
|
|
548
|
+
// In a.sea:
|
|
549
|
+
import "b"
|
|
550
|
+
|
|
551
|
+
// In b.sea:
|
|
552
|
+
import "a"
|
|
553
|
+
// Error: Circular dependency detected: a -> b -> a
|
|
554
|
+
```
|
|
555
|
+
|
|
556
|
+
**Common Fixes**:
|
|
557
|
+
|
|
558
|
+
- Refactor code to extract shared dependencies to a third module
|
|
559
|
+
- Remove unnecessary imports
|
|
560
|
+
- Merge tightly coupled modules
|
|
561
|
+
|
|
562
|
+
## Using Error Codes
|
|
563
|
+
|
|
564
|
+
### In CLI
|
|
565
|
+
|
|
566
|
+
```bash
|
|
567
|
+
# Get detailed error information
|
|
568
|
+
domainforge validate myfile.sea
|
|
569
|
+
|
|
570
|
+
# JSON output with error codes
|
|
571
|
+
domainforge validate --format json myfile.sea
|
|
572
|
+
|
|
573
|
+
# LSP format for IDE integration
|
|
574
|
+
domainforge validate --format lsp myfile.sea
|
|
575
|
+
```
|
|
576
|
+
|
|
577
|
+
### In Python
|
|
578
|
+
|
|
579
|
+
```python
|
|
580
|
+
from domainforge import Graph
|
|
581
|
+
|
|
582
|
+
try:
|
|
583
|
+
graph = Graph.parse(source)
|
|
584
|
+
except Exception as e:
|
|
585
|
+
print(f"Error {e.code}: {e}")
|
|
586
|
+
if hasattr(e, 'suggestion'):
|
|
587
|
+
print(f"Suggestion: {e.suggestion}")
|
|
588
|
+
```
|
|
589
|
+
|
|
590
|
+
### In TypeScript
|
|
591
|
+
|
|
592
|
+
```typescript
|
|
593
|
+
import { Graph } from "@godspeedai/domainforge";
|
|
594
|
+
|
|
595
|
+
try {
|
|
596
|
+
const graph = Graph.parse(source);
|
|
597
|
+
} catch (e: any) {
|
|
598
|
+
const metadata = JSON.parse(e.message.split("__metadata__: ")[1]);
|
|
599
|
+
console.error(`Error ${metadata.code}: ${metadata.errorType}`);
|
|
600
|
+
if (metadata.suggestion) {
|
|
601
|
+
console.log(`Suggestion: ${metadata.suggestion}`);
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
```
|
|
605
|
+
|
|
606
|
+
### In WASM/JavaScript
|
|
607
|
+
|
|
608
|
+
```javascript
|
|
609
|
+
import { Graph } from "@godspeedai/domainforge-wasm";
|
|
610
|
+
|
|
611
|
+
try {
|
|
612
|
+
const graph = Graph.parse(source);
|
|
613
|
+
} catch (e) {
|
|
614
|
+
// Different bindings emit metadata tokens with different markers.
|
|
615
|
+
// Node/NAPI wrappers commonly use "__metadata__: " while WASM/json errors may use
|
|
616
|
+
// "__SEA_DSL_ERROR_METADATA__: ". Try both when extracting metadata.
|
|
617
|
+
const raw = e.message || e.toString();
|
|
618
|
+
const token = raw.includes("__SEA_DSL_ERROR_METADATA__:")
|
|
619
|
+
? "__SEA_DSL_ERROR_METADATA__: "
|
|
620
|
+
: "__metadata__: ";
|
|
621
|
+
const [msg, meta] = raw.split(token);
|
|
622
|
+
const metadata = JSON.parse(meta);
|
|
623
|
+
console.error(`Error ${metadata.code}: ${msg}`);
|
|
624
|
+
if (metadata.suggestion) {
|
|
625
|
+
console.log(`Suggestion: ${metadata.suggestion}`);
|
|
626
|
+
}
|
|
627
|
+
}
|
|
628
|
+
```
|
|
629
|
+
|
|
630
|
+
---
|
|
631
|
+
|
|
632
|
+
## Contributing
|
|
633
|
+
|
|
634
|
+
When adding new error codes:
|
|
635
|
+
|
|
636
|
+
1. Choose the appropriate category range
|
|
637
|
+
2. Add the error code to `ErrorCode` enum in `validation_error.rs`
|
|
638
|
+
3. Implement `as_str()` and `description()` methods
|
|
639
|
+
4. Update this documentation
|
|
640
|
+
5. Add tests for the new error code
|
|
641
|
+
6. Update language binding error converters if needed
|
|
642
|
+
|
|
643
|
+
---
|
|
644
|
+
|
|
645
|
+
## See Also
|
|
646
|
+
|
|
647
|
+
- [Diagnostic Formatters](../README.md#diagnostic-formatters)
|
|
648
|
+
- [Fuzzy Matching](../README.md#fuzzy-matching)
|
|
649
|
+
- [Language Bindings](../README.md#language-bindings)
|
|
650
|
+
|
|
651
|
+
## Binding surfaces
|
|
652
|
+
|
|
653
|
+
Python bindings surface validation errors as `ValidationError` with `.code` and `.message` fields. TypeScript bindings throw an `Error` where the message includes the code (e.g., `E201`). Use the tables above to map messages to remediation steps.
|
|
654
|
+
|
|
655
|
+
## Integration tips
|
|
656
|
+
|
|
657
|
+
- Enable `--format json` when using the CLI to capture structured error reports for CI pipelines.
|
|
658
|
+
- Log the `help` string alongside `code` in downstream tooling to aid non-DSL users.
|
|
659
|
+
|
|
660
|
+
## Related documentation
|
|
661
|
+
|
|
662
|
+
- `docs/new_docs/reference/cli-commands.md` — `validate` and `explain` commands that emit these codes.
|
|
663
|
+
- `docs/new_docs/how-tos/debugging-parser-failures.md` — troubleshooting workflows.
|
|
664
|
+
- `docs/new_docs/reference/primitives-api.md` — context for identifiers referenced in errors.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Generated Artifacts Policy
|
|
2
|
+
|
|
3
|
+
This document defines what is source truth and what is a build output in DomainForge.
|
|
4
|
+
|
|
5
|
+
## Source Truth
|
|
6
|
+
|
|
7
|
+
The following files are authoritative source inputs. Changes must be made here first:
|
|
8
|
+
|
|
9
|
+
- **Rust source**: `domainforge-core/src/`, `domainforge-core/grammar/`
|
|
10
|
+
- **Grammar**: `domainforge-core/grammar/sea.pest`
|
|
11
|
+
- **Schemas and manifests**: `Cargo.toml`, `domainforge-core/Cargo.toml`, `pyproject.toml`, `package.json`
|
|
12
|
+
- **Lockfiles**: `Cargo.lock`, `bun.lock`
|
|
13
|
+
- **Documentation**: `docs/`, `README*.md`, `CONTRIBUTING.md`
|
|
14
|
+
- **Examples**: `examples/`, `domainforge-core/examples/`
|
|
15
|
+
- **Tests**: `domainforge-core/tests/`, `tests/`, `typescript-tests/`
|
|
16
|
+
- **Workflows**: `.github/workflows/`, `.github/actions/`
|
|
17
|
+
- **Scripts**: `scripts/`, `justfile`
|
|
18
|
+
|
|
19
|
+
## Build Outputs
|
|
20
|
+
|
|
21
|
+
The following are generated artifacts and must NOT be hand-edited as source truth:
|
|
22
|
+
|
|
23
|
+
- `pkg/` — WASM package output (generated by `wasm-pack`)
|
|
24
|
+
- `domainforge-core/pkg/` — WASM package output (generated by `wasm-pack`)
|
|
25
|
+
- `dist/` — Release archives and wheels
|
|
26
|
+
- `*.whl` — Python wheels (generated by `maturin`)
|
|
27
|
+
- `*.node` — Native Node.js addons (generated by `napi-rs`)
|
|
28
|
+
- `*.tar.gz` — Release archives
|
|
29
|
+
- `target/` — Rust build artifacts
|
|
30
|
+
- Generated `.d.ts`, `.wasm`, `.js` in `pkg/` directories
|
|
31
|
+
|
|
32
|
+
## Allowed Checked-In Generated Files
|
|
33
|
+
|
|
34
|
+
Generated files may be checked in ONLY when they are:
|
|
35
|
+
|
|
36
|
+
1. **Explicit test fixtures** under a `fixtures/` path with a documented purpose
|
|
37
|
+
2. **Golden test inputs** with a corresponding test that validates them
|
|
38
|
+
|
|
39
|
+
All other generated artifacts must be produced by CI from a clean checkout.
|
|
40
|
+
|
|
41
|
+
## CI Requirements
|
|
42
|
+
|
|
43
|
+
- Release artifacts must be regenerated, packed, installed, and smoke-tested by CI before publication
|
|
44
|
+
- No release artifact should be hand-edited after generation
|
|
45
|
+
- If a generated artifact is wrong, fix the generator, not the output
|
|
46
|
+
|
|
47
|
+
## Violations
|
|
48
|
+
|
|
49
|
+
If a build output is found tracked without being a fixture:
|
|
50
|
+
|
|
51
|
+
1. Add it to `.gitignore`
|
|
52
|
+
2. Remove from tracking with `git rm --cached`
|
|
53
|
+
3. Fix the generator if the output was incorrect
|