Skip to content

feat: require cycle name at launch — eliminate unnamed cycles and null cycleName in diary/context #373

@cmbays

Description

@cmbays

Problem

Cycle names are currently optional. When a cycle is created without a name:

  1. kata cooldown "<cycleId>" must be used instead of the human-readable name
  2. cycleName is null or absent in diary entries — "Missing cycle name" logged during cooldown
  3. Agent context and formatAgentContext() output shows undefined or empty cycle name
  4. The name→ID map in memory (MEMORY.md) has to be maintained manually as a workaround

Evidence

  • Keiko 9 cycle (5af5196f) had no name — referred to as unnamed in all logs
  • Cooldown diary entries showed cycleName: null which triggered a warning
  • next-keiko-proposal-generator.ts has a logger.warn() for missing cycle name (added in Keiko 11)

Desired behavior

  • kata keiko new should require a name (no --skip-name or empty default)
  • kata keiko staged new should require a name at staging time
  • kata keiko staged launch should enforce name is set before flipping to active
  • The name should be persisted on the Cycle object and surfaced in:
    • kata cooldown (accept name OR id)
    • kata kiai context output
    • Diary entries (cycleName field)
    • formatAgentContext() output

Migration

Existing unnamed cycles are historical — no migration needed. Only enforce going forward.

Acceptance criteria

  • kata keiko new errors if --name is not provided (or prompts interactively and rejects empty)
  • kata keiko staged new same behavior
  • cycleName is never null/undefined in diary entries for new cycles
  • kata cooldown "<name>" works for all new cycles (name lookup by string)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions