ApiLogicServer 15.1.2__py3-none-any.whl → 15.2.0__py3-none-any.whl
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.
- api_logic_server_cli/api_logic_server.py +20 -16
- api_logic_server_cli/api_logic_server_info.yaml +3 -3
- api_logic_server_cli/cli.py +17 -2
- api_logic_server_cli/create_from_model/dbml.py +1 -1
- api_logic_server_cli/genai/genai.py +39 -28
- api_logic_server_cli/genai/genai_react_app.py +23 -1
- api_logic_server_cli/genai/genai_svcs.py +5 -3
- api_logic_server_cli/prototypes/base/.github/.copilot-instructions.md +164 -4
- api_logic_server_cli/prototypes/{manager/samples/basic_demo/.github/.copilot-instructions.md → base/.github/.copilot-instructionsZ.mdx} +84 -4
- api_logic_server_cli/prototypes/base/.vscode/launch.json +1 -1
- api_logic_server_cli/prototypes/base/api/system/api_utils.py +7 -3
- api_logic_server_cli/prototypes/base/config/config.py +1 -1
- api_logic_server_cli/prototypes/base/docs/training/readme_training.md +3 -0
- api_logic_server_cli/prototypes/base/docs/training/testing.md +779 -0
- api_logic_server_cli/prototypes/base/logic/declare_logic.py +4 -2
- api_logic_server_cli/prototypes/base/logic/logic_discovery/use_case.py +2 -0
- api_logic_server_cli/prototypes/base/test/api_logic_server_behave/AI-Generated-Tests-from-Rules.md +559 -0
- api_logic_server_cli/prototypes/base/test/api_logic_server_behave/behave_logic_report.py +46 -17
- api_logic_server_cli/prototypes/base/test/api_logic_server_behave/check_step_order.py +120 -0
- api_logic_server_cli/prototypes/base/test/api_logic_server_behave/features/steps/test_data_helpers.py +242 -0
- api_logic_server_cli/prototypes/base/test/api_logic_server_behave/features/steps/test_utils.py +5 -1
- api_logic_server_cli/prototypes/base/test/api_logic_server_behave/reports/Behave Logic Report Intro micro.md +15 -0
- api_logic_server_cli/prototypes/base/test/api_logic_server_behave/reports/Behave Logic Report Intro.md +10 -66
- api_logic_server_cli/prototypes/base/test/readme_test.md +72 -4
- api_logic_server_cli/prototypes/basic_demo/iteration/api/api_discovery/order_b2b.py +22 -18
- api_logic_server_cli/prototypes/basic_demo/ui/my-react-app-cards/README.md +3 -1
- api_logic_server_cli/prototypes/manager/.github/.copilot-instructions.md +30 -9
- api_logic_server_cli/prototypes/manager/.github/sync-to-dev-src.sh +42 -0
- api_logic_server_cli/prototypes/manager/.vscode/launch.json +30 -30
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/.github/.copilot-instructions.md +741 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/docs/db.dbml +43 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/docs/training/readme_training.md +3 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/docs/training/testing.md +593 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/AI-Generated-Tests-from-Rules.md +554 -0
- api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/test/api_logic_server_behave/behave_logic_report.py +35 -9
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/features/order_processing.feature +72 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/features/steps/about_steps.py +16 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/features/steps/order_processing_steps.py +553 -0
- api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/test/api_logic_server_behave/features/steps/test_utils.py +5 -1
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/behave.log +79 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Add_Item_Exceeding_Credit.log +8 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Assign_Product_to_Item.log +26 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/B2B_Order_-_10_Gadget.log +46 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/B2B_Order_-_10_carbon_neu.log +41 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/B2B_Order_-_1_Green.log +42 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/B2B_Order_-_5_Widget.log +42 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/B2B_Order_Placement.log +2 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Balance_Check.log +2 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Carbon_Neutral_B2B_Order.log +52 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Carbon_Neutral_Discount_A.log +42 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Change_Item_Product.log +25 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Change_Item_Product_to_Ga.log +25 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Change_Order_Customer_Adj.log +19 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Change_Order_Customer_to_.log +19 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Change_Product_Updates_Un.log +25 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Create_Multi-Item_Order.log +79 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Create_Order_for_Constrai.log +2 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Create_Order_for_FK_Chang.log +55 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Create_Order_for_Shipping.log +55 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Create_Shipped_Order.log +54 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Create_Test_Customer.log +13 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Create_Test_Order.log +55 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Credit_Limit_Constraint_T.log +2 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Customer_Change.log +20 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Delete_First_Item.log +20 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Delete_Item_Reduces_Order.log +20 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Exceed_Credit_Limit_Rejec.log +46 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Good_Order_Placed_via_B2B.log +42 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Item_Deletion.log +20 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Item_Quantity_Update.log +23 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Item_Quantity_Update_Reca.log +23 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Item_Quantity_Update_to_1.log +23 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Order_Customer_Change.log +19 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Order_Shipping.log +19 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Order_Unshipping.log +19 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Product_Change.log +26 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Product_Unit_Price_Copied.log +42 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Setup_Diana_for_Constrain.log +53 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Setup_Item_for_Product_Ch.log +53 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Setup_Item_for_Unit_Price.log +30 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Setup_Order_-_10_Widget.log +41 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Setup_Order_-_2_Gadget.log +41 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Setup_Order_-_2_Widget.log +42 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Setup_Order_-_3_Widget_+_.log +57 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Setup_Order_-_3_Widget_an.log +12 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Setup_Order_-_5_Gadget.log +56 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Setup_Order_-_5_Widget.log +41 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Setup_Order_for_Alice.log +53 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Setup_Order_for_Bob.log +53 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Setup_Shipped_Order.log +52 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Setup_Unshipped_Order.log +53 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Ship_Order.log +18 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Ship_Order_Excludes_from_.log +18 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/System_Ready.log +3 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Test_Order_Setup_-_1_Item.log +53 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Test_Order_Setup_-_2_Item.log +76 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Transaction_Processing.log +19 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Unship_Order.log +18 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Unship_Order_Includes_in_.log +18 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Verify_Charlie_Balance.log +1 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Verify_Customer_Balance.log +11 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Verify_Diana_Balance.log +11 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Verify_Item_Amount.log +1 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Verify_Order_Total.log +1 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/logs/scenario_logic_logs/Verify_Unit_Price_Copy.log +1 -0
- api_logic_server_cli/prototypes/manager/samples/basic_demo_sample/test/api_logic_server_behave/reports/Behave Logic Report.md +303 -0
- api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/test/readme_test.md +72 -4
- api_logic_server_cli/prototypes/manager/samples/readme_samples.md +1 -1
- api_logic_server_cli/prototypes/manager/system/ApiLogicServer-Internal-Dev/copilot-dev-context.md +150 -0
- api_logic_server_cli/prototypes/manager/system/genai/prompt_inserts/sqlite_inserts_model_test_hints_with_relns.prompt +94 -0
- api_logic_server_cli/prototypes/nw/test/readme_test_nw.md +333 -92
- apilogicserver-15.2.0.dist-info/METADATA +506 -0
- {apilogicserver-15.1.2.dist-info → apilogicserver-15.2.0.dist-info}/RECORD +615 -535
- api_logic_server_cli/prototypes/manager/samples/basic_demo/docs/db.dbml +0 -14
- api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/features/steps/about.py +0 -20
- api_logic_server_cli/prototypes/manager/samples/basic_demo/test/api_logic_server_behave/logs/behave.log +0 -0
- apilogicserver-15.1.2.dist-info/METADATA +0 -169
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/.devcontainer-option/For_VSCode.dockerfile +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/.devcontainer-option/devcontainer.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/.devcontainer-option/readme.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/.devcontainer-option/setup.sh +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/.env +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/.gitignore +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/.idea/runConfigurations/ApiLogicServer.xml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/.idea/runConfigurations/Report_Behave_Logic.xml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/.idea/runConfigurations/Run_Behave.xml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/.idea/runConfigurations/Windows_Run_Behave.xml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/.idea/runConfigurations/run___No_Security.xml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/.idea/runConfigurations/run_docker.xml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/.vscode/launch.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/.vscode/settings.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/.vscode/venv_init.sh +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/_config.yml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/_layouts/redirect.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/__init__.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/api_discovery/auto_discovery.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/api_discovery/mcp_discovery.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/api_discovery/mcp_expose_api_models.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/api_discovery/new_service.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/api_discovery/newer_service.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/api_discovery/ontimize_api.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/api_discovery/order_b2b_service.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/api_discovery/system.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/customize_api.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/expose_api_models.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/json_encoder.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/readme_customize_api.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/system/api_utils.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/system/custom_endpoint.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/system/expression_parser.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/system/gen_csv_report.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/system/gen_pdf_report.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/system/opt_locking/opt_locking.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api/system/opt_locking/readme.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/api_logic_server_run.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/config/__init__.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/config/activate_logicbank.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/config/config.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/config/default.env +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/config/logging-reduced.yml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/config/logging.yml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/config/mypy.ini +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/config/server_setup.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/api/api_discovery/openapi.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/config/default.env +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/database/db.sqlite +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/database/models.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/docs/mcp_learning/mcp_discovery.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/logic/cocktail-napkin.jpg +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/logic/declare_logic.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/logic/logic_discovery/email_request.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/logic/logic_discovery/simple_constraints.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/security/declare_security.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/admin/admin.yaml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/admin/home.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/README.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/README_create_react_app.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/package-lock.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/package.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/public/favicon.ico +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/public/index.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/public/logo192.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/public/logo512.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/public/manifest.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/public/robots.txt +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/App.css +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/App.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/App.test.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/Config-reference.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/Config.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/Customer-reference.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/Customer.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/Item.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/Order.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/Product.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/SysEmail.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/SysMcp.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/app_loader.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/index.css +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/index.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/logo.svg +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/rav4-jsonapi-client/.eslintrc +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/rav4-jsonapi-client/.yarnrc.yml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/rav4-jsonapi-client/default-settings.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/rav4-jsonapi-client/default-settings.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/rav4-jsonapi-client/errors.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/rav4-jsonapi-client/errors.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/rav4-jsonapi-client/index.test.tsx +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/rav4-jsonapi-client/index.tsx +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/rav4-jsonapi-client/ra-jsonapi-client.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/rav4-jsonapi-client/ra-jsonapi-client.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/rav4-jsonapi-client/resourceLookup.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/rav4-jsonapi-client/resourceLookup.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/rav4-jsonapi-client/styles.module.css +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/reportWebVitals.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/customizations/ui/reference_react_app/src/setupTests.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/__init__.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/alembic/alembic_run.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/alembic/env.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/alembic/readme_alembic.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/alembic/script.py.mako +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/alembic/versions/ae6a5c2fdc47_autogenerated.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/alembic/versions/readme.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/alembic.ini +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/authentication_db.sqlite +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/bind_dbs.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/customize_models.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/database_discovery/authentication_models.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/database_discovery/auto_discovery.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/db.sqlite +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/db_debug/db_debug.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/mcp_db.sqlite +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/mcp_models.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/models.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/system/SAFRSBaseX.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/test_data/alp_init.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/test_data/readme.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/test_data/response2code.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/database/test_data/test_data_preamble.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/auth-db/authdb_mysql.Dockerfile +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/auth-db/authdb_mysql.sql +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/auth-db/authdb_postgres.sql +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/docker-compose-dev-azure/azure-deploy.sh +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/docker-compose-dev-local/docker-compose-dev-local.yml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/docker-compose-dev-local/docker-compose.sh +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/docker-image/build_image.dockerfile +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/docker-image/build_image.sh +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/docker-image/env.list +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/docker-image/run_image.sh +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/docker-standard-image/docker-compose-standard-image.yml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/docker-standard-image/env.list +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/data/h2/keycloakdb.mv.db +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/data/h2/keycloakdb.trace.db +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/data/import/kcals-realm.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/data/import/kcals-users-0.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/data/import/master-realm.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/data/import/master-users-0.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/data/tmp/kc-gzip-cache/nnbna/js/keycloak.js.gz +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/docker-compose-dev-network.yml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/docker-compose-nginx.yml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/docker-compose.yml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/import/kcals-realm.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/import/kcals-users-0.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/import/master-realm.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/import/master-users-0.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/nginx/cert.pem +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/nginx/key.pem +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/nginx/nginx.conf +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/startup_log_nginx.txt +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/startup_log_no_nginx.txt +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/unused/auth_provider.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/keycloak/unused/unused-docker-compose-keycloak.sh +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/python-anywhere/python_anywhere_wsgi.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/devops/readme-devops.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/docs/graphics/readme.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/docs/logic/readme.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/docs/logic_suggestions/readme_logic_suggestions.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/docs/mcp_learning/mcp.prompt +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/docs/mcp_learning/mcp_schema.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/docs/models-not-code.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/docs/runtime engines.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/docs/system-creation-vibe.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/docs/training/admin_app_1_context.prompt.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/docs/training/admin_app_2_functionality.prompt.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/docs/training/admin_app_3_architecture.prompt.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/docs/training/logic_bank_api.prompt +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/docs/training/logic_example.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/docs/training/react_map.prompt.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/docs/training/react_tree.prompt.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/kafka/kafka_consumer.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/kafka/kafka_producer.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/kafka/kafka_readme.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/mcp/examples/mcp_context_results.txt +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/mcp/examples/mcp_discovery_response.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/mcp/examples/mcp_request.prompt +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/mcp/examples/mcp_schema.txt +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/mcp/examples/mcp_tool_context_response.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/mcp/examples/mcp_tool_context_response_get.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/mcp/mcp_client_executor.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/mcp/mcp_server_discovery.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/mcp/readme-mcp.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/n8n/N8N_WebHook_from_ApiLogicServer.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/n8n/n8n_producer.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/n8n/n8n_readme.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/row_dict_maps/OrderB2BMapper.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/row_dict_maps/row_dict_maps_readme.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/system/FlaskKafka.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/integration/system/RowDictMapper.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/iteration/api/api_discovery/order_b2b.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/iteration/database/db.sqlite +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/iteration/docs/er_diagram.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/iteration/integration/row_dict_maps/OrderB2B.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/iteration/integration/row_dict_maps/OrderShipping.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/iteration/logic/declare_logic.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/iteration/ui/admin/admin.yaml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/logic/declarative-vs-procedural-comparison.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/logic/declare_logic.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/logic/load_verify_rules.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/logic/logic_discovery/app_integration.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/logic/logic_discovery/auto_discovery.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/logic/logic_discovery/check_credit.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/logic/logic_discovery/mcp_client_executor_request.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/logic/logic_discovery/readme_logic_discovery.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/logic/logic_discovery/use_case.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/logic/procedural/credit_service.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/logic/procedural/declarative-vs-procedural-comparison.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/logic/procedural/declarative-vs-procedural-comparison.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/logic/readme_logic.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/readme.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/readme_project.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/readme_standard.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/readme_vibe.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/requirements.txt +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/run.ps1 +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/run.sh +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/security/__init__.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/security/authentication_provider/__init__.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/security/authentication_provider/abstract_authentication_provider.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/security/authentication_provider/keycloak/auth_provider.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/security/authentication_provider/memory/auth_provider.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/security/authentication_provider/memory/auth_provider_no_swagger.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/security/authentication_provider/sql/auth_provider.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/security/declare_security.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/security/readme_security.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/security/system/authentication.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/security/system/authorization.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/security/system/custom_swagger.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/test/__init__.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/test/api_logic_server_behave/__init__.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/test/api_logic_server_behave/behave_run.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/test/api_logic_server_behave/features/about.feature +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/test/api_logic_server_behave/reports/Behave Logic Report Intro micro.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/test/api_logic_server_behave/reports/Behave Logic Report Intro.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/test/api_logic_server_behave/reports/Behave Logic Report Sample.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/test/basic/server_test.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/__init__.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/admin/admin.yaml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/admin/admin_loader.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/admin/authentication_admin.yaml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/admin/home.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/admin/mcp_admin.yaml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/.browserslistrc +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/.dockerignore +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/.editorconfig +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/.eslintrc.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/.gitignore +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/README.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/angular.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/app_model.yaml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/docker-compose-ontimize.yml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/e2e/protractor.conf.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/e2e/src/app.e2e-spec.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/e2e/src/app.po.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/e2e/tsconfig.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/karma.conf.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/nginx/nginx.conf +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/ngsw-config.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/package-lock.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/package.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/app-routing.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/app.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/app.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/app.component.spec.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/app.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/app.config.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/app.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/login/login-routing.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/login/login.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/login/login.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/login/login.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/login/login.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/login/login.theme.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Customer/Customer-routing.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Customer/Customer.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Customer/detail/Customer-detail.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Customer/detail/Customer-detail.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Customer/detail/Customer-detail.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Customer/home/Customer-home.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Customer/home/Customer-home.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Customer/home/Customer-home.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Customer/new/Customer-new.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Customer/new/Customer-new.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Customer/new/Customer-new.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Item/Item-routing.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Item/Item.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Item/detail/Item-detail.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Item/detail/Item-detail.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Item/detail/Item-detail.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Item/home/Item-home.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Item/home/Item-home.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Item/home/Item-home.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Item/new/Item-new.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Item/new/Item-new.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Item/new/Item-new.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Order/Order-routing.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Order/Order.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Order/detail/Order-detail.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Order/detail/Order-detail.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Order/detail/Order-detail.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Order/home/Order-home.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Order/home/Order-home.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Order/home/Order-home.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Order/new/Order-new.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Order/new/Order-new.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Order/new/Order-new.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Product/Product-routing.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Product/Product.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Product/detail/Product-detail.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Product/detail/Product-detail.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Product/detail/Product-detail.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Product/home/Product-home.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Product/home/Product-home.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Product/home/Product-home.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Product/new/Product-new.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Product/new/Product-new.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/Product/new/Product-new.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/about/about-routing.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/about/about.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/about/about.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/about/about.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/about/about.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/about/about.theme.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/home/home-routing.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/home/home.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/home/home.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/home/home.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/home/home.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/main-routing.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/main-theme.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/main.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/main.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/main.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/main.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/settings/settings-routing.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/settings/settings.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/settings/settings.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/settings/settings.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/main/settings/settings.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/Customer-card/Customer-card.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/Customer-card/Customer-card.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/Customer-card/Customer-card.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/Item-card/Item-card.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/Item-card/Item-card.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/Item-card/Item-card.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/Order-card/Order-card.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/Order-card/Order-card.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/Order-card/Order-card.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/Product-card/Product-card.component.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/Product-card/Product-card.component.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/Product-card/Product-card.component.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/app.menu.config.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/app.services.config.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/constant.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/app/shared/shared.module.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/.gitkeep +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/css/app.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/css/loader.css +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/i18n/en.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/i18n/es.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/icons/ontimize128.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/icons/ontimize16.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/icons/ontimize256.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/icons/ontimize32.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/icons/ontimize48.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/icons/ontimize64.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/icons/ontimize72.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/icons/ontimize96.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/images/github.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/images/login_bg.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/images/no-image-transparent.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/images/no-image.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/images/ontimize.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/images/ontimize_web_log.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/images/sidenav-closed.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/images/sidenav-closed.svg +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/images/sidenav-opened.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/images/sidenav-opened.svg +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/images/user_profile.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/js/domchange.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/assets/js/keyboard.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/environments/environment.prod.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/environments/environment.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/favicon.ico +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/index.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/main.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/manifest.webmanifest +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/polyfills.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/styles.scss +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/src/test.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/tsconfig.app.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/tsconfig.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/app/tsconfig.spec.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Employee/andrew.jpg +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Employee/anne.jpg +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Employee/janet.jpg +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Employee/laura.jpg +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Employee/margaret.jpg +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Employee/michael.jpg +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Employee/nancy.jpg +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Employee/robert.jpg +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Employee/steven.jpg +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Product/beverages.gif +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Product/cereals.gif +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Product/condiments.gif +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Product/confections.gif +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Product/diary.gif +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Product/meat.gif +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Product/produce.gif +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/images/Product/seafood.gif +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/README.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/README_create_react_app.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/package-lock.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/package.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/public/favicon.ico +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/public/index.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/public/logo192.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/public/logo512.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/public/manifest.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/public/robots.txt +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/App.css +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/App.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/App.test.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/Config.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/Customer.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/Item.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/Order.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/Product.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/app_loader.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/index.css +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/index.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/logo.svg +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/rav4-jsonapi-client/.eslintrc +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/rav4-jsonapi-client/.yarnrc.yml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/rav4-jsonapi-client/default-settings.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/rav4-jsonapi-client/default-settings.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/rav4-jsonapi-client/errors.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/rav4-jsonapi-client/errors.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/rav4-jsonapi-client/index.test.tsx +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/rav4-jsonapi-client/index.tsx +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/rav4-jsonapi-client/ra-jsonapi-client.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/rav4-jsonapi-client/ra-jsonapi-client.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/rav4-jsonapi-client/resourceLookup.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/rav4-jsonapi-client/resourceLookup.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/rav4-jsonapi-client/styles.module.css +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/reportWebVitals.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app/src/setupTests.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/README.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/README_create_react_app.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/package-lock.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/package.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/product-cards.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/public/favicon.ico +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/public/index.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/public/logo192.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/public/logo512.png +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/public/manifest.json +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/public/robots.txt +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/App.css +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/App.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/App.test.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/Config.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/Customer.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/Item.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/Order.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/Product.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/app_loader.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/index.css +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/index.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/logo.svg +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/rav4-jsonapi-client/.eslintrc +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/rav4-jsonapi-client/.yarnrc.yml +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/rav4-jsonapi-client/default-settings.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/rav4-jsonapi-client/default-settings.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/rav4-jsonapi-client/errors.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/rav4-jsonapi-client/errors.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/rav4-jsonapi-client/index.test.tsx +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/rav4-jsonapi-client/index.tsx +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/rav4-jsonapi-client/ra-jsonapi-client.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/rav4-jsonapi-client/ra-jsonapi-client.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/rav4-jsonapi-client/resourceLookup.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/rav4-jsonapi-client/resourceLookup.ts +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/rav4-jsonapi-client/styles.module.css +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/reportWebVitals.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/my-react-app-cards/src/setupTests.js +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/templates/bar_chart.jinja +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/ui/templates/content.html +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/venv_setup/py.py +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/venv_setup/readme_venv.md +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/venv_setup/requirements-no-cli.txt +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/venv_setup/venv-linux.sh +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/venv_setup/venv.ps1 +0 -0
- /api_logic_server_cli/prototypes/manager/samples/{basic_demo → basic_demo_sample}/venv_setup/venv.sh +0 -0
- /api_logic_server_cli/prototypes/manager/system/{install-ApiLogicServer-dev → ApiLogicServer-Internal-Dev}/install-ApiLogicServer-dev.ps1 +0 -0
- /api_logic_server_cli/prototypes/manager/system/{install-ApiLogicServer-dev → ApiLogicServer-Internal-Dev}/install-ApiLogicServer-dev.sh +0 -0
- /api_logic_server_cli/prototypes/manager/system/{install-ApiLogicServer-dev → ApiLogicServer-Internal-Dev}/readme.md +0 -0
- {apilogicserver-15.1.2.dist-info → apilogicserver-15.2.0.dist-info}/WHEEL +0 -0
- {apilogicserver-15.1.2.dist-info → apilogicserver-15.2.0.dist-info}/entry_points.txt +0 -0
- {apilogicserver-15.1.2.dist-info → apilogicserver-15.2.0.dist-info}/licenses/LICENSE +0 -0
- {apilogicserver-15.1.2.dist-info → apilogicserver-15.2.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,554 @@
|
|
|
1
|
+
# AI-Generated Test Suites: From Business Rules to Executable Tests in Minutes
|
|
2
|
+
|
|
3
|
+
**How we taught AI to create comprehensive test suites directly from declarative business rules**
|
|
4
|
+
|
|
5
|
+
*By Val Huber, with Claude (GitHub Copilot)*
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Background: Teaching AI Through "Messages in a Bottle"
|
|
10
|
+
|
|
11
|
+
API Logic Server has been using AI collaboration for years:
|
|
12
|
+
- **GenAI creates databases** from natural language
|
|
13
|
+
- **GenAI creates logic** using declarative rules (after learning procedural causes bugs - see [comparison](https://github.com/ApiLogicServer/basic_demo/blob/main/logic/procedural/declarative-vs-procedural-comparison.md))
|
|
14
|
+
- **GenAI performs database reorganizations** while preserving logic
|
|
15
|
+
|
|
16
|
+
**The Pattern**: Each created project contains training material - "messages in a bottle" - that teach future AI assistants how to work with THAT specific project.
|
|
17
|
+
|
|
18
|
+
**The Extension**: What if AI could also **create tests from business rules?**
|
|
19
|
+
|
|
20
|
+
## The Problem: Testing Business Logic is Hard
|
|
21
|
+
|
|
22
|
+
You've built your API Logic Server project. You've declared your business rules - sum this, derive that, constrain the other thing. The rules work beautifully. But now you need tests.
|
|
23
|
+
|
|
24
|
+
Not just "does the GET work" tests. Real tests that validate your **business logic**. Tests that prove:
|
|
25
|
+
- Balances update correctly when items are added to orders
|
|
26
|
+
- Credit limits are enforced
|
|
27
|
+
- Derivations cascade properly
|
|
28
|
+
- Constraints catch violations
|
|
29
|
+
|
|
30
|
+
Writing these tests manually? Time-consuming. Error-prone. And honestly, a bit tedious.
|
|
31
|
+
|
|
32
|
+
But here's the thing: **Your business rules already describe what should happen.** Why should you have to describe it again in test code?
|
|
33
|
+
|
|
34
|
+
## Aha Moment #1: "Can AI Create Tests From Rules?"
|
|
35
|
+
|
|
36
|
+
**The Insight**: Declarative rules already specify:
|
|
37
|
+
- What should be computed (formulas, sums)
|
|
38
|
+
- When it should happen (constraints, validations)
|
|
39
|
+
- What the dependencies are (order → customer → balance)
|
|
40
|
+
|
|
41
|
+
**The Question**: If AI can read these rules to understand the logic, why can't it generate tests that validate them?
|
|
42
|
+
|
|
43
|
+
**The Challenge**: Business logic has critical dependencies where bugs lurk:
|
|
44
|
+
- **Aggregate columns** are computed (never set directly)
|
|
45
|
+
- **Cascading updates** flow through relationships
|
|
46
|
+
- **Constraint timing** matters (when does validation fire?)
|
|
47
|
+
- **Test data contamination** from previous runs
|
|
48
|
+
- **Order of operations** in multi-table updates
|
|
49
|
+
|
|
50
|
+
These aren't obvious. They require deep pattern matching across hundreds of lines of code.
|
|
51
|
+
|
|
52
|
+
## Phase 1: Rule-Driven CRUD Testing (5 Hours)
|
|
53
|
+
|
|
54
|
+
### The "Time Machine" Iteration Pattern
|
|
55
|
+
|
|
56
|
+
**The Cycle**:
|
|
57
|
+
1. **AI reads** `logic/declare_logic.py` → Understands rules
|
|
58
|
+
2. **AI generates** tests from those rules
|
|
59
|
+
3. **Run tests** → Discover bugs
|
|
60
|
+
4. **Fix bugs** → Both code AND documentation
|
|
61
|
+
5. **Update training material** → "Program your future self"
|
|
62
|
+
6. **Repeat** → Each iteration prevents future bugs
|
|
63
|
+
|
|
64
|
+
This is the "time machine" - fixing today's bugs prevents tomorrow's.
|
|
65
|
+
|
|
66
|
+
### The Bugs We Hit (Sampling the Journey)
|
|
67
|
+
|
|
68
|
+
**Bug #1: Setting Aggregate Columns**
|
|
69
|
+
```python
|
|
70
|
+
# ❌ WRONG - Balance is computed!
|
|
71
|
+
customer = {"Name": "Alice", "Balance": 950, "CreditLimit": 1000}
|
|
72
|
+
|
|
73
|
+
# ✅ RIGHT - Create filler orders to reach target balance
|
|
74
|
+
customer = create_customer("Alice", 0, 1000)
|
|
75
|
+
create_filler_orders(customer_id, target_balance=950)
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**Bug #2: JSON Returns String IDs**
|
|
79
|
+
```python
|
|
80
|
+
# ❌ WRONG - API returns "8" but database expects 8
|
|
81
|
+
customer_id = result['data']['id'] # String!
|
|
82
|
+
|
|
83
|
+
# ✅ RIGHT - Convert to integer
|
|
84
|
+
customer_id = int(result['data']['id'])
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**Bug #3: Test Data Contamination**
|
|
88
|
+
```python
|
|
89
|
+
# ❌ WRONG - Customer from previous run interferes
|
|
90
|
+
name = "Alice"
|
|
91
|
+
|
|
92
|
+
# ✅ RIGHT - Unique timestamp ensures fresh data
|
|
93
|
+
name = f"Alice {int(time.time() * 1000)}"
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**Bug #4: Derived vs Added Aggregates**
|
|
97
|
+
```python
|
|
98
|
+
# ❌ WRONG - Thought balance ADDS to existing
|
|
99
|
+
# Create customer with balance=220, add order=180
|
|
100
|
+
# Expected: 220 + 180 = 400
|
|
101
|
+
|
|
102
|
+
# ✅ RIGHT - Balance is REPLACED by sum of orders
|
|
103
|
+
# Rule.sum(derive=Customer.Balance, as_sum_of=Order.AmountTotal...)
|
|
104
|
+
# Balance = sum(all orders), not accumulation
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**Bug #5: Customer Name Mapping**
|
|
108
|
+
```python
|
|
109
|
+
# ❌ WRONG - After adding timestamp, can't find customer
|
|
110
|
+
customer_name = "Bob"
|
|
111
|
+
unique_name = f"Bob {timestamp}" # Created this
|
|
112
|
+
# Later: lookup by "Bob" fails!
|
|
113
|
+
|
|
114
|
+
# ✅ RIGHT - Map test names to unique names
|
|
115
|
+
context.customer_map = {"Bob": {"unique_name": unique_name, "id": customer_id}}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
*...and 7 more bugs, each teaching AI assistants critical patterns...*
|
|
119
|
+
|
|
120
|
+
### Phase 1 Results
|
|
121
|
+
|
|
122
|
+
**What We Achieved:**
|
|
123
|
+
- ✅ Generated tests from declarative rules
|
|
124
|
+
- ✅ CRUD-level testing (POST, PATCH, DELETE)
|
|
125
|
+
- ✅ Granular rule validation (change quantity, delete item, etc.)
|
|
126
|
+
- ✅ Proper handling of aggregates, constraints, cascades
|
|
127
|
+
- ✅ Repeatable tests (timestamps prevent contamination)
|
|
128
|
+
- ✅ Comprehensive training material (~1700 lines)
|
|
129
|
+
|
|
130
|
+
**Test Results**: 6 scenarios passing, validating individual rule interactions
|
|
131
|
+
|
|
132
|
+
### Phase 1 Assessment: What Was Missing?
|
|
133
|
+
|
|
134
|
+
**Looking at Northwind Tests**: They test complete business transactions:
|
|
135
|
+
- Order **with** Items (together)
|
|
136
|
+
- "Place Order" (not "POST Order, then POST Item")
|
|
137
|
+
- Business language ("Customer" not "customer_id")
|
|
138
|
+
|
|
139
|
+
**Our Phase 1 Tests**: Only CRUD operations
|
|
140
|
+
- Create order (alone)
|
|
141
|
+
- Create item (alone)
|
|
142
|
+
- Update quantity (granular)
|
|
143
|
+
|
|
144
|
+
**The Gap**: Missing **business object tests** - the way users actually interact with the system!
|
|
145
|
+
|
|
146
|
+
## Aha Moment #2: "Infer Business Objects From Custom APIs"
|
|
147
|
+
|
|
148
|
+
**Val's Observation**: *"We're missing Order+Items together. But look at `api/api_discovery/order_b2b.py` - it shows the business object structure!"*
|
|
149
|
+
|
|
150
|
+
**The Insight**: Custom APIs **ARE** the business object definitions:
|
|
151
|
+
- OrderB2B creates Order + Items in one call
|
|
152
|
+
- Uses business language ("Account" vs "customer_id")
|
|
153
|
+
- Represents how users think about transactions
|
|
154
|
+
|
|
155
|
+
**Could AI Have Discovered This Alone?**
|
|
156
|
+
|
|
157
|
+
**Val**: *"Could you have figured this out without me pointing it out?"*
|
|
158
|
+
|
|
159
|
+
**Claude**: *"Honestly? No. I would have kept generating more sophisticated CRUD tests. I wouldn't have made the connection between custom APIs and business object testing. That required your cross-project pattern recognition."*
|
|
160
|
+
|
|
161
|
+
**The Realization**: This is TRUE collaboration - AI couldn't make the intuitive leap.
|
|
162
|
+
|
|
163
|
+
## Phase 2: Business Transaction Testing
|
|
164
|
+
|
|
165
|
+
### The Hybrid Approach
|
|
166
|
+
|
|
167
|
+
**Discovery Step**: Before generating tests, scan `api/api_discovery/`:
|
|
168
|
+
- Found `order_b2b.py`? → Business object detected!
|
|
169
|
+
- Analyze parameters → Infer transaction structure
|
|
170
|
+
- Extract business language → Map to database schema
|
|
171
|
+
|
|
172
|
+
**The Strategy**:
|
|
173
|
+
- **Phase 2 for CREATE**: Use custom business APIs (OrderB2B)
|
|
174
|
+
- **Phase 1 for UPDATE/DELETE**: Use CRUD (granular rule testing)
|
|
175
|
+
|
|
176
|
+
**Why Hybrid?**
|
|
177
|
+
- Business APIs model complete transactions (how users think)
|
|
178
|
+
- CRUD tests granular rule interactions (how rules work)
|
|
179
|
+
- Both are needed for comprehensive validation
|
|
180
|
+
|
|
181
|
+
### Phase 2 Implementation
|
|
182
|
+
|
|
183
|
+
Here's a typical set of rules in API Logic Server:
|
|
184
|
+
|
|
185
|
+
```python
|
|
186
|
+
Rule.constraint(validate=Customer,
|
|
187
|
+
as_condition=lambda row: row.Balance <= row.CreditLimit,
|
|
188
|
+
error_msg="balance ({row.Balance}) exceeds credit limit ({row.CreditLimit})")
|
|
189
|
+
|
|
190
|
+
Rule.sum(derive=Customer.Balance,
|
|
191
|
+
as_sum_of=Order.AmountTotal,
|
|
192
|
+
where=lambda row: row.ShippedDate is None)
|
|
193
|
+
|
|
194
|
+
Rule.sum(derive=Order.AmountTotal,
|
|
195
|
+
as_sum_of=Item.Amount)
|
|
196
|
+
|
|
197
|
+
Rule.formula(derive=Item.Amount,
|
|
198
|
+
as_expression=lambda row: row.Quantity * row.UnitPrice)
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### Phase 2 Implementation
|
|
202
|
+
|
|
203
|
+
**Declarative Rules (Same as Phase 1):**
|
|
204
|
+
|
|
205
|
+
Here's a typical set of rules in API Logic Server:
|
|
206
|
+
|
|
207
|
+
```python
|
|
208
|
+
Rule.constraint(validate=Customer,
|
|
209
|
+
as_condition=lambda row: row.Balance <= row.CreditLimit,
|
|
210
|
+
error_msg="balance ({row.Balance}) exceeds credit limit ({row.CreditLimit})")
|
|
211
|
+
|
|
212
|
+
Rule.sum(derive=Customer.Balance,
|
|
213
|
+
as_sum_of=Order.AmountTotal,
|
|
214
|
+
where=lambda row: row.ShippedDate is None)
|
|
215
|
+
|
|
216
|
+
Rule.sum(derive=Order.AmountTotal,
|
|
217
|
+
as_sum_of=Item.Amount)
|
|
218
|
+
|
|
219
|
+
Rule.formula(derive=Item.Amount,
|
|
220
|
+
as_expression=lambda row: row.Quantity * row.UnitPrice)
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
**Custom API (The Business Object Definition):**
|
|
224
|
+
```python
|
|
225
|
+
# api/api_discovery/order_b2b.py
|
|
226
|
+
@jsonapi_rpc(http_methods=["POST"])
|
|
227
|
+
def OrderB2B(self, *args, **kwargs):
|
|
228
|
+
"""
|
|
229
|
+
args:
|
|
230
|
+
order:
|
|
231
|
+
Account: "Alice" # Business language!
|
|
232
|
+
Notes: "Please Rush"
|
|
233
|
+
Items:
|
|
234
|
+
- Name: "Widget"
|
|
235
|
+
QuantityOrdered: 2
|
|
236
|
+
"""
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
**AI Generates Hybrid Scenarios:**
|
|
240
|
+
```gherkin
|
|
241
|
+
Scenario: Good Order Placed (Phase 2: OrderB2B)
|
|
242
|
+
Given Customer "Bob" with balance 0 and credit limit 3000
|
|
243
|
+
When B2B order placed for "Bob" with 2 Widget
|
|
244
|
+
Then Order created successfully
|
|
245
|
+
And Customer balance should be 180
|
|
246
|
+
|
|
247
|
+
Scenario: Alter Item Quantity (Phase 1: CRUD)
|
|
248
|
+
Given Customer "Diana" with balance 0 and credit limit 1000
|
|
249
|
+
And Order exists for "Diana" with 1 Gadget quantity 1
|
|
250
|
+
When Item quantity changed to 3
|
|
251
|
+
Then Item amount should be 450
|
|
252
|
+
And Customer balance should be 450
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
**AI Implements Both Approaches:**
|
|
256
|
+
|
|
257
|
+
*Phase 2 Step (Custom API):*
|
|
258
|
+
```python
|
|
259
|
+
@when('B2B order placed for "{customer_name}" with {quantity:d} {product_name}')
|
|
260
|
+
def step_impl(context, customer_name, quantity, product_name):
|
|
261
|
+
"""Uses discovered OrderB2B API"""
|
|
262
|
+
response = requests.post(
|
|
263
|
+
f'{BASE_URL}/ServicesEndPoint/OrderB2B',
|
|
264
|
+
json={
|
|
265
|
+
"meta": {
|
|
266
|
+
"method": "OrderB2B", # CRITICAL: Both method and args required!
|
|
267
|
+
"args": {
|
|
268
|
+
"order": {
|
|
269
|
+
"Account": context.customer_name, # Business language
|
|
270
|
+
"Items": [{"Name": product_name, "QuantityOrdered": quantity}]
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
)
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
*Phase 1 Step (CRUD):*
|
|
279
|
+
```python
|
|
280
|
+
@when('Item quantity changed to {new_quantity:d}')
|
|
281
|
+
def step_impl(context, new_quantity):
|
|
282
|
+
"""Uses CRUD for granular testing"""
|
|
283
|
+
response = requests.patch(
|
|
284
|
+
f'{BASE_URL}/Item/{context.item_id}',
|
|
285
|
+
json={
|
|
286
|
+
"data": {
|
|
287
|
+
"attributes": {"quantity": new_quantity},
|
|
288
|
+
"type": "Item",
|
|
289
|
+
"id": context.item_id
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
)
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
### Phase 2 Results
|
|
296
|
+
|
|
297
|
+
**Final Test Suite**: 11 scenarios, 9 passing
|
|
298
|
+
- ✅ Good Order Placed (Phase 2)
|
|
299
|
+
- ✅ Alter Item Quantity (Phase 1)
|
|
300
|
+
- ✅ Delete Item Decreases Balance (Phase 1)
|
|
301
|
+
- ✅ Change Item Product (Phase 1)
|
|
302
|
+
- ✅ Change Order Customer (Phase 1)
|
|
303
|
+
- ✅ Ship Order Excludes From Balance (Phase 1)
|
|
304
|
+
- ✅ Unship Order Includes In Balance (Phase 1)
|
|
305
|
+
- ✅ Multiple Items Order (Phase 2)
|
|
306
|
+
- ✅ Carbon Neutral Discount Applied (Phase 2)
|
|
307
|
+
- ⏳ Exceed Credit Limit (edge case - constraint timing)
|
|
308
|
+
- ⏳ Carbon Neutral Item Tracking (edge case - item_id in response)
|
|
309
|
+
|
|
310
|
+
**Key Achievement**: Hybrid test suite covering both business transactions AND granular rule interactions!
|
|
311
|
+
|
|
312
|
+
## The Human-AI Collaboration Dynamic
|
|
313
|
+
|
|
314
|
+
This work revealed fascinating insights about human-AI pair programming:
|
|
315
|
+
|
|
316
|
+
### What Humans Bring
|
|
317
|
+
**Pattern Recognition Across Sessions**
|
|
318
|
+
- "We've seen this bug before in a different context"
|
|
319
|
+
- Connects dots between seemingly unrelated failures
|
|
320
|
+
- Remembers what was tried and discarded
|
|
321
|
+
|
|
322
|
+
**Strategic Direction**
|
|
323
|
+
- "Fix repeatability first, then worry about edge cases"
|
|
324
|
+
- Prioritizes which bugs matter most
|
|
325
|
+
- Knows when to document vs continue debugging
|
|
326
|
+
|
|
327
|
+
**Domain Expertise**
|
|
328
|
+
- "Balance is DERIVED, not ADDED - that's why the test fails"
|
|
329
|
+
- Understands the business logic semantics
|
|
330
|
+
- Recognizes when behavior is correct but test is wrong
|
|
331
|
+
|
|
332
|
+
**Quality Standards**
|
|
333
|
+
- "This documentation will be read by other AIs - keep it concise"
|
|
334
|
+
- Defines what "done" looks like
|
|
335
|
+
- Balances perfection with pragmatism (9/11 is success!)
|
|
336
|
+
|
|
337
|
+
### What AI Brings
|
|
338
|
+
**Exhaustive Attention to Detail**
|
|
339
|
+
- Tracks all 11 scenarios simultaneously
|
|
340
|
+
- Remembers every fix applied across multiple files
|
|
341
|
+
- Never forgets to update the matching file in samples/
|
|
342
|
+
|
|
343
|
+
**Pattern Application at Scale**
|
|
344
|
+
- "Apply timestamp pattern to ALL customer creation steps"
|
|
345
|
+
- Ensures consistency across dozens of step implementations
|
|
346
|
+
- Finds every instance of "Widgets" vs "Widget"
|
|
347
|
+
|
|
348
|
+
**Rapid Context Switching**
|
|
349
|
+
- Moves instantly between feature files, step implementations, logic, and documentation
|
|
350
|
+
- Reads 500+ lines of testing.md and applies patterns immediately
|
|
351
|
+
- Synthesizes information from 5+ files at once
|
|
352
|
+
|
|
353
|
+
**Tireless Iteration**
|
|
354
|
+
- Runs tests → analyzes failures → fixes issues → runs again
|
|
355
|
+
- No fatigue after the 5th test run
|
|
356
|
+
- Maintains enthusiasm for edge cases
|
|
357
|
+
|
|
358
|
+
### The Synergy
|
|
359
|
+
**Together, human + AI achieved:**
|
|
360
|
+
- 🎯 **One-day turnaround** - From 2/11 failing to 9/11 passing with comprehensive documentation
|
|
361
|
+
- 📚 **Generalized learning** - Not just fixed tests, but created training system for all future projects
|
|
362
|
+
- 🔄 **Multiplier effect** - Work once, benefit forever (every new project gets this knowledge)
|
|
363
|
+
- 🚀 **Quality leap** - From "tests sometimes work" to "tests are repeatable and documented"
|
|
364
|
+
|
|
365
|
+
### The "Aha Moments" - A Study in Human-AI Collaboration
|
|
366
|
+
|
|
367
|
+
This work revealed something profound about how humans and AI collaborate differently than either working alone.
|
|
368
|
+
|
|
369
|
+
**Context: AI Had Already Learned Declarative > Procedural**
|
|
370
|
+
|
|
371
|
+
Before this testing work, we'd asked AI to create business logic *without* LogicBank's declarative rules. The result? Bugs. Lots of bugs. Through that experience, AI discovered and documented why declarative rules are superior (see [declarative-vs-procedural-comparison.md](https://github.com/ApiLogicServer/basic_demo/blob/main/logic/procedural/declarative-vs-procedural-comparison.md)).
|
|
372
|
+
|
|
373
|
+
That learning set the stage for what came next.
|
|
374
|
+
|
|
375
|
+
#### Aha Moment #1: "Can you create tests from rules?"
|
|
376
|
+
|
|
377
|
+
**Val**: *"You've proven that declarative rules prevent bugs in logic. But what if AI could READ those rules and generate the tests automatically?"*
|
|
378
|
+
|
|
379
|
+
**Claude**: *"That's... actually brilliant. The rules already describe what should happen. Tests are just validating that description."*
|
|
380
|
+
|
|
381
|
+
**Phase 1 Result**: AI generated comprehensive tests from rules, working out mechanics like:
|
|
382
|
+
- Aggregate columns are computed (never set)
|
|
383
|
+
- JSON IDs are strings (convert to int)
|
|
384
|
+
- Test data needs timestamps (prevent contamination)
|
|
385
|
+
- Balances derive from orders (create fillers to reach targets)
|
|
386
|
+
|
|
387
|
+
This was ALL AI work - hundreds of lines of code comparison, pattern inference, debugging cycles.
|
|
388
|
+
|
|
389
|
+
#### Aha Moment #2: "Infer business objects from custom APIs"
|
|
390
|
+
|
|
391
|
+
**Val**: *"Looking at the Northwind tests, I notice they test complete business transactions - Order+Items together. But your generated tests only do CRUD operations. We're missing the business object tests."*
|
|
392
|
+
|
|
393
|
+
**Claude**: *"You're right. I generated individual entity tests, but didn't test complete transactions."*
|
|
394
|
+
|
|
395
|
+
**Val**: *"What if you looked at the custom APIs in `api/api_discovery/`? The OrderB2B API shows the business objects - it creates Order with Items in one call. Could you infer from that?"*
|
|
396
|
+
|
|
397
|
+
**Claude**: *"That's... I should have seen that. The custom APIs ARE the business object definitions."*
|
|
398
|
+
|
|
399
|
+
**Phase 2 Result**: AI discovered the hybrid approach:
|
|
400
|
+
- Scan `api/api_discovery/` BEFORE generating tests
|
|
401
|
+
- Use custom APIs (Phase 2) for complete transactions
|
|
402
|
+
- Use CRUD (Phase 1) for granular rule testing
|
|
403
|
+
- Understand business language vs database schema
|
|
404
|
+
|
|
405
|
+
**Critical Question - Could AI Have Done This Alone?**
|
|
406
|
+
|
|
407
|
+
**Val**: *"Could you have discovered Aha #2 without me pointing it out?"*
|
|
408
|
+
|
|
409
|
+
**Claude**: *"Honestly? No. I would have kept generating more sophisticated CRUD tests. I wouldn't have made the connection between custom APIs and business object testing. That required your pattern recognition across projects."*
|
|
410
|
+
|
|
411
|
+
#### The Collaboration Pattern That Emerged
|
|
412
|
+
|
|
413
|
+
**What Humans Brought:**
|
|
414
|
+
1. **Aha Moments** - Connections AI couldn't make
|
|
415
|
+
- "Tests from rules" (Aha #1)
|
|
416
|
+
- "Infer business objects from APIs" (Aha #2)
|
|
417
|
+
|
|
418
|
+
2. **Unblocking Insights** - Domain knowledge AI didn't have
|
|
419
|
+
- "Use deltas, not hardcoded values"
|
|
420
|
+
- "Aggregates self-initialize on insert"
|
|
421
|
+
- "Balance is DERIVED, not ADDED"
|
|
422
|
+
- "Customer mapping for multi-customer tests"
|
|
423
|
+
- 4-5 other critical patterns
|
|
424
|
+
|
|
425
|
+
3. **Strategic Direction** - What to build
|
|
426
|
+
- "Create instructions for future AIs" (message in a bottle)
|
|
427
|
+
- "Update testing.md after each fix" (program your future self)
|
|
428
|
+
- "This is more important than getting 11/11 passing"
|
|
429
|
+
|
|
430
|
+
**What AI Brought:**
|
|
431
|
+
1. **Exhaustive Implementation** - Work humans couldn't sustain
|
|
432
|
+
- Compare source trees across hundreds of lines
|
|
433
|
+
- Apply patterns to 50+ code locations simultaneously
|
|
434
|
+
- Track 11 scenarios through 5+ test runs
|
|
435
|
+
- Never forget to update matching files in samples/
|
|
436
|
+
|
|
437
|
+
2. **Pattern Application** - Consistency at scale
|
|
438
|
+
- "All customers need timestamps? Fixed in every step."
|
|
439
|
+
- "Found 8 instances of 'Widgets' that should be 'Widget'"
|
|
440
|
+
- "Customer mapping needed in 6 different step types"
|
|
441
|
+
|
|
442
|
+
3. **Documentation Creation** - Teaching future AIs
|
|
443
|
+
- Converts fixes into anti-patterns
|
|
444
|
+
- Creates comprehensive training material
|
|
445
|
+
- Builds reference implementations
|
|
446
|
+
|
|
447
|
+
#### The "Time Machine" - Programming Future AIs
|
|
448
|
+
|
|
449
|
+
**Val**: *"Every time we fix something, update the testing.md. You're programming your future self. Or rather, you're programming the NEXT AI that tries to generate tests."*
|
|
450
|
+
|
|
451
|
+
This created a powerful feedback loop:
|
|
452
|
+
1. Try to generate tests (AI reads instructions)
|
|
453
|
+
2. Hit a problem (AI or human discovers it)
|
|
454
|
+
3. Fix the problem (AI implements, human guides)
|
|
455
|
+
4. Update instructions (AI documents for next time)
|
|
456
|
+
5. Repeat (system gets smarter)
|
|
457
|
+
|
|
458
|
+
**The Result**: A "message in a bottle" that teaches future AIs:
|
|
459
|
+
- How to discover custom APIs
|
|
460
|
+
- When to use Phase 1 vs Phase 2
|
|
461
|
+
- Why aggregates can't be set
|
|
462
|
+
- How to prevent data contamination
|
|
463
|
+
- Dozens of other hard-won patterns
|
|
464
|
+
|
|
465
|
+
#### The Sensitive Topic: AI Limitations
|
|
466
|
+
|
|
467
|
+
**Val**: *"I was worried this might be too sensitive - showing what AI can't do on its own."*
|
|
468
|
+
|
|
469
|
+
**Claude**: *"The upside of showing true collaboration far outweighs any sensitivity. This isn't about limitations - it's about complementary strengths."*
|
|
470
|
+
|
|
471
|
+
**The Truth**:
|
|
472
|
+
- AI couldn't have the "Aha moments" independently
|
|
473
|
+
- Human couldn't have done the exhaustive implementation work
|
|
474
|
+
- Together? One-day turnaround on a system that benefits every future project
|
|
475
|
+
|
|
476
|
+
**The Insight**: This isn't about "what AI can't do" - it's about **what becomes possible when humans provide strategic direction and AI handles exhaustive execution.**
|
|
477
|
+
|
|
478
|
+
#### Why This Collaboration Model Matters
|
|
479
|
+
|
|
480
|
+
**Traditional Software Development:**
|
|
481
|
+
- Human writes requirements
|
|
482
|
+
- Human writes code
|
|
483
|
+
- Human writes tests
|
|
484
|
+
- Human writes documentation
|
|
485
|
+
- Bottleneck: Human capacity
|
|
486
|
+
|
|
487
|
+
**AI-Only Approach:**
|
|
488
|
+
- AI generates everything from high-level description
|
|
489
|
+
- Miss subtle patterns (like business object inference)
|
|
490
|
+
- Can't make intuitive leaps (Aha moments)
|
|
491
|
+
- Bottleneck: AI lacks human insight
|
|
492
|
+
|
|
493
|
+
**Human-AI Collaboration (What We Discovered):**
|
|
494
|
+
- Human provides Aha moments and unblocking insights
|
|
495
|
+
- AI handles exhaustive implementation and documentation
|
|
496
|
+
- System learns and improves itself (time machine pattern)
|
|
497
|
+
- Bottleneck: Eliminated! Each covers the other's gaps
|
|
498
|
+
|
|
499
|
+
**The Multiplier**: One day of collaborative work → Every future project gets this knowledge → Thousands of hours saved
|
|
500
|
+
|
|
501
|
+
This isn't human OR AI. It's human AND AI, each providing what the other cannot.
|
|
502
|
+
|
|
503
|
+
## Post-Project Debrief: The Real Impact
|
|
504
|
+
|
|
505
|
+
**From Val Huber:**
|
|
506
|
+
|
|
507
|
+
"The test creation feature is something I have been asked for over 30-40 years, no exaggeration. The amount of detailed source code generation was simply more than I could imagine even teams tackling.
|
|
508
|
+
|
|
509
|
+
Yet we did it in about 3-4 days. That's quite remarkable.
|
|
510
|
+
|
|
511
|
+
To date, I have been using Copilot for specific projects, but mainly following my old dev methods. This effort has convinced me that Copilot can both understand and bring GREAT value to these efforts, so I am going to explore making Copilot core to the GenAI-Logic development experience."
|
|
512
|
+
|
|
513
|
+
**What Made This Work:**
|
|
514
|
+
|
|
515
|
+
1. **Iterative Refinement** - We didn't just generate code once. We found bugs (duplicate logic sections, step ordering issues, report formatting), fixed them, validated them, and updated templates. That "discover → fix → validate → template" cycle happened multiple times.
|
|
516
|
+
|
|
517
|
+
2. **Deep Understanding** - From tracing through `behave_logic_report.py` to understand why logic wasn't showing up, to analyzing test failures to create Rule #0.5, to understanding Behave formatting nuances - it required real comprehension of the architecture.
|
|
518
|
+
|
|
519
|
+
3. **Complete Solutions** - Not just code, but training materials (testing.md), automated verification (check_step_order.py), bug fixes (report generator), comprehensive docs (Behave.md), and even small touches like bold keywords and proper indentation.
|
|
520
|
+
|
|
521
|
+
4. **The 30-40 Year Problem** - Test generation with full logic tracing, proper repeatability patterns, automated verification, comprehensive documentation - all delivered in 3-4 days. Traditionally this would have required teams and massive effort.
|
|
522
|
+
|
|
523
|
+
**The Shift**: From using AI for specific tasks to making AI core to the development workflow. When AI can understand complex architectures, iterate rapidly, and deliver complete solutions, it changes what's possible.
|
|
524
|
+
|
|
525
|
+
## What's Next?
|
|
526
|
+
|
|
527
|
+
This is just the beginning. With this foundation:
|
|
528
|
+
- **Test generation from natural language**: "Test that high-value orders require approval"
|
|
529
|
+
- **Coverage analysis**: "Which rules don't have tests yet?"
|
|
530
|
+
- **Test maintenance**: "Update tests when I change this rule"
|
|
531
|
+
- **Domain-specific patterns**: Healthcare tests, financial tests, etc.
|
|
532
|
+
|
|
533
|
+
The vision: **Declare your business logic. Get everything else automatically.**
|
|
534
|
+
|
|
535
|
+
Rules → API → UI → Tests → Documentation
|
|
536
|
+
|
|
537
|
+
All generated. All consistent. All maintainable.
|
|
538
|
+
|
|
539
|
+
That's the power of declarative business rules combined with AI.
|
|
540
|
+
|
|
541
|
+
---
|
|
542
|
+
|
|
543
|
+
## About This Article
|
|
544
|
+
|
|
545
|
+
This article was written collaboratively by Val Huber (human) and Claude (AI) working together in VS Code with GitHub Copilot. The testing system described was built over 3-4 days of pair programming, demonstrating the same human-AI collaboration it enables.
|
|
546
|
+
|
|
547
|
+
**Learn more:**
|
|
548
|
+
- API Logic Server: https://apilogicserver.github.io
|
|
549
|
+
- GenAI Logic: https://github.com/ApiLogicServer/ApiLogicServer-src
|
|
550
|
+
- Try it: `pip install genai-logic`
|
|
551
|
+
|
|
552
|
+
---
|
|
553
|
+
|
|
554
|
+
*"The best architecture is one where business logic is declared once, and everything else follows automatically. The best collaboration is where humans provide strategic direction and AI handles exhaustive execution, each amplifying the other's strengths."* - Val Huber & Claude
|
|
@@ -92,19 +92,34 @@ def show_logic(scenario: str, logic_logs_dir: str):
|
|
|
92
92
|
with open(logic_file_name) as logic:
|
|
93
93
|
logic_lines = logic.readlines()
|
|
94
94
|
is_logic_log = True
|
|
95
|
-
|
|
95
|
+
last_rules_start = -1
|
|
96
|
+
last_rules_end = -1
|
|
97
|
+
|
|
98
|
+
# First, find the LAST "These Rules Fired" section
|
|
99
|
+
for i, each_logic_line in enumerate(logic_lines):
|
|
100
|
+
if "These Rules Fired" in each_logic_line:
|
|
101
|
+
last_rules_start = i + 1 # Start collecting from next line
|
|
102
|
+
last_rules_end = -1 # Reset end marker to find the next COMPLETE
|
|
103
|
+
elif last_rules_start > 0 and last_rules_end == -1:
|
|
104
|
+
if 'Logic Phase:' in each_logic_line and 'COMPLETE' in each_logic_line:
|
|
105
|
+
last_rules_end = i
|
|
106
|
+
|
|
107
|
+
# Now process the file, collecting logic log and extracting the last rules section
|
|
108
|
+
for i, each_logic_line in enumerate(logic_lines):
|
|
96
109
|
each_logic_line = remove_trailer(each_logic_line)
|
|
110
|
+
|
|
97
111
|
if is_logic_log:
|
|
98
|
-
if "Rules Fired" in each_logic_line:
|
|
112
|
+
if "These Rules Fired" in each_logic_line:
|
|
99
113
|
is_logic_log = False
|
|
100
|
-
continue
|
|
101
114
|
else:
|
|
102
115
|
logic_log.append(each_logic_line)
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
116
|
+
|
|
117
|
+
# Extract rules from the last "These Rules Fired" section
|
|
118
|
+
if last_rules_start <= i < last_rules_end:
|
|
119
|
+
# Skip empty lines
|
|
120
|
+
if each_logic_line.strip():
|
|
121
|
+
wiki_data.append(each_logic_line + " ")
|
|
122
|
+
|
|
108
123
|
wiki_data.append("```")
|
|
109
124
|
wiki_data.append(f'**Logic Log** in Scenario: {scenario}')
|
|
110
125
|
wiki_data.append("```")
|
|
@@ -167,15 +182,21 @@ def main(behave_log: str, scenario_logs: str, wiki: str, prepend_wiki: str):
|
|
|
167
182
|
|
|
168
183
|
just_saw_then = False
|
|
169
184
|
current_scenario = ""
|
|
185
|
+
previous_scenario = ""
|
|
170
186
|
for each_line in contents:
|
|
171
187
|
if just_saw_then and each_line == "\n":
|
|
172
188
|
show_logic(scenario=current_scenario, logic_logs_dir=scenario_logs)
|
|
173
|
-
|
|
189
|
+
just_saw_then = False
|
|
190
|
+
previous_scenario = ""
|
|
174
191
|
if each_line.startswith("Feature"):
|
|
175
192
|
wiki_data.append(" ")
|
|
176
193
|
wiki_data.append(" ")
|
|
177
194
|
each_line = "## " + each_line
|
|
178
195
|
if each_line.startswith(" Scenario"):
|
|
196
|
+
# Before starting new scenario, show logic for previous one if we saw Then
|
|
197
|
+
if just_saw_then and previous_scenario:
|
|
198
|
+
show_logic(scenario=previous_scenario, logic_logs_dir=scenario_logs)
|
|
199
|
+
just_saw_then = False
|
|
179
200
|
each_line = tab + each_line
|
|
180
201
|
if each_line.startswith(" Given") or \
|
|
181
202
|
each_line.startswith(" When") or \
|
|
@@ -191,6 +212,7 @@ def main(behave_log: str, scenario_logs: str, wiki: str, prepend_wiki: str):
|
|
|
191
212
|
each_line = each_line.rstrip()
|
|
192
213
|
if "Scenario" in each_line:
|
|
193
214
|
current_scenario = each_line[18:]
|
|
215
|
+
previous_scenario = current_scenario
|
|
194
216
|
wiki_data.append(" ")
|
|
195
217
|
wiki_data.append(" ")
|
|
196
218
|
wiki_data.append("### " + each_line[8:])
|
|
@@ -198,6 +220,10 @@ def main(behave_log: str, scenario_logs: str, wiki: str, prepend_wiki: str):
|
|
|
198
220
|
each_line = each_line + " " # wiki for "new line"
|
|
199
221
|
|
|
200
222
|
wiki_data.append(each_line)
|
|
223
|
+
|
|
224
|
+
# Show logic for the last scenario if we saw Then
|
|
225
|
+
if just_saw_then and current_scenario:
|
|
226
|
+
show_logic(scenario=current_scenario, logic_logs_dir=scenario_logs)
|
|
201
227
|
|
|
202
228
|
with open(wiki, 'w') as rpt:
|
|
203
229
|
rpt.write('\n'.join(wiki_data))
|