odylith-release-planning
暂无简介
- License 许可
- MIT
- 所属仓库
- odylith/odylith
- 最近更新
- 2026-10-25
- Stars
- ★ 36
- Forks
- 3
03 SKILL.md 正文
Release Planning
CLI-First Non-Negotiable
- CLI-first is non-negotiable for both Codex and Claude Code. Remove all hand-authoring for places where Odylith CLI should be doing the heavy-lifting. When an Odylith CLI command exists for an operation, you must call the CLI command and you must not hand-edit governed files the CLI owns. Hand-authoring governed truth where a CLI exists is a hard policy violation, not a stylistic preference. The authoritative policy, CLI surface enumeration, allowed hand-edit surfaces, and failure-mode handling live in
odylith/agents-guidelines/CLI_FIRST_POLICY.md, anchored by Casebook learningCB-104. The rule travels through routedspawn_agentleaves on Codex and Task-tool subagents on Claude Code, so delegated work inherits the same contract.
Use this skill when the operator wants to define releases, name a release,
inspect release scope, or add, remove, and move backlog workstreams between
release targets such as current, next, a version, a tag, or a named
release.
Goal
- Keep release-planning truth explicit, auditable, and repo-local.
- Make natural phrasing like "add B-123 to current release" map to one deterministic CLI and source contract.
- Keep release planning separate from umbrella execution waves and separate from the canonical maintainer publication lane.
- Governance-learning: release claims require fresh governance learning. Do not build, publish, or claim release readiness while escaped defects, failed simulations, contract changes, topology changes, or proof checkpoints are still only in chat memory. Search existing Casebook and related governance truth first, read prior failed mechanisms, do not repeat a fix path that already failed, and route new mechanism-level learning through Casebook, Radar/plans, Registry, Atlas, and Compass before release closeout.
Keep It Separate
- Use release planning when the question is "what release should this
workstream ship in?"
Example:
B-067 -> 0.1.11. - Do not use this skill for umbrella sequencing questions such as "what should
happen in W1, W2, and W3?"
That is program or execution-wave planning under the Radar umbrella
contract, not
odylith release .... - The same workstream may participate in both because release target and execution order are different truths.
Canonical Source Truth
odylith/radar/source/releases/releases.v1.jsonRelease registry with immutablerelease_id, optionalversion,tag,name, notes, lifecycle state, and explicit alias ownership.odylith/radar/source/releases/release-assignment-events.v1.jsonlAppend-only add, remove, and move history for workstream targeting.
Canonical Commands
./.odylith/bin/odylith release list --repo-root .
./.odylith/bin/odylith release show current --repo-root .
./.odylith/bin/odylith release create release-2026-04 --repo-root . --alias current --version 0.1.11
./.odylith/bin/odylith release update current --repo-root . --name "Boringly Trustworthy"
./.odylith/bin/odylith release add B-123 current --repo-root .
./.odylith/bin/odylith release move B-123 next --repo-root .
./.odylith/bin/odylith release remove B-123 --repo-root .
./.odylith/bin/odylith validate backlog-contract --repo-root .
./.odylith/bin/odylith sync --repo-root . --check-only --runtime-mode standalone
Selector Rules
- Resolve releases by exact
release_id, alias, exactversion, exacttag, or unique exactname. - Prefer
release:<id>when a human name or version could collide. - Treat
current release,release current,next release, andrelease nextas alias phrasing, not fuzzy search. - Ambiguous selectors must fail closed. Do not guess.
Mapping Natural Requests
- "Add B-123 to current release"
odylith release add B-123 current
- "Move B-123 to next release"
odylith release move B-123 next
- "Remove B-123 from release 0.1.11"
odylith release remove B-123 0.1.11
- "Name the release"
odylith release update <selector> --name "..."or set--nameduringcreate
Guardrails
release_idis immutable after creation.currentandnextare explicit aliases owned by source truth, not inferred from semver or dates.- The current active release remains visible in governed read surfaces until it
is explicitly updated to
shippedorclosed. Zero targeted workstreams is an empty state, not implicit GA. - Changing the
currentornextalias only changes the release selector. It does not move any workstreams. Never bulk-retarget older active work just because the target release changed. - Move only the explicit workstream ids that are part of the current release slice. Older release workstreams, including completed work, keep their original release history so Radar and Compass filters stay truthful.
- Finished work removed during release closeout may still appear in governed read surfaces as completed release members; that history does not make the workstream an active target again.
- One workstream may have at most one active release target at a time. Use
move, not a secondadd, when work carries forward. finished,parked, andsupersededworkstreams cannot stay in active releases.shippedandclosedreleases are terminal for active planning. Move alias ownership off them before lifecycle closure.- Release
nameis explicit operator-owned source truth. Matching authored release notes may exist for the sameversion, but they must never rename or override the release-planning record without explicit maintainer authorization. - In practice, release names only change through an explicit
odylith release create ... --nameorodylith release update ... --nameoperation. - If
nameis blank, release-planning surfaces may fall back toversion, thentag, thenrelease_id; they must never inherit a release-note title as the release name.
Working Flow
- Inspect the current release catalog and alias ownership first.
- Create or update the release definition if the target release does not yet exist or needs a new name, version, tag, or alias.
- Add, move, or remove workstreams through the release CLI rather than by editing source files manually.
- Run at least
odylith validate backlog-contract --repo-root .after release mutations. - If the release change affects governed read surfaces, refresh or prove them
through
odylith sync --check-only --runtime-mode standalone. - When the release actually ships to GA, move aliases as needed and
explicitly mark the record
shippedorclosed; until then, expect the current release to remain visible even if it has zero targeted workstreams.
04 同仓库更多 Skills
odylith-version
Inspect the pinned, active, and locally available Odylith versions.
odylith-sync
Refresh governed Odylith surfaces for the current changed slice.
odylith-subagent-router
Choose local execution versus bounded delegation for Odylith slices and shape routed payloads.
odylith-subagent-orchestrator
Plan Odylith delegation ownership, bounded fanout, and merge-safe orchestration.
odylith-start
Run the repo-local Odylith startup contract first, before context/search fan out.
odylith-show-me
Use when the operator asks what Odylith can do for a repo, requests an advisory repo demo, or asks for the clean scenario-aware show-me output.