Repository navigation
v0.3.0
The first alpha of the lifecycle-orchestration rewrite. The API can still change before v1.0.
This is a green-field rewrite. It shares only a name and a repository with the signal watcher released as v0.1.0 and v0.2.0. The module path is l7e.io/yama.
What it is
Yama is a compile-time lifecycle framework. It reads the dependency graph that Google Wire builds, and it generates the code that starts, quiesces, and stops the application's components in dependency order. No runtime engine interprets a plan.
What this release holds
- The
yamacommand. It runs Google Wire, reads the injector that Wire writes, and writeslifecycle_gen.go. Its flags and its package-pattern argument are the same aswire gen's. - Lifecycle stubs. A file behind the
yamainjectbuild tag names each constructor that the application calls, and the providers that build its graph. - Three capabilities. A component takes part in a pass when its type implements
Starter,Quiescer, orStopper. A Google Wire cleanup function keeps its place in the teardown. - Ordering. Components start in dependency order. They quiesce and stop in reverse. Components with no dependency relation run at the same time.
- Startup failure. Startup is fail-fast. Yama rolls back what started, runs every cleanup, and returns
ErrStartFailed. - Interceptors and boundary components, through
WithInterceptors,WithBeginComponents, andWithEndComponents. RunUntilSignal, which runs a lifecycle until a signal or a context cancellation.
See the README, the guide, and the ADRs.
This release was recreated on 2026-09-18 from the v0.3.0 tag of 2026-08-27. The tag did not change.