Skip to content

Demo, migration guide, and config file rename to fastcs.yaml #359

@gilesknap

Description

@gilesknap

Parent

#351

What to build

Final integration slice: rename the bundled demo config from controller.yaml to fastcs.yaml, update the demo to host two controllers so the multi-controller feature is visible out of the box, ensure the launcher does not hard-code the filename, regenerate the JSON schema for the new dict-by-id options, and document manual migration for existing FastCS apps.

Scope:

  • Rename src/fastcs/demo/controller.yamlsrc/fastcs/demo/fastcs.yaml.
  • Demo fastcs.yaml declares two controllers (e.g. two TemperatureController instances with distinct ids and connection settings) so the feature is exercised end-to-end on python -m fastcs.demo.
  • Launcher does not hard-code fastcs.yaml as a filename — the path remains a CLI argument.
  • launch ... schema regenerated and committed (src/fastcs/demo/schema.json) reflecting the new dict-by-id controllers: block.
  • Changelog entry covering the breaking change with manual migration guidance:
    • controller.yamlfastcs.yaml rename
    • controller: block → controllers: { <id>: { type: ..., controller: ... } } form
    • EpicsIOCOptions.pv_prefix removed; the id is the prefix
    • Single-class type: inference allowed
  • Documentation updated to use the new filename and dict form throughout examples.

Out of scope (per the parent PRD): tutorial rewrite, useful defaults for omitted transport:, super-PVI parent record, automated migration tooling, per-controller GUI/docs overrides, per-transport id aliases, multi-process deployments.

User stories from #351 covered: 28, 29, 30, 31.

Acceptance criteria

  • src/fastcs/demo/fastcs.yaml exists with two configured controllers; old controller.yaml removed
  • python -m fastcs.demo runs end-to-end and serves both controllers over the configured transports
  • Launcher accepts any filename via CLI argument; nothing hard-codes fastcs.yaml
  • src/fastcs/demo/schema.json regenerated and matches the new dict-by-id options
  • Changelog entry documents the breaking change and manual migration steps
  • Documentation examples use fastcs.yaml and the dict form
  • Full test suite stays green; docs build stays green

Blocked by

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestpythonPull requests that update Python code

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions