get2knowio / get2knowio/maverick
tech debt: use explicit __init__ signatures in FlyBeadsWorkflow and RefuelSpeckitWorkflow
- Dominant language
- Python
- Stars
- 4
- Forks
- 0
- Avg merge
- 17h 37m
- Merged PRs (30d)
- 7
Description
## Problem
`FlyBeadsWorkflow` still uses an opaque `**kwargs` constructor that hides its actual parameter contract from IDEs, mypy, and callers:
```python
# src/maverick/workflows/fly_beads/workflow.py
def __init__(self, **kwargs: Any) -> None:
self._checkpoint_store = kwargs.pop("checkpoint_store", None)
workflow_name = kwargs.pop("workflow_name", WORKFLOW_NAME)
super().__init__(workflow_name=workflow_name, **kwargs)
```
This pattern loses IDE autocompletion, prevents mypy from catching wrong argument types at call sites, and makes the constructor API opaque to new contributors.
(`RefuelSpeckitWorkflow` — originally co-mentioned in this issue — was removed during the speckit/refuel consolidation. `RefuelMaverickWorkflow` already has explicit kwargs.)
## Suggested fix
Declare explicit keyword-only parameters matching `PythonWorkflow.__init__`. Example shape:
```python
def __init__(
self,
*,
config: MaverickConfig,
registry: ComponentRegistry,
checkpoint_store: CheckpointStore | None = None,
workflow_name: str = WORKFLOW_NAME,
) -> None:
self._checkpoint_store = checkpoint_store
super().__init__(
config=config,
registry=registry,
workflow_name=workflow_name,
)
```
## Impact
No behaviour change. All existing tests should pass unchanged.
## Origin
Originally filed during code review of branch `035-python-workflow` (review item L2). Updated 2026-05-26 to reflect substrate after the Burr migration.
Contributor guide
Research direction
Start in src/maverick/workflows/fly_beads/workflow.py and inspect PythonWorkflow.__init__ to confirm the parameter contract. Replace FlyBeadsWorkflow's opaque constructor with explicit keyword-only parameters, then run the existing test suite; done means the signature is visible to IDEs and type checkers with no behavior changes.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- tooling
- Issue type
- Refactor
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 55/100