# `0.1.0` Release Plan

## Summary

`0.1.0` makes the enhanced pipeline the default user experience. A standard
`paralabelgen` installation now includes spaCy-based concept extraction and
Leiden-based community detection. Users can still opt out to deterministic
fallback behavior through `LabelGeneratorConfig`.

This release also improves public API documentation so that editors and LSP tools
can surface useful hover text and signatures for the main classes, config models,
and result types.

## Main Changes

- Move NLP and graph dependencies into the default package dependencies.
- Add explicit opt-out flags on `LabelGeneratorConfig`:
  - `use_nlp_extractor`
  - `use_graph_community_detection`
- Keep the fallback implementations, but make them explicit choices rather than
  implicit missing-dependency behavior.
- Keep `spacy_model_name` configurable while documenting `en_core_web_sm` as the
  recommended default model.
- Expand public docstrings for:
  - `LabelGenerator`
  - public config dataclasses
  - public result dataclasses
  - exported serialization helpers
- Update README to describe:
  - default installation behavior
  - opt-out configuration
  - example concept extraction and labeling flow

## Expected Behavior

- Default `LabelGenerator()` uses spaCy extraction and Leiden community detection.
- The default NLP extractor requires the configured spaCy model to be installed.
- Missing spaCy models raise an explicit runtime error instead of silently
  falling back to heuristic extraction.
- `en_core_web_sm` is the recommended default spaCy model name, but callers can
  configure another compatible installed pipeline through `spacy_model_name`.
- Setting `use_nlp_extractor=False` switches to deterministic heuristic extraction.
- Setting `use_graph_community_detection=False` switches to deterministic
  connected-components community detection.
- `fit`, `transform`, and `fit_transform` remain stateful and keep their current
  semantics.

## Release Validation

- `ruff check .`
- `pyright`
- `pytest`
- `python -m build`
- `twine check dist/*`
