- Restructure docs/ folder (remove numeric prefixes): - 04_USER_GUIDES -> guides/ - 05_API_REFERENCE -> api/ - 06_PHYSICS -> physics/ - 07_DEVELOPMENT -> development/ - 08_ARCHIVE -> archive/ - 09_DIAGRAMS -> diagrams/ - Replace tagline 'Talk, don't click' with 'LLM-driven optimization framework' in 9 files - Create comprehensive docs/GETTING_STARTED.md: - Prerequisites and quick setup - Project structure overview - First study tutorial (Claude or manual) - Dashboard usage guide - Neural acceleration introduction - Rewrite docs/00_INDEX.md with correct paths and modern structure - Archive obsolete files: - 01_PROTOCOLS.md -> archive/historical/01_PROTOCOLS_legacy.md - 03_GETTING_STARTED.md -> archive/historical/ - ATOMIZER_PODCAST_BRIEFING.md -> archive/marketing/ - Update timestamps to 2026-01-20 across all key files - Update .gitignore to exclude docs/generated/ - Version bump: ATOMIZER_CONTEXT v1.8 -> v2.0
42 KiB
Atomizer Development Guidance
Living Document: Strategic direction, current status, and development priorities for Atomizer
Last Updated: 2025-11-17 (Evening - Phase 3.2 Integration Planning Complete)
Status: Alpha Development - 80-90% Complete, Integration Phase
🎯 NOW IN PROGRESS: Phase 3.2 Integration Sprint - Integration Plan
Table of Contents
- Executive Summary
- Comprehensive Status Report
- Development Strategy
- Priority Initiatives
- Foundation for Future
- Technical Roadmap
- Development Standards
- Key Principles
Executive Summary
Current State
Status: Alpha Development - Significant Progress Made ✅ Readiness: Foundation solid, LLM features partially implemented, ready for integration phase Direction: ✅ Aligned with roadmap vision - moving toward LLM-native optimization platform
Quick Stats
- 110+ Python files (~10,000+ lines in core engine)
- 23 test files covering major components
- Phase 1 (Plugin System): ✅ 100% Complete & Production Ready
- Phases 2.5-3.1 (LLM Intelligence): ✅ 85% Complete - Components Built, Integration Needed
- Phase 3.3 (Visualization & Cleanup): ✅ 100% Complete & Production Ready
- Study Organization v2.0: ✅ 100% Complete with Templates
- Working Example Study: simple_beam_optimization (4 substudies, 56 trials, full documentation)
Key Insight
You've built more than the documentation suggests! The roadmap says "Phase 2: 0% Complete" but you've actually built sophisticated LLM components through Phase 3.1 (85% complete). The challenge now is integration, not development.
Comprehensive Status Report
🎯 What's Actually Working (Production Ready)
✅ Core Optimization Engine
Status: FULLY FUNCTIONAL
The foundation is rock solid:
- Optuna Integration: TPE, CMA-ES, GP samplers operational
- NX Solver Integration: Journal-based parameter updates and simulation execution
- OP2 Result Extraction: Stress and displacement extractors tested on real files
- Study Management: Complete folder structure with resume capability
- Precision Control: 4-decimal rounding for engineering units
Evidence:
studies/simple_beam_optimization/- Complete 4D optimization study- 4 substudies (01-04) with numbered organization
- 56 total trials across all substudies
- 4 design variables (beam thickness, face thickness, hole diameter, hole count)
- 3 objectives (displacement, stress, mass) + 1 constraint
- Full documentation with substudy READMEs
studies/bracket_displacement_maximizing/- Earlier study (20 trials)
✅ Plugin System (Phase 1)
Status: PRODUCTION READY
This is exemplary architecture:
- Hook Manager: Priority-based execution at 7 lifecycle points
pre_solve,post_solve,post_extraction,post_calculation, etc.
- Auto-discovery: Plugins load automatically from directories
- Context Passing: Full trial data available to hooks
- Logging Infrastructure:
- Per-trial detailed logs (
trial_logs/) - High-level optimization log (
optimization.log) - Clean, parseable format
- Per-trial detailed logs (
Evidence: Hook system tested in test_hooks_with_bracket.py - all passing ✅
✅ Substudy System
Status: WORKING & ELEGANT
NX-like hierarchical studies:
- Shared models, independent configurations
- Continuation support (fine-tuning builds on coarse exploration)
- Live incremental history tracking
- Clean separation of concerns
File: studies/simple_beam_optimization/run_optimization.py
✅ Phase 3.3: Visualization & Model Cleanup
Status: PRODUCTION READY
Automated post-processing system for optimization results:
- 6 Plot Types:
- Convergence (objective vs trial with running best)
- Design space evolution (parameter changes over time)
- Parallel coordinates (high-dimensional visualization)
- Sensitivity heatmap (parameter correlation analysis)
- Constraint violations tracking
- Multi-objective breakdown
- Output Formats: PNG (300 DPI) + PDF (vector graphics)
- Model Cleanup: Selective deletion of large CAD/FEM files
- Keeps top-N best trials (default: 10)
- Preserves all results.json files
- 50-90% disk space savings typical
- Configuration: JSON-based
post_processingsection
Evidence:
- Tested on 50-trial beam optimization
- Generated 12 plot files (6 types × 2 formats)
- Plots saved to
studies/simple_beam_optimization/2_substudies/04_full_optimization_50trials/plots/ - Documentation:
docs/PHASE_3_3_VISUALIZATION_AND_CLEANUP.md
Integration: Runs automatically after optimization completes (if enabled in config)
✅ Study Organization System v2.0
Status: PRODUCTION READY
Standardized directory structure for all optimization studies:
Structure:
studies/[study_name]/
├── 1_setup/ # Pre-optimization (model, benchmarking)
├── 2_substudies/ # Numbered runs (01_, 02_, 03_...)
└── 3_reports/ # Study-level analysis
Features:
- Numbered Substudies: Chronological ordering (01, 02, 03...)
- Self-Documenting: Each substudy has README.md with purpose/results
- Metadata Tracking: study_metadata.json with complete substudy registry
- Templates: Complete templates for new studies and substudies
- Migration Tool: reorganize_study.py for existing studies
Evidence:
- Applied to simple_beam_optimization study
- 4 substudy READMEs documenting progression
- Complete template system in
templates/ - How-to guide:
templates/HOW_TO_CREATE_A_STUDY.md - Documentation:
docs/STUDY_ORGANIZATION.md
File: studies/simple_beam_optimization/study_metadata.json
🚧 What's Built But Not Yet Integrated
🟡 Phase 2.5-3.1: LLM Intelligence Components
Status: 85% Complete - Individual Modules Working, Integration Pending
These are sophisticated, well-designed modules that are 90% ready but not yet connected to the main optimization loop:
✅ Built & Tested:
-
LLM Workflow Analyzer (
llm_workflow_analyzer.py- 14.5KB)- Uses Claude API to analyze natural language optimization requests
- Outputs structured JSON with engineering_features, inline_calculations, post_processing_hooks
- Status: Fully functional standalone
-
Extractor Orchestrator (
extractor_orchestrator.py- 12.7KB)- Processes LLM output and generates OP2 extractors
- Dynamic loading and execution
- Test:
test_phase_3_1_integration.py- PASSING ✅ - Evidence: Generated 3 working extractors in
result_extractors/generated/
-
pyNastran Research Agent (
pynastran_research_agent.py- 13.3KB)- Uses WebFetch to learn pyNastran API patterns
- Knowledge base system stores learned patterns
- 3 core extraction patterns: displacement, stress, force
- Test:
test_complete_research_workflow.py- PASSING ✅
-
Hook Generator (
hook_generator.py- 27.8KB)- Auto-generates post-processing hook scripts
- Weighted objectives, custom formulas, constraints, comparisons
- Complete JSON I/O handling
- Evidence: 4 working hooks in
plugins/post_calculation/
-
Inline Code Generator (
inline_code_generator.py- 17KB)- Generates Python code for simple math operations
- Normalization, averaging, min/max calculations
-
Codebase Analyzer & Capability Matcher (Phase 2.5)
- Scans existing code to detect gaps before requesting examples
- 80-90% accuracy on complex optimization requests
- Test:
test_phase_2_5_intelligent_gap_detection.py- PASSING ✅
🟡 What's Missing:
Integration into main runner! The components exist but aren't connected to runner.py:
# Current runner.py (Line 29-76):
class OptimizationRunner:
def __init__(self, config_path, model_updater, simulation_runner, result_extractors):
# Uses MANUAL config.json
# Uses MANUAL result_extractors dict
# No LLM workflow integration ❌
New LLMOptimizationRunner exists (llm_optimization_runner.py) but:
- Not used in any production study
- Not tested end-to-end with real NX solves
- Missing integration with
run_optimization.pyscripts
📊 Architecture Assessment
🟢 Strengths
-
Clean Separation of Concerns
- Each phase is a self-contained module
- Dependencies flow in one direction (no circular imports)
- Easy to test components independently
-
Excellent Documentation
- Session summaries for each phase (
docs/SESSION_SUMMARY_PHASE_*.md) - Comprehensive roadmap (
DEVELOPMENT_ROADMAP.md) - Inline docstrings with examples
- Session summaries for each phase (
-
Feature Registry (
feature_registry.json- 35KB)- Well-structured capability catalog
- Each feature has: implementation, interface, usage examples, metadata
- Perfect foundation for LLM navigation
-
Knowledge Base System
- Research sessions stored with rationale
- 9 markdown files documenting learned patterns
- Enables "learn once, use forever" approach
-
Test Coverage
- 23 test files covering major components
- Tests for individual phases (2.5, 2.9, 3.1)
- Integration tests passing
🟡 Areas for Improvement
-
Integration Gap
- Critical: LLM components not connected to main runner
- Two parallel runners exist (
runner.pyvsllm_optimization_runner.py) - Production studies still use manual JSON config
-
Documentation Drift
README.mdsays "Phase 2" is next priority- But Phases 2.5-3.1 are actually 85% complete
DEVELOPMENT.mdshows "Phase 2: 0% Complete" - INCORRECT
-
Test vs Production Gap
- LLM features tested in isolation
- No end-to-end test: Natural language → LLM → Generated code → Real NX solve → Results
test_bracket_llm_runner.pyexists but may not cover full pipeline
-
User Experience
- No simple way to run LLM-enhanced optimization yet
- User must manually edit JSON configs (old workflow)
- Natural language interface exists but not exposed
-
Code Duplication Risk
runner.pyandllm_optimization_runner.pyshare similar structure- Could consolidate into single runner with "LLM mode" flag
🎯 Phase 3.2 Integration Sprint - ACTIVE NOW
Status: 🟢 IN PROGRESS (2025-11-17)
Goal: Connect LLM components to production workflow - make LLM mode accessible
Detailed Plan: See docs/PHASE_3_2_INTEGRATION_PLAN.md
What's Being Built (4-Week Sprint)
Week 1: Make LLM Mode Accessible (16 hours)
- Create unified entry point with
--llmflag - Wire LLMOptimizationRunner to production
- Create minimal working example
- End-to-end integration test
Week 2: Robustness & Safety (16 hours)
- Code validation pipeline (syntax, security, test execution)
- Graceful fallback mechanisms
- LLM audit trail for transparency
- Failure scenario testing
Week 3: Learning System (12 hours)
- Knowledge base implementation
- Template extraction and reuse
- ResearchAgent integration
Week 4: Documentation & Discoverability (8 hours)
- Update README with LLM capabilities
- Create docs/LLM_MODE.md
- Demo video/GIF
- Update all planning docs
Success Metrics
- Natural language request → Optimization results (single command)
- Generated code validated before execution (no crashes)
- Successful workflows saved and reused (learning system operational)
- Documentation shows LLM mode prominently (users discover it)
Impact
Once complete:
- 100 lines of JSON config → 3 lines of natural language
- Users describe goals → LLM generates code automatically
- System learns from successful workflows → gets faster over time
- Complete audit trail for all LLM decisions
🎯 Gap Analysis: What's Missing for Complete Vision
Critical Gaps (Being Addressed in Phase 3.2)
-
Phase 3.2: Runner Integration ✅ IN PROGRESS
- Connect
LLMOptimizationRunnerto production workflows - Update
run_optimization.pyto support both manual and LLM modes - End-to-end test: Natural language → Actual NX solve → Results
- Timeline: Week 1 of Phase 3.2 (2025-11-17 onwards)
- Connect
-
User-Facing Interface ✅ IN PROGRESS
- CLI command:
python run_optimization.py --llm --request "minimize stress" - Dual-mode: LLM or traditional JSON config
- Timeline: Week 1 of Phase 3.2
- CLI command:
-
Error Handling & Recovery ✅ IN PROGRESS
- Code validation before execution
- Graceful fallback to manual mode
- Complete audit trail
- Timeline: Week 2 of Phase 3.2
Important Gaps (Should-Have)
-
Dashboard Integration
- Dashboard exists (
dashboard/) but may not show LLM-generated components - No visualization of generated code
- No "LLM mode" toggle in UI
- Dashboard exists (
-
Performance Optimization
- LLM calls in optimization loop could be slow
- Caching for repeated patterns?
- Batch code generation before optimization starts?
-
Validation & Safety
- Generated code execution sandboxing?
- Code review before running?
- Unit tests for generated extractors?
Nice-to-Have Gaps
-
Phase 4: Advanced Code Generation
- Complex FEA features (topology optimization, multi-physics)
- NXOpen journal script generation
-
Phase 5: Analysis & Decision Support
- Surrogate quality assessment (R², CV scores)
- Sensitivity analysis
- Engineering recommendations
-
Phase 6: Automated Reporting
- HTML/PDF report generation
- LLM-written narrative insights
🔍 Code Quality Assessment
Excellent:
- Modularity: Each component is self-contained (can be imported independently)
- Type Hints: Extensive use of
Dict[str, Any],Path,Optional[...] - Error Messages: Clear, actionable error messages
- Logging: Comprehensive logging at appropriate levels
Good:
- Naming: Clear, descriptive function/variable names
- Documentation: Most functions have docstrings with examples
- Testing: Core components have tests
Could Improve:
- Consolidation: Some code duplication between runners
- Configuration Validation: Some JSON configs lack schema validation
- Async Operations: No async/await for potential concurrency
- Type Checking: Not using mypy or similar (no
mypy.inifound)
Development Strategy
Current Approach: Claude Code + Manual Development
Strategic Decision: We are NOT integrating LLM API calls into Atomizer right now for development purposes.
Why This Makes Sense:
- Use What Works: Claude Code (your subscription) is already providing LLM assistance for development
- Avoid Premature Optimization: Don't block on LLM API integration when you can develop without it
- Focus on Foundation: Build the architecture first, add LLM API later
- Keep Options Open: Architecture supports LLM API, but doesn't require it for development
Future LLM Integration Strategy:
- Near-term: Maybe test simple use cases to validate API integration works
- Medium-term: Integrate LLM API for production user features (not dev workflow)
- Long-term: Fully LLM-native optimization workflow for end users
Bottom Line: Continue using Claude Code for Atomizer development. LLM API integration is a "later" feature, not a blocker.
Priority Initiatives
✅ Phase 3.2 Integration - Framework Complete (2025-11-17)
Status: ✅ 75% Complete - Framework implemented, API integration pending
What's Done:
- ✅ Generic
run_optimization.pyCLI with--llmflag support - ✅ Integration with
LLMOptimizationRunnerfor automated extractor/hook generation - ✅ Argument parsing and validation
- ✅ Comprehensive help message and examples
- ✅ Test suite verifying framework functionality
- ✅ Documentation of hybrid approach (Claude Code → JSON → LLMOptimizationRunner)
Current Limitation:
- ⚠️
LLMWorkflowAnalyzerrequires Anthropic API key for natural language parsing --llmmode works but needs--api-keyargument- Without API key, use hybrid approach (pre-generated workflow JSON)
Working Approaches:
- With API Key:
--llm "request" --api-key "sk-ant-..." - Hybrid (Recommended): Claude Code → workflow JSON →
LLMOptimizationRunner - Study-Specific: Hardcoded workflow (see bracket study example)
Files:
- optimization_engine/run_optimization.py - Generic CLI runner
- docs/PHASE_3_2_INTEGRATION_STATUS.md - Complete status report
- tests/test_phase_3_2_llm_mode.py - Integration tests
Next Steps (When API integration becomes priority):
- Implement true Claude Code integration in
LLMWorkflowAnalyzer - OR defer until Anthropic API integration is prioritized
- OR continue with hybrid approach (90% of value, 10% of complexity)
Recommendation: ✅ Framework Complete - Proceed to other priorities (NXOpen docs, Engineering pipeline)
🔬 HIGH PRIORITY: NXOpen Documentation Access
Goal: Enable LLM to reference NXOpen documentation when developing Atomizer features and generating NXOpen code
Options to Investigate:
-
Authenticated Web Fetching
- Can we login to Siemens documentation portal?
- Can WebFetch tool use authenticated sessions?
- Explore Siemens PLM API access
-
Documentation Scraping
- Ethical/legal considerations
- Caching locally for offline use
- Structured extraction of API signatures
-
Official API Access
- Does Siemens provide API documentation in structured format?
- JSON/XML schema files?
- OpenAPI/Swagger specs?
-
Community Resources
- TheScriptingEngineer blog content
- NXOpen examples repository
- Community-contributed documentation
Research Tasks:
- Investigate Siemens documentation portal login mechanism
- Test WebFetch with authentication headers
- Explore Siemens PLM API documentation access
- Review legal/ethical considerations for documentation access
- Create proof-of-concept: LLM + NXOpen docs → Generated code
Success Criteria: LLM can fetch NXOpen documentation on-demand when writing code
🔧 MEDIUM PRIORITY: NXOpen Intellisense Integration
Goal: Investigate if NXOpen Python stub files can improve Atomizer development workflow
Background:
From NX2406 onwards, Siemens provides stub files for Python intellisense:
- Location:
UGII_BASE_DIR\ugopen\pythonStubs - Purpose: Enable code completion, parameter info, member lists for NXOpen objects
- Integration: Works with VSCode Pylance extension
TheScriptingEngineer's Configuration:
// settings.json
"python.analysis.typeCheckingMode": "basic",
"python.analysis.stubPath": "path_to_NX/ugopen/pythonStubs/Release2023/"
Questions to Answer:
-
Development Workflow:
- Does this improve Atomizer development speed?
- Can Claude Code leverage intellisense information?
- Does it reduce NXOpen API lookup time?
-
Code Generation:
- Can generated code use these stubs for validation?
- Can we type-check generated NXOpen scripts before execution?
- Does it catch errors earlier?
-
Integration Points:
- Should this be part of Atomizer setup process?
- Can we distribute stubs with Atomizer?
- Legal considerations for redistribution?
Implementation Plan:
- Locate stub files in NX2412 installation
- Configure VSCode with stub path
- Test intellisense with sample NXOpen code
- Evaluate impact on development workflow
- Document setup process for contributors
- Decide: Include in Atomizer or document as optional enhancement?
Success Criteria: Developers have working intellisense for NXOpen APIs
Foundation for Future
🏗️ Engineering Feature Documentation Pipeline
Purpose: Establish rigorous validation process for LLM-generated engineering features
Important: This is NOT for current software development. This is the foundation for future user-generated features.
Vision:
When a user asks Atomizer to create a new FEA feature (e.g., "calculate buckling safety factor"), the system should:
- Generate Code: LLM creates the implementation
- Generate Documentation: Auto-create comprehensive markdown explaining the feature
- Human Review: Engineer reviews and approves before integration
- Version Control: Documentation and code committed together
This ensures scientific rigor and traceability for production use.
Auto-Generated Documentation Format:
Each engineering feature should produce a markdown file with these sections:
# Feature Name: [e.g., Buckling Safety Factor Calculator]
## Goal
What problem does this feature solve?
- Engineering context
- Use cases
- Expected outcomes
## Engineering Rationale
Why this approach?
- Design decisions
- Alternative approaches considered
- Why this method was chosen
## Mathematical Foundation
### Equations
\```
σ_buckling = (π² × E × I) / (K × L)²
Safety Factor = σ_buckling / σ_applied
\```
### Sources
- Euler Buckling Theory (1744)
- AISC Steel Construction Manual, 15th Edition, Chapter E
- Timoshenko & Gere, "Theory of Elastic Stability" (1961)
### Assumptions & Limitations
- Elastic buckling only
- Slender columns (L/r > 100)
- Perfect geometry assumed
- Material isotropy
## Implementation
### Code Structure
\```python
def calculate_buckling_safety_factor(
youngs_modulus: float,
moment_of_inertia: float,
effective_length: float,
applied_stress: float,
k_factor: float = 1.0
) -> float:
"""
Calculate buckling safety factor using Euler formula.
Parameters:
...
"""
\```
### Input Validation
- Positive values required
- Units: Pa, m⁴, m, Pa
- K-factor range: 0.5 to 2.0
### Error Handling
- Division by zero checks
- Physical validity checks
- Numerical stability considerations
## Testing & Validation
### Unit Tests
\```python
def test_euler_buckling_simple_case():
# Steel column: E=200GPa, I=1e-6m⁴, L=3m, σ=100MPa
sf = calculate_buckling_safety_factor(200e9, 1e-6, 3.0, 100e6)
assert 2.0 < sf < 2.5 # Expected range
\```
### Validation Cases
1. **Benchmark Case 1**: AISC Manual Example 3.1 (page 45)
- Input: [values]
- Expected: [result]
- Actual: [result]
- Error: [%]
2. **Benchmark Case 2**: Timoshenko Example 2.3
- ...
### Edge Cases Tested
- Very short columns (L/r < 50) - should warn/fail
- Very long columns - numerical stability
- Zero/negative inputs - should error gracefully
## Approval
- **Author**: [LLM Generated | Engineer Name]
- **Reviewer**: [Engineer Name]
- **Date Reviewed**: [YYYY-MM-DD]
- **Status**: [Pending | Approved | Rejected]
- **Notes**: [Reviewer comments]
## References
1. Euler, L. (1744). "Methodus inveniendi lineas curvas maximi minimive proprietate gaudentes"
2. American Institute of Steel Construction (2016). *Steel Construction Manual*, 15th Edition
3. Timoshenko, S.P. & Gere, J.M. (1961). *Theory of Elastic Stability*, 2nd Edition, McGraw-Hill
## Change Log
- **v1.0** (2025-11-17): Initial implementation
- **v1.1** (2025-11-20): Added K-factor validation per reviewer feedback
Implementation Requirements:
-
Template System:
- Markdown template for each feature type
- Auto-fill sections where possible
- Highlight sections requiring human input
-
Generation Pipeline:
User Request → LLM Analysis → Code Generation → Documentation Generation → Human Review → Approval → Integration -
Storage Structure:
atomizer/ ├── engineering_features/ │ ├── approved/ │ │ ├── buckling_safety_factor/ │ │ │ ├── implementation.py │ │ │ ├── tests.py │ │ │ └── FEATURE_DOCS.md │ │ └── ... │ └── pending_review/ │ └── ... -
Validation Checklist:
- Equations match cited sources
- Units are documented and validated
- Edge cases are tested
- Physical validity checks exist
- Benchmarks pass within tolerance
- Code matches documentation
- References are credible and accessible
Who Uses This:
- NOT YOU (current development): You're building Atomizer's software foundation - different process
- FUTURE USERS: When users ask Atomizer to create custom FEA features
- PRODUCTION DEPLOYMENTS: Where engineering rigor and traceability matter
Development Now vs Foundation for Future:
| Aspect | Development Now | Foundation for Future |
|---|---|---|
| Scope | Building Atomizer software | User-generated FEA features |
| Process | Agile, iterate fast | Rigorous validation pipeline |
| Documentation | Code comments, dev docs | Full engineering documentation |
| Review | You approve | Human engineer approves |
| Testing | Unit tests, integration tests | Benchmark validation required |
| Speed | Move fast | Move carefully |
Bottom Line: Build the framework now, but don't use it yourself yet. It's for future credibility and production use.
🔐 Validation Pipeline Framework
Goal: Define the structure for rigorous validation of LLM-generated scientific tools
Pipeline Stages:
graph LR
A[User Request] --> B[LLM Analysis]
B --> C[Code Generation]
C --> D[Documentation Generation]
D --> E[Automated Tests]
E --> F{Tests Pass?}
F -->|No| G[Feedback Loop]
G --> C
F -->|Yes| H[Human Review Queue]
H --> I{Approved?}
I -->|No| J[Reject with Feedback]
J --> G
I -->|Yes| K[Integration]
K --> L[Production Ready]
Components to Build:
-
Request Parser:
- Natural language → Structured requirements
- Identify required equations/standards
- Classify feature type (stress, displacement, buckling, etc.)
-
Code Generator with Documentation:
- Generate implementation code
- Generate test cases
- Generate markdown documentation
- Link code ↔ docs bidirectionally
-
Automated Validation:
- Run unit tests
- Check benchmark cases
- Validate equation implementations
- Verify units consistency
-
Review Queue System:
- Pending features awaiting approval
- Review interface (CLI or web)
- Approval/rejection workflow
- Feedback mechanism to LLM
-
Integration Manager:
- Move approved features to production
- Update feature registry
- Generate release notes
- Version control integration
Current Status:
- Request parser - Not started
- Code generator with docs - Partially exists (hook_generator, extractor_orchestrator)
- Automated validation - Basic tests exist, need benchmark framework
- Review queue - Not started
- Integration manager - Not started
Priority: Build the structure and interfaces now, implement validation logic later.
Example Workflow (Future):
# User creates custom feature
$ atomizer create-feature --request "Calculate von Mises stress safety factor using Tresca criterion"
[LLM Analysis]
✓ Identified: Stress-based safety factor
✓ Standards: Tresca yield criterion
✓ Required inputs: stress_tensor, yield_strength
✓ Generating code...
[Code Generation]
✓ Created: engineering_features/pending_review/tresca_safety_factor/
- implementation.py
- tests.py
- FEATURE_DOCS.md
[Automated Tests]
✓ Unit tests: 5/5 passed
✓ Benchmark cases: 3/3 passed
✓ Edge cases: 4/4 passed
[Status]
🟡 Pending human review
📋 Review with: atomizer review tresca_safety_factor
# Engineer reviews
$ atomizer review tresca_safety_factor
[Review Interface]
Feature: Tresca Safety Factor Calculator
Status: Automated tests PASSED
Documentation Preview:
[shows FEATURE_DOCS.md]
Code Preview:
[shows implementation.py]
Test Results:
[shows test output]
Approve? [y/N]: y
Review Notes: Looks good, equations match standard
[Approval]
✓ Feature approved
✓ Integrated into feature registry
✓ Available for use
# Now users can use it
$ atomizer optimize --objective "maximize displacement" --constraint "tresca_sf > 2.0"
This is the vision. Build the foundation now for future implementation.
Technical Roadmap
Revised Phase Timeline
| Phase | Status | Description | Priority |
|---|---|---|---|
| Phase 1 | ✅ 100% | Plugin System | Complete |
| Phase 2.5 | ✅ 85% | Intelligent Gap Detection | Built, needs integration |
| Phase 2.6 | ✅ 85% | Workflow Decomposition | Built, needs integration |
| Phase 2.7 | ✅ 85% | Step Classification | Built, needs integration |
| Phase 2.9 | ✅ 85% | Hook Generation | Built, tested |
| Phase 3.0 | ✅ 85% | Research Agent | Built, tested |
| Phase 3.1 | ✅ 85% | Extractor Orchestration | Built, tested |
| Phase 3.2 | ✅ 75% | Runner Integration | Framework complete, API integration pending |
| Phase 3.3 | 🟡 50% | Optimization Setup Wizard | Partially built |
| Phase 3.4 | 🔵 0% | NXOpen Documentation Integration | Research phase |
| Phase 3.5 | 🔵 0% | Engineering Feature Pipeline | Foundation design |
| Phase 4+ | 🔵 0% | Advanced Features | Paused until 3.2 complete |
Immediate Next Steps (Next 2 Weeks)
Week 1: Integration & Testing
Monday-Tuesday: Runner Integration
- Add
--llmflag torun_optimization.py - Connect
LLMOptimizationRunnerto production workflow - Implement fallback to manual mode
- Test with bracket study
Wednesday-Thursday: End-to-End Testing
- Run complete LLM workflow: Request → Code → Solve → Results
- Compare LLM-generated vs manual extractors
- Performance profiling
- Fix any integration bugs
Friday: Polish & Documentation
- Improve error messages
- Add progress indicators
- Create example script
- Update inline documentation
Week 2: NXOpen Documentation Research
Monday-Tuesday: Investigation
- Research Siemens documentation portal
- Test authenticated WebFetch
- Explore PLM API access
- Review legal considerations
Wednesday: Intellisense Setup
- Locate NX2412 stub files
- Configure VSCode with Pylance
- Test intellisense with NXOpen code
- Document setup process
Thursday-Friday: Documentation Updates
- Update
README.mdwith LLM capabilities - Update
DEVELOPMENT.mdwith accurate status - Create
NXOPEN_INTEGRATION.mdguide - Update this guidance document
Medium-Term Goals (1-3 Months)
-
Phase 3.4: NXOpen Documentation Integration
- Implement authenticated documentation access
- Create NXOpen knowledge base
- Test LLM code generation with docs
-
Phase 3.5: Engineering Feature Pipeline
- Build documentation template system
- Create review queue interface
- Implement validation framework
-
Dashboard Enhancement
- Add LLM mode toggle
- Visualize generated code
- Show approval workflow
-
Performance Optimization
- LLM response caching
- Batch code generation
- Async operations
Long-Term Vision (3-12 Months)
-
Phase 4: Advanced Code Generation
- Complex FEA feature generation
- Multi-physics setup automation
- Topology optimization support
-
Phase 5: Intelligent Analysis
- Surrogate quality assessment
- Sensitivity analysis
- Pareto front optimization
-
Phase 6: Automated Reporting
- HTML/PDF generation
- LLM-written insights
- Executive summaries
-
Production Hardening
- Security audits
- Performance optimization
- Enterprise features
Development Standards
Reference Hierarchy for Feature Implementation
When implementing new features or capabilities in Atomizer, follow this prioritized order for consulting documentation and APIs:
Tier 1: Primary References (ALWAYS CHECK FIRST)
These are the authoritative sources that define the actual APIs and behaviors we work with:
-
NXOpen Python Stub Files (
C:\Program Files\Siemens\NX2412\UGOPEN\pythonStubs)- Why: Exact method signatures, parameter types, return values for all NXOpen APIs
- When: Writing NX journal scripts, updating part parameters, CAE operations
- Access: VSCode Pylance intellisense (configured in
.vscode/settings.json) - Accuracy: ~95% - this is the actual API definition
- Example: For updating expressions, check
NXOpen/Part.pyi→ExpressionCollectionclass → seeFindObject()andEditExpressionWithUnits()methods
-
Existing Atomizer Journals (
optimization_engine/*.py,studies/*/)- Why: Working, tested code that already solves similar problems
- When: Before writing new NX integration code
- Files to Check:
optimization_engine/solve_simulation.py- NX journal for running simulationsoptimization_engine/nx_updater.py- Parameter update patterns- Any study-specific journals in
studies/*/
- Pattern: Search for similar functionality first, adapt existing code
-
NXOpen API Patterns in Codebase (
optimization_engine/,result_extractors/)- Why: Established patterns for NX API usage in Atomizer
- When: Implementing new NX operations
- What to Look For:
- Session management patterns
- Part update workflows
- Expression handling
- Save/load patterns
Tier 2: Specialized References (USE FOR SPECIFIC TASKS)
These are secondary sources for specialized tasks - use ONLY for their specific domains:
-
pyNastran (
knowledge_base/, online docs)- ONLY FOR: OP2/F06 file post-processing (reading Nastran output files)
- NOT FOR: NXOpen guidance, simulation setup, parameter updates
- Why Limited: pyNastran is for reading results, not for NX API integration
- When to Use: Creating result extractors, reading stress/displacement from OP2 files
- Example Valid Use:
result_extractors/stress_extractor.py- reads OP2 stress data - Example INVALID Use: ❌ Don't use pyNastran docs to learn how to update NX part expressions
-
TheScriptingEngineer Blog (https://thescriptingengineer.com)
- When: Need working examples of NXOpen usage patterns
- Why: High-quality, practical examples with explanations
- Best For: Learning NXOpen workflow patterns, discovering API usage
- Limitation: Blog may use different NX versions, verify against stub files
Tier 3: Last Resort References (USE SPARINGLY)
Use these only when Tier 1 and Tier 2 don't provide answers:
-
Web Search / External Documentation
- When: Researching new concepts not covered by existing code
- Caution: Verify information against stub files and existing code
- Best For: Conceptual understanding, theory, background research
-
Siemens Official Documentation Portal (https://plm.sw.siemens.com)
- When: Need detailed API documentation beyond stub files
- Status: Authenticated access under investigation (see NXOpen Integration initiative)
- Future: May become Tier 1 once integration is complete
Reference Hierarchy Decision Tree
Need to implement NXOpen functionality?
│
├─> Check NXOpen stub files (.pyi) - Do exact methods exist?
│ ├─> YES: Use those method signatures ✅
│ └─> NO: Continue ↓
│
├─> Search existing Atomizer journals - Has this been done before?
│ ├─> YES: Adapt existing code ✅
│ └─> NO: Continue ↓
│
├─> Check TheScriptingEngineer - Are there examples?
│ ├─> YES: Adapt pattern, verify against stub files ✅
│ └─> NO: Continue ↓
│
└─> Web search for concept - Understand theory, then implement using stub files
└─> ALWAYS verify final code against stub files before using ✅
Need to extract results from OP2/F06?
│
└─> Use pyNastran ✅
└─> Check knowledge_base/ for existing patterns first
Need to understand FEA theory/equations?
│
└─> Web search / textbooks ✅
└─> Document sources in feature documentation
Why This Hierarchy Matters
Before (guessing/hallucinating):
# ❌ Guessed API - might not exist or have wrong signature
work_part.Expressions.Edit("tip_thickness", "5.0") # Wrong method name!
After (checking stub files):
# ✅ Verified against NXOpen/Part.pyi stub file
expr = work_part.Expressions.FindObject("tip_thickness") # Correct!
work_part.Expressions.EditExpressionWithUnits(expr, unit, "5.0") # Correct!
Improvement: ~60% accuracy (guessing) → ~95% accuracy (stub files)
NXOpen Integration Status
✅ Completed (2025-11-17):
- NXOpen stub files located and configured in VSCode
- Python 3.11 environment setup for NXOpen compatibility
- NXOpen module import enabled via
.pthfile - Intellisense working for all NXOpen APIs
- Documentation: NXOPEN_INTELLISENSE_SETUP.md
🔜 Future Work:
- Authenticated Siemens documentation access (research phase)
- Documentation scraping for LLM knowledge base
- LLM-generated journal scripts with validation
Key Principles
Development Philosophy
- Ship Before Perfecting: Integration is more valuable than new features
- User Value First: Every feature must solve a real user problem
- Scientific Rigor: Engineering features require validation and documentation
- Progressive Enhancement: System works without LLM, better with LLM
- Learn and Improve: Knowledge base grows with every use
Decision Framework
When prioritizing work, ask:
- Does this unlock user value? If yes, prioritize
- Does this require other work first? If yes, do dependencies first
- Can we test this independently? If no, split into testable pieces
- Will this create technical debt? If yes, document and plan to address
- Does this align with long-term vision? If no, reconsider
Quality Standards
For Software Development (Atomizer itself):
- Unit tests for core components
- Integration tests for workflows
- Code review by you (main developer)
- Documentation for contributors
- Move fast, iterate
For Engineering Features (User-generated FEA):
- Comprehensive mathematical documentation
- Benchmark validation required
- Human engineer approval mandatory
- Traceability to standards/papers
- Move carefully, validate thoroughly
Success Metrics
Phase 3.2 Success Criteria
- Users can run:
python run_optimization.py --llm "maximize displacement" - End-to-end test passes: Natural language → NX solve → Results
- LLM-generated extractors produce same results as manual extractors
- Error handling works gracefully (fallback to manual mode)
- Documentation updated to reflect LLM capabilities
- Example workflow created and tested
NXOpen Integration Success Criteria
- LLM can fetch NXOpen documentation on-demand
- Generated code references correct NXOpen API methods
- Intellisense working in VSCode for NXOpen development
- Setup documented for contributors
- Legal/ethical review completed
Engineering Feature Pipeline Success Criteria
- Documentation template system implemented
- Example feature with full documentation created
- Review workflow interface built (CLI or web)
- Validation framework structure defined
- At least one feature goes through full pipeline (demo)
Communication & Collaboration
Stakeholders
- Antoine Letarte: Main developer, architect, decision maker
- Claude Code: Development assistant for Atomizer software
- Future Contributors: Will follow established patterns and documentation
- Future Users: Will use LLM features for optimization workflows
Documentation Strategy
- DEVELOPMENT_GUIDANCE.md (this doc): Strategic direction, priorities, status
- README.md: User-facing introduction, quick start, features
- DEVELOPMENT.md: Detailed development status, todos, completed work
- DEVELOPMENT_ROADMAP.md: Long-term vision, phases, future work
- Session summaries: Detailed records of development sessions
Keep all documents synchronized and consistent.
Review Cadence
- Weekly: Review progress against priorities
- Monthly: Update roadmap and adjust course if needed
- Quarterly: Major strategic reviews and planning
Appendix: Quick Reference
File Locations
Core Engine:
optimization_engine/runner.py- Current production runneroptimization_engine/llm_optimization_runner.py- LLM-enhanced runner (needs integration)optimization_engine/nx_solver.py- NX Simcenter integrationoptimization_engine/nx_updater.py- Parameter update system
LLM Components:
optimization_engine/llm_workflow_analyzer.py- Natural language parseroptimization_engine/extractor_orchestrator.py- Extractor generationoptimization_engine/pynastran_research_agent.py- Documentation learningoptimization_engine/hook_generator.py- Hook code generation
Studies:
studies/bracket_displacement_maximizing/- Working example with substudiesstudies/bracket_displacement_maximizing/run_substudy.py- Substudy runnerstudies/bracket_displacement_maximizing/SUBSTUDIES_README.md- Substudy guide
Tests:
tests/test_phase_2_5_intelligent_gap_detection.py- Gap detection teststests/test_phase_3_1_integration.py- Extractor orchestration teststests/test_complete_research_workflow.py- Research agent tests
Documentation:
docs/SESSION_SUMMARY_PHASE_*.md- Development session recordsknowledge_base/- Learned patterns and research sessionsfeature_registry.json- Complete capability catalog
Common Commands
# Run optimization (current manual mode)
cd studies/bracket_displacement_maximizing
python run_optimization.py
# Run substudy
python run_substudy.py coarse_exploration
# Run tests
python -m pytest tests/test_phase_3_1_integration.py -v
# Start dashboard
python dashboard/start_dashboard.py
Key Contacts & Resources
- Siemens NX Documentation: PLM Portal
- TheScriptingEngineer: Blog
- pyNastran Docs: GitHub
- Optuna Docs: optuna.org
Document Maintained By: Antoine Letarte (Main Developer) Last Review: 2025-11-17 Next Review: 2025-11-24