fix: correct dialogue round numbering and kebab-case spike filenames

- Fix "Round 0" → "Round 1" for opening arguments in alignment dialogues
- Convert spike titles to kebab-case for consistent filenames

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Eric Garcia 2026-01-26 07:40:24 -05:00
parent 16d45d9a11
commit 015c21d381
2 changed files with 15 additions and 3 deletions

View file

@ -886,7 +886,7 @@ pub fn generate_alignment_dialogue_markdown(
md.push_str("| — | [Awaiting Round 1] | — | — | — |\n\n");
// Opening Arguments placeholder
md.push_str("## Round 0: Opening Arguments\n\n");
md.push_str("## Round 1: Opening Arguments\n\n");
for agent in agents {
md.push_str(&format!("### {} {}\n\n", agent.name, agent.emoji));
md.push_str("[Awaiting response]\n\n");
@ -1128,7 +1128,7 @@ mod tests {
assert!(md.contains("## Alignment Scoreboard"));
assert!(md.contains("## Perspectives Inventory"));
assert!(md.contains("## Tensions Tracker"));
assert!(md.contains("## Round 0: Opening Arguments"));
assert!(md.contains("## Round 1: Opening Arguments"));
// Agent names present
assert!(md.contains("Muffin"));

View file

@ -31,7 +31,7 @@ pub fn handle_create(state: &ProjectState, args: &Value) -> Result<Value, Server
// Generate filename with date
let date = chrono::Utc::now().format("%Y-%m-%d").to_string();
let filename = format!("spikes/{}-{}.md", date, title);
let filename = format!("spikes/{}-{}.md", date, to_kebab_case(title));
// Generate markdown
let markdown = spike.to_markdown();
@ -143,3 +143,15 @@ pub fn handle_complete(state: &ProjectState, args: &Value) -> Result<Value, Serv
)
}))
}
/// Convert a string to kebab-case for filenames
fn to_kebab_case(s: &str) -> String {
s.to_lowercase()
.chars()
.map(|c| if c.is_alphanumeric() { c } else { '-' })
.collect::<String>()
.split('-')
.filter(|s| !s.is_empty())
.collect::<Vec<_>>()
.join("-")
}