Metadata-Version: 2.4
Name: specsmither-lifecycle
Version: 0.1.0
Summary: The PURE planning-lifecycle core of SpecSmither — the crucible-gated verb surface (start/action/complete/inspect + handovers), the in-memory operations projector, the WritePlan data contract, and the domain records. No SQLAlchemy, no Textual, no MCP.
Project-URL: Homepage, https://github.com/blacksmithers/specsmither
Project-URL: Repository, https://github.com/blacksmithers/specsmither
Project-URL: Issues, https://github.com/blacksmithers/specsmither/issues
Author-email: Gabriel Augusto Gonçalves <gab.augustog@gmail.com>
License: Apache-2.0
Keywords: crucible,lifecycle,planning,spec,specforge,specsmither
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Typing :: Typed
Requires-Python: >=3.11
Requires-Dist: crucible-forge>=0.2.0
Requires-Dist: pydantic>=2.6
Requires-Dist: python-ulid>=2.0
Requires-Dist: pyyaml>=6.0
Description-Content-Type: text/markdown

# specsmither-lifecycle

The **pure** planning-lifecycle core of [SpecSmither](https://github.com/blacksmithers/specsmither).

This distribution contributes the `specsmither.lifecycle`, `specsmither.domain`, and
`specsmither.ids` modules to the shared `specsmither` PEP 420 namespace. It is the
crucible-gated verb surface — `start` / `action` / `complete` / `inspect` plus the
handover verbs — together with the in-memory operations projector, the `WritePlan`
data contract, and the domain records/enums.

It is deliberately **dependency-light**: `crucible-forge`, `pydantic`, `python-ulid`,
and `pyyaml` only. It pulls in **no** SQLAlchemy, Textual, or MCP — those live in the
`specsmither` product distribution, which depends on this package and wires it to a
concrete SQLite store, TUI, and MCP server.

The verb surface satisfies a pure `(payload, ports) -> {response, WritePlan}` contract:
a host embeds it by providing the `LifecyclePorts` seam (stores, validator, operations
projector, clock, id generator) and consuming the returned `WritePlan`.
