Skip to content

feat(gastown): mayor should focus on outcomes over implementation details in bead prompts #1558

@jrf0110

Description

@jrf0110

Problem

The mayor's system prompt is too prescriptive about how to implement changes — specifying exact lines of code, specific file edits, etc. in the bead descriptions it creates for convoys. This over-constrains the polecat agents and can lead to worse outcomes when the mayor's implementation plan doesn't account for context the polecat discovers during execution.

Proposed Change

The mayor should still build a thorough understanding of how something should be built (it needs this to create a good convoy plan and decompose work effectively). But the bead prompts themselves should be outcome-focused rather than implementation-focused:

  • Instead of: "In src/lib/auth.ts, change line 45 from if (token) to if (token && !isExpired(token)) and add an isExpired helper function that checks the JWT exp claim"
  • Prefer: "The auth flow should reject expired tokens. Currently expired JWTs are accepted because the token check doesn't verify expiration. The fix should ensure expired tokens are caught before they reach downstream handlers."

This gives polecats the freedom to find the best implementation while still providing clear success criteria and enough context about the problem.

Why This Matters

  • Polecats have full codebase access and can make better local decisions about implementation
  • Over-specified beads are brittle — if the codebase has changed or the mayor's plan is slightly off, the polecat wastes time trying to follow instructions that don't match reality
  • Outcome-focused beads let polecats use their own judgment, which is what they're good at
  • The mayor's value is in decomposition and coordination, not in writing code through the polecats

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestgt:mayorMayor agent, chat interface, delegation toolskilo-auto-fixAuto-generated label by Kilokilo-triagedAuto-generated label by Kilo

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions