Skip to content

fix(ops-gsd-states): annotate SUBORDINATE projects so YOLO doesn't false-flag them#204

Merged
auroracapital merged 1 commit intomainfrom
fix/gsd-states-respect-subordinate
May 2, 2026
Merged

fix(ops-gsd-states): annotate SUBORDINATE projects so YOLO doesn't false-flag them#204
auroracapital merged 1 commit intomainfrom
fix/gsd-states-respect-subordinate

Conversation

@auroracapital
Copy link
Copy Markdown
Collaborator

@auroracapital auroracapital commented May 2, 2026

Summary

When a GSD project's STATE.md frontmatter has status: subordinate_to_workspace, its phase tracking is intentionally delegated to a workspace-level coordinator. C-suite YOLO agents were treating these as independent and flagging them as 'stalled' when their phase progress was static — but the staticness is correct: the workspace owns the schedule.

Adds a header annotation [SUBORDINATE — tracking delegated to workspace; do NOT flag as stalled] so the C-suite agents have an inline short-circuit. Pairs with the CLAIM VERIFICATION GUARDRAIL from #202.

Concrete case (2026-05-01 YOLO session)

COO claimed healify-api v3.1 Phase 1 stalled 6d on closed PR #3217. Reality: #3217 was intentionally closed and superseded by #3222 (merged 2026-04-25). The workspace-level STATE.md reflects this with status: subordinate_to_workspace; the YOLO scan would have surfaced that status if the script annotated it.

Implementation

  • Small awk frontmatter scalar parser
  • Activates only on the literal value subordinate_to_workspace
  • All other status values stay silent (no header noise for normal projects)
  • Falls back cleanly if awk fails or the field is absent (no set -e regression)

Test plan

  • Smoke test: bin/ops-gsd-states | grep === correctly tags healify-agentcore (subordinate) but not active projects
  • No set -euo pipefail regression
  • Next YOLO run produces no 'stalled' false positives for subordinate projects

Note

Low Risk
Low risk: small change to a reporting script that only adjusts output formatting based on optional STATE.md frontmatter, with a || true guard to avoid set -e failures.

Overview
ops-gsd-states now parses YAML frontmatter in each project’s .planning/STATE.md to read the status field, and appends a SUBORDINATE annotation to the printed header when status: subordinate_to_workspace.

This adds a small awk-based frontmatter_value helper and keeps behavior unchanged for projects without that status (or when parsing fails), aside from the new header tag.

Reviewed by Cursor Bugbot for commit 57a449a. Bugbot is set up for automated code reviews on this repo. Configure here.

…lse-flag them

When a project's .planning/STATE.md frontmatter has
`status: subordinate_to_workspace`, its tracking is intentionally
delegated to a workspace-level coordinator (e.g. healify-api -> healify-
workspace, healify-agentcore -> healify-workspace). The C-suite YOLO
agents were treating these as independent projects and flagging them
as "stalled" when their phase progress was static — but the staticness
is correct: the workspace owns the schedule.

Add a header annotation `[SUBORDINATE — tracking delegated to workspace;
do NOT flag as stalled]` so the C-suite agents have an inline signal to
suppress those false fires. Pairs with the CLAIM VERIFICATION GUARDRAIL
shipped in 2.1.1 (which already requires checking git log before flagging
"broken" — this gives them an even earlier short-circuit).

Concrete case from 2026-05-01 YOLO session: COO claimed healify-api v3.1
Phase 1 was "stalled 6d on closed PR #3217". Reality: PR #3217 was
intentionally closed and superseded by #3222, which merged 2026-04-25.
The healify-workspace symlinked STATE.md correctly reflects this with
`status: subordinate_to_workspace`; the YOLO scan would have surfaced
that status if the script annotated it.

Implementation: small awk frontmatter scalar parser; activates only on
the literal value `subordinate_to_workspace`; leaves all other status
values silent (no header noise for normal projects). Falls back cleanly
if the awk fails or the field is absent (no `set -e` regression).
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 2, 2026

Warning

Rate limit exceeded

@auroracapital has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 34 minutes and 37 seconds before requesting another review.

To keep reviews running without waiting, you can enable usage-based add-on for your organization. This allows additional reviews beyond the hourly cap. Account admins can enable it under billing.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 3a1070e3-36bc-4c65-85fb-ab85a9b85400

📥 Commits

Reviewing files that changed from the base of the PR and between b96f8cb and 57a449a.

📒 Files selected for processing (1)
  • claude-ops/bin/ops-gsd-states
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/gsd-states-respect-subordinate

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.

❤️ Share
Review rate limit: 0/1 reviews remaining, refill in 34 minutes and 37 seconds.

Comment @coderabbitai help to get the list of available commands and usage tips.

@auroracapital auroracapital merged commit 8818b25 into main May 2, 2026
5 of 6 checks passed
@auroracapital auroracapital deleted the fix/gsd-states-respect-subordinate branch May 2, 2026 04:17
Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

Bugbot Autofix is ON, but it could not run because the branch was deleted or merged before autofix could start.

Reviewed by Cursor Bugbot for commit 57a449a. Configure here.

if (idx > 0) {
f = substr($0, 1, idx - 1)
v = substr($0, idx + 1)
sub(/^[[:space:]]+/, "", f); sub(/[[:space:]]+$/, "", f)
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Whitespace stripping matches nested YAML keys as top-level

Low Severity

The frontmatter_value function is documented as extracting a "top-level YAML frontmatter scalar," but sub(/^[[:space:]]+/, "", f) strips leading whitespace from the field name before comparison. This means indented (nested) YAML keys like status: subordinate_to_workspace under a parent mapping would match identically to a top-level status key. If a nested status key appears before the real top-level one, the wrong value is returned — potentially causing a false SUBORDINATE annotation or, conversely, missing one.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 57a449a. Configure here.

auroracapital added a commit that referenced this pull request May 2, 2026
Patch release rolling up the second-pass YOLO false-fire suppression
merged tonight (#204):

- bin/ops-gsd-states now annotates `[SUBORDINATE — tracking delegated to
  workspace; do NOT flag as stalled]` for any GSD project whose
  STATE.md frontmatter has `status: subordinate_to_workspace`. C-suite
  agents get an inline short-circuit so they stop reporting these as
  stalled.

Bumps:
- plugin.json:        2.1.1 -> 2.1.2
- marketplace.json:   2.1.1 -> 2.1.2
- package.json (bin): 1.7.1 -> 1.7.2

CHANGELOG entry under [2.1.2] with the concrete 2026-05-01 case that
motivated the fix (COO false-flagged healify-api v3.1 Phase 1 as stalled
on a PR that was intentionally superseded).

No breaking changes; drop-in replacement for 2.1.1.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant