thundergraph-model 1.2.2__tar.gz → 1.3.0__tar.gz

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 (325) hide show
  1. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/PKG-INFO +1 -1
  2. thundergraph_model-1.3.0/docs/generation_docs/behavioral_projection_plan.md +348 -0
  3. thundergraph_model-1.3.0/docs/user_docs/concepts_behavior.md +466 -0
  4. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/index.md +1 -0
  5. thundergraph_model-1.3.0/docs/user_docs/user/concepts_behavior.md +400 -0
  6. thundergraph_model-1.3.0/examples/commercial_aircraft/product/aircraft.py +212 -0
  7. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/notebooks/cargo_jet_program.ipynb +419 -37
  8. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/pyproject.toml +1 -1
  9. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/structural_models/test_instantiation.py +109 -0
  10. thundergraph_model-1.3.0/tests/unit/model/test_behavior_declarations.py +207 -0
  11. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/model/test_new_api_validators.py +13 -1
  12. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/execution/configured_model.py +47 -27
  13. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/model/compile_types.py +4 -0
  14. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/model/definition_context.py +40 -12
  15. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/uv.lock +1 -1
  16. thundergraph_model-1.2.2/examples/commercial_aircraft/product/aircraft.py +0 -106
  17. thundergraph_model-1.2.2/tests/unit/model/test_behavior_declarations.py +0 -90
  18. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/.github/ISSUE_TEMPLATE/01-bug_report.yml +0 -0
  19. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/.github/ISSUE_TEMPLATE/02-feature_request.yml +0 -0
  20. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/.github/ISSUE_TEMPLATE/03-documentation.yml +0 -0
  21. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  22. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/.github/pull_request_template.md +0 -0
  23. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/.github/workflows/publish.yml +0 -0
  24. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/.gitignore +0 -0
  25. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/CHANGELOG.md +0 -0
  26. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/LICENSE +0 -0
  27. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/PYPI.md +0 -0
  28. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/README.md +0 -0
  29. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/generation_docs/behavior_methodology.md +0 -0
  30. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/generation_docs/brainstorm.md +0 -0
  31. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/generation_docs/conceptual_requirements.md +0 -0
  32. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/generation_docs/evaluation_api_facade_implementation_plan.md +0 -0
  33. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/generation_docs/execution_methodology.md +0 -0
  34. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/generation_docs/implementation_plan.md +0 -0
  35. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/generation_docs/logical_architecture.md +0 -0
  36. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/generation_docs/model_prototype_sketch.py +0 -0
  37. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/generation_docs/requirement_composition_and_naming_implementation_plan.md +0 -0
  38. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/generation_docs/system_authoring_restrictions_implementation_plan.md +0 -0
  39. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/generation_docs/use_cases.md +0 -0
  40. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/generation_docs/v0_api.md +0 -0
  41. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/release/v1.2.0.md +0 -0
  42. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/release/v1.2.1.md +0 -0
  43. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/IMPLEMENTATION_PLAN.md +0 -0
  44. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/README.md +0 -0
  45. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.buildinfo +0 -0
  46. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.buildinfo.bak +0 -0
  47. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/api/api_analysis.doctree +0 -0
  48. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/api/api_execution.doctree +0 -0
  49. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/api/api_integrations.doctree +0 -0
  50. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/api/api_model.doctree +0 -0
  51. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/api/api_root.doctree +0 -0
  52. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/api/index.doctree +0 -0
  53. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/developer/architecture.doctree +0 -0
  54. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/developer/contributing.doctree +0 -0
  55. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/developer/extension_playbook.doctree +0 -0
  56. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/developer/releasing.doctree +0 -0
  57. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/developer/repository_map.doctree +0 -0
  58. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/developer/testing.doctree +0 -0
  59. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/docstring_style.doctree +0 -0
  60. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/drafts/execution_pipeline.doctree +0 -0
  61. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/drafts/glossary.doctree +0 -0
  62. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/drafts/repository_map.doctree +0 -0
  63. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/drafts/what_is_thundergraph_model.doctree +0 -0
  64. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/environment.pickle +0 -0
  65. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/index.doctree +0 -0
  66. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/user/concepts_evaluation.doctree +0 -0
  67. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/user/concepts_external_compute.doctree +0 -0
  68. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/user/concepts_parts.doctree +0 -0
  69. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/user/concepts_requirements.doctree +0 -0
  70. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/user/concepts_system.doctree +0 -0
  71. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/user/end_to_end_guide.doctree +0 -0
  72. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/user/faq.doctree +0 -0
  73. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/user/install.doctree +0 -0
  74. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/user/mental_model.doctree +0 -0
  75. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/user/overview.doctree +0 -0
  76. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/user/quickstart.doctree +0 -0
  77. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/index.html +0 -0
  78. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/analysis/compare_variants.html +0 -0
  79. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/analysis/impact.html +0 -0
  80. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/analysis/sweep.html +0 -0
  81. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/execution/behavior.html +0 -0
  82. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/execution/configured_model.html +0 -0
  83. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/execution/connection_bindings.html +0 -0
  84. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/execution/dependency_graph.html +0 -0
  85. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/execution/evaluator.html +0 -0
  86. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/execution/graph_compiler.html +0 -0
  87. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/execution/instances.html +0 -0
  88. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/execution/requirements.html +0 -0
  89. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/execution/run_context.html +0 -0
  90. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/execution/validation.html +0 -0
  91. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/execution/value_slots.html +0 -0
  92. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/integrations/external_compute.html +0 -0
  93. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/model/definition_context.html +0 -0
  94. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/model/elements.html +0 -0
  95. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/model/expr.html +0 -0
  96. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/model/refs.html +0 -0
  97. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/api/api_analysis.rst.txt +0 -0
  98. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/api/api_execution.rst.txt +0 -0
  99. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/api/api_integrations.rst.txt +0 -0
  100. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/api/api_model.rst.txt +0 -0
  101. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/api/api_root.rst.txt +0 -0
  102. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/api/index.md.txt +0 -0
  103. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/developer/architecture.md.txt +0 -0
  104. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/developer/contributing.md.txt +0 -0
  105. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/developer/extension_playbook.md.txt +0 -0
  106. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/developer/releasing.md.txt +0 -0
  107. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/developer/repository_map.md.txt +0 -0
  108. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/developer/testing.md.txt +0 -0
  109. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/docstring_style.md.txt +0 -0
  110. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/drafts/execution_pipeline.md.txt +0 -0
  111. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/drafts/glossary.md.txt +0 -0
  112. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/drafts/repository_map.md.txt +0 -0
  113. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/drafts/what_is_thundergraph_model.md.txt +0 -0
  114. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/index.md.txt +0 -0
  115. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/user/concepts_evaluation.md.txt +0 -0
  116. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/user/concepts_external_compute.md.txt +0 -0
  117. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/user/concepts_parts.md.txt +0 -0
  118. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/user/concepts_requirements.md.txt +0 -0
  119. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/user/concepts_system.md.txt +0 -0
  120. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/user/end_to_end_guide.md.txt +0 -0
  121. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/user/faq.md.txt +0 -0
  122. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/user/install.md.txt +0 -0
  123. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/user/mental_model.md.txt +0 -0
  124. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/user/overview.md.txt +0 -0
  125. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/user/quickstart.md.txt +0 -0
  126. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/base-stemmer.js +0 -0
  127. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/basic.css +0 -0
  128. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/debug.css +0 -0
  129. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/doctools.js +0 -0
  130. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/documentation_options.js +0 -0
  131. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/english-stemmer.js +0 -0
  132. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/file.png +0 -0
  133. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/language_data.js +0 -0
  134. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/minus.png +0 -0
  135. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/plus.png +0 -0
  136. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/pygments.css +0 -0
  137. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/scripts/furo-extensions.js +0 -0
  138. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/scripts/furo.js +0 -0
  139. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/scripts/furo.js.LICENSE.txt +0 -0
  140. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/scripts/furo.js.map +0 -0
  141. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/searchtools.js +0 -0
  142. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/skeleton.css +0 -0
  143. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/sphinx_highlight.js +0 -0
  144. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/styles/furo-extensions.css +0 -0
  145. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/styles/furo-extensions.css.map +0 -0
  146. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/styles/furo.css +0 -0
  147. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/styles/furo.css.map +0 -0
  148. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/api/api_analysis.html +0 -0
  149. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/api/api_execution.html +0 -0
  150. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/api/api_integrations.html +0 -0
  151. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/api/api_model.html +0 -0
  152. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/api/api_root.html +0 -0
  153. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/api/index.html +0 -0
  154. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/developer/architecture.html +0 -0
  155. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/developer/contributing.html +0 -0
  156. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/developer/extension_playbook.html +0 -0
  157. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/developer/releasing.html +0 -0
  158. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/developer/repository_map.html +0 -0
  159. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/developer/testing.html +0 -0
  160. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/docstring_style.html +0 -0
  161. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/drafts/execution_pipeline.html +0 -0
  162. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/drafts/glossary.html +0 -0
  163. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/drafts/repository_map.html +0 -0
  164. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/drafts/what_is_thundergraph_model.html +0 -0
  165. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/genindex.html +0 -0
  166. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/index.html +0 -0
  167. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/objects.inv +0 -0
  168. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/py-modindex.html +0 -0
  169. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/search.html +0 -0
  170. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/searchindex.js +0 -0
  171. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/user/concepts_evaluation.html +0 -0
  172. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/user/concepts_external_compute.html +0 -0
  173. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/user/concepts_parts.html +0 -0
  174. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/user/concepts_requirements.html +0 -0
  175. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/user/concepts_system.html +0 -0
  176. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/user/end_to_end_guide.html +0 -0
  177. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/user/faq.html +0 -0
  178. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/user/install.html +0 -0
  179. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/user/mental_model.html +0 -0
  180. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/user/overview.html +0 -0
  181. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/user/quickstart.html +0 -0
  182. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/api/api_analysis.rst +0 -0
  183. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/api/api_execution.rst +0 -0
  184. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/api/api_integrations.rst +0 -0
  185. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/api/api_model.rst +0 -0
  186. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/api/api_root.rst +0 -0
  187. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/api/index.md +0 -0
  188. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/conf.py +0 -0
  189. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/developer/architecture.md +0 -0
  190. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/developer/contributing.md +0 -0
  191. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/developer/extension_playbook.md +0 -0
  192. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/developer/releasing.md +0 -0
  193. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/developer/repository_map.md +0 -0
  194. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/developer/testing.md +0 -0
  195. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/docstring_style.md +0 -0
  196. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/drafts/README.md +0 -0
  197. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/drafts/execution_pipeline.md +0 -0
  198. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/drafts/glossary.md +0 -0
  199. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/drafts/repository_map.md +0 -0
  200. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/drafts/what_is_thundergraph_model.md +0 -0
  201. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/user/concepts_evaluation.md +0 -0
  202. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/user/concepts_external_compute.md +0 -0
  203. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/user/concepts_parts.md +0 -0
  204. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/user/concepts_requirements.md +0 -0
  205. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/user/concepts_system.md +0 -0
  206. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/user/end_to_end_guide.md +0 -0
  207. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/user/faq.md +0 -0
  208. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/user/install.md +0 -0
  209. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/user/mental_model.md +0 -0
  210. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/user/overview.md +0 -0
  211. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/user/quickstart.md +0 -0
  212. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/__init__.py +0 -0
  213. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/IMPLEMENTATION_PLAN.md +0 -0
  214. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/README.md +0 -0
  215. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/__init__.py +0 -0
  216. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/integrations/__init__.py +0 -0
  217. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/integrations/adapters.py +0 -0
  218. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/integrations/bindings.py +0 -0
  219. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/product/__init__.py +0 -0
  220. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/product/major_assemblies/__init__.py +0 -0
  221. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/product/major_assemblies/parts.py +0 -0
  222. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/program/__init__.py +0 -0
  223. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/program/cargo_jet_program.py +0 -0
  224. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/program/l1_requirement_packages.py +0 -0
  225. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/program/mission_context.py +0 -0
  226. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/reporting/__init__.py +0 -0
  227. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/reporting/extract.py +0 -0
  228. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/reporting/snapshot.py +0 -0
  229. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/hpc_datacenter/README.md +0 -0
  230. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/hpc_datacenter/__init__.py +0 -0
  231. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/hpc_datacenter/program.py +0 -0
  232. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/mars_ntp_tug/__init__.py +0 -0
  233. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/mars_ntp_tug/integrations/__init__.py +0 -0
  234. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/mars_ntp_tug/integrations/adapters.py +0 -0
  235. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/mars_ntp_tug/integrations/bindings.py +0 -0
  236. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/mars_ntp_tug/integrations/preset_inputs.py +0 -0
  237. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/mars_ntp_tug/reporting/__init__.py +0 -0
  238. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/mars_ntp_tug/reporting/extract.py +0 -0
  239. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/mars_ntp_tug/reporting/snapshot.py +0 -0
  240. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/mars_ntp_tug/tug_model.py +0 -0
  241. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/implementation_plan_instructions.md +0 -0
  242. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/logo.png +0 -0
  243. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/notebooks/_gen_leo_notebook.py +0 -0
  244. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/notebooks/aev_architecture.mmd +0 -0
  245. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/notebooks/hpc_datacenter_parameter_sweep.ipynb +0 -0
  246. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/notebooks/mars_ntp_nuclear_tug.ipynb +0 -0
  247. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/reviewer_architype.md +0 -0
  248. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/__init__.py +0 -0
  249. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/__init__.py +0 -0
  250. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/analysis/__init__.py +0 -0
  251. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/analysis/test_analysis_workflows.py +0 -0
  252. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/behavior/__init__.py +0 -0
  253. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/behavior/test_behavior_e2e.py +0 -0
  254. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/evaluation/__init__.py +0 -0
  255. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/evaluation/test_allocate_parameter_wiring.py +0 -0
  256. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/evaluation/test_evaluation_e2e.py +0 -0
  257. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/evaluation/test_external_compute.py +0 -0
  258. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/evaluation/test_requirement_acceptance.py +0 -0
  259. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/evaluation/test_unitflow_evaluation.py +0 -0
  260. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/structural_models/__init__.py +0 -0
  261. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/structural_models/test_citations.py +0 -0
  262. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/structural_models/test_drive_system.py +0 -0
  263. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/test_commercial_aircraft_smoke.py +0 -0
  264. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/test_hpc_datacenter_smoke.py +0 -0
  265. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/test_mars_ntp_tug_smoke.py +0 -0
  266. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/__init__.py +0 -0
  267. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/analysis/__init__.py +0 -0
  268. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/analysis/test_sweep_planning.py +0 -0
  269. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/execution/__init__.py +0 -0
  270. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/execution/test_behavior_runtime.py +0 -0
  271. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/execution/test_behavior_scope.py +0 -0
  272. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/execution/test_configured_model.py +0 -0
  273. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/execution/test_configured_model_evaluate.py +0 -0
  274. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/execution/test_dependency_graph.py +0 -0
  275. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/execution/test_evaluator.py +0 -0
  276. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/execution/test_instances.py +0 -0
  277. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/execution/test_phase6_runtime.py +0 -0
  278. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/execution/test_run_context.py +0 -0
  279. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/execution/test_validation.py +0 -0
  280. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/export/__init__.py +0 -0
  281. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/integrations/__init__.py +0 -0
  282. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/model/__init__.py +0 -0
  283. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/model/test_attribute_ref.py +0 -0
  284. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/model/test_compile_types.py +0 -0
  285. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/model/test_definition_context.py +0 -0
  286. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/model/test_elements.py +0 -0
  287. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/model/test_example_system_authoring_policy.py +0 -0
  288. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/model/test_expr.py +0 -0
  289. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/model/test_identity.py +0 -0
  290. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/model/test_parameter_ref.py +0 -0
  291. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/model/test_phase6_ontology.py +0 -0
  292. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/model/test_refs.py +0 -0
  293. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/model/test_requirement_block.py +0 -0
  294. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/model/test_system_authoring_restrictions.py +0 -0
  295. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/__init__.py +0 -0
  296. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/analysis/__init__.py +0 -0
  297. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/analysis/_coherence.py +0 -0
  298. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/analysis/compare_variants.py +0 -0
  299. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/analysis/impact.py +0 -0
  300. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/analysis/sweep.py +0 -0
  301. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/execution/__init__.py +0 -0
  302. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/execution/behavior.py +0 -0
  303. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/execution/connection_bindings.py +0 -0
  304. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/execution/dependency_graph.py +0 -0
  305. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/execution/evaluator.py +0 -0
  306. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/execution/external_ops.py +0 -0
  307. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/execution/graph_compiler.py +0 -0
  308. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/execution/instances.py +0 -0
  309. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/execution/requirements.py +0 -0
  310. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/execution/rollups.py +0 -0
  311. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/execution/run_context.py +0 -0
  312. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/execution/solve_groups.py +0 -0
  313. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/execution/validation.py +0 -0
  314. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/execution/value_slots.py +0 -0
  315. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/export/__init__.py +0 -0
  316. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/integrations/__init__.py +0 -0
  317. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/integrations/external_compute.py +0 -0
  318. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/model/__init__.py +0 -0
  319. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/model/declarations/__init__.py +0 -0
  320. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/model/declarations/behavior.py +0 -0
  321. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/model/declarations/values.py +0 -0
  322. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/model/elements.py +0 -0
  323. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/model/expr.py +0 -0
  324. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/model/identity.py +0 -0
  325. {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/model/refs.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: thundergraph-model
3
- Version: 1.2.2
3
+ Version: 1.3.0
4
4
  Summary: Executable systems modeling in Python
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.11
@@ -0,0 +1,348 @@
1
+ # Behavioral Projection — Implementation Plan
2
+
3
+ ## Purpose
4
+
5
+ `tg-model` has a complete behavioral authoring API (state machines, activity control flow,
6
+ inter-part items, scenarios). It was designed and implemented in Phase 6. What is missing is
7
+ the projection pipeline that reads these declarations and writes them to ThunderGraph's Neo4j
8
+ graph — making state and activity diagrams available in the ThunderGraph UI.
9
+
10
+ This document is the authoritative plan for closing that gap across three parallel workstreams:
11
+
12
+ 1. **User Docs** — document behavioral authoring for engineers and agent consumers
13
+ 2. **Projection Plumbing** — wire behavioral data from bundle walk → Neo4j → REST API
14
+ 3. **Agent Skill and Tooling** — give the authoring agent access to behavioral capabilities
15
+
16
+ ---
17
+
18
+ ## Context: What Already Exists
19
+
20
+ ### In tg-model (complete)
21
+
22
+ All behavioral declarations use the same `ModelDefinitionContext` (`model`) object available
23
+ inside any `Part.define()` method.
24
+
25
+ **State machine primitives:**
26
+ `model.state()`, `model.event()`, `model.guard()`, `model.action()`, `model.transition()`
27
+
28
+ **Activity / control-flow primitives:**
29
+ `model.action()`, `model.sequence()`, `model.decision()`, `model.merge()`, `model.fork_join()`
30
+
31
+ **Inter-part items:**
32
+ `model.item_kind()` + `emit_item()` at runtime
33
+
34
+ **Scenarios:**
35
+ `model.scenario()` + `validate_scenario_trace()` at runtime
36
+
37
+ **Projection extraction hook:**
38
+ `behavior_authoring_projection(definition_type)` returns a JSON-ready dict of all
39
+ behavioral declarations on a compiled type. This is the exact entry point `bundle_walker`
40
+ should call.
41
+
42
+ ### In ThunderGraph (complete — frontend side)
43
+
44
+ - `StateViewWrapper` + all React Flow state diagram components already exist
45
+ - `FlowViewWrapper` + all React Flow activity diagram components already exist
46
+ - `GET /systems-model/state-view` route exists (queries legacy SysML data)
47
+ - `GET /systems-model/action-view` route was deleted (needs restoration)
48
+ - TypeScript types for `StateViewData` and `FlowViewData` are already defined
49
+
50
+ ### What is missing
51
+
52
+ - `bundle_walker.py` does not call `behavior_authoring_projection()`
53
+ - `types.py` has no `StateRecord`, `ActionRecord`, `ControlNodeRecord`, or `SuccessionRecord`
54
+ - `diff_writer.py` does not write `State_*` or `Action_*` nodes or behavioral edges
55
+ - `/systems-model/action-view` does not exist
56
+ - `/systems-model/state-view` queries SysML parser data, not tg-model projection data
57
+ - User docs for behavioral authoring do not exist
58
+ - The agent authoring skill has no behavioral authoring guidance
59
+
60
+ ---
61
+
62
+ ## Workstream 1: User Documentation
63
+
64
+ ### 1.1 New concept page — `user/concepts_behavior.md`
65
+
66
+ Write a user-facing guide covering behavioral authoring.
67
+ Style follows `concepts_parts.md` — minimal prose, working code examples.
68
+
69
+ **Sections:**
70
+
71
+ | Section | Content |
72
+ |---|---|
73
+ | State Machines | `model.state`, `model.event`, `model.guard`, `model.transition` — full worked example with a realistic part (mode machine) |
74
+ | Named Actions | `model.action` with `effect=` callable — what an action is, how it runs at simulation time |
75
+ | Activity Sequencing | `model.sequence` — the default, simplest control flow |
76
+ | Branching | `model.decision` + `model.merge` — exclusive branch/rejoin |
77
+ | Parallelism | `model.fork_join` — logically parallel branches |
78
+ | Inter-part Items | `model.item_kind` + `emit_item()` — how items cross structural connections |
79
+ | Scenarios | `model.scenario` + `validate_scenario_trace()` — behavioral contracts and validation |
80
+ | State + Activity Together | Short note: state machines and activity flow can coexist on the same Part |
81
+ | What ThunderGraph Shows | Brief paragraph on which declarations appear in state vs. activity diagram views |
82
+
83
+ **Target path:** `thundergraph-model/docs/user_docs/user/concepts_behavior.md`
84
+
85
+ Wire into `thundergraph-model/docs/user_docs/index.md` toctree after `concepts_evaluation`.
86
+
87
+ ### 1.2 Internal integration reference — `user_docs/concepts_behavior.md`
88
+
89
+ The file at `docs/user_docs/concepts_behavior.md` (top-level, not in `user/`) currently holds
90
+ the ThunderGraph integration reference (DSL → ThunderGraph mapping, gap analysis, Neo4j schema).
91
+ Keep it as-is. It is not user-facing; it is reference material for ThunderGraph engineers
92
+ implementing the projection pipeline.
93
+
94
+ ### 1.3 Update `api/index.md`
95
+
96
+ Add a short entry for the behavioral API surface:
97
+ `model.state`, `model.event`, `model.action`, `model.transition`, `model.sequence`,
98
+ `model.decision`, `model.merge`, `model.fork_join`, `model.item_kind`, `model.scenario`.
99
+ Link to the `concepts_behavior` page and to the Sphinx automodule for
100
+ `tg_model.execution.behavior`.
101
+
102
+ ---
103
+
104
+ ## Workstream 2: Projection Plumbing
105
+
106
+ ### Guiding principle
107
+
108
+ Behavioral data is projection-only — engineers never write Neo4j schema directly.
109
+ The same `bundle_walker → diff_writer` pattern used for structural elements applies here.
110
+
111
+ ### 2.1 `common/services/tg_model_projector/types.py`
112
+
113
+ Add TypedDicts for behavioral records:
114
+
115
+ ```python
116
+ class StateRecord(TypedDict):
117
+ stable_id: str # deterministic from owner_stable_id + state name
118
+ name: str
119
+ owner_stable_id: str # Part/System that owns this state machine
120
+ is_initial: bool
121
+
122
+ class TransitionRecord(TypedDict):
123
+ source_stable_id: str
124
+ target_stable_id: str
125
+ trigger: str # event name
126
+ guard: str # guard name or "" for inline guards
127
+ effect: str # action name or ""
128
+
129
+ class ActionRecord(TypedDict):
130
+ stable_id: str
131
+ name: str
132
+ owner_stable_id: str
133
+ is_control_node: bool # False for plain actions; True for decision/merge/fork/join
134
+ node_type: str # "action" | "decision" | "merge" | "fork" | "join"
135
+ doc: str | None
136
+
137
+ class SuccessionRecord(TypedDict):
138
+ source_stable_id: str
139
+ target_stable_id: str
140
+ guard: str # guard label for decision→branch edges; "" otherwise
141
+
142
+ class ItemFlowRecord(TypedDict):
143
+ source_port_stable_id: str
144
+ target_port_stable_id: str
145
+ item_kind: str
146
+ ```
147
+
148
+ ### 2.2 `common/services/tg_model_projector/bundle_walker.py`
149
+
150
+ Add `_walk_behavior(element_type, owner_stable_id)` function.
151
+
152
+ Detection: an element type has behavioral declarations when:
153
+ - `bool(getattr(element_type, "_tg_behavior_spec", None))` — has transitions (state machine)
154
+ - `bool(getattr(element_type, "_tg_decision_specs", None))` — has decisions (activity)
155
+ - `bool(getattr(element_type, "_tg_fork_join_specs", None))` — has fork/joins
156
+ - `bool(getattr(element_type, "_tg_sequence_specs", None))` — has sequences
157
+
158
+ When any of the above are truthy, call `behavior_authoring_projection(element_type)` and
159
+ translate the returned dict into `StateRecord`, `TransitionRecord`, `ActionRecord`,
160
+ `SuccessionRecord`, and `ItemFlowRecord` lists.
161
+
162
+ **Control node → ActionRecord mapping:**
163
+
164
+ | tg-model concept | `node_type` | Notes |
165
+ |---|---|---|
166
+ | `model.action()` | `"action"` | `is_control_node=False` |
167
+ | `model.decision()` | `"decision"` | `is_control_node=True`; emit `SuccessionRecord` for each branch |
168
+ | `model.merge()` | `"merge"` | `is_control_node=True`; emit `SuccessionRecord` to `then_action` if set |
169
+ | `model.fork_join()` | `"fork"` + `"join"` | Two `ActionRecord`s (fork start + join end); branches become `SuccessionRecord`s between fork and join; `then_action` is a `SuccessionRecord` from join |
170
+ | `model.sequence()` | N/A | Emits `SuccessionRecord` chains only; no node of its own |
171
+
172
+ **Sequence → SuccessionRecord translation:**
173
+
174
+ For `model.sequence("loop", steps=["a", "b", "c"])`, emit:
175
+ - `SuccessionRecord(source=stable_id(a), target=stable_id(b), guard="")`
176
+ - `SuccessionRecord(source=stable_id(b), target=stable_id(c), guard="")`
177
+
178
+ **Stable ID scheme:**
179
+
180
+ Stable IDs for behavioral nodes should follow the same deterministic pattern as structural
181
+ nodes: `hash(owner_stable_id + "." + node_name)`. This ensures re-projection is idempotent.
182
+
183
+ ### 2.3 `common/services/tg_model_projector/diff_writer.py`
184
+
185
+ Add behavioral write operations (parallel to existing structural element writes):
186
+
187
+ **State nodes:**
188
+ ```cypher
189
+ MERGE (s:State_{project_id}:Element_{project_id} {stable_id: $stable_id})
190
+ SET s.name = $name, s.is_initial = $is_initial
191
+ MERGE (owner)-[:AGGREGATES]->(s)
192
+ ```
193
+
194
+ **Transition relationships:**
195
+ ```cypher
196
+ MATCH (a:Element_{project_id} {stable_id: $source})
197
+ MATCH (b:Element_{project_id} {stable_id: $target})
198
+ MERGE (a)-[t:TRANSITION]->(b)
199
+ SET t.trigger = $trigger, t.guard = $guard, t.effect = $effect
200
+ ```
201
+
202
+ **Action / control nodes:**
203
+ ```cypher
204
+ MERGE (a:Action_{project_id}:Element_{project_id} {stable_id: $stable_id})
205
+ SET a.name = $name, a.node_type = $node_type, a.is_control_node = $is_control_node
206
+ MERGE (owner)-[:AGGREGATES]->(a)
207
+ ```
208
+
209
+ **Succession relationships:**
210
+ ```cypher
211
+ MATCH (a:Element_{project_id} {stable_id: $source})
212
+ MATCH (b:Element_{project_id} {stable_id: $target})
213
+ MERGE (a)-[s:SUCCESSION]->(b)
214
+ SET s.guard = $guard
215
+ ```
216
+
217
+ **Item flow relationships:**
218
+ ```cypher
219
+ MATCH (p1:Element_{project_id} {stable_id: $source_port})
220
+ MATCH (p2:Element_{project_id} {stable_id: $target_port})
221
+ MERGE (p1)-[f:ITEM_FLOW]->(p2)
222
+ SET f.item_kind = $item_kind
223
+ ```
224
+
225
+ ### 2.4 Backend API — `api_server/services/sysml/`
226
+
227
+ **State view service** (`state_view_data.py`):
228
+
229
+ The existing query targets `State_{project_id}` nodes from the SysML parser ingest.
230
+ For tg-model projects these nodes now come from the projection pipeline (same label,
231
+ same properties). The query should work unchanged — verify against projected data.
232
+
233
+ Properties to confirm are written: `name`, `is_initial`, `is_parallel` (default False),
234
+ `parent_part` (owner element name), `entry_action`, `exit_action`, `do_action` (all null for now).
235
+
236
+ **Action view service** (new — `action_view_data.py`):
237
+
238
+ Restore this file (it was deleted during the SysML migration). Query:
239
+
240
+ ```cypher
241
+ MATCH (root:Element_{project_id} {stable_id: $view_id})
242
+ OPTIONAL MATCH (root)-[:AGGREGATES*1..]->(a:Action_{project_id})
243
+ WHERE NOT a.is_control_node
244
+ OPTIONAL MATCH (root)-[:AGGREGATES*1..]->(cn:Action_{project_id})
245
+ WHERE cn.is_control_node
246
+ OPTIONAL MATCH (a1:Element_{project_id})-[s:SUCCESSION]->(a2:Element_{project_id})
247
+ WHERE (root)-[:AGGREGATES*1..]->(a1)
248
+ AND (root)-[:AGGREGATES*1..]->(a2)
249
+ OPTIONAL MATCH (p1:Port_{project_id})-[f:ITEM_FLOW]->(p2:Port_{project_id})
250
+ ...
251
+ RETURN root, collect(distinct a), collect(distinct cn), collect(distinct s), collect(distinct f)
252
+ ```
253
+
254
+ **Action view route** (`api_server/routers/systems_model.py`):
255
+
256
+ Re-add `GET /systems-model/action-view` handler. Mirrors the signature of
257
+ `GET /systems-model/state-view`.
258
+
259
+ ### 2.5 Tests
260
+
261
+ - Unit test: `_walk_behavior()` on a compiled `Part` with known states and transitions
262
+ - Unit test: `_walk_behavior()` on a `Part` with sequence + decision + fork_join
263
+ - Integration test: project a small model with behavior → assert Neo4j has `State_*` nodes and `TRANSITION` edges
264
+ - API test: `GET /systems-model/state-view` returns correct `StateViewData` for a projected model
265
+ - API test: `GET /systems-model/action-view` returns correct `FlowViewData`
266
+
267
+ ---
268
+
269
+ ## Workstream 3: Agent Skill and Tooling
270
+
271
+ ### 3.1 `agents/skills/tg_model_authoring/SKILL.md`
272
+
273
+ Add a **Behavioral Authoring** section after the existing System Composition section.
274
+
275
+ Cover:
276
+ - When to use state machines vs. activity sequencing (short decision guide)
277
+ - State machine authoring: `model.state`, `model.event`, `model.guard`, `model.transition` — worked example
278
+ - Activity authoring: `model.action`, `model.sequence`, `model.decision`, `model.merge`, `model.fork_join` — worked example
279
+ - Common mistakes / guard rails (inline guard `when=` vs. named `guard=`, no cross-part direct action calls)
280
+ - What ThunderGraph displays once projection is live (state diagram tab, activity/flow diagram tab)
281
+
282
+ The section should be at the same verbosity level as the existing Ports and Citations sections —
283
+ concrete examples, explicit rules, no ambiguity.
284
+
285
+ ### 3.2 Access to tg-model user docs
286
+
287
+ The agent currently has no mechanism to read the `thundergraph-model/docs/user_docs/` pages
288
+ at tool-call time. Two options:
289
+
290
+ **Option A — embed key excerpts in SKILL.md (immediate, zero tooling)**
291
+
292
+ Copy the most important worked examples and rule tables directly into SKILL.md. The agent
293
+ reads the skill file at runtime; no new infrastructure needed. This is the right approach
294
+ for the authoring skill because the agent needs behavioral authoring rules to be in-context,
295
+ not discoverable.
296
+
297
+ **Option B — add a `read_tg_model_docs` tool (future)**
298
+
299
+ Expose a tool that accepts a doc page name and returns its content from the filesystem.
300
+ Useful for deeper reference (API index, concepts pages) when the agent needs to look up
301
+ detailed semantics it was not pre-loaded with. Lower priority — implement after Option A
302
+ proves insufficient.
303
+
304
+ **Recommended:** Implement Option A now. Add Option B when the agent demonstrates it
305
+ needs more than SKILL.md can carry.
306
+
307
+ ### 3.3 Agent authoring skill update for behavioral tooling
308
+
309
+ Once the projection plumbing (Workstream 2) is live, update the skill to reflect:
310
+ - Behavioral declarations *are* projected and *do* appear in ThunderGraph
311
+ - State diagram tab appears for Parts with `model.state()` declarations
312
+ - Activity/flow diagram tab appears for Parts with `model.action()` / sequence declarations
313
+ - Engineers can see and navigate behavioral structure the same way they navigate structural Parts
314
+
315
+ ---
316
+
317
+ ## Execution Order
318
+
319
+ The workstreams are mostly independent. Recommended order:
320
+
321
+ | Step | Workstream | Dependency |
322
+ |---|---|---|
323
+ | 1 | Write user docs (`concepts_behavior.md`) | None |
324
+ | 2 | Update SKILL.md with behavioral authoring | None |
325
+ | 3 | Add `StateRecord`, `ActionRecord`, etc. to `types.py` | None |
326
+ | 4 | Implement `_walk_behavior()` in `bundle_walker.py` | Step 3 |
327
+ | 5 | Add behavioral write ops to `diff_writer.py` | Step 3 |
328
+ | 6 | Write projection unit + integration tests | Steps 4–5 |
329
+ | 7 | Verify state-view API against projected data | Steps 5–6 |
330
+ | 8 | Restore action-view API | Steps 5–6 |
331
+ | 9 | Add action-view route | Step 8 |
332
+ | 10 | Update SKILL.md again — note projection is live | Step 9 |
333
+
334
+ Steps 1–3 can start in parallel immediately.
335
+ Steps 4–5 depend on Step 3 only.
336
+ Steps 6–9 depend on Steps 4–5.
337
+
338
+ ---
339
+
340
+ ## Open Questions
341
+
342
+ | Question | Notes |
343
+ |---|---|
344
+ | Nested states (`parent_state`) | tg-model v0 has no nested state declaration. `StateData.parent_state` should be null for all projected states. Add nested state support in a later DSL version if needed. |
345
+ | Parallel state regions (`is_parallel`) | Not in tg-model v0. `StateData.is_parallel` should be false. |
346
+ | Entry/exit/do actions on states | Not in tg-model v0 DSL. `entry_action`, `exit_action`, `do_action` in `StateData` should be null for projected states. Add in a later DSL version. |
347
+ | Inline guards in transitions | `model.transition(when=lambda ...)` stores an un-serializable callable. Transition guard label should be `"<inline>"` in the projected `TransitionData.guard` string. |
348
+ | SysML-path projects | `State_*` and `Action_*` nodes from SysML ingest should still work. The state-view API query does not distinguish by ingest path — it queries by label. The action-view API is tg-model only (SysML action-view was already deleted). |