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.
Files changed (481) hide show
  1. package/.cargo/config.toml +6 -0
  2. package/.claude/settings.local.json +18 -0
  3. package/.coderabbit.yml +43 -0
  4. package/.codex/skills/release-management/SKILL.md +151 -0
  5. package/.codex/skills/release-management/agents/openai.yaml +4 -0
  6. package/.github/actions/decrypt-secrets/action.yml +121 -0
  7. package/.github/agents/Coder.agent.md +97 -0
  8. package/.github/agents/DeepResearch.agent.md +61 -0
  9. package/.github/chatmodes/tdd.vibepro.chatmode.md +1183 -0
  10. package/.github/copilot-instructions.md +13 -0
  11. package/.github/dependabot.yml +68 -0
  12. package/.github/workflows/README.md +165 -0
  13. package/.github/workflows/ci.yml +335 -0
  14. package/.github/workflows/dependabot-automerge.yml +114 -0
  15. package/.github/workflows/dependency-review.yml +27 -0
  16. package/.github/workflows/deploy.yml +87 -0
  17. package/.github/workflows/prepare-release.yml +168 -0
  18. package/.github/workflows/release-crates.yml +42 -0
  19. package/.github/workflows/release-npm.yml +137 -0
  20. package/.github/workflows/release-please.yml +29 -0
  21. package/.github/workflows/release-pypi.yml +96 -0
  22. package/.gitkeep +1 -0
  23. package/.release-please-manifest.json +5 -0
  24. package/.sea-registry.toml +10 -0
  25. package/.serena/project.yml +133 -0
  26. package/.sops.yaml +10 -0
  27. package/AGENTS.md +216 -0
  28. package/CHANGELOG.md +400 -0
  29. package/CLAUDE.md +62 -0
  30. package/CONTRIBUTING.md +323 -0
  31. package/Cargo.lock +3612 -0
  32. package/Cargo.toml +12 -0
  33. package/LICENSE +201 -0
  34. package/README.md +660 -0
  35. package/README_PYTHON.md +256 -0
  36. package/README_TYPESCRIPT.md +305 -0
  37. package/README_WASM.md +329 -0
  38. package/RELEASE_NOTES.md +41 -0
  39. package/bun.lock +378 -0
  40. package/bunfig.toml +11 -0
  41. package/check_output.txt +83 -0
  42. package/clippy_output.txt +80 -0
  43. package/commitlint.config.cjs +8 -0
  44. package/deny.toml +42 -0
  45. package/devbox.json +14 -0
  46. package/devbox.lock +76 -0
  47. package/docs/RELEASE_PROCESS.md +360 -0
  48. package/docs/diagnostics.md +161 -0
  49. package/docs/doc_guidelines.md +53 -0
  50. package/docs/explanations/README.md +21 -0
  51. package/docs/explanations/architecture-overview.md +109 -0
  52. package/docs/explanations/cross-language-binding-strategy.md +68 -0
  53. package/docs/explanations/graph-store-design.md +47 -0
  54. package/docs/explanations/performance-benchmarks.md +63 -0
  55. package/docs/explanations/policy-evaluation-logic.md +106 -0
  56. package/docs/explanations/semantic-modeling-concepts.md +109 -0
  57. package/docs/explanations/three-valued-logic.md +66 -0
  58. package/docs/explanations/versioning-strategy.md +45 -0
  59. package/docs/governance.md +168 -0
  60. package/docs/how-tos/README.md +46 -0
  61. package/docs/how-tos/ci-cd-validation.md +93 -0
  62. package/docs/how-tos/create-custom-units.md +125 -0
  63. package/docs/how-tos/define-policies.md +119 -0
  64. package/docs/how-tos/export-to-calm.md +110 -0
  65. package/docs/how-tos/export-to-protobuf.md +312 -0
  66. package/docs/how-tos/extend-grammar.md +133 -0
  67. package/docs/how-tos/generate-rdf-turtle.md +106 -0
  68. package/docs/how-tos/import-from-calm.md +114 -0
  69. package/docs/how-tos/import-from-sbvr.md +249 -0
  70. package/docs/how-tos/install-cli.md +126 -0
  71. package/docs/how-tos/parse-sea-files.md +132 -0
  72. package/docs/how-tos/policy-evaluation-modes.md +30 -0
  73. package/docs/how-tos/run-cross-language-tests.md +115 -0
  74. package/docs/how-tos/troubleshoot-napi-builds.md +55 -0
  75. package/docs/how-tos/use-modules-imports.md +285 -0
  76. package/docs/index.md +13 -0
  77. package/docs/plans/canonical-normalizer.md +121 -0
  78. package/docs/plans/cd_improvement.md +112 -0
  79. package/docs/plans/cli-ast.md +29 -0
  80. package/docs/plans/expression-bindings-and-normalizer-integration.md +174 -0
  81. package/docs/plans/protobuf_advanced_features_plan.md +597 -0
  82. package/docs/plans/protobuf_plan.yml +525 -0
  83. package/docs/plans/refactor_dsl_architecture.md +131 -0
  84. package/docs/plans/release-plan.md +163 -0
  85. package/docs/plans/sea_fmt_implementation_plan.md +516 -0
  86. package/docs/playbooks/README.md +18 -0
  87. package/docs/playbooks/adding-new-primitive.md +68 -0
  88. package/docs/playbooks/debugging-parser-failures.md +42 -0
  89. package/docs/playbooks/local-release-preparation.md +139 -0
  90. package/docs/playbooks/migrating-schema-versions.md +43 -0
  91. package/docs/playbooks/onboarding-contributors.md +64 -0
  92. package/docs/playbooks/releasing-beta.md +86 -0
  93. package/docs/playbooks/secret-management.md +64 -0
  94. package/docs/reference/README.md +199 -0
  95. package/docs/reference/ast-json-api.md +427 -0
  96. package/docs/reference/calm-mapping.md +519 -0
  97. package/docs/reference/cli-commands.md +588 -0
  98. package/docs/reference/configuration.md +202 -0
  99. package/docs/reference/error-codes.md +664 -0
  100. package/docs/reference/generated-artifacts-policy.md +53 -0
  101. package/docs/reference/grammar-spec.md +255 -0
  102. package/docs/reference/primitives-api.md +317 -0
  103. package/docs/reference/protobuf-api.md +426 -0
  104. package/docs/reference/python-api.md +485 -0
  105. package/docs/reference/registry.md +50 -0
  106. package/docs/reference/sea-dsl-ai-cheatsheet.yaml +913 -0
  107. package/docs/reference/security-model.md +74 -0
  108. package/docs/reference/typescript-api.md +508 -0
  109. package/docs/reference/wasm-api.md +420 -0
  110. package/docs/semantic-pack-review.md +144 -0
  111. package/docs/semantic-pack-signing.md +234 -0
  112. package/docs/semantic-packs.md +284 -0
  113. package/docs/specs/ADR-001-sea-dsl-semantic-source-of-truth.md +33 -0
  114. package/docs/specs/ADR-002-projection-first-class-construct.md +50 -0
  115. package/docs/specs/ADR-003-protobuf-projection-target.md +51 -0
  116. package/docs/specs/ADR-004-projection-compatibility-semantics.md +57 -0
  117. package/docs/specs/ADR-005-multi-language-support-strategy.md +112 -0
  118. package/docs/specs/ADR-006-error-handling-strategy.md +115 -0
  119. package/docs/specs/ADR-007-policy-evaluation-engine.md +95 -0
  120. package/docs/specs/ADR-008-knowledge-graph-integration.md +90 -0
  121. package/docs/specs/ADR-009-module-resolution-strategy.md +115 -0
  122. package/docs/specs/ADR-010-unit-system.md +106 -0
  123. package/docs/specs/PRD-001-sea-projection-framework.md +155 -0
  124. package/docs/specs/PRD-002-sea-cli-tooling.md +169 -0
  125. package/docs/specs/PRD-003-dsl-core-capabilities.md +275 -0
  126. package/docs/specs/README.md +62 -0
  127. package/docs/specs/SDS-001-protobuf-projection-engine.md +451 -0
  128. package/docs/specs/SDS-002-sea-core-architecture.md +268 -0
  129. package/docs/specs/SDS-003-parser-semantic-graph.md +377 -0
  130. package/docs/specs/SDS-004-policy-engine-design.md +362 -0
  131. package/docs/specs/SDS-005-knowledge-graph-module.md +364 -0
  132. package/docs/specs/SDS-006-calm-integration.md +367 -0
  133. package/docs/specs/SDS-007-sbvr-import.md +347 -0
  134. package/docs/templates/template_explanation.md +14 -0
  135. package/docs/templates/template_howto.md +21 -0
  136. package/docs/templates/template_playbook.md +21 -0
  137. package/docs/templates/template_reference.md +17 -0
  138. package/docs/templates/template_tutorial.md +24 -0
  139. package/docs/tutorials/README.md +12 -0
  140. package/docs/tutorials/first-sea-model.md +85 -0
  141. package/docs/tutorials/getting-started.md +98 -0
  142. package/docs/tutorials/python-binding-quickstart.md +107 -0
  143. package/docs/tutorials/typescript-binding-quickstart.md +91 -0
  144. package/docs/tutorials/wasm-in-browser.md +75 -0
  145. package/domainforge-core/CHANGELOG.md +138 -0
  146. package/domainforge-core/Cargo.toml +101 -0
  147. package/domainforge-core/MIGRATING.md +32 -0
  148. package/domainforge-core/README.md +197 -0
  149. package/domainforge-core/benchmark_results.txt +51 -0
  150. package/domainforge-core/build.rs +6 -0
  151. package/domainforge-core/deny.toml +31 -0
  152. package/domainforge-core/docs/specs/projections/sbvr_kg_mapping.md +43 -0
  153. package/domainforge-core/examples/basic.sea +7 -0
  154. package/domainforge-core/examples/cli/import_export_workflow.sh +38 -0
  155. package/domainforge-core/examples/cli/validate_example.sh +30 -0
  156. package/domainforge-core/examples/evolution_semantics.sea +31 -0
  157. package/domainforge-core/examples/parser_demo.rs +203 -0
  158. package/domainforge-core/grammar/sea.pest +408 -0
  159. package/domainforge-core/schemas/calm-v1.schema.json +170 -0
  160. package/domainforge-core/schemas/shacl/sea_shapes.ttl +19 -0
  161. package/domainforge-core/src/authority/compiler.rs +309 -0
  162. package/domainforge-core/src/authority/environment.rs +203 -0
  163. package/domainforge-core/src/authority/error.rs +164 -0
  164. package/domainforge-core/src/authority/fact_resolver.rs +224 -0
  165. package/domainforge-core/src/authority/mod.rs +25 -0
  166. package/domainforge-core/src/authority/pack.rs +133 -0
  167. package/domainforge-core/src/authority/policy.rs +224 -0
  168. package/domainforge-core/src/authority/resolver.rs +446 -0
  169. package/domainforge-core/src/authority/trace.rs +217 -0
  170. package/domainforge-core/src/authority/transform.rs +168 -0
  171. package/domainforge-core/src/authority/types.rs +617 -0
  172. package/domainforge-core/src/bin/domainforge.rs +25 -0
  173. package/domainforge-core/src/calm/export.rs +538 -0
  174. package/domainforge-core/src/calm/import.rs +1220 -0
  175. package/domainforge-core/src/calm/mod.rs +9 -0
  176. package/domainforge-core/src/calm/models.rs +108 -0
  177. package/domainforge-core/src/calm/sbvr_import.rs +9 -0
  178. package/domainforge-core/src/cli/authority.rs +149 -0
  179. package/domainforge-core/src/cli/format.rs +85 -0
  180. package/domainforge-core/src/cli/import.rs +133 -0
  181. package/domainforge-core/src/cli/mod.rs +64 -0
  182. package/domainforge-core/src/cli/normalize.rs +180 -0
  183. package/domainforge-core/src/cli/pack.rs +904 -0
  184. package/domainforge-core/src/cli/parse.rs +112 -0
  185. package/domainforge-core/src/cli/project.rs +294 -0
  186. package/domainforge-core/src/cli/registry.rs +41 -0
  187. package/domainforge-core/src/cli/test.rs +12 -0
  188. package/domainforge-core/src/cli/validate.rs +195 -0
  189. package/domainforge-core/src/cli/validate_kg.rs +80 -0
  190. package/domainforge-core/src/concept_id.rs +89 -0
  191. package/domainforge-core/src/error/diagnostics.rs +426 -0
  192. package/domainforge-core/src/error/fuzzy.rs +253 -0
  193. package/domainforge-core/src/error/mod.rs +13 -0
  194. package/domainforge-core/src/formatter/comments.rs +223 -0
  195. package/domainforge-core/src/formatter/config.rs +114 -0
  196. package/domainforge-core/src/formatter/mod.rs +22 -0
  197. package/domainforge-core/src/formatter/printer.rs +906 -0
  198. package/domainforge-core/src/graph/mod.rs +858 -0
  199. package/domainforge-core/src/graph/to_ast.rs +66 -0
  200. package/domainforge-core/src/kg.rs +1476 -0
  201. package/domainforge-core/src/kg_import.rs +251 -0
  202. package/domainforge-core/src/lib.rs +203 -0
  203. package/domainforge-core/src/module/mod.rs +1 -0
  204. package/domainforge-core/src/module/resolver.rs +260 -0
  205. package/domainforge-core/src/parser/ast.rs +2919 -0
  206. package/domainforge-core/src/parser/ast_convert.rs +494 -0
  207. package/domainforge-core/src/parser/ast_schema.rs +491 -0
  208. package/domainforge-core/src/parser/error.rs +291 -0
  209. package/domainforge-core/src/parser/lint.rs +39 -0
  210. package/domainforge-core/src/parser/mod.rs +193 -0
  211. package/domainforge-core/src/parser/printer.rs +702 -0
  212. package/domainforge-core/src/parser/profiles.rs +71 -0
  213. package/domainforge-core/src/parser/string_utils.rs +138 -0
  214. package/domainforge-core/src/patterns.rs +68 -0
  215. package/domainforge-core/src/policy/core.rs +1148 -0
  216. package/domainforge-core/src/policy/expression.rs +399 -0
  217. package/domainforge-core/src/policy/mod.rs +18 -0
  218. package/domainforge-core/src/policy/normalize.rs +1028 -0
  219. package/domainforge-core/src/policy/quantifier.rs +940 -0
  220. package/domainforge-core/src/policy/three_valued.rs +140 -0
  221. package/domainforge-core/src/policy/three_valued_microbench.rs +104 -0
  222. package/domainforge-core/src/policy/type_inference.rs +67 -0
  223. package/domainforge-core/src/policy/violation.rs +36 -0
  224. package/domainforge-core/src/primitives/concept_change.rs +61 -0
  225. package/domainforge-core/src/primitives/entity.rs +224 -0
  226. package/domainforge-core/src/primitives/flow.rs +111 -0
  227. package/domainforge-core/src/primitives/instance.rs +93 -0
  228. package/domainforge-core/src/primitives/mapping_contract.rs +50 -0
  229. package/domainforge-core/src/primitives/metric.rs +79 -0
  230. package/domainforge-core/src/primitives/mod.rs +25 -0
  231. package/domainforge-core/src/primitives/projection_contract.rs +50 -0
  232. package/domainforge-core/src/primitives/quantity.rs +56 -0
  233. package/domainforge-core/src/primitives/relation.rs +68 -0
  234. package/domainforge-core/src/primitives/resource.rs +237 -0
  235. package/domainforge-core/src/primitives/resource_instance.rs +88 -0
  236. package/domainforge-core/src/primitives/role.rs +49 -0
  237. package/domainforge-core/src/projection/buf.rs +404 -0
  238. package/domainforge-core/src/projection/contracts.rs +22 -0
  239. package/domainforge-core/src/projection/engine.rs +19 -0
  240. package/domainforge-core/src/projection/mod.rs +16 -0
  241. package/domainforge-core/src/projection/protobuf.rs +3331 -0
  242. package/domainforge-core/src/projection/registry.rs +43 -0
  243. package/domainforge-core/src/python/authority.rs +253 -0
  244. package/domainforge-core/src/python/error.rs +227 -0
  245. package/domainforge-core/src/python/formatter.rs +86 -0
  246. package/domainforge-core/src/python/graph.rs +366 -0
  247. package/domainforge-core/src/python/mod.rs +9 -0
  248. package/domainforge-core/src/python/policy.rs +651 -0
  249. package/domainforge-core/src/python/primitives.rs +796 -0
  250. package/domainforge-core/src/python/registry.rs +98 -0
  251. package/domainforge-core/src/python/semantic_pack.rs +619 -0
  252. package/domainforge-core/src/python/units.rs +96 -0
  253. package/domainforge-core/src/registry/mod.rs +432 -0
  254. package/domainforge-core/src/registry/tests.rs +210 -0
  255. package/domainforge-core/src/sbvr.rs +744 -0
  256. package/domainforge-core/src/semantic_pack/builder.rs +470 -0
  257. package/domainforge-core/src/semantic_pack/canonical_json.rs +184 -0
  258. package/domainforge-core/src/semantic_pack/diagnostics.rs +214 -0
  259. package/domainforge-core/src/semantic_pack/diff.rs +216 -0
  260. package/domainforge-core/src/semantic_pack/mod.rs +31 -0
  261. package/domainforge-core/src/semantic_pack/pack_set.rs +240 -0
  262. package/domainforge-core/src/semantic_pack/resolver.rs +437 -0
  263. package/domainforge-core/src/semantic_pack/review.rs +125 -0
  264. package/domainforge-core/src/semantic_pack/schema.rs +342 -0
  265. package/domainforge-core/src/semantic_pack/signing.rs +105 -0
  266. package/domainforge-core/src/semantic_pack/validator.rs +368 -0
  267. package/domainforge-core/src/semantic_version.rs +140 -0
  268. package/domainforge-core/src/test_utils.rs +12 -0
  269. package/domainforge-core/src/typescript/authority.rs +184 -0
  270. package/domainforge-core/src/typescript/error.rs +146 -0
  271. package/domainforge-core/src/typescript/formatter.rs +76 -0
  272. package/domainforge-core/src/typescript/graph.rs +391 -0
  273. package/domainforge-core/src/typescript/mod.rs +9 -0
  274. package/domainforge-core/src/typescript/policy.rs +564 -0
  275. package/domainforge-core/src/typescript/primitives.rs +784 -0
  276. package/domainforge-core/src/typescript/registry.rs +88 -0
  277. package/domainforge-core/src/typescript/semantic_pack.rs +470 -0
  278. package/domainforge-core/src/typescript/units.rs +76 -0
  279. package/domainforge-core/src/units/mod.rs +462 -0
  280. package/domainforge-core/src/uuid_module.rs +42 -0
  281. package/domainforge-core/src/validation_error.rs +818 -0
  282. package/domainforge-core/src/validation_result.rs +30 -0
  283. package/domainforge-core/src/wasm/authority.rs +192 -0
  284. package/domainforge-core/src/wasm/error.rs +145 -0
  285. package/domainforge-core/src/wasm/formatter.rs +69 -0
  286. package/domainforge-core/src/wasm/graph.rs +471 -0
  287. package/domainforge-core/src/wasm/mod.rs +16 -0
  288. package/domainforge-core/src/wasm/policy.rs +607 -0
  289. package/domainforge-core/src/wasm/primitives.rs +295 -0
  290. package/domainforge-core/src/wasm/semantic_pack.rs +471 -0
  291. package/domainforge-core/src/wasm/units.rs +62 -0
  292. package/domainforge-core/std/aws.sea +6 -0
  293. package/domainforge-core/std/core.sea +6 -0
  294. package/domainforge-core/std/http.sea +27 -0
  295. package/domainforge-core/tests/aggregation_enhanced_tests.rs +162 -0
  296. package/domainforge-core/tests/aggregation_eval_tests.rs +248 -0
  297. package/domainforge-core/tests/aggregation_integration_tests.rs +379 -0
  298. package/domainforge-core/tests/aggregation_parser_tests.rs +92 -0
  299. package/domainforge-core/tests/aggregation_tests.rs +102 -0
  300. package/domainforge-core/tests/authority_conformance_tests.rs +1173 -0
  301. package/domainforge-core/tests/calm_round_trip_tests.rs +283 -0
  302. package/domainforge-core/tests/calm_schema_validation_tests.rs +137 -0
  303. package/domainforge-core/tests/cast_operator_tests.rs +85 -0
  304. package/domainforge-core/tests/cli_binary_check.rs +37 -0
  305. package/domainforge-core/tests/cli_import_tests.rs +291 -0
  306. package/domainforge-core/tests/cli_path_traversal_tests.rs +124 -0
  307. package/domainforge-core/tests/cli_tests.rs +63 -0
  308. package/domainforge-core/tests/diagnostics_tests.rs +203 -0
  309. package/domainforge-core/tests/dimension_unit_tests.rs +80 -0
  310. package/domainforge-core/tests/entity_tests.rs +69 -0
  311. package/domainforge-core/tests/evolution_semantics_tests.rs +157 -0
  312. package/domainforge-core/tests/flow_tests.rs +78 -0
  313. package/domainforge-core/tests/flow_unit_validation_tests.rs +31 -0
  314. package/domainforge-core/tests/graph_integration_tests.rs +218 -0
  315. package/domainforge-core/tests/graph_tests.rs +626 -0
  316. package/domainforge-core/tests/import_parsing_tests.rs +23 -0
  317. package/domainforge-core/tests/instance_integration_tests.rs +98 -0
  318. package/domainforge-core/tests/instance_parsing_tests.rs +58 -0
  319. package/domainforge-core/tests/instance_tests.rs +61 -0
  320. package/domainforge-core/tests/kg_uri_encoding_tests.rs +53 -0
  321. package/domainforge-core/tests/lint_tests.rs +19 -0
  322. package/domainforge-core/tests/metric_tests.rs +143 -0
  323. package/domainforge-core/tests/module_resolution_tests.rs +100 -0
  324. package/domainforge-core/tests/namespace_registry_tests.rs +247 -0
  325. package/domainforge-core/tests/null_handling_tests.rs +26 -0
  326. package/domainforge-core/tests/parser_ast_v3.rs +53 -0
  327. package/domainforge-core/tests/parser_dimension_registry_tests.rs +20 -0
  328. package/domainforge-core/tests/parser_integration_tests.rs +294 -0
  329. package/domainforge-core/tests/parser_metadata_tests.rs +97 -0
  330. package/domainforge-core/tests/parser_resource_domain_only_graph_test.rs +21 -0
  331. package/domainforge-core/tests/parser_resource_limits_tests.rs +122 -0
  332. package/domainforge-core/tests/parser_tests.rs +512 -0
  333. package/domainforge-core/tests/pattern_semantics_tests.rs +87 -0
  334. package/domainforge-core/tests/phase_14_determinism_tests.rs +166 -0
  335. package/domainforge-core/tests/phase_15_validation_error_tests.rs +136 -0
  336. package/domainforge-core/tests/phase_16_unicode_tests.rs +248 -0
  337. package/domainforge-core/tests/phase_17_export_tests.rs +285 -0
  338. package/domainforge-core/tests/phase_17_round_trip_tests.rs +264 -0
  339. package/domainforge-core/tests/policy_tests.rs +635 -0
  340. package/domainforge-core/tests/primitives_integration_tests.rs +151 -0
  341. package/domainforge-core/tests/print_rdf_xml.rs +14 -0
  342. package/domainforge-core/tests/printer_tests.rs +204 -0
  343. package/domainforge-core/tests/profile_tests.rs +35 -0
  344. package/domainforge-core/tests/projection_contracts_tests.rs +154 -0
  345. package/domainforge-core/tests/protobuf_projection_tests.rs +199 -0
  346. package/domainforge-core/tests/quantity_tests.rs +41 -0
  347. package/domainforge-core/tests/rdf_xml_typed_literal_tests.rs +105 -0
  348. package/domainforge-core/tests/registry_schema_tests.rs +33 -0
  349. package/domainforge-core/tests/resource_tests.rs +50 -0
  350. package/domainforge-core/tests/resource_unit_tests.rs +24 -0
  351. package/domainforge-core/tests/roles_relations_tests.rs +61 -0
  352. package/domainforge-core/tests/round_trip_tests.rs +34 -0
  353. package/domainforge-core/tests/runtime_toggle_tests.rs +70 -0
  354. package/domainforge-core/tests/sbvr_fact_schema_tests.rs +60 -0
  355. package/domainforge-core/tests/sbvr_flow_facts_tests.rs +55 -0
  356. package/domainforge-core/tests/sbvr_parsing_tests.rs +53 -0
  357. package/domainforge-core/tests/semantic_pack_alias_resolution.rs +197 -0
  358. package/domainforge-core/tests/semantic_pack_build.rs +302 -0
  359. package/domainforge-core/tests/semantic_pack_consumer_smoke.rs +150 -0
  360. package/domainforge-core/tests/semantic_pack_pack_set.rs +160 -0
  361. package/domainforge-core/tests/semantic_pack_signing.rs +157 -0
  362. package/domainforge-core/tests/semantic_pack_three_valued.rs +250 -0
  363. package/domainforge-core/tests/semantic_pack_validate.rs +196 -0
  364. package/domainforge-core/tests/std_lib_tests.rs +37 -0
  365. package/domainforge-core/tests/temporal_evaluation_tests.rs +159 -0
  366. package/domainforge-core/tests/temporal_semantics_tests.rs +214 -0
  367. package/domainforge-core/tests/three_valued_quantifiers_tests.rs +164 -0
  368. package/domainforge-core/tests/turtle_entity_export_tests.rs +38 -0
  369. package/domainforge-core/tests/turtle_escaping_tests.rs +53 -0
  370. package/domainforge-core/tests/turtle_resource_export_tests.rs +34 -0
  371. package/domainforge-core/tests/type_inference_tests.rs +40 -0
  372. package/domainforge-core/tests/unicode_validation_tests.rs +169 -0
  373. package/domainforge-core/tests/unit_tests.rs +81 -0
  374. package/domainforge-core/tests/validate_tests.rs +38 -0
  375. package/domainforge-core/tests/validation_unit_mismatch_tests.rs +83 -0
  376. package/domainforge-core/tests/wasm_tests.rs +229 -0
  377. package/domainforge-python/CHANGELOG-python.md +12 -0
  378. package/domainforge-python/MIGRATING.md +24 -0
  379. package/domainforge-python/README.md +256 -0
  380. package/domainforge-python/domainforge/__init__.py +95 -0
  381. package/domainforge-python/domainforge/domainforge.pyi +519 -0
  382. package/domainforge-python/pyproject.toml +36 -0
  383. package/domainforge-typescript/CHANGELOG-typescript.md +12 -0
  384. package/domainforge-typescript/LICENSE +201 -0
  385. package/domainforge-typescript/MIGRATING.md +24 -0
  386. package/domainforge-typescript/README.md +305 -0
  387. package/domainforge-typescript/index.d.ts +452 -0
  388. package/domainforge-typescript/index.js +361 -0
  389. package/domainforge-typescript/package.json +60 -0
  390. package/example.js +61 -0
  391. package/examples/browser.html +366 -0
  392. package/examples/namespaces/finance/cashflow.sea +5 -0
  393. package/examples/namespaces/logistics/core.sea +7 -0
  394. package/examples/observability_metrics.sea +38 -0
  395. package/fixtures/semantic_packs/acme_procurement/domain/entities.sea +39 -0
  396. package/fixtures/semantic_packs/acme_procurement/domain/metrics.sea +11 -0
  397. package/fixtures/semantic_packs/acme_procurement/domain/relations.sea +7 -0
  398. package/fixtures/semantic_packs/acme_procurement/domain/resources.sea +9 -0
  399. package/fixtures/semantic_packs/acme_procurement/review/acme.procurement.semantic-review.jsonl +7 -0
  400. package/fixtures/semantic_packs/acme_procurement/tests/ambiguous_vendor_alias.sea +8 -0
  401. package/fixtures/semantic_packs/acme_procurement/tests/deprecated_vendor_alias.sea +8 -0
  402. package/fixtures/semantic_packs/acme_procurement/tests/invalid_relation.sea +3 -0
  403. package/fixtures/semantic_packs/acme_procurement/tests/proposed_concept.sea +8 -0
  404. package/fixtures/semantic_packs/acme_procurement/tests/rejected_concept.sea +8 -0
  405. package/fixtures/semantic_packs/acme_procurement/tests/unit_mismatch.sea +7 -0
  406. package/fixtures/semantic_packs/acme_procurement/tests/unknown_vendor_policy.sea +8 -0
  407. package/fixtures/semantic_packs/acme_procurement/tests/valid_purchase_policy.sea +8 -0
  408. package/index.d.ts +2 -0
  409. package/index.js +8 -0
  410. package/justfile +200 -0
  411. package/lefthook.yml +13 -0
  412. package/lib/validate_native_exports.d.ts +4 -0
  413. package/lib/validate_native_exports.js +12 -0
  414. package/package.json +22 -0
  415. package/pytest.ini +5 -0
  416. package/python/tests/test_registry.py +75 -0
  417. package/python/tests/test_units.py +18 -0
  418. package/release-please-config.json +49 -0
  419. package/requirements-dev.txt +3 -0
  420. package/requirements.txt +3 -0
  421. package/rust-toolchain.toml +3 -0
  422. package/schemas/ast-v1.schema.json +72 -0
  423. package/schemas/ast-v2.schema.json +1200 -0
  424. package/schemas/ast-v3.schema.json +1200 -0
  425. package/schemas/sea-registry.schema.json +45 -0
  426. package/scripts/build-python.sh +37 -0
  427. package/scripts/build-release.sh +279 -0
  428. package/scripts/build-typescript.sh +13 -0
  429. package/scripts/build-wasm.sh +113 -0
  430. package/scripts/bump-version.sh +245 -0
  431. package/scripts/check_unused_test_imports.py +85 -0
  432. package/scripts/ci_tasks.py +379 -0
  433. package/scripts/clear_debug_test.sh +10 -0
  434. package/scripts/create-github-release.sh +262 -0
  435. package/scripts/create-tag.sh +203 -0
  436. package/scripts/find_and_link_test_binary.sh +70 -0
  437. package/scripts/generate-changelog.sh +271 -0
  438. package/scripts/generate-release-notes.sh +205 -0
  439. package/scripts/lint_release_security.py +96 -0
  440. package/scripts/lint_release_workflows.py +82 -0
  441. package/scripts/lint_workflow_gates.py +113 -0
  442. package/scripts/optimized-wasm-build.sh +61 -0
  443. package/scripts/patch_napi_types.py +62 -0
  444. package/scripts/pre-release-check.sh +289 -0
  445. package/scripts/prepare_rust_debug.sh +52 -0
  446. package/scripts/release.sh +373 -0
  447. package/scripts/resolve_rust_binary.py +230 -0
  448. package/scripts/run_commitlint.sh +29 -0
  449. package/scripts/test-all.sh +77 -0
  450. package/scripts/update_launch_program.py +93 -0
  451. package/secrets/README.md +27 -0
  452. package/secrets/secrets.yaml +21 -0
  453. package/test_integration.py +67 -0
  454. package/tests/test_authority.py +328 -0
  455. package/tests/test_ci_tasks.py +143 -0
  456. package/tests/test_expression.py +256 -0
  457. package/tests/test_golden_payment_flow.py +42 -0
  458. package/tests/test_graph.py +127 -0
  459. package/tests/test_instance.py +136 -0
  460. package/tests/test_parser.py +82 -0
  461. package/tests/test_primitives.py +68 -0
  462. package/tests/test_role_relation_parity.py +56 -0
  463. package/tests/test_runtime_toggle.py +156 -0
  464. package/tests/test_semantic_pack.py +639 -0
  465. package/tests/test_three_valued_eval.py +159 -0
  466. package/tsconfig.json +30 -0
  467. package/typescript-tests/advanced.test.ts +165 -0
  468. package/typescript-tests/authority.test.ts +216 -0
  469. package/typescript-tests/expression.test.ts +228 -0
  470. package/typescript-tests/golden-payment-flow.test.ts +51 -0
  471. package/typescript-tests/graph.test.ts +142 -0
  472. package/typescript-tests/native-binding.test.ts +20 -0
  473. package/typescript-tests/primitives.test.ts +88 -0
  474. package/typescript-tests/registry.test.ts +122 -0
  475. package/typescript-tests/role_relation.test.ts +63 -0
  476. package/typescript-tests/runtime_toggle.test.ts +141 -0
  477. package/typescript-tests/semantic-pack.test.ts +556 -0
  478. package/typescript-tests/three_valued_eval.test.ts +135 -0
  479. package/typescript-tests/units.test.ts +36 -0
  480. package/vitest.config.ts +13 -0
  481. 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)