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,155 @@
|
|
|
1
|
+
# PRD-001: SEA Projection Framework
|
|
2
|
+
|
|
3
|
+
**Product:** SEA Projection Framework
|
|
4
|
+
**Primary Feature:** Protobuf Projection Engine
|
|
5
|
+
**Version:** 1.0
|
|
6
|
+
**Date:** 2025-12-14
|
|
7
|
+
**Status:** Draft
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 1. Goals
|
|
12
|
+
|
|
13
|
+
- Enable SEA-DSL users to declare projection intent explicitly.
|
|
14
|
+
- Generate Protobuf schemas from semantic meaning, not implementation details.
|
|
15
|
+
- Support agentic systems, governance pipelines, and services.
|
|
16
|
+
- Enforce compatibility and stability guarantees automatically.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 2. Non-Goals
|
|
21
|
+
|
|
22
|
+
- SEA-DSL is **not** a schema language.
|
|
23
|
+
- Protobuf is **not** an authoring format.
|
|
24
|
+
- Projection engines do **not** infer business meaning.
|
|
25
|
+
- No hand-authored `.proto` files as authoritative sources.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## 3. User Stories
|
|
30
|
+
|
|
31
|
+
### 3.1 As a Domain Architect
|
|
32
|
+
|
|
33
|
+
> I want to declare that a namespace should be exposed to agents as Protobuf so that AI systems can consume enterprise meaning safely.
|
|
34
|
+
|
|
35
|
+
**Acceptance Criteria:**
|
|
36
|
+
|
|
37
|
+
- Can define a `Projection` in SEA-DSL targeting a namespace
|
|
38
|
+
- Generated `.proto` files contain all entities/resources in that namespace
|
|
39
|
+
- Projection metadata is embedded in generated files
|
|
40
|
+
|
|
41
|
+
### 3.2 As a Platform Engineer
|
|
42
|
+
|
|
43
|
+
> I want Protobuf schemas to evolve backward-compatibly so agents don't break when semantics evolve.
|
|
44
|
+
|
|
45
|
+
**Acceptance Criteria:**
|
|
46
|
+
|
|
47
|
+
- Compatibility level is enforced during generation
|
|
48
|
+
- Removed fields become `reserved` automatically
|
|
49
|
+
- Build fails if compatibility rules are violated
|
|
50
|
+
|
|
51
|
+
### 3.3 As a Governance Lead
|
|
52
|
+
|
|
53
|
+
> I want to trace every runtime message back to a semantic definition and projection declaration.
|
|
54
|
+
|
|
55
|
+
**Acceptance Criteria:**
|
|
56
|
+
|
|
57
|
+
- Generated files include source projection name
|
|
58
|
+
- Generated files include semantic version
|
|
59
|
+
- Comments link back to source namespace
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## 4. Functional Requirements
|
|
64
|
+
|
|
65
|
+
### FR-1: Projection Declaration
|
|
66
|
+
|
|
67
|
+
- DSL supports a `Projection` construct.
|
|
68
|
+
- Projection supports:
|
|
69
|
+
- Source namespace(s)
|
|
70
|
+
- Filters (kinds, tags, profiles)
|
|
71
|
+
- Target format
|
|
72
|
+
- Metadata (stability, compatibility, audience)
|
|
73
|
+
|
|
74
|
+
### FR-2: Semantic Graph Filtering
|
|
75
|
+
|
|
76
|
+
- Projection engine can select graph nodes by:
|
|
77
|
+
- Namespace
|
|
78
|
+
- Kind (`Entity`, `Resource`, `Flow`, etc.)
|
|
79
|
+
- Tags
|
|
80
|
+
- Profiles
|
|
81
|
+
|
|
82
|
+
### FR-3: Protobuf Generation
|
|
83
|
+
|
|
84
|
+
- Generate `.proto` files containing:
|
|
85
|
+
- `message` definitions for Entities and Resources
|
|
86
|
+
- `enum` definitions
|
|
87
|
+
- Governance/event messages
|
|
88
|
+
- Deterministic field numbering.
|
|
89
|
+
- Namespaces map to Protobuf packages.
|
|
90
|
+
|
|
91
|
+
### FR-4: Compatibility Enforcement
|
|
92
|
+
|
|
93
|
+
- Enforce additive/backward/breaking rules.
|
|
94
|
+
- Prevent illegal field reuse.
|
|
95
|
+
- Emit `reserved` fields when needed.
|
|
96
|
+
|
|
97
|
+
### FR-5: Traceability
|
|
98
|
+
|
|
99
|
+
- Generated files include metadata:
|
|
100
|
+
- Projection name
|
|
101
|
+
- Semantic version
|
|
102
|
+
- Source namespace
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## 5. Quality Attributes
|
|
107
|
+
|
|
108
|
+
| Attribute | Description |
|
|
109
|
+
| ----------------- | ----------------------------------- |
|
|
110
|
+
| **Deterministic** | Same input → same output |
|
|
111
|
+
| **Auditable** | Traceable to DSL and projection |
|
|
112
|
+
| **Safe** | Backward compatibility enforced |
|
|
113
|
+
| **Extensible** | New projection targets can be added |
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 6. Success Metrics
|
|
118
|
+
|
|
119
|
+
| Metric | Target |
|
|
120
|
+
| ------------------------------- | --------------------------------- |
|
|
121
|
+
| Projection coverage | 100% of declared namespaces |
|
|
122
|
+
| Compatibility violations caught | 100% at build time |
|
|
123
|
+
| Generation time | < 1s for typical domain model |
|
|
124
|
+
| Traceability | Every message traceable to source |
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## 7. Dependencies
|
|
129
|
+
|
|
130
|
+
- SEA-DSL Parser (existing)
|
|
131
|
+
- Semantic Graph Builder (existing)
|
|
132
|
+
- Projection Resolver (new)
|
|
133
|
+
- Protobuf Projection Engine (new)
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## 8. Milestones
|
|
138
|
+
|
|
139
|
+
| Phase | Deliverable | Status |
|
|
140
|
+
| ----- | ------------------------- | ------- |
|
|
141
|
+
| 1 | Projection DSL syntax | Planned |
|
|
142
|
+
| 2 | Projection Resolver | Planned |
|
|
143
|
+
| 3 | Basic Protobuf generation | Planned |
|
|
144
|
+
| 4 | Compatibility enforcement | Planned |
|
|
145
|
+
| 5 | Traceability metadata | Planned |
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Related Documents
|
|
150
|
+
|
|
151
|
+
- [ADR-001: SEA-DSL as Semantic Source of Truth](./ADR-001-sea-dsl-semantic-source-of-truth.md)
|
|
152
|
+
- [ADR-002: Projection as First-Class Construct](./ADR-002-projection-first-class-construct.md)
|
|
153
|
+
- [ADR-003: Protobuf as Projection Target](./ADR-003-protobuf-projection-target.md)
|
|
154
|
+
- [ADR-004: Projection Compatibility Semantics](./ADR-004-projection-compatibility-semantics.md)
|
|
155
|
+
- [SDS-001: Protobuf Projection Engine](./SDS-001-protobuf-projection-engine.md)
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# PRD-002: SEA CLI Tooling
|
|
2
|
+
|
|
3
|
+
**Product:** SEA Command-Line Interface
|
|
4
|
+
**Version:** 1.0
|
|
5
|
+
**Date:** 2025-12-14
|
|
6
|
+
**Status:** Implemented
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 1. Goals
|
|
11
|
+
|
|
12
|
+
- Provide a unified `sea` command for all DSL operations.
|
|
13
|
+
- Enable local development workflows: validate, format, project.
|
|
14
|
+
- Support CI/CD integration with structured output.
|
|
15
|
+
- Offer extensibility for future commands.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 2. Non-Goals
|
|
20
|
+
|
|
21
|
+
- GUI or TUI interfaces (out of scope for v1).
|
|
22
|
+
- Package management or registry operations.
|
|
23
|
+
- Remote execution or cloud deployment.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 3. User Stories
|
|
28
|
+
|
|
29
|
+
### 3.1 As a Domain Modeler
|
|
30
|
+
|
|
31
|
+
> I want to validate my `.sea` files before committing so that I catch errors early.
|
|
32
|
+
|
|
33
|
+
**Acceptance Criteria:**
|
|
34
|
+
|
|
35
|
+
- `domainforge validate path/to/model.sea` reports errors with line numbers
|
|
36
|
+
- Exit code is non-zero on validation failure
|
|
37
|
+
|
|
38
|
+
### 3.2 As a Developer
|
|
39
|
+
|
|
40
|
+
> I want to project my SEA models to JSON/DDD manifests for consumption by downstream systems.
|
|
41
|
+
|
|
42
|
+
**Acceptance Criteria:**
|
|
43
|
+
|
|
44
|
+
- `domainforge project --format json model.sea` outputs valid JSON
|
|
45
|
+
- Multiple format options available (json, ddd, yaml)
|
|
46
|
+
|
|
47
|
+
### 3.3 As a CI Pipeline
|
|
48
|
+
|
|
49
|
+
> I want machine-readable validation output for automated quality gates.
|
|
50
|
+
|
|
51
|
+
**Acceptance Criteria:**
|
|
52
|
+
|
|
53
|
+
- `domainforge validate --format json` outputs structured error array
|
|
54
|
+
- Consistent exit codes for scripting
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## 4. Commands
|
|
59
|
+
|
|
60
|
+
### 4.1 `domainforge validate`
|
|
61
|
+
|
|
62
|
+
Validate SEA source files.
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
domainforge validate [OPTIONS] <FILES>...
|
|
66
|
+
|
|
67
|
+
Options:
|
|
68
|
+
--format <FORMAT> Output format [default: human] [possible: human, json, lsp]
|
|
69
|
+
--strict Treat warnings as errors
|
|
70
|
+
--profile <PROFILE> Enforce a specific DSL profile
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 4.2 `domainforge project`
|
|
74
|
+
|
|
75
|
+
Export semantic graph to target formats.
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
domainforge project [OPTIONS] <FILE>
|
|
79
|
+
|
|
80
|
+
Options:
|
|
81
|
+
--format <FORMAT> Target format [default: json] [possible: json, ddd, yaml]
|
|
82
|
+
--output <PATH> Output file path (default: stdout)
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### 4.3 `domainforge format`
|
|
86
|
+
|
|
87
|
+
Format SEA source files.
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
domainforge format [OPTIONS] <FILES>...
|
|
91
|
+
|
|
92
|
+
Options:
|
|
93
|
+
--check Check formatting without modifying files
|
|
94
|
+
--write Write formatted output back to files
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### 4.4 `domainforge import`
|
|
98
|
+
|
|
99
|
+
Import models from external formats.
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
domainforge import [OPTIONS] <FILE>
|
|
103
|
+
|
|
104
|
+
Options:
|
|
105
|
+
--from <FORMAT> Source format [possible: turtle, rdfxml, sbvr]
|
|
106
|
+
--output <PATH> Output .sea file path
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### 4.5 `domainforge test`
|
|
110
|
+
|
|
111
|
+
Run SEA test assertions.
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
domainforge test [OPTIONS] <FILES>...
|
|
115
|
+
|
|
116
|
+
Options:
|
|
117
|
+
--filter <PATTERN> Run only tests matching pattern
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### 4.6 `domainforge validate-kg`
|
|
121
|
+
|
|
122
|
+
Validate Knowledge Graph files (SHACL).
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
domainforge validate-kg [OPTIONS] <FILE>
|
|
126
|
+
|
|
127
|
+
Options:
|
|
128
|
+
--shapes <PATH> SHACL shapes file
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## 5. Global Options
|
|
134
|
+
|
|
135
|
+
| Option | Description |
|
|
136
|
+
| ------------------ | --------------------------------- |
|
|
137
|
+
| `--verbose` | Increase output verbosity |
|
|
138
|
+
| `--quiet` | Suppress non-error output |
|
|
139
|
+
| `--color <CHOICE>` | Color output: auto, always, never |
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## 6. Exit Codes
|
|
144
|
+
|
|
145
|
+
| Code | Meaning |
|
|
146
|
+
| ---- | --------------------------- |
|
|
147
|
+
| 0 | Success |
|
|
148
|
+
| 1 | Validation/processing error |
|
|
149
|
+
| 2 | Invalid arguments |
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## 7. Implementation Status
|
|
154
|
+
|
|
155
|
+
| Command | Status |
|
|
156
|
+
| ------------- | -------------- |
|
|
157
|
+
| `validate` | ✅ Implemented |
|
|
158
|
+
| `project` | ✅ Implemented |
|
|
159
|
+
| `format` | ✅ Implemented |
|
|
160
|
+
| `import` | ✅ Implemented |
|
|
161
|
+
| `test` | ✅ Implemented |
|
|
162
|
+
| `validate-kg` | ✅ Implemented |
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## Related Documents
|
|
167
|
+
|
|
168
|
+
- [SDS-002: SEA Core Architecture](./SDS-002-domainforge-core-architecture.md)
|
|
169
|
+
- [ADR-006: Error Handling Strategy](./ADR-006-error-handling-strategy.md)
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
# PRD-003: DSL Core Capabilities
|
|
2
|
+
|
|
3
|
+
**Product:** SEA Domain-Specific Language
|
|
4
|
+
**Version:** 1.0
|
|
5
|
+
**Date:** 2025-12-14
|
|
6
|
+
**Status:** Implemented
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 1. Goals
|
|
11
|
+
|
|
12
|
+
- Define the complete vocabulary of SEA-DSL
|
|
13
|
+
- Enable business-readable, machine-executable models
|
|
14
|
+
- Support enterprise domain modeling patterns
|
|
15
|
+
- Provide a stable foundation for all projections and bindings
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 2. Non-Goals
|
|
20
|
+
|
|
21
|
+
- General-purpose programming language features
|
|
22
|
+
- Runtime execution environment
|
|
23
|
+
- Database or persistence layer
|
|
24
|
+
- UI/visualization components
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 3. Core Primitives
|
|
29
|
+
|
|
30
|
+
### 3.1 Entity
|
|
31
|
+
|
|
32
|
+
**Purpose:** Represent actors, locations, or organizational units
|
|
33
|
+
|
|
34
|
+
```sea
|
|
35
|
+
Entity "Warehouse" in logistics {
|
|
36
|
+
id: UUID
|
|
37
|
+
name: String
|
|
38
|
+
capacity: Int
|
|
39
|
+
location: Address
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Attributes:**
|
|
44
|
+
|
|
45
|
+
- `name`: Human-readable identifier (required)
|
|
46
|
+
- `namespace`: Logical grouping (optional, defaults to file namespace)
|
|
47
|
+
- `attributes`: Typed fields with optional patterns
|
|
48
|
+
- `relations`: Links to other entities
|
|
49
|
+
|
|
50
|
+
### 3.2 Resource
|
|
51
|
+
|
|
52
|
+
**Purpose:** Represent quantifiable items that flow between entities
|
|
53
|
+
|
|
54
|
+
```sea
|
|
55
|
+
Resource "Camera Units" units in inventory
|
|
56
|
+
Resource "Payment" USD in finance
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**Attributes:**
|
|
60
|
+
|
|
61
|
+
- `name`: Resource identifier (required)
|
|
62
|
+
- `unit`: Unit of measurement (required)
|
|
63
|
+
- `namespace`: Logical grouping (optional)
|
|
64
|
+
|
|
65
|
+
### 3.3 Flow
|
|
66
|
+
|
|
67
|
+
**Purpose:** Represent movement of resources between entities
|
|
68
|
+
|
|
69
|
+
```sea
|
|
70
|
+
Flow "Camera Units" from "Assembly Line" to "Warehouse" quantity 100
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**Attributes:**
|
|
74
|
+
|
|
75
|
+
- `resource`: Reference to Resource (required)
|
|
76
|
+
- `from`: Source Entity (required)
|
|
77
|
+
- `to`: Destination Entity (required)
|
|
78
|
+
- `quantity`: Numeric amount (required)
|
|
79
|
+
|
|
80
|
+
### 3.4 Instance
|
|
81
|
+
|
|
82
|
+
**Purpose:** Represent concrete, trackable instantiations of entities
|
|
83
|
+
|
|
84
|
+
```sea
|
|
85
|
+
Instance "Camera #SN12345" of "Camera" at "Warehouse A" {
|
|
86
|
+
serial_number: "SN12345"
|
|
87
|
+
manufactured_date: 2024-01-15
|
|
88
|
+
status: "available"
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Attributes:**
|
|
93
|
+
|
|
94
|
+
- `name`: Instance identifier (required)
|
|
95
|
+
- `entity_type`: Reference to Entity type (required)
|
|
96
|
+
- `location`: Current location Entity (optional)
|
|
97
|
+
- `fields`: Concrete values for Entity attributes
|
|
98
|
+
|
|
99
|
+
### 3.5 Role
|
|
100
|
+
|
|
101
|
+
**Purpose:** Define capabilities that can be assigned to entities
|
|
102
|
+
|
|
103
|
+
```sea
|
|
104
|
+
Role "Supplier" in supply-chain {
|
|
105
|
+
provides: Resource
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
Role "Consumer" in supply-chain {
|
|
109
|
+
consumes: Resource
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### 3.6 Relation
|
|
114
|
+
|
|
115
|
+
**Purpose:** Define typed relationships between entities via roles
|
|
116
|
+
|
|
117
|
+
```sea
|
|
118
|
+
Relation "supplies" {
|
|
119
|
+
subject: Supplier
|
|
120
|
+
object: Consumer
|
|
121
|
+
predicate: "supplies"
|
|
122
|
+
via: "Shipment"
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### 3.7 Policy
|
|
127
|
+
|
|
128
|
+
**Purpose:** Express business rules and constraints
|
|
129
|
+
|
|
130
|
+
```sea
|
|
131
|
+
Policy production_minimum as:
|
|
132
|
+
forall f in Flow where f.resource = "Camera Units":
|
|
133
|
+
f.quantity >= 500
|
|
134
|
+
|
|
135
|
+
Policy inventory_limit severity warn as:
|
|
136
|
+
forall e in Entity where e.type = "Warehouse":
|
|
137
|
+
sum(Instance.quantity where Instance.at = e) <= e.capacity
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
**Attributes:**
|
|
141
|
+
|
|
142
|
+
- `name`: Policy identifier (required)
|
|
143
|
+
- `expression`: Logical expression (required)
|
|
144
|
+
- `severity`: error | warn | info (default: error)
|
|
145
|
+
|
|
146
|
+
### 3.8 Metric
|
|
147
|
+
|
|
148
|
+
**Purpose:** Define observable measurements with thresholds
|
|
149
|
+
|
|
150
|
+
```sea
|
|
151
|
+
Metric "Daily Throughput" on Flow where resource = "Camera Units" {
|
|
152
|
+
aggregate: sum(quantity)
|
|
153
|
+
warn_above: 1000
|
|
154
|
+
error_above: 2000
|
|
155
|
+
}
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### 3.9 Pattern
|
|
159
|
+
|
|
160
|
+
**Purpose:** Define reusable validation patterns
|
|
161
|
+
|
|
162
|
+
```sea
|
|
163
|
+
Pattern "email" as: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/
|
|
164
|
+
Pattern "phone" as: /^\+?[1-9]\d{1,14}$/
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### 3.10 ConceptChange
|
|
168
|
+
|
|
169
|
+
**Purpose:** Model temporal evolution of concepts
|
|
170
|
+
|
|
171
|
+
```sea
|
|
172
|
+
ConceptChange "Product Rename" {
|
|
173
|
+
from: "Widget"
|
|
174
|
+
to: "Gadget"
|
|
175
|
+
effective: 2024-06-01
|
|
176
|
+
reason: "Rebranding initiative"
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## 4. Expression Language
|
|
183
|
+
|
|
184
|
+
### 4.1 Operators
|
|
185
|
+
|
|
186
|
+
| Category | Operators |
|
|
187
|
+
| ---------- | ------------------------------- |
|
|
188
|
+
| Comparison | `=`, `!=`, `<`, `>`, `<=`, `>=` |
|
|
189
|
+
| Logical | `and`, `or`, `not` |
|
|
190
|
+
| Arithmetic | `+`, `-`, `*`, `/` |
|
|
191
|
+
| Membership | `in` |
|
|
192
|
+
|
|
193
|
+
### 4.2 Quantifiers
|
|
194
|
+
|
|
195
|
+
| Quantifier | Meaning |
|
|
196
|
+
| -------------------------- | -------------------------------------------------- |
|
|
197
|
+
| `forall x in Domain: expr` | Universal: true if expr holds for all x |
|
|
198
|
+
| `exists x in Domain: expr` | Existential: true if expr holds for at least one x |
|
|
199
|
+
|
|
200
|
+
### 4.3 Aggregations
|
|
201
|
+
|
|
202
|
+
| Function | Description |
|
|
203
|
+
| ------------- | -------------- |
|
|
204
|
+
| `sum(expr)` | Sum of values |
|
|
205
|
+
| `count(expr)` | Count of items |
|
|
206
|
+
| `min(expr)` | Minimum value |
|
|
207
|
+
| `max(expr)` | Maximum value |
|
|
208
|
+
| `avg(expr)` | Average value |
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## 5. Type System
|
|
213
|
+
|
|
214
|
+
### 5.1 Built-in Types
|
|
215
|
+
|
|
216
|
+
| Type | Description |
|
|
217
|
+
| ---------- | --------------------------------- |
|
|
218
|
+
| `String` | Text value |
|
|
219
|
+
| `Int` | Integer |
|
|
220
|
+
| `Float` | Decimal number |
|
|
221
|
+
| `Bool` | Boolean |
|
|
222
|
+
| `Date` | Date (YYYY-MM-DD) |
|
|
223
|
+
| `DateTime` | Date with time |
|
|
224
|
+
| `UUID` | Unique identifier |
|
|
225
|
+
| `Email` | Email address (pattern validated) |
|
|
226
|
+
| `URL` | Web URL |
|
|
227
|
+
| `Money` | Currency amount |
|
|
228
|
+
|
|
229
|
+
### 5.2 Custom Types
|
|
230
|
+
|
|
231
|
+
Defined via Entity attributes with patterns:
|
|
232
|
+
|
|
233
|
+
```sea
|
|
234
|
+
Entity "Customer" {
|
|
235
|
+
phone: String pattern: phone
|
|
236
|
+
email: String pattern: email
|
|
237
|
+
}
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## 6. Profiles
|
|
243
|
+
|
|
244
|
+
Restrict allowed constructs for specific use cases:
|
|
245
|
+
|
|
246
|
+
```sea
|
|
247
|
+
@profile "basic"
|
|
248
|
+
|
|
249
|
+
// Only Entity, Resource, Flow allowed in this file
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
| Profile | Allowed Constructs |
|
|
253
|
+
| ---------- | -------------------------------- |
|
|
254
|
+
| `basic` | Entity, Resource, Flow |
|
|
255
|
+
| `standard` | basic + Policy, Metric, Instance |
|
|
256
|
+
| `full` | All constructs |
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## 7. Quality Attributes
|
|
261
|
+
|
|
262
|
+
| Attribute | Requirement |
|
|
263
|
+
| ----------------- | ---------------------------------------- |
|
|
264
|
+
| **Readability** | Business analysts can understand models |
|
|
265
|
+
| **Precision** | Unambiguous semantics for all constructs |
|
|
266
|
+
| **Extensibility** | New primitives can be added |
|
|
267
|
+
| **Performance** | 10,000 entities validated in < 100ms |
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## Related Documents
|
|
272
|
+
|
|
273
|
+
- [SDS-002: SEA Core Architecture](./SDS-002-domainforge-core-architecture.md)
|
|
274
|
+
- [SDS-003: Parser and Semantic Graph](./SDS-003-parser-semantic-graph.md)
|
|
275
|
+
- [ADR-007: Policy Evaluation Engine](./ADR-007-policy-evaluation-engine.md)
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# DomainForge Specifications
|
|
2
|
+
|
|
3
|
+
This directory contains the architectural documentation for DomainForge and the SEA Domain-Specific Language, including core architecture, projection framework, integrations, and tooling.
|
|
4
|
+
|
|
5
|
+
## Document Overview
|
|
6
|
+
|
|
7
|
+
### Architecture Decision Records (ADRs)
|
|
8
|
+
|
|
9
|
+
| Document | Status | Summary |
|
|
10
|
+
| ---------------------------------------------------------- | -------- | ----------------------------------------------- |
|
|
11
|
+
| [ADR-001](./ADR-001-sea-dsl-semantic-source-of-truth.md) | Accepted | SEA-DSL remains the semantic source of truth |
|
|
12
|
+
| [ADR-002](./ADR-002-projection-first-class-construct.md) | Accepted | Projection as a first-class DSL construct |
|
|
13
|
+
| [ADR-003](./ADR-003-protobuf-projection-target.md) | Accepted | Protobuf as a projection target |
|
|
14
|
+
| [ADR-004](./ADR-004-projection-compatibility-semantics.md) | Accepted | Compatibility enforcement semantics |
|
|
15
|
+
| [ADR-005](./ADR-005-multi-language-support-strategy.md) | Accepted | Multi-language support via Rust core + bindings |
|
|
16
|
+
| [ADR-006](./ADR-006-error-handling-strategy.md) | Accepted | Rich error handling with FFI propagation |
|
|
17
|
+
| [ADR-007](./ADR-007-policy-evaluation-engine.md) | Accepted | Three-valued logic and quantifier support |
|
|
18
|
+
| [ADR-008](./ADR-008-knowledge-graph-integration.md) | Accepted | RDF/Turtle export and SHACL validation |
|
|
19
|
+
| [ADR-009](./ADR-009-module-resolution-strategy.md) | Accepted | Import syntax and namespace registry |
|
|
20
|
+
| [ADR-010](./ADR-010-unit-system.md) | Accepted | Dimensional analysis and unit conversions |
|
|
21
|
+
|
|
22
|
+
### Product Requirements Documents (PRDs)
|
|
23
|
+
|
|
24
|
+
| Document | Status | Summary |
|
|
25
|
+
| ------------------------------------------------ | ----------- | ------------------------------------------- |
|
|
26
|
+
| [PRD-001](./PRD-001-sea-projection-framework.md) | Draft | SEA Projection Framework requirements |
|
|
27
|
+
| [PRD-002](./PRD-002-sea-cli-tooling.md) | Implemented | SEA CLI commands and options |
|
|
28
|
+
| [PRD-003](./PRD-003-dsl-core-capabilities.md) | Implemented | Core DSL primitives and expression language |
|
|
29
|
+
|
|
30
|
+
### Software Design Specifications (SDSs)
|
|
31
|
+
|
|
32
|
+
| Document | Status | Summary |
|
|
33
|
+
| -------------------------------------------------- | ----------- | ----------------------------------------- |
|
|
34
|
+
| [SDS-001](./SDS-001-protobuf-projection-engine.md) | Draft | Protobuf Projection Engine design |
|
|
35
|
+
| [SDS-002](./SDS-002-domainforge-core-architecture.md) | Implemented | Core library architecture and modules |
|
|
36
|
+
| [SDS-003](./SDS-003-parser-semantic-graph.md) | Implemented | Parser pipeline and graph construction |
|
|
37
|
+
| [SDS-004](./SDS-004-policy-engine-design.md) | Implemented | Policy evaluation with three-valued logic |
|
|
38
|
+
| [SDS-005](./SDS-005-knowledge-graph-module.md) | Implemented | RDF/Turtle export/import and SHACL |
|
|
39
|
+
| [SDS-006](./SDS-006-calm-integration.md) | Implemented | FINOS CALM architecture-as-code |
|
|
40
|
+
| [SDS-007](./SDS-007-sbvr-import.md) | Implemented | OMG SBVR XMI business vocabulary import |
|
|
41
|
+
|
|
42
|
+
## Key Principles
|
|
43
|
+
|
|
44
|
+
1. **Semantic Primacy**: SEA-DSL remains a semantic language; all schemas are derived, never authored directly.
|
|
45
|
+
|
|
46
|
+
2. **Declarative Projections**: Projection intent is declared explicitly in the DSL, enabling governance and auditing.
|
|
47
|
+
|
|
48
|
+
3. **Compatibility by Default**: All projections enforce compatibility rules to prevent breaking downstream consumers.
|
|
49
|
+
|
|
50
|
+
4. **Traceability**: Every generated artifact links back to its semantic source and projection declaration.
|
|
51
|
+
|
|
52
|
+
5. **Single Source of Truth**: Rust core (`domainforge-core`) is the single implementation; all language bindings wrap it.
|
|
53
|
+
|
|
54
|
+
6. **Standards Alignment**: Built on SBVR semantics, RDF interoperability, and FINOS CALM architecture standards.
|
|
55
|
+
|
|
56
|
+
## Quick Links
|
|
57
|
+
|
|
58
|
+
- [Implementation Roadmap](../plans/protobuf_plan.yml)
|
|
59
|
+
- [SEA-DSL Reference](../../domainforge-core/README.md)
|
|
60
|
+
- [Python README](../../README_PYTHON.md)
|
|
61
|
+
- [TypeScript README](../../README_TYPESCRIPT.md)
|
|
62
|
+
- [WASM README](../../README_WASM.md)
|