feat: add project-status task for accurate *status command#559
feat: add project-status task for accurate *status command#559csjusto wants to merge 2 commits intoSynkraAI:mainfrom
Conversation
|
@csjusto is attempting to deploy a commit to the Pedro Valério Lopez's projects Team on Vercel. A member of the Team first needs to authorize it. |
WalkthroughA new Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~15 minutes 🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.aiox-core/development/tasks/project-status.md:
- Around line 91-92: Update the "Count stories by status" and "Compare with epic
file's stated progress" sections to require a deterministic status normalization
step before any counting or divergence checks: define and document a canonical
status set (e.g., Done, Ready, Draft, InProgress, InReview) and a normalization
map for common variants (e.g., "Ready to Start" -> "Ready", "In Review" ->
"InReview", case-insensitive trim, synonyms), state that normalization must be
applied to story text and epic progress values, and ensure the
counting/divergence logic references the normalized values only; include the
normalization rules in the doc and callouts that code consuming this doc must
implement the same mapping for lines referencing "Count stories by status" and
the epic comparison logic.
- Around line 113-139: The markdown file contains fenced code blocks holding the
"📊 Status Completo — {Project Name}" status template and a second similar block
later; these blocks lack a language identifier and trigger MD040. Fix by adding
a language tag (e.g., ```markdown or ```md or ```text) to each fenced block that
wraps the Status template and the later template so the linter recognizes the
block type; locate the fenced blocks by searching for the block that begins with
"📊 Status Completo — {Project Name}" and the second occurrence and add the
language identifier to the opening triple backticks.
- Around line 79-82: The doc currently mandates extracting Status from a fixed
line ("line 5 / lines 3-5") which is brittle and wrong; change the instructions
to recommend parsing the file by locating the metadata section or scanning all
lines for a Status label/pattern (e.g., a line containing "Status",
"**Status**", or "Status:") and extracting the value after the marker instead of
using a hardcoded line index; update the corresponding references (the lines
that read "Read lines 1-6..." and the duplicate at 234-235) to describe
metadata-section or label-based extraction and include a fallback behavior if no
Status is found.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 8af38ac3-01d1-4232-9d19-a3d5fdb432d8
📒 Files selected for processing (1)
.aiox-core/development/tasks/project-status.md
- Replace fixed line-number parsing with ## Status section search (robust) - Add status vocabulary normalization before counting/divergence checks - Add language identifiers to fenced code blocks (MD040) - Update Performance section to match new parsing approach Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (1)
.aiox-core/development/tasks/project-status.md (1)
210-210:⚠️ Potential issue | 🟠 MajorAnti-pattern text is outdated and contradicts the current parsing rules.
“read lines 1-6” conflicts with the
## Status-based extraction guidance and should be removed.Proposed doc fix
-3. **NEVER** delegate to a subagent without explicit instruction to "read lines 1-6 of EVERY story file" +3. **NEVER** delegate to a subagent without explicit instruction to read each story file and extract status from the `## Status` sectionAs per coding guidelines, "Verify task follows AIOX task format with clear elicitation points."
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.aiox-core/development/tasks/project-status.md at line 210, Remove the outdated anti-pattern sentence that references "NEVER delegate to a subagent without explicit instruction to \"read lines 1-6 of EVERY story file\"" and replace it with a statement that aligns with the current parsing rule: instruct contributors not to delegate to subagents unless explicitly instructed to extract content from the document's "## Status" section; ensure the text references the "## Status" extraction guidance (not line ranges) so there is no conflict with existing parsing rules.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.aiox-core/development/tasks/project-status.md:
- Around line 79-84: The status-extraction logic currently caps the input to the
first 20 lines (the "Read the first 20 lines" behavior) which misses `## Status`
sections; update the routine that performs status extraction so it scans the
entire document (or searches for the "## Status" heading) rather than truncating
to 20 lines, then take the line immediately after that heading and trim "**" and
whitespace to produce the Status; ensure the change replaces any
fixed-line-limit code path used for "Story title / Status" extraction and add a
small unit test covering a Status beyond line 20.
---
Duplicate comments:
In @.aiox-core/development/tasks/project-status.md:
- Line 210: Remove the outdated anti-pattern sentence that references "NEVER
delegate to a subagent without explicit instruction to \"read lines 1-6 of EVERY
story file\"" and replace it with a statement that aligns with the current
parsing rule: instruct contributors not to delegate to subagents unless
explicitly instructed to extract content from the document's "## Status"
section; ensure the text references the "## Status" extraction guidance (not
line ranges) so there is no conflict with existing parsing rules.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: b7c03754-5321-4b8e-aa16-36ad821b31f7
📒 Files selected for processing (1)
.aiox-core/development/tasks/project-status.md
| Read the first 20 lines and extract: | ||
| - Story title: first line starting with "# " | ||
| - Status: the line immediately after "## Status" heading, | ||
| trimmed of "**" markers and whitespace. | ||
| Do NOT rely on fixed line numbers — the Status section | ||
| position may vary across story templates. |
There was a problem hiding this comment.
Remove the fixed 20-line cap for status extraction.
Limiting reads to the first 20 lines can miss valid ## Status sections and produce incorrect panorama results.
Proposed doc fix
- For EACH story file found in Step 2:
- Read the first 20 lines and extract:
+ For EACH story file found in Step 2:
+ Read progressively until `## Status` is found (or EOF), then extract:
- Story title: first line starting with "# "
- Status: the line immediately after "## Status" heading,
trimmed of "**" markers and whitespace.
Do NOT rely on fixed line numbers — the Status section
position may vary across story templates.- Read only the first 20 lines of each story file (status is in the ## Status section).
+ Read minimally but safely: scan line-by-line until `## Status` is found, then stop.
+ If not found, mark as "⚠️ Status field missing".
Use parallel Read calls for multiple story files.
Cache nothing — always read fresh.As per coding guidelines, "Check that deliverables are well-defined."
Also applies to: 244-245
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.aiox-core/development/tasks/project-status.md around lines 79 - 84, The
status-extraction logic currently caps the input to the first 20 lines (the
"Read the first 20 lines" behavior) which misses `## Status` sections; update
the routine that performs status extraction so it scans the entire document (or
searches for the "## Status" heading) rather than truncating to 20 lines, then
take the line immediately after that heading and trim "**" and whitespace to
produce the Status; ensure the change replaces any fixed-line-limit code path
used for "Story title / Status" extraction and add a small unit test covering a
Status beyond line 20.
Summary
*statuscommand lacks a formal task definition, causing agents to report inaccurate story statuses## Statusfield from each story fileproject-status.mdtask that enforces reading every story file as the single source of truth, with divergence detection between epic metadata and actual story statusesChanges
.aiox-core/development/tasks/project-status.md— New Task3 Critical Rules:
## Statusfield in each story file — never epic metadata, git log, or cached data*statusexecution MUST read every story file. No shortcuts, no sampling5-Step Workflow:
docs/stories/epic-*.md)docs/stories/[0-9]*.md)6 Anti-Patterns documented to prevent recurrence of inaccurate reporting
Root Cause
The
*statuscommand had no formal task workflow. Agents improvised the data gathering, leading to:Test plan
*statuson a project with known story statuses — verify 100% accuracy🤖 Generated with Claude Code
Summary by CodeRabbit