feat: amplifier data-file generator extension - #31
Open
striderZA wants to merge 27 commits into
Open
Conversation
…n instead of crashing the build batch
…and wire python tests into CTest - Add TEST_CASE exercising ExternalToolRunner against the real amplifier-generator extension (template scaffold -> build) end-to-end. - Fix APP_VERSION being compiled as an empty string: FetchContent'd dependencies' nested project() calls reset PROJECT_VERSION before app/CMakeLists.txt reads it, which made every manifest with a non-empty compat.min_app_version (e.g. amplifier-generator's) spuriously Incompatible. Capture PROJECT_VERSION into RFSIM_APP_VERSION right after the top-level project() call instead. - Update 4 pre-existing app-level extension tests that assumed exactly one external tool would be discovered; now that the built-in amplifier-generator extension correctly registers as Ok, project-local fixture tools must be located by id instead of assumed to be tools.front(). - Wire the extension's Python unit tests (test_params/test_touchstone/ test_library/test_generate_amplifier, 26 tests) into CTest via find_program(python3/python) + add_test(), so CI's ctest-only run actually exercises them.
… JSON so ComponentLibrary::loadFile accepts minimal-input builds
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
First extension built on the plugin extension system (#29): a built-in
external-tool/generatorextension that synthesizes a Touchstone.s2p+ schema-v2 component JSON pair for an amplifier from datasheet parameters, loadable directly by the app's component library.Design
Two-phase, fully headless workflow (the extension runner kills any tool process after 30s, so no interactive parameter entry is possible):
rf-sim-generator-input/amplifier/. Instant, no dialog.rf-sim-libraries/amplifiers/<manufacturer>/<part>.json+.s2p(unilateral S-parameter approximation), moves consumed inputs toprocessed/.Spec:
docs/superpowers/specs/2026-07-30-amplifier-generator-extension-design.mdPlan:
docs/superpowers/plans/2026-07-30-amplifier-generator-extension.mdStructure
extensions/amplifier-generator/plugin.json— manifestextensions/amplifier-generator/bin/{params,touchstone,library,generate_amplifier}.py— stdlib-only Python, each independently unit-tested (26 tests)tests/test_extensions.cpp— manifest discovery + fullExternalToolRunnerend-to-end round-trip (including aComponentLibrary::loadFile/all()proof that generated files actually load into the app)tests/CMakeLists.txt— wires the Python suite into CTest so CI actually runs itDepends on
#30 (
fix/app-version-fetchcontent-clobber) — this branch's Task 7 commit bundles a temporary copy of that same fix (required for this branch's own tests: without it, this extension'scompat.min_app_versionmanifest field makesExtensionManagermark itIncompatible). Once #30 merges, this branch should rebase ontomasterto drop the duplicate.Verification
cd extensions/amplifier-generator && python -m unittest discover -s tests -v— 26/26 passcmake --build build --target test_extensions && ctest --test-dir build -R test_extensions— passctest --test-dir build -R amplifier_generator_python_tests— passfreq_unitno longer crashes the whole build batch) + a final whole-branch review (1 Critical cross-task fix: generated JSON always includes theparameterskey, sinceComponentLibrary::loadFiletreats it as mandatory)Known limitation (documented, not fixed here)
tests/test_extensions.cpptest-case registration is sensitive to launch mechanism on this local Windows/MinGW toolchain (fewer tests register under direct MSYS-bash launch than under native process launch, e.g.ctest/CI). Root cause not fully isolated; verification for this PR relied on native-launch/ctestresults. Out of scope for this PR.