Compare commits
1 Commits
17e97099d4
...
4deeb93eba
| Author | SHA1 | Date |
|---|---|---|
|
|
4deeb93eba |
|
|
@ -86,8 +86,7 @@ Skip this section if `{spec_file}` is not set.
|
||||||
|
|
||||||
#### Determine new status based on review outcome
|
#### Determine new status based on review outcome
|
||||||
|
|
||||||
- If the live journey release-gate closeout above found missing evidence, red gates, skipped gates, blocked gates, environment-blocked gates, or incomplete/expired product-owner deferrals: keep `{new_status}` = `in-progress` regardless of resolved findings. Update the story file Status section to `in-progress` and record the blocker in the story file.
|
- If all `decision-needed` and `patch` findings were resolved (fixed or dismissed) AND no unresolved HIGH/MEDIUM issues remain: set `{new_status}` = `done`. Update the story file Status section to `done`.
|
||||||
- If all `decision-needed` and `patch` findings were resolved (fixed or dismissed) AND no unresolved HIGH/MEDIUM issues remain AND live-gate blockers are cleared (or have complete, unexpired product-owner deferral): set `{new_status}` = `done`. Update the story file Status section to `done`.
|
|
||||||
- If `patch` findings were left as action items, or unresolved issues remain: set `{new_status}` = `in-progress`. Update the story file Status section to `in-progress`.
|
- If `patch` findings were left as action items, or unresolved issues remain: set `{new_status}` = `in-progress`. Update the story file Status section to `in-progress`.
|
||||||
|
|
||||||
Save the story file.
|
Save the story file.
|
||||||
|
|
@ -109,11 +108,9 @@ If `{sprint_status}` file does not exist, note that story status was updated in
|
||||||
|
|
||||||
Re-open the story file after saving and verify the top-level `Status:` field equals `{new_status}`.
|
Re-open the story file after saving and verify the top-level `Status:` field equals `{new_status}`.
|
||||||
|
|
||||||
Set `{reconciliation_result}` = `story file verified; sprint tracker verification skipped`.
|
If `{sprint_status}` exists and `{story_key}` was found, re-open `{sprint_status}` after saving and verify `development_status[{story_key}]` also equals `{new_status}`.
|
||||||
|
|
||||||
If `{sprint_status}` exists and `{story_key}` was found, re-open `{sprint_status}` after saving and verify `development_status[{story_key}]` also equals `{new_status}`. If it matches, set `{reconciliation_result}` = `story markdown and sprint tracker agree on {new_status}`.
|
If either artifact does not match, HALT with a closeout reconciliation failure instead of reporting completion.
|
||||||
|
|
||||||
If the story file does not match `{new_status}`, or if `{sprint_status}` was verified and `development_status[{story_key}]` does not match `{new_status}`, HALT with a closeout reconciliation failure instead of reporting completion.
|
|
||||||
|
|
||||||
#### Completion summary
|
#### Completion summary
|
||||||
|
|
||||||
|
|
@ -124,7 +121,7 @@ If the story file does not match `{new_status}`, or if `{sprint_status}` was ver
|
||||||
> **Action Items Created:** <action_count>
|
> **Action Items Created:** <action_count>
|
||||||
> **Deferred:** <W>
|
> **Deferred:** <W>
|
||||||
> **Dismissed:** <R>
|
> **Dismissed:** <R>
|
||||||
> **Reconciled:** `{reconciliation_result}`
|
> **Reconciled:** story markdown and sprint tracker agree on `{new_status}`
|
||||||
|
|
||||||
### 7. Next steps
|
### 7. Next steps
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -290,14 +290,8 @@ If the command targets a story, set `story_key={{next_story_id}}` when prompted.
|
||||||
<action>Return</action>
|
<action>Return</action>
|
||||||
</check>
|
</check>
|
||||||
|
|
||||||
<action>For each story entry in development_status where the tracker status is `review` or `done`:</action>
|
<action>For each story entry in development_status, use `story_location` to open the matching story markdown file and compare its top-level `Status:` value with the tracker status when the tracker status is `review` or `done`</action>
|
||||||
|
<check if="any story markdown status does not match its tracker status for review/done stories">
|
||||||
- Resolve the story path from `story_location` using `{project-root}` as the base for relative paths.
|
|
||||||
- Open the matching story markdown file and read the top-level `Status:` value.
|
|
||||||
- If the file is missing, unreadable, or the top-level `Status:` value is missing, record a drift entry with the path and reason.
|
|
||||||
- Compare the markdown `Status:` value with the tracker status and record mismatches as drift entries.
|
|
||||||
|
|
||||||
<check if="any drift_entries were recorded for review/done stories">
|
|
||||||
<template-output>is_valid = false</template-output>
|
<template-output>is_valid = false</template-output>
|
||||||
<template-output>error = "Story/tracker status drift detected: {{drift_entries}}"</template-output>
|
<template-output>error = "Story/tracker status drift detected: {{drift_entries}}"</template-output>
|
||||||
<template-output>suggestion = "Reconcile story markdown Status fields with sprint-status.yaml before closeout"</template-output>
|
<template-output>suggestion = "Reconcile story markdown Status fields with sprint-status.yaml before closeout"</template-output>
|
||||||
|
|
|
||||||
|
|
@ -44,51 +44,22 @@ assert(
|
||||||
);
|
);
|
||||||
|
|
||||||
assert(
|
assert(
|
||||||
codeReview.includes(
|
codeReview.includes('If either artifact does not match, HALT with a closeout reconciliation failure instead of reporting completion.'),
|
||||||
'If the story file does not match `{new_status}`, or if `{sprint_status}` was verified and `development_status[{story_key}]` does not match `{new_status}`, HALT with a closeout reconciliation failure instead of reporting completion.',
|
|
||||||
),
|
|
||||||
'code-review halts when closeout reconciliation fails',
|
'code-review halts when closeout reconciliation fails',
|
||||||
);
|
);
|
||||||
|
|
||||||
assert(codeReview.includes('development_status[{story_key}]'), 'code-review verifies the sprint tracker entry during reconciliation');
|
assert(codeReview.includes('development_status[{story_key}]'), 'code-review verifies the sprint tracker entry during reconciliation');
|
||||||
|
|
||||||
assert(
|
assert(
|
||||||
codeReview.includes('Set `{reconciliation_result}` = `story file verified; sprint tracker verification skipped`.'),
|
codeReview.includes('story markdown and sprint tracker agree on `{new_status}`'),
|
||||||
'code-review records when sprint tracker verification is skipped',
|
'code-review reports successful reconciliation in the completion summary',
|
||||||
);
|
);
|
||||||
|
|
||||||
assert(
|
assert(sprintStatus.includes('story/tracker status drift detected'), 'sprint-status warns about story/tracker drift');
|
||||||
codeReview.includes(
|
|
||||||
'If the live journey release-gate closeout above found missing evidence, red gates, skipped gates, blocked gates, environment-blocked gates, or incomplete/expired product-owner deferrals: keep `{new_status}` = `in-progress` regardless of resolved findings.',
|
|
||||||
),
|
|
||||||
'code-review keeps live-gate blockers from being overwritten during final status selection',
|
|
||||||
);
|
|
||||||
|
|
||||||
assert(
|
assert(
|
||||||
codeReview.includes('> **Reconciled:** `{reconciliation_result}`'),
|
sprintStatus.includes('use `story_location` to open the matching story markdown file'),
|
||||||
'code-review reports reconciliation status conditionally in the completion summary',
|
'sprint-status validate mode uses story_location when checking story files against tracker state',
|
||||||
);
|
|
||||||
|
|
||||||
assert(
|
|
||||||
sprintStatus.includes('Resolve the story path from `story_location` using `{project-root}` as the base for relative paths.'),
|
|
||||||
'sprint-status defines how story_location is resolved during validate mode',
|
|
||||||
);
|
|
||||||
|
|
||||||
assert(
|
|
||||||
sprintStatus.includes(
|
|
||||||
'If the file is missing, unreadable, or the top-level `Status:` value is missing, record a drift entry with the path and reason.',
|
|
||||||
),
|
|
||||||
'sprint-status treats missing story artifacts or missing Status values as validation failures',
|
|
||||||
);
|
|
||||||
|
|
||||||
assert(
|
|
||||||
sprintStatus.includes('any drift_entries were recorded for review/done stories'),
|
|
||||||
'sprint-status fails validate mode on any recorded reconciliation drift entries',
|
|
||||||
);
|
|
||||||
|
|
||||||
assert(
|
|
||||||
sprintStatus.includes('story markdown Status fields with sprint-status.yaml before closeout'),
|
|
||||||
'sprint-status reports reconciliation guidance when drift is detected',
|
|
||||||
);
|
);
|
||||||
|
|
||||||
console.log(`\n${passed} passed, ${failed} failed\n`);
|
console.log(`\n${passed} passed, ${failed} failed\n`);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue