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.
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/PKG-INFO +1 -1
- thundergraph_model-1.3.0/docs/generation_docs/behavioral_projection_plan.md +348 -0
- thundergraph_model-1.3.0/docs/user_docs/concepts_behavior.md +466 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/index.md +1 -0
- thundergraph_model-1.3.0/docs/user_docs/user/concepts_behavior.md +400 -0
- thundergraph_model-1.3.0/examples/commercial_aircraft/product/aircraft.py +212 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/notebooks/cargo_jet_program.ipynb +419 -37
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/pyproject.toml +1 -1
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/structural_models/test_instantiation.py +109 -0
- thundergraph_model-1.3.0/tests/unit/model/test_behavior_declarations.py +207 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/model/test_new_api_validators.py +13 -1
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/execution/configured_model.py +47 -27
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/model/compile_types.py +4 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/model/definition_context.py +40 -12
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/uv.lock +1 -1
- thundergraph_model-1.2.2/examples/commercial_aircraft/product/aircraft.py +0 -106
- thundergraph_model-1.2.2/tests/unit/model/test_behavior_declarations.py +0 -90
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/.github/ISSUE_TEMPLATE/01-bug_report.yml +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/.github/ISSUE_TEMPLATE/02-feature_request.yml +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/.github/ISSUE_TEMPLATE/03-documentation.yml +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/.github/pull_request_template.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/.github/workflows/publish.yml +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/.gitignore +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/CHANGELOG.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/LICENSE +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/PYPI.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/README.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/generation_docs/behavior_methodology.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/generation_docs/brainstorm.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/generation_docs/conceptual_requirements.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/generation_docs/evaluation_api_facade_implementation_plan.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/generation_docs/execution_methodology.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/generation_docs/implementation_plan.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/generation_docs/logical_architecture.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/generation_docs/model_prototype_sketch.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/generation_docs/requirement_composition_and_naming_implementation_plan.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/generation_docs/system_authoring_restrictions_implementation_plan.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/generation_docs/use_cases.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/generation_docs/v0_api.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/release/v1.2.0.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/release/v1.2.1.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/IMPLEMENTATION_PLAN.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/README.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.buildinfo +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.buildinfo.bak +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/api/api_analysis.doctree +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/api/api_execution.doctree +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/api/api_integrations.doctree +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/api/api_model.doctree +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/api/api_root.doctree +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/api/index.doctree +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/developer/architecture.doctree +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/developer/contributing.doctree +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/developer/extension_playbook.doctree +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/developer/releasing.doctree +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/developer/repository_map.doctree +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/developer/testing.doctree +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/docstring_style.doctree +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/drafts/execution_pipeline.doctree +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/drafts/glossary.doctree +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/drafts/repository_map.doctree +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/drafts/what_is_thundergraph_model.doctree +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/environment.pickle +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/index.doctree +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/user/concepts_evaluation.doctree +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/user/concepts_external_compute.doctree +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/user/concepts_parts.doctree +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/user/concepts_requirements.doctree +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/user/concepts_system.doctree +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/user/end_to_end_guide.doctree +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/user/faq.doctree +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/user/install.doctree +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/user/mental_model.doctree +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/user/overview.doctree +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/.doctrees/user/quickstart.doctree +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/index.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/analysis/compare_variants.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/analysis/impact.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/analysis/sweep.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/execution/behavior.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/execution/configured_model.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/execution/connection_bindings.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/execution/dependency_graph.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/execution/evaluator.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/execution/graph_compiler.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/execution/instances.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/execution/requirements.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/execution/run_context.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/execution/validation.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/execution/value_slots.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/integrations/external_compute.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/model/definition_context.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/model/elements.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/model/expr.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_modules/tg_model/model/refs.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/api/api_analysis.rst.txt +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/api/api_execution.rst.txt +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/api/api_integrations.rst.txt +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/api/api_model.rst.txt +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/api/api_root.rst.txt +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/api/index.md.txt +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/developer/architecture.md.txt +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/developer/contributing.md.txt +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/developer/extension_playbook.md.txt +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/developer/releasing.md.txt +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/developer/repository_map.md.txt +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/developer/testing.md.txt +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/docstring_style.md.txt +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/drafts/execution_pipeline.md.txt +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/drafts/glossary.md.txt +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/drafts/repository_map.md.txt +0 -0
- {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
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/index.md.txt +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/user/concepts_evaluation.md.txt +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/user/concepts_external_compute.md.txt +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/user/concepts_parts.md.txt +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/user/concepts_requirements.md.txt +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/user/concepts_system.md.txt +0 -0
- {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
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/user/faq.md.txt +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/user/install.md.txt +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/user/mental_model.md.txt +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/user/overview.md.txt +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_sources/user/quickstart.md.txt +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/base-stemmer.js +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/basic.css +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/debug.css +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/doctools.js +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/documentation_options.js +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/english-stemmer.js +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/file.png +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/language_data.js +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/minus.png +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/plus.png +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/pygments.css +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/scripts/furo-extensions.js +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/scripts/furo.js +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/scripts/furo.js.LICENSE.txt +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/scripts/furo.js.map +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/searchtools.js +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/skeleton.css +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/sphinx_highlight.js +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/styles/furo-extensions.css +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/styles/furo-extensions.css.map +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/styles/furo.css +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/_static/styles/furo.css.map +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/api/api_analysis.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/api/api_execution.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/api/api_integrations.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/api/api_model.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/api/api_root.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/api/index.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/developer/architecture.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/developer/contributing.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/developer/extension_playbook.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/developer/releasing.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/developer/repository_map.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/developer/testing.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/docstring_style.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/drafts/execution_pipeline.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/drafts/glossary.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/drafts/repository_map.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/drafts/what_is_thundergraph_model.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/genindex.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/index.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/objects.inv +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/py-modindex.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/search.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/searchindex.js +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/user/concepts_evaluation.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/user/concepts_external_compute.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/user/concepts_parts.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/user/concepts_requirements.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/user/concepts_system.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/user/end_to_end_guide.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/user/faq.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/user/install.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/user/mental_model.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/user/overview.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/_build/html/user/quickstart.html +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/api/api_analysis.rst +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/api/api_execution.rst +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/api/api_integrations.rst +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/api/api_model.rst +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/api/api_root.rst +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/api/index.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/conf.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/developer/architecture.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/developer/contributing.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/developer/extension_playbook.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/developer/releasing.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/developer/repository_map.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/developer/testing.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/docstring_style.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/drafts/README.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/drafts/execution_pipeline.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/drafts/glossary.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/drafts/repository_map.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/drafts/what_is_thundergraph_model.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/user/concepts_evaluation.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/user/concepts_external_compute.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/user/concepts_parts.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/user/concepts_requirements.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/user/concepts_system.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/user/end_to_end_guide.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/user/faq.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/user/install.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/user/mental_model.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/user/overview.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/docs/user_docs/user/quickstart.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/__init__.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/IMPLEMENTATION_PLAN.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/README.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/__init__.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/integrations/__init__.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/integrations/adapters.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/integrations/bindings.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/product/__init__.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/product/major_assemblies/__init__.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/product/major_assemblies/parts.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/program/__init__.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/program/cargo_jet_program.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/program/l1_requirement_packages.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/program/mission_context.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/reporting/__init__.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/reporting/extract.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/commercial_aircraft/reporting/snapshot.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/hpc_datacenter/README.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/hpc_datacenter/__init__.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/hpc_datacenter/program.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/mars_ntp_tug/__init__.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/mars_ntp_tug/integrations/__init__.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/mars_ntp_tug/integrations/adapters.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/mars_ntp_tug/integrations/bindings.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/mars_ntp_tug/integrations/preset_inputs.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/mars_ntp_tug/reporting/__init__.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/mars_ntp_tug/reporting/extract.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/mars_ntp_tug/reporting/snapshot.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/examples/mars_ntp_tug/tug_model.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/implementation_plan_instructions.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/logo.png +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/notebooks/_gen_leo_notebook.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/notebooks/aev_architecture.mmd +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/notebooks/hpc_datacenter_parameter_sweep.ipynb +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/notebooks/mars_ntp_nuclear_tug.ipynb +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/reviewer_architype.md +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/__init__.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/__init__.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/analysis/__init__.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/analysis/test_analysis_workflows.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/behavior/__init__.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/behavior/test_behavior_e2e.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/evaluation/__init__.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/evaluation/test_allocate_parameter_wiring.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/evaluation/test_evaluation_e2e.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/evaluation/test_external_compute.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/evaluation/test_requirement_acceptance.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/evaluation/test_unitflow_evaluation.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/structural_models/__init__.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/structural_models/test_citations.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/structural_models/test_drive_system.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/test_commercial_aircraft_smoke.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/test_hpc_datacenter_smoke.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/integration/test_mars_ntp_tug_smoke.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/__init__.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/analysis/__init__.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/analysis/test_sweep_planning.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/execution/__init__.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/execution/test_behavior_runtime.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/execution/test_behavior_scope.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/execution/test_configured_model.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/execution/test_configured_model_evaluate.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/execution/test_dependency_graph.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/execution/test_evaluator.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/execution/test_instances.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/execution/test_phase6_runtime.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/execution/test_run_context.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/execution/test_validation.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/export/__init__.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/integrations/__init__.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/model/__init__.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/model/test_attribute_ref.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/model/test_compile_types.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/model/test_definition_context.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/model/test_elements.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/model/test_example_system_authoring_policy.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/model/test_expr.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/model/test_identity.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/model/test_parameter_ref.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/model/test_phase6_ontology.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/model/test_refs.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/model/test_requirement_block.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tests/unit/model/test_system_authoring_restrictions.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/__init__.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/analysis/__init__.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/analysis/_coherence.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/analysis/compare_variants.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/analysis/impact.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/analysis/sweep.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/execution/__init__.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/execution/behavior.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/execution/connection_bindings.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/execution/dependency_graph.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/execution/evaluator.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/execution/external_ops.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/execution/graph_compiler.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/execution/instances.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/execution/requirements.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/execution/rollups.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/execution/run_context.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/execution/solve_groups.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/execution/validation.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/execution/value_slots.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/export/__init__.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/integrations/__init__.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/integrations/external_compute.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/model/__init__.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/model/declarations/__init__.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/model/declarations/behavior.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/model/declarations/values.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/model/elements.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/model/expr.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/model/identity.py +0 -0
- {thundergraph_model-1.2.2 → thundergraph_model-1.3.0}/tg_model/model/refs.py +0 -0
|
@@ -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). |
|