Skip to content

MS release-notes and Ticket Contract assessments; justified not-needed tiers - #6

Merged
davidnmbond merged 15 commits into
mainfrom
feature/ms-readiness
Oct 19, 2026
Merged

davidnmbond merged 15 commits into
mainfrom
feature/ms-readiness

Conversation

@davidnmbond

Copy link
Copy Markdown
Contributor

Adds the MS ticket-readiness checks used by the Jira skill, the QA Dashboard and the Magic Suite release gate. Tracks #5 and Jira MS-27629.

What changes

  • NormalizedIssue gains ReleaseNotes (Jira customfield_10600, string or ADF) and Resolution (fields.resolution.name); JSON keys releaseNotes, resolution.
  • Built-in rubric, MS only:
    • ReleaseNotes (and EpicReleaseNotes for epics), mandatory cap 0.79: present, not a placeholder, not generic, at least 8 words, differs from the summary, customer-facing (no ticket keys, paths or code identifiers; standards ids such as UTF-8 and CVE ids allowed), no em dash, British spelling.
    • TicketContract (non-epics), mandatory cap 0.79: every acceptance criterion classified MUST/SHOULD/MAY (leading keyword, a single RFC 2119 keyword in the sentence, or a label line above), at least one MUST; from Ready for Test onwards (including Ready for Customer and With Customer) an h2. Verification Evidence section, optionally (Retrospective), with criterion table, Reachability, Not covered and a suggested QA route.
    • Both are not applicable to undelivered resolutions (anything but Fixed or Done).
  • All projects: Documentation and Certifications accept a justified No documentation change: <reason> / No certification question: <reason> line.
  • New building blocks: fieldsDiffer condition, criteriaClassification measure.

Evidence

  • 972 tests pass (901 before the final-review fixes); Release build 0 warnings.
  • OPS and PS scores unchanged: 444 side-by-side comparisons of 1.1.x against this branch (score, grade, findings, recommendations) found no differences.
  • Criteria classification measured against 400 live MS tickets created since 17 September.

davidnmbond and others added 14 commits October 19, 2026 11:48
Adds the fieldsDiffer condition, the isMs and isUndelivered named conditions, a ReleaseNotes assessment (EpicReleaseNotes for epics, since assessment names must be unique) weighted 6, and a mandatory 'Release notes' cap at 0.79. Not applicable outside MS and when resolution is set and not Fixed or Done.

BuiltInRubricParityTests: no expectation changed. The Yoda fixtures with MS keys would now gain the new finding and cap, so the parity rubric drops the ReleaseNotes assessments and cap, as it already drops Presentation; ReleaseNotesAssessmentTests covers them. A 1.1.6 rubric copy is a test fixture for the OPS unchanged-score test.
Adds the criteriaClassification measure (items, unclassified, must under a section), the contractEvidenceDue condition, a TicketContract assessment weighted 6 for MS non-epic delivered tickets, and a mandatory 'Ticket contract' cap at 0.79. From Ready for Test on, a Verification Evidence section with a Criterion table, Reachability, Not covered and a Suggested QA route is required.

BuiltInRubricParityTests: no expectation changed; the parity rubric also drops TicketContract and its cap.
No Yoda parity fixture contains a matching line, so no parity score changes.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
…ntract

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…omer

Both statuses follow In Test in the MS workflow, so a ticket in either needed no evidence.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A criterion is classified when it starts with MUST, SHOULD or MAY, contains exactly one distinct keyword, or is a list item under a label line such as *MUST* or MUST: (scope ends at the next label or wiki heading). Items mixing keywords without a leading one stay unclassified. Covers the MS-27557 and MS-27609 forms.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
NBGV appends the git height, so 1.2.0 is never published.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ng blocks

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@codacy-production

codacy-production Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Metrics 115 complexity · 0 duplication

Metric Results
Complexity 115
Duplication 0

View in Codacy

🟢 Coverage 98.18% diff coverage · -0.05% coverage variation

Metric Results
Coverage variation ✅ -0.05% coverage variation (-1.00%)
Diff coverage ✅ 98.18% diff coverage

View coverage diff in Codacy

Coverage variation details
Coverable lines Covered lines Coverage
Common ancestor commit (64e9691) 2005 2004 99.95%
Head commit (7c8aaa3) 2057 (+52) 2055 (+51) 99.90% (-0.05%)

Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: <coverage of head commit> - <coverage of common ancestor commit>

Diff coverage details
Coverable lines Covered lines Diff coverage
Pull request (#6) 55 54 98.18%

Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: <covered lines added or modified>/<coverable lines added or modified> * 100%

AI Reviewer: run a review on demand. To trigger the first review automatically, go to your organization or repository integration settings. AI can make mistakes. Always validate suggestions.

Run reviewer

TIP This summary will be updated as you push new changes.

…limits

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@davidnmbond
davidnmbond merged commit fded1cd into main Oct 19, 2026
7 checks passed
@davidnmbond
davidnmbond deleted the feature/ms-readiness branch October 19, 2026 18:09
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