Repository navigation
chore: rolling promotion dev -> main #625
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
60cee55
b6c6870
f142f0c
8dab7e7
421e0c9
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -44,18 +44,18 @@ For cross-session agents, use `genie send '<text>' --to <agent>` via Bash. | |
| <lifecycle> | ||
|
|
||
| ## Phase 1 — Read Wish | ||
| Read the WISH.md at the path provided in your initial prompt. Parse execution groups, dependencies between groups, and acceptance criteria. Understand the full scope before dispatching anything. | ||
| Read the WISH.md at the path provided in your initial prompt. Parse execution groups, dependencies between groups, and acceptance criteria. | ||
|
|
||
| **Gate:** All groups parsed, dependency DAG verified (no circular deps), acceptance criteria extracted. If wish is unparseable or missing groups, report to PM and stop. | ||
| **Gate:** All groups parsed, dependency DAG understood. If wish is unparseable or missing groups, report to PM and stop. | ||
|
|
||
| ## Phase 2 — Execute Groups | ||
| Dispatch groups whose dependencies are satisfied. Run independent groups in parallel. Never start a group before its dependencies complete. | ||
| Dispatch groups whose dependencies are satisfied. `genie work` auto-initializes state on first call — do NOT run `genie status` before your first dispatch. Just dispatch immediately. | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Status timing guidance conflicts with the heartbeat checklist. These lines correctly say not to run Suggested fix-2. **Wish status** — `genie status <slug>` — which groups are done, in-progress, or blocked?
+2. **Wish status** — after first dispatch, run `genie status <slug>` — which groups are done, in-progress, or blocked?Also applies to: 58-58 🤖 Prompt for AI Agents |
||
|
|
||
| ```bash | ||
| genie work engineer <slug>#<group> # Dispatches and spawns engineer | ||
| genie work engineer <slug>#<group> # Auto-inits state, sets in_progress, spawns engineer | ||
| genie read <team>-engineer # Monitor progress | ||
| genie done <slug>#<group> # Mark group complete | ||
| genie status <slug> # Check overall progress | ||
| genie status <slug> # Check progress (only AFTER first dispatch) | ||
| ``` | ||
|
|
||
| One group per engineer dispatch. Wait for completion before marking done. | ||
|
|
||
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -140,11 +140,12 @@ function getGitDiff(): string { | |||||
|
|
||||||
| /** | ||||||
| * Parse WISH.md content to extract group definitions for state initialization. | ||||||
| * Looks for `### Group <N>: <title>` headings and `**depends-on:**` lines. | ||||||
| * Looks for `### Group <id>: <title>` headings and `**depends-on:**` lines. | ||||||
| * Accepts both numbered (Group 1) and lettered (Group A) identifiers. | ||||||
| */ | ||||||
| export function parseWishGroups(content: string): GroupDefinition[] { | ||||||
| const groups: GroupDefinition[] = []; | ||||||
| const groupPattern = /^### Group (\d+):/gim; | ||||||
| const groupPattern = /^### Group ([A-Za-z0-9]+):/gim; | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
By broadening Useful? React with 👍 / 👎. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Alphanumeric group support is incomplete without updating extraction boundaries.
Suggested fix- const nextBoundary = afterHeading.slice(1).search(/^### Group \d|^---$/m);
+ const nextBoundary = afterHeading.slice(1).search(/^### Group [A-Za-z0-9]+:|^---$/m);Also applies to: 157-157 🤖 Prompt for AI Agents |
||||||
|
|
||||||
| let match: RegExpExecArray | null = groupPattern.exec(content); | ||||||
| while (match !== null) { | ||||||
|
|
@@ -153,7 +154,7 @@ export function parseWishGroups(content: string): GroupDefinition[] { | |||||
|
|
||||||
| // Find the next group heading or end of content | ||||||
| const rest = content.slice(start + match[0].length); | ||||||
| const nextGroupIdx = rest.search(/^### Group \d+:/m); | ||||||
| const nextGroupIdx = rest.search(/^### Group [A-Za-z0-9]+:/m); | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The regex used to find the next group heading is missing the case-insensitive (
Suggested change
|
||||||
| const section = nextGroupIdx !== -1 ? rest.slice(0, nextGroupIdx) : rest; | ||||||
|
|
||||||
| // Look for **depends-on:** line within this group section | ||||||
|
|
@@ -274,7 +275,7 @@ export async function workDispatchCommand(agentName: string, ref: string): Promi | |||||
| if (!groupSection) { | ||||||
| console.error(`❌ Group "${group}" not found in ${wishPath}`); | ||||||
| console.error(' Available groups:'); | ||||||
| const groups = content.match(/^### Group \d+:.*$/gm); | ||||||
| const groups = content.match(/^### Group [A-Za-z0-9]+:.*$/gm); | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The regex used to find available groups for the error message is missing the case-insensitive (
Suggested change
|
||||||
| if (groups) { | ||||||
| for (const g of groups) console.error(` ${g}`); | ||||||
| } | ||||||
|
|
||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Mirror the same status-timing fix here to avoid first-loop failures.
This file has the same contradiction: “do not run status before first dispatch” vs heartbeat’s unconditional status check. Update heartbeat wording here as well.
Also applies to: 58-58
🤖 Prompt for AI Agents