repo: raylanlin/smarttune-cli branch: main
These repositories are read (not vendored) to generate smarttune/knowledge/params/*.json
via tools/build_param_tables.py:
- raylanlin/ParameterRepository @main —
Copter-4.1/apm.pdef.json(ArduPilot metadata) - raylanlin/PX4-Autopilot @main
0bb36a30ed43—docs/public/config/failsafe/parameters.json - raylanlin/betaflight @master
96d612914267—src/main/cli/settings.c,src/main/fc/parameter_names.h,src/main/cli/settings.h+ bound headers
- Firmware-version parameter tables:
ParamTable.from_knowledge(platform, fw_version), CLI--fw-version, MCPfw_versionon all six parameter tools (unknown version → E4011), builder--fw-tag - New table
ardupilot.copter-4.5.json(4,121 params / 243 groups) from Copter-4.5/Parameters.md - MCP validate_param: deprecated
statusalias removed (v3.2.1 promise) - Docs synced: README (4.5 table row + fw_version contract), ROADMAP (v3.2.1/v3.3 marked done, Web UI remains the only open item), skill/SKILL.md + skill-mcp/SKILL.md (fw_version, verdict wording)
- Deferred by owner decision: Web UI; builder-native Parameters.md parser lands v3.3.1 (see docs/TEST_PLAN_v3.3.md)
- Search folding: numbered-instance clones (BATT2_..BATT9_) collapse into their base with an
instanceslist — sharedcollapse_numbered()in params.py, wired into CLI--searchand MCPsmarttune_search_params - Truncation contract:
returned < countalways carriestruncated: true+ note; blocks reportraw_countvs distinctcount - New tests/test_search_collapse.py (7 cases); TEST_PLAN_v3.3.md §E added
- Note for deployer: default tables ardupilot.json / px4.json are NOT in this package (size-capped on export) — keep the repo's existing copies; only betaflight.json + ardupilot.copter-4.5.json ship here unchanged
date: 2026-08-12T16:05:00Z tree: 029577673a08
- v3.2: regenerated all three parameter tables from upstream metadata — full firmware names, parameter groups, @Values/@Bitmask meanings, real PX4 defaults; added
tools/build_param_tables.py(the previously missing scraper) andsmarttune/platform/param_lint.py - v3.2:
validate()no longer accepts any value for enum-typed parameters — real member/bitmask checks, fail-closedunverifiablestatus - v3.2: MCP payload slimming (
list_param_groups/get_paramadded, 15 tools), unified{ok, error_code, retryable}shape, stdout isolation, lazy numpy import for parameter tools - v3.2.1 (this package, pending push): inline recommendation validation in services layer; batch validate (CLI --validate-batch + MCP smarttune_validate_params, 16 tools); analyze --modules/--max-recommendations; envelope status ok/error only with domain verdict field; dict-form FFT recommendations now reach JSON+Markdown reports; friendly smarttune-mcp error on Python 3.9; docs/TEST_PLAN_v3.2.1.md
- v3.2: added
docs/TEST_PLAN_v3.2.md(executable acceptance spec) andtools/smoke_mcp.py(MCP stdio contract smoke test) - v3.1: added
smarttune/output/json_output.pyand-f/--format jsonacross all 10 CLI commands, sourced from the services layer (same payloads the MCP server returns)
| Area | Repo files |
|---|---|
CLI commands, --format, params browse/search/validate/lint |
smarttune/cli.py |
| JSON output layer | smarttune/output/json_output.py |
| Parameter tables (generated data) | smarttune/knowledge/params/{ardupilot,betaflight,px4}.json |
| Parameter table loader + validation | smarttune/platform/params.py |
| Parameter data linter | smarttune/platform/param_lint.py |
| Table generator (scraper) | tools/build_param_tables.py |
| MCP server (15 tools, unified envelopes) | smarttune/mcp_server.py |
| Lazy platform package import | smarttune/platform/__init__.py |
| Shared payloads (CLI + MCP) | smarttune/services/analysis.py, smarttune/services/serialize.py |
| Tests | tests/test_cli_json.py, tests/test_param_tables.py |
| Release verification | docs/TEST_PLAN_v3.2.md, tools/smoke_mcp.py |
| Docs | README.md, CHANGELOG.md, docs/ROADMAP.md, skill/SKILL.md, skill-mcp/SKILL.md |
- Not run here (no Python runtime in this environment):
pytest -q,ruff check smarttune/, andpython tools/build_param_tables.py --check. The generated tables were produced by an equivalent transform and verified against the linter's rules (0 errors on all three tables); re-run the builder locally to confirm byte-for-byte reproducibility.