FiberPath Development Roadmap¶
Last updated: 2025-11-19
The roadmap focuses on delivering a production-ready filament winding tool. Each phase lists the primary objectives, concrete tasks, and completion signals so we can track progress and keep scope under control. Phases should be executed sequentially unless otherwise noted.
Phase 0 – Baseline Hygiene (Complete)¶
- [x] Establish editable installs via
uv pip install -e .[dev,cli,api]so local packages resolve correctly. - [x] Ensure
pytestpasses for existing smoke tests (CLI, geometry, planner, gcode utilities).
Phase 1 – Planner Parity & Core Engine¶
Goal: Match or exceed Cyclone planning behavior for hoop/helical/skip layers.
Tasks:
- [x] Port remaining planner math gaps (pattern skip validation, mandrel diameter growth per layer, delivery-head sequencing edge cases).
- [x] Add guardrails: terminal layer ordering, pattern divisibility, numeric bounds on angles/widths.
- [x] Expose profiling metrics (layer time, cumulative tow usage) via
plan_windreturn structure. -
[x] Expand unit coverage:
-
[x] Deterministic tests for
plan_hoop_layer,plan_helical_layer,plan_skip_layer. - [x] Snapshot tests comparing generated G-code to golden files in
tests/planning/fixtures. - [x] Cyclone reference parity tests for
simple-hoop,helical-balanced, andskip-bias.winddefinitions.
Exit criteria:
- [x] All planner tests pass with >90% coverage for
fiberpath.planning.pytest --cov=fiberpath.planning --cov-report=term-missingnow reports 98% coverage after pruning dead helpers and adding focused unit tests for machines/validators. - [x] Example
.windparity proved against Cyclone references (simple-hoop, helical-balanced, skip-bias); this satisfies the Phase 1 parity requirement without reprocessing theexamples/directory.
Phase 2 – Visualization & QA Loop¶
Goal: Provide deterministic plotting + inspection tooling for generated G-code.
Tasks:
- [x] Port
plotterlogic from Cyclone intofiberpath.visualization.plotterusing Pillow/Cairo. - [x] Wire plotting into
fiberpath_cli.plotwith CLI options for PNG destination & scale. - [x] Create automated regression test that renders a short toolpath and compares histogram/hash.
- [x] Document plotting usage in
README.mdand add sample output underdocs/assets/.
Exit criteria:
- [x]
fiberpath_cli plotrenders PNG preview forexamples/simple_cylinder. - [x] CI test verifies generated image matches baseline (within tolerance) on Linux/Windows via
deterministic hash checks in
tests/visualization/test_plotter.py.
Phase 3 – Simulation & Streaming¶
Goal: Offer credible execution preparation (estimates + Marlin streaming).
Tasks:
- [x] Upgrade
fiberpath.simulationto compute motion time using planner feed-rate data. - [x] Implement
fiberpath.execution.marlinmodule (pyserial) mirroring Cyclone's pause/resume. - [x] Add CLI
streamcommand with dry-run mode and progress feedback. - [x] Provide FastAPI
/streamendpoint that proxies to the execution layer (mockable for tests). - [x] Build test harness with virtual serial port to exercise queue/pause/resume logic.
Exit criteria:
- [x] Simulation command reports realistic durations vs. reference manual calculations.
- [x] Streaming CLI can send G-code to a mock port and handle pause/resume interactively.
Phase 4 – Interface Hardening (CLI + API)¶
Goal: Deliver reliable user entry points with validation and helpful messaging.
Tasks:
- [x] Expand CLI commands with verbose JSON output options and better error handling.
Implemented
--json/structured summaries infiberpath_clicommands plus shared helpers. - [x] Add FastAPI request models (body uploads for
.windfiles, G-code previews). New Pydantic schemas + route updates infiberpath_api/routes/*ensure validation. - [x] Provide OpenAPI documentation + examples in
docs/api.md. Added auto-generated schema notes and copy-pasteable examples. - [x] Create integration tests using Typer
CliRunnerand FastAPITestClient. Seetests/cli/test_cli_json.pyandtests/api/test_plan_route.pysuites.
Exit criteria:
- [x] CLI commands have help text, examples, and return non-zero on validation failures. Verified via Typer runner assertions and new error branches.
- [x] API routes covered by tests (>=80% coverage) with documented request/response schemas. FastAPI client tests assert request/response contracts; docs/api.md lists payloads.
Phase 5 - GUI Prototype¶
Goal: Build a minimal GUI for end-to-end visual workflow using fiberpath.
Tasks:
- [x] Scaffold
fiberpath_gui/as a Tauri + React workspace (pnpm scripts, shared UI kit). Initialized Vite + React front end plus Tauri shell with typed commands and shared styles. - [x] Add flows for importing
.windinputs, invokingfiberpath_cli plan, and surfacing errors. Plan panel shells out tofiberpath plan --jsonand streams structured feedback. - [x] Embed plotting preview by shelling to the CLI
plotcommand (or reusing the renderer via IPC) with progress indicators.plot_previewTauri command runs CLI, base64-encodes PNG, and displays it inline. - [x] Provide simulation + streaming panels that call the existing Typer commands, capture logs, and expose pause/resume controls. Panels hit the simulator and stream commands (dry-run by default) with JSON summaries.
- [x] Package a distributable dev build (Windows/macOS) with instructions in
fiberpath_gui/README.md. README documentsnpm run tauri dev/buildworkflows and prerequisites.
Exit criteria:
- [x] GUI can plan, plot, simulate, and stream a sample case without leaving the desktop app. All four flows are wired through the CLI via Tauri commands; plotting returns inline previews.
- [x] CI smoke test launches the Tauri app in headless mode to ensure bundles stay healthy.
.github/workflows/gui-smoke.ymlruns lint/build +npm run tauri build -- --bundles noneon Windows runners.
Phase 6 – Quality, Documentation, and Release Preparation¶
Goal: Produce a polished, public-facing open-source release.
Tasks:
- [x] Enforce linting and type-checking in CI (Ruff + MyPy).
CI now runs Ruff + MyPy via uv before matrix pytest in.github/workflows/ci.yml. - [x] Finalize documentation: complete missing pages, add contributing guidelines, architecture
overview, and planner math notes.
AddedCONTRIBUTING.md, expandeddocs/architecture.md, and createddocs/planner-math.md. - [x] Stand up an automated documentation site (MkDocs preferred) deployed through GitHub Pages via a
dedicated workflow.
mkdocs.yml+ CI build gating +.github/workflows/docs-site.ymlpublish the Material site to GitHub Pages. - [ ] Establish a versioning and release process (semantic versioning, CHANGELOG, PyPI packaging
steps for
fiberpath/fiberpath_cli). - [ ] Add cross-platform smoke tests for Windows/macOS/Linux using
uv-managed virtual environments to ensure consistent build/runtime behavior.
Exit criteria:
- [ ] CI passes end-to-end (lint, type-check, tests, docs build) on all supported platforms.
- [ ] Draft
v0.1.0release notes with installation instructions and links to binaries, docs, and example workflows.
Future TODOs¶
These items are out of scope for the initial release but are on the horizon and will be organized into formal phases later.
- [ ] Create example-driven tutorials (
docs/tutorials/*.md) showing end-to-end workflow. - [ ] Allow remapping of machine axes (both linear X/Y/Z/E and rotational A/B/C).
- [ ] Build interface for creating
.winddefinitions from scratch (wizard or graphical). - [ ] Restructuring of GUI to make it centered on the visualization and planning experience (think 3D printing slicers).
- [ ] Allow for custom G-code headers/footers
- [ ] Implement advanced layering strategies (variable angle, custom patterns).