Skip to content

feat(agents): align RAI planner with guide, remove scoring, improve UX#1287

Merged
WilliamBerryiii merged 46 commits intomainfrom
feat/rai-planner-guide-alignment
Apr 23, 2026
Merged

feat(agents): align RAI planner with guide, remove scoring, improve UX#1287
WilliamBerryiii merged 46 commits intomainfrom
feat/rai-planner-guide-alignment

Conversation

@WilliamBerryiii
Copy link
Copy Markdown
Member

@WilliamBerryiii WilliamBerryiii commented Apr 3, 2026

Description

Implements Issue #1281: RAI Planner Updates — Guide Alignment, Scoring Removal, and UX Improvements.

The RAI Planner agent expands from a 5-phase to a 6-phase workflow, replacing numeric scoring with qualitative assessment, aligning terminology and structure with the Microsoft Responsible AI Impact Assessment Guide, and introducing artifact signing infrastructure. Additionally, this PR establishes a config-driven AI artifact validation pipeline for enforcing footer and disclaimer standards across instruction files. 46 files changed across agent definitions, instructions, prompts, documentation, plugins, collection metadata, config, CI workflows, and scripts.

Key Changes

  • Phase Restructuring (5→6): New Phase 2 (Sensitive Uses Assessment) inserts binary trigger screening with T1/T2/T3 triggers, a restricted-use gate, and depth tier assignment (Basic/Standard/Comprehensive). Subsequent phases renumbered.
  • Scoring Model Replacement: Removed 0–100 weighted composite scoring and likelihood-impact matrices. Replaced with concern levels (Low/Moderate/High), a review quality checklist, maturity indicators, and audience adaptation profiles. Renamed rai-scorecard.mdrai-review-summary.md.
  • Standard Alignment: Replaced "Microsoft RAI Standard v2" references with the "Microsoft Responsible AI Impact Assessment Guide" as the primary principle framework, restructuring from a Goal/Requirement/Tool hierarchy to Guide Sections and Goals by Principle.
  • Security Model Updates: Adopted AI STRIDE extensions with eight AI element types and five trust boundaries. Unified threat ID format to T-RAI-{NNN}.
  • Artifact Signing: Added Sign-RaiArtifacts.ps1 for SHA-256 manifest generation with optional Sigstore cosign keyless signing, backed by 262-line Pester test suite. Installed cosign v3.0.5 in devcontainer.
  • Prompt UX: Added output preferences collection, facilitative language, and expanded context pre-scan to capture coaching and entry-mode prompts.
  • Documentation Accuracy: Updated all 9 RAI documentation pages to reflect phase restructuring, scoring removal, renamed artifacts, and updated terminology.
  • AI Artifact Validation Infrastructure: Added centralized YAML config files (.github/config/disclaimers.yml, .github/config/footer-with-review.yml) defining footer text, human review checkboxes, and tiered artifact classification with scope-aware glob patterns. Created Validate-AIArtifacts.ps1 (612 lines) for CI enforcement, a JSON Schema for config validation, a reusable GitHub Actions workflow (ai-artifact-validation.yml), and a 20-test Pester suite. Wired into pr-validation.yml and the lint:all npm chain.
  • Footer and Disclaimer Alignment: Added two-tier footer/disclaimer system to RAI planning and security instruction files, and corresponding documentation pages, per reviewer feedback.

Related Issue(s)

Closes #1281

Type of Change

Select all that apply:

Code & Documentation:

  • Bug fix (non-breaking change fixing an issue)
  • New feature (non-breaking change adding functionality)
  • Breaking change (fix or feature causing existing functionality to change)
  • Documentation update

Infrastructure & Configuration:

  • GitHub Actions workflow
  • Linting configuration (markdown, PowerShell, etc.)
  • Security configuration
  • DevContainer configuration
  • Dependency update

AI Artifacts:

  • Reviewed contribution with prompt-builder agent and addressed all feedback
  • Copilot instructions (.github/instructions/*.instructions.md)
  • Copilot prompt (.github/prompts/*.prompt.md)
  • Copilot agent (.github/agents/*.agent.md)
  • Copilot skill (.github/skills/*/SKILL.md)

> Note for AI Artifact Contributors:
>
> * Agents: Research, indexing/referencing other project (using standard VS Code GitHub Copilot/MCP tools), planning, and general implementation agents likely already exist. Review .github/agents/ before creating new ones.
> * Skills: Must include both bash and PowerShell scripts. See Skills.
> * Model Versions: Only contributions targeting the latest Anthropic and OpenAI models will be accepted. Older model versions (e.g., GPT-3.5, Claude 3) will be rejected.
> * See Agents Not Accepted and Model Version Requirements.

Other:

  • Script/automation (.ps1, .sh, .py)
  • Other (please describe):

Sample Prompts (for AI Artifact Contributions)

User Request:

Invoke RAI Planner in the VS Code chat pane and use one of three entry prompts:

  • /rai-capture — Start a new conversational RAI assessment from scratch
  • /rai-plan-from-prd — Generate an RAI plan from an existing PRD
  • /rai-plan-from-security-plan — Generate an RAI plan from an existing security plan

Execution Flow:

  1. Phase 1 (Discovery): Collects system context, stakeholders, AI/ML components, and user output preferences.
  2. Phase 2 (Sensitive Uses): Screens T1–T3 binary triggers, evaluates restricted-use gates, assigns depth tier (Basic/Standard/Comprehensive).
  3. Phase 3 (Standards Mapping): Aligns with the Microsoft Responsible AI Impact Assessment Guide and NIST AI RMF subcategories.
  4. Phase 4 (Security Model): Runs AI STRIDE analysis with eight element types and five trust boundaries; emits T-RAI-{NNN} threats.
  5. Phase 5 (Impact Assessment): Evaluates concern levels (Low/Moderate/High) across fairness, reliability, privacy, inclusiveness, transparency, and accountability.
  6. Phase 6 (Backlog Handoff): Produces rai-review-summary.md, dual-format backlog (ADO + GitHub), and optional signed artifact manifest.

Output Artifacts:

  • .copilot-tracking/rai-plans/{session}/state.json — Session state with phase progression
  • .copilot-tracking/rai-plans/{session}/rai-review-summary.md — Qualitative review summary (replaces scored scorecard)
  • .copilot-tracking/rai-plans/{session}/rai-backlog-*.md — Dual-format work item backlog
  • .copilot-tracking/rai-plans/{session}/rai-manifest.json — SHA-256 artifact manifest (optional signing)

Success Indicators:

  • Phase 2 trigger screening produces clear pass/flag verdicts for each T1–T3 trigger
  • Concern levels replace numeric scores throughout (no 0–100 values)
  • All file references use rai-review-summary.md instead of rai-scorecard.md
  • Threat IDs follow T-RAI-{NNN} format consistently
  • Depth tier assignment drives subsequent phase depth

Testing

Validation Status
Sandbox run 002 (full 6-phase RAI assessment) ✅ Pass
Plugin regeneration (npm run plugin:generate) — 14 plugins ✅ Pass (0 lint errors)
Documentation accuracy audit — 21 replacements across 7 doc files ✅ Pass
Frontmatter validation sweep ✅ Pass
Document name consistency sweep ✅ Pass
Standards reference audit — 26 replacements across 8 files ✅ Pass
Terminology grep sweeps (orphaned old references) ✅ Pass (no orphans found)
AI artifact validation — Pester tests (20 tests) ✅ Pass
AI artifact validation — npm run lint:ai-artifacts ✅ Pass (3 files with legitimate advisory warnings)

> Note: Manual testing was performed along side automated validation and sandbox evaluation as the primary verification methods.

GHCP Artifact Maturity

> [!WARNING]
> This PR includes experimental GHCP artifacts that may have breaking changes.

File Type Maturity Notes
.github/agents/rai-planning/rai-planner.agent.md Agent ⚠️ experimental Pre-release only
.github/prompts/rai-planning/rai-capture.prompt.md Prompt ⚠️ experimental Pre-release only
.github/prompts/rai-planning/rai-plan-from-prd.prompt.md Prompt ⚠️ experimental Pre-release only
.github/prompts/rai-planning/rai-plan-from-security-plan.prompt.md Prompt ⚠️ experimental Pre-release only
.github/instructions/rai-planning/rai-identity.instructions.md Instruction ⚠️ experimental Pre-release only
.github/instructions/rai-planning/rai-standards.instructions.md Instruction ⚠️ experimental Pre-release only
.github/instructions/rai-planning/rai-security-model.instructions.md Instruction ⚠️ experimental Pre-release only
.github/instructions/rai-planning/rai-impact-assessment.instructions.md Instruction ⚠️ experimental Pre-release only
.github/instructions/rai-planning/rai-backlog-handoff.instructions.md Instruction ⚠️ experimental Pre-release only
.github/instructions/rai-planning/rai-capture-coaching.instructions.md Instruction ⚠️ experimental Pre-release only
.github/instructions/rai-planning/rai-sensitive-uses-triggers.instructions.md Instruction ⚠️ experimental Pre-release only

GHCP Maturity Acknowledgment

  • I acknowledge this PR includes non-stable GHCP artifacts
  • Non-stable artifacts are intentional for this change

Checklist

Required Checks

  • Documentation is updated (if applicable)
  • Files follow existing naming conventions
  • Changes are backwards compatible (if applicable) (N/A — experimental GHCP artifacts; phase restructuring is intentional)
  • Tests added for new functionality (if applicable)

AI Artifact Contributions

  • Used /prompt-analyze to review contribution
  • Addressed all feedback from prompt-builder review
  • Verified contribution follows common standards and type-specific requirements

Required Automated Checks

The following validation commands must pass before merging:

  • Markdown linting: npm run lint:md
  • Spell checking: npm run spell-check
  • Frontmatter validation: npm run lint:frontmatter
  • Skill structure validation: npm run validate:skills
  • Link validation: npm run lint:md-links
  • PowerShell analysis: npm run lint:ps
  • AI artifact validation: npm run lint:ai-artifacts

> Repository template used: .github/PULL_REQUEST_TEMPLATE.md

- restructure Phase 2 into binary trigger assessment with T1/T2/T3 tiers
- replace likelihood-impact scoring with restricted-use gate framework
- adopt AI STRIDE extensions with eight AI element types in Phase 4
- unify threat IDs to T-RAI-{NNN} format across all phases
- add rai-sensitive-uses-triggers.instructions.md for Phase 2 depth
- update collection manifests, plugins, and documentation accuracy
- add Sign-RaiArtifacts.ps1 signing script with Pester tests

Closes #1281

🚀 - Generated by Copilot
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 3, 2026

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented Apr 3, 2026

Codecov Report

❌ Patch coverage is 86.95652% with 33 lines in your changes missing coverage. Please review.
✅ Project coverage is 87.62%. Comparing base (ee3badf) to head (34e95f9).

Files with missing lines Patch % Lines
scripts/linting/Validate-PlannerArtifacts.ps1 84.97% 29 Missing ⚠️
scripts/security/Sign-PlannerArtifacts.ps1 93.33% 4 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #1287      +/-   ##
==========================================
- Coverage   87.65%   87.62%   -0.03%     
==========================================
  Files          63       65       +2     
  Lines        9866    10119     +253     
==========================================
+ Hits         8648     8867     +219     
- Misses       1218     1252      +34     
Flag Coverage Δ
pester 85.00% <86.95%> (+0.05%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
scripts/security/Sign-PlannerArtifacts.ps1 93.33% <93.33%> (ø)
scripts/linting/Validate-PlannerArtifacts.ps1 84.97% <84.97%> (ø)

... and 1 file with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Comment thread .github/instructions/rai-planning/rai-identity.instructions.md
Comment thread .github/instructions/rai-planning/rai-identity.instructions.md
Copy link
Copy Markdown
Collaborator

@raymond-nassar raymond-nassar left a comment

Choose a reason for hiding this comment

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

First impressions on this draft PR:

The three-part disclaimer formulation exceeds the baseline requirement: (1) covers legal, compliance, and ethics; (2) frames all outputs as suggestions; (3) establishes organizational policy precedence.

Replacing numerical scores with qualitative concern levels and maturity indicators strengthens the disclaimer posture. Qualitative assessments naturally invite human judgment.

Look forward to seeing this in action.

Copy link
Copy Markdown
Collaborator

@raymond-nassar raymond-nassar left a comment

Choose a reason for hiding this comment

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

Files affected: All files containing the current disclaimer blockquote:

.github/agents/rai-planning/rai-planner.agent.md
.github/instructions/rai-planning/rai-identity.instructions.md (Session Start Display, Exit Point Reminder, State Creation)
.github/prompts/rai-planning/rai-capture.prompt.md
.github/prompts/rai-planning/rai-plan-from-prd.prompt.md
.github/prompts/rai-planning/rai-plan-from-security-plan.prompt.md

Current text:

This tool provides structured prompts and frameworks to support responsible AI planning. It is not a substitute for professional legal, compliance, or ethics review. All outputs are suggestions for human evaluation. Organizational RAI policies and applicable regulations take precedence.

Required text:

This agent is an assistive tool only. It does not provide legal, regulatory, or compliance advice and does not replace Responsible AI review boards, ethics committees, legal counsel, compliance teams, or other qualified human reviewers. The output consists of suggested actions and considerations to support a user's own internal review and decision‑making. All RAI assessments, sensitive use screenings, security models, and mitigation recommendations generated by this tool must be independently reviewed and validated by appropriate legal and compliance reviewers before use. Outputs from this tool do not constitute legal approval, compliance certification, or regulatory sign‑off.

Rationale:

The current disclaimer is too general and does not adequately protect against misinterpretation. The replacement version:

  • Enumerates specific professional roles the tool does not replace (RAI review boards, ethics committees, legal counsel, compliance teams)
  • Names the specific output types requiring validation (RAI assessments, sensitive use screenings, security models, mitigation recommendations)
  • Explicitly excludes certification and sign-off — preventing misinterpretation as approval
  • States a mandatory validation requirement ("must be independently reviewed and validated") rather than a softer suggestion
  • Addresses regulatory advice directly ("does not provide legal, regulatory, or compliance advice")
  • This change should be applied everywhere the current disclaimer blockquote appears, including the Session Start Display and Exit Point Reminder sections in rai-identity.instructions.md which govern when the disclaimer is shown to users.

- update disclaimer in rai-planner agent, three RAI prompt files, and rai-identity instructions
- regenerate plugin outputs and reformat doc tables

⚖️ - Generated by Copilot
@WilliamBerryiii
Copy link
Copy Markdown
Member Author

Files affected: All files containing the current disclaimer blockquote:

.github/agents/rai-planning/rai-planner.agent.md
.github/instructions/rai-planning/rai-identity.instructions.md (Session Start Display, Exit Point Reminder, State Creation)
.github/prompts/rai-planning/rai-capture.prompt.md
.github/prompts/rai-planning/rai-plan-from-prd.prompt.md
.github/prompts/rai-planning/rai-plan-from-security-plan.prompt.md

Current text:

This tool provides structured prompts and frameworks to support responsible AI planning. It is not a substitute for professional legal, compliance, or ethics review. All outputs are suggestions for human evaluation. Organizational RAI policies and applicable regulations take precedence.

Required text:

This agent is an assistive tool only. It does not provide legal, regulatory, or compliance advice and does not replace Responsible AI review boards, ethics committees, legal counsel, compliance teams, or other qualified human reviewers. The output consists of suggested actions and considerations to support a user's own internal review and decision‑making. All RAI assessments, sensitive use screenings, security models, and mitigation recommendations generated by this tool must be independently reviewed and validated by appropriate legal and compliance reviewers before use. Outputs from this tool do not constitute legal approval, compliance certification, or regulatory sign‑off.

Rationale:

The current disclaimer is too general and does not adequately protect against misinterpretation. The replacement version:

  • Enumerates specific professional roles the tool does not replace (RAI review boards, ethics committees, legal counsel, compliance teams)
  • Names the specific output types requiring validation (RAI assessments, sensitive use screenings, security models, mitigation recommendations)
  • Explicitly excludes certification and sign-off — preventing misinterpretation as approval
  • States a mandatory validation requirement ("must be independently reviewed and validated") rather than a softer suggestion
  • Addresses regulatory advice directly ("does not provide legal, regulatory, or compliance advice")
  • This change should be applied everywhere the current disclaimer blockquote appears, including the Session Start Display and Exit Point Reminder sections in rai-identity.instructions.md which govern when the disclaimer is shown to users.

This has been resolved.

@raymond-nassar
Copy link
Copy Markdown
Collaborator

The disclaimer text was strengthened across all existing locations in 21c2ee7 . However, the original gap I flagged remains: the Handoff Summary template (the stakeholder-facing deliverable generated in Phase 6 via rai-backlog-handoff.instructions.md) still does not include the disclaimer blockquote.

Given that the new verbatim text explicitly states "Outputs from this tool do not constitute legal approval, compliance certification, or regulatory sign‑off", the handoff document is arguably the most critical place for this disclaimer to appear, since it's the artifact most likely to be shared outside the immediate user session with review boards, legal, or leadership.

Suggested change: add between the handoff header metadata and the Work Item Summary.

@WilliamBerryiii WilliamBerryiii requested a review from mspuckit April 3, 2026 17:00
@WilliamBerryiii
Copy link
Copy Markdown
Member Author

The disclaimer text was strengthened across all existing locations in 21c2ee7 . However, the original gap I flagged remains: the Handoff Summary template (the stakeholder-facing deliverable generated in Phase 6 via rai-backlog-handoff.instructions.md) still does not include the disclaimer blockquote.

Given that the new verbatim text explicitly states "Outputs from this tool do not constitute legal approval, compliance certification, or regulatory sign‑off", the handoff document is arguably the most critical place for this disclaimer to appear, since it's the artifact most likely to be shared outside the immediate user session with review boards, legal, or leadership.

Suggested change: add between the handoff header metadata and the Work Item Summary.

Agree and I am addressing this now; but I am still trying to figure out how to do this tastefully. My main area of consideration here is that the handoff artifacts, in their "intended use" are to be persisted locally (not saying they WILL be, but as HVE Core is currently designed, the "intended use" is user specific local storage). Local artifacts, just like GHCP generating code or documentation generation are intended for human review.

As currently designed the agent receivers of these handoff artifacts (the backlog agents) must be operationalized by the user explicitly, the artifacts passed to them, and they are backed by 3 operational modalities:

  • Full: after human approval, execute all operations without pausing for confirmation
  • Partial (default): after human approval, pause for confirmation on destructive or high-risk mutations; proceed autonomously on safe operations
  • Manual: Pause for human confirmation on every mutating operation

All three operational modalities have multi-step human interaction requirements, and there is no masked workflows happening. The human is identifying and selecting a specific agent for execution, and any delegation (only available to subagents), only has the bounded context of the original agent's human request.

I think at the end of the day, the thing we really care about here from a system/agent operations perspective is to ensure that a human has reviewed the artifacts that are intended for other humans to consume. If we can agree on that, then I think the most important thing about AI generation attribution is to provide, as part of the disclaim footer, a markdown checkbox that offers, "has" or "has not" been reviewed by a human, with a default selection of "has not". This sends a much stronger signal, of attestation of review ... which is really what we are trying to set the behavioral outcome for. Consuming agents can also gate on this field ... as an added benefit.

WilliamBerryiii and others added 2 commits April 3, 2026 14:10
…system

- remove human review checkbox from agentic artifacts (Control Surface
  Catalog, Evidence Register) in impact assessment instructions
- remove superseded qualifier prose from RAI Review Summary template
  in backlog handoff instructions
- add Artifact Attribution and Review section to handoff pipeline docs
  with footer classification table
- add footer classification notes to Phase 5 and Phase 6 outputs in
  phase reference docs
- add conversational vs persisted disclaimer note to agent overview docs

📝 - Generated by Copilot
@github-actions github-actions Bot mentioned this pull request Apr 3, 2026
@WilliamBerryiii
Copy link
Copy Markdown
Member Author

Artifact Attribution and Review — Summary of Changes

Thank you for the thorough review, @raymond-nassar. We implemented a two-tier attribution system across the RAI planning artifact templates and added documentation to support the new conventions.

Tier 1: AI-Content Note

All persisted artifacts now include an AI-content note adapted from the Microsoft Learn per-article pattern:

Note — The author created this content with assistance from AI. All outputs should be reviewed and validated before use.

Tier 2: Full Disclaimer

The handoff summary — the primary stakeholder-facing deliverable — includes the complete verbatim disclaimer after the AI-content note and human review checkbox.

Human Review Checkbox

Human-facing artifacts include a review checkbox to track validation status:

  • Reviewed and validated by a human reviewer

Artifact Classification

Artifact AI-Content Note Human Review Checkbox Full Disclaimer
Control Surface Catalog
Evidence Register
RAI Tradeoffs
ADO Work Items
GitHub Issues
RAI Review Summary
Transparency Note Outline
Monitoring Summary
Handoff Summary
Compact Handoff Summary

Control Surface Catalog and Evidence Register are classified as agentic artifacts (consumed by later pipeline phases) and receive only the AI-content note. All other artifacts are human-facing and include the review checkbox.

Files Changed

Instruction files:

  • rai-impact-assessment.instructions.md — corrected footer placement on agentic artifacts
  • rai-backlog-handoff.instructions.md — removed superseded qualifier from RAI Review Summary

Documentation:

  • docs/agents/rai-planning/handoff-pipeline.md — new "Artifact Attribution and Review" section with footer classification table
  • docs/agents/rai-planning/phase-reference.md — footer classification notes in Phase 5 and Phase 6 outputs
  • docs/agents/rai-planning/agent-overview.md — note distinguishing conversational disclaimers from persisted artifact footers

- add centralized config files for disclaimers and footers with human review
- add JSON schema for config file validation
- add Validate-AIArtifacts.ps1 with scope-filtered artifact classification
- add Pester tests (20 passing) for all validation functions
- add ai-artifact-validation.yml reusable workflow gated in pr-validation
- add lint:ai-artifacts and validate:ai-artifacts npm scripts

🔧 - Generated by Copilot
@WilliamBerryiii
Copy link
Copy Markdown
Member Author

AI Artifact Validation Infrastructure — Update Summary

This latest commit (c0396f45) adds a config-driven CI validation pipeline for enforcing footer and disclaimer standards across AI artifact files (instructions, agents, prompts, skills).

What was added

  • Centralized config files.github/config/disclaimers.yml and .github/config/footer-with-review.yml define the canonical footer text, human review checkbox, and tiered artifact classification with scope-aware glob patterns. These are the single source of truth for what text is required and where.
  • Validation scriptscripts/linting/Validate-AIArtifacts.ps1 (612 lines) classifies files into tiers (agentic, human-facing, human-facing-with-disclaimer), checks for required footers and disclaimers, and reports missing content with file paths and line-level detail.
  • JSON Schemascripts/linting/schemas/ai-artifact-config.schema.json validates the structure of both YAML config files.
  • CI workflow.github/workflows/ai-artifact-validation.yml (reusable, with soft-fail input) wired into pr-validation.yml as a gating check.
  • Pester test suitescripts/tests/linting/Validate-AIArtifacts.Tests.ps1 with 20 tests covering config loading, footer matching, scope filtering, artifact reference discovery, and end-to-end compliance.
  • npm scriptslint:ai-artifacts (gating) and validate:ai-artifacts (advisory) added; lint:all chain updated.

Expansion plans

The current scope filter targets rai-planning and security instruction files — the two areas where footers and disclaimers were added in this PR. The infrastructure is designed to expand incrementally:

  1. Add new scopes — When other focus areas (e.g., design-thinking, ado, coding-standards) adopt footers, add their glob patterns to the scope arrays in footer-with-review.yml. No script changes needed.
  2. Add new disclaimer sets — New disclaimer text blocks can be added to disclaimers.yml with their own applies-to patterns. The validation script already supports multiple disclaimer definitions.
  3. Add new tiers — The three-tier classification (agentic → human-facing → human-facing-with-disclaimer) can be extended by adding new entries to the config YAML and schema.
  4. Cross-artifact-type validation — The script already handles .instructions.md, .agent.md, .prompt.md, and SKILL.md files. Expanding scope patterns is sufficient to cover new directories.

The goal is for each focus area to opt in by adding its scope patterns to the config files — keeping validation centralized while allowing incremental adoption across the codebase.

🔧 - Generated by Copilot

@WilliamBerryiii
Copy link
Copy Markdown
Member Author

Correction to previous comment

The scope in footer-with-review.yml has been narrowed to rai-planning only. The previous comment incorrectly stated security instruction files were in scope — no security files were modified in this PR, and the security scope patterns have been removed from the config.

Updated scope: .github/instructions/rai-planning/** only.

Updated expansion plan: When other focus areas (e.g., security, design-thinking, ado, coding-standards) adopt footers, add their glob patterns to the scope arrays in footer-with-review.yml. No script changes needed — each area opts in by adding its scope patterns to the config files.

Validation results after fix: 2 files / 7 issues (down from 3 files / 9 issues), all within rai-planning.

🔧 - Generated by Copilot

WilliamBerryiii and others added 4 commits April 3, 2026 16:14
…iling newline

Security instruction files were not modified in this PR. Remove
.github/instructions/security/** scope patterns from footer-with-review.yml
to avoid false positive validation warnings. Fix missing trailing newline
in package.json.

🔧 - Generated by Copilot
- switch Find-ArtifactReferences from content-based to filename-based matching
- update Pester tests for filename-based artifact matching logic
- fix BOM encoding and empty catch blocks for PSScriptAnalyzer
- update Docusaurus collection card counts for rai-planning
- auto-fix markdown table formatting in handoff-pipeline

🔧 - Generated by Copilot
… consistency

- prettify tables in 5 rai-planning instruction files using LF-normalized input
- resolves CRLF/LF formatting divergence between Windows and Linux CI

🎨 - Generated by Copilot
Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

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

Advisory review, this PR is from a maintainer. Findings are informational only.


Review Summary

This is a substantial, well-structured PR that delivers the RAI Planner redesign described in #1281 alongside a new AI artifact validation pipeline. The implementation quality is high: scripts follow PowerShell and Bash conventions, the new CI workflow is properly permission-scoped with pinned SHA dependencies, and the devcontainer cosign installation includes SHA verification. The testing table confirms all automated checks passed.

The findings below are template compliance and minor quality items.


Issue Alignment

✅ The PR addresses all acceptance criteria from #1281 (standards alignment, disclaimer text, UX improvements, output preferences, phase transitions). The implementation goes substantially beyond the 11-file scope described in the issue — 61 files are changed, including new CI infrastructure, scripts, devcontainer tooling, documentation, plugins, and collections.

⚠️ Scope expansion vs. issue scope: Issue #1281 described "11 files across .github/agents/rai-planning/, .github/instructions/rai-planning/, and .github/prompts/rai-planning/." The PR adds an entirely new AI artifact validation pipeline, artifact signing infrastructure, DevContainer tooling, and regenerates all 14 plugins. This is well-intentioned and well-documented, but represents significant undisclosed scope growth relative to the linked issue. Future large feature additions may benefit from a separate issue tracking the infrastructure work so reviewers and the changelog can reference it independently.


PR Template Compliance

⚠️ Security Considerations section absent: The PR template (.github/PULL_REQUEST_TEMPLATE.md) includes a required Security Considerations section with three checkboxes. This section is entirely missing from the PR description:

## Security Considerations
* [ ] This PR does not contain any sensitive or NDA information
* [ ] Any new dependencies have been reviewed for security issues
* [ ] Security-related scripts follow the principle of least privilege

This is especially relevant here since the PR adds scripts/security/Sign-RaiArtifacts.ps1, scripts/linting/Validate-AIArtifacts.ps1, and installs cosign in both the devcontainer and the Copilot coding agent environment.

⚠️ GHCP Maturity Acknowledgment checkboxes unchecked: The PR description includes the GHCP Maturity section but both acknowledgment checkboxes remain unchecked:

  • [ ] I acknowledge this PR includes non-stable GHCP artifacts
  • [ ] Non-stable artifacts are intentional for this change

⚠️ AI Artifact Contributions checklist unchecked: All three items under ### AI Artifact Contributions are unchecked. These are listed as required checks for AI artifact contributions:

  • [ ] Used /prompt-analyze to review contribution
  • [ ] Addressed all feedback from prompt-builder review
  • [ ] Verified contribution follows common standards and type-specific requirements

⚠️ Required Automated Checks template mismatch: The PR's checklist omits two commands present in the current template and adds one that isn't:

  • Missing from PR checklist: npm run plugin:generate, npm run docs:test
  • Present in PR checklist but not in template: npm run lint:ai-artifacts

The testing table confirms plugin:generate was run and passed — the checklist just doesn't reflect it. Consider updating the PR description to align the Required Automated Checks with the current template, and (separately) the template itself may need updating to include npm run lint:ai-artifacts now that it has been added to lint:all.


GHCP Maturity Table Discrepancy

⚠️ rai-sensitive-uses-triggers.instructions.md is listed in the GHCP Artifact Maturity table but does not appear in the diff. The diff shows rai-risk-classification.instructions.md as added instead. If rai-sensitive-uses-triggers.instructions.md is an existing file not modified in this PR, it should be removed from the maturity table. If it was renamed, the rename may not be reflected correctly in the table.


PR Size

i️ 61 files were changed. The automated review guideline recommends splitting PRs larger than 50 files to maintain thorough reviewability. For a maintainer-driven feature PR like this, the size is understandable given the coordinated nature of the changes, but it's worth noting for future reference.


Code Quality

Sign-RaiArtifacts.ps1 follows all PowerShell conventions: copyright header, #Requires -Version 7.0, comment-based help, [CmdletBinding()], typed parameters, $ErrorActionPreference = 'Stop', invocation guard, and region blocks.

Validate-AIArtifacts.ps1 follows the same conventions consistently.

on-create.sh cosign installation includes SHA verification consistent with the existing tool installation patterns.

copilot-setup-steps.yml cosign step mirrors the devcontainer installation with SHA verification.

ai-artifact-validation.yml is properly structured as a reusable workflow_call workflow with explicit permissions: contents: read at both workflow and job level, pinned SHA for actions/checkout, and persist-credentials: false.

💡 One inline comment was posted on ai-artifact-validation.yml regarding the unpinned PowerShell-Yaml module version in CI.


Action Items

  1. Add the Security Considerations section back to the PR description and check the applicable boxes.
  2. Check the GHCP Maturity Acknowledgment checkboxes.
  3. Check or address the AI Artifact Contributions checklist items.
  4. Align the Required Automated Checks checklist with the current template.
  5. Resolve the rai-sensitive-uses-triggers.instructions.md entry in the GHCP Maturity table.
  6. Consider pinning the PowerShell-Yaml module version in ai-artifact-validation.yml (and optionally in copilot-setup-steps.yml and on-create.sh for consistency).

Generated by PR Review for issue #1287 · ● 1.8M

Comment thread .github/workflows/ai-artifact-validation.yml Outdated
WilliamBerryiii added a commit that referenced this pull request Apr 18, 2026
- pin all workflows installing PowerShell-Yaml: ai-artifact-validation, copilot-setup-steps, extension-package, frontmatter-validation, msdate-freshness-check, pester-tests, plugin-package, plugin-validation, release-prerelease-pr, release-stable
- pin devcontainer setup: .devcontainer/scripts/on-create.sh
- pin docs and error messages: extension/PACKAGING.md, scripts/plugins/README.md, scripts/collections/README.md, Invoke-MsDateFreshnessCheck.ps1, FrontmatterValidation.psm1
- addresses PR #1287 review comment r3104011635

🔒 - Generated by Copilot
Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

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

Advisory review, this PR is from a maintainer. Findings are informational only.


PR Review — feat/rai-planner-guide-alignment

⚠️ PR Size Exceeds Reviewable Threshold

This PR contains 61 changed files, which exceeds the 50-file automated review threshold. A thorough automated review cannot be completed. The author is encouraged to consider splitting future large PRs into smaller, focused units to improve reviewability and reduce merge risk.


📋 Issue Alignment

Issue: #1281 — Align RAI Planner with Impact Assessment Guide and improve UX

✅ The PR closes #1281 and addresses the stated goals: guide alignment, UX improvements, disclaimer/attribution, and output preferences.

⚠️ Scope expansion noted: Issue #1281 scoped the work to 11 files across the rai-planning directories. This PR spans 61 files including CI workflows, scripts, plugins, collection metadata, devcontainer config, and a new AI artifact validation pipeline. While the PR description explains these additions clearly, the issue did not capture this broader scope. For transparency, consider updating issue #1281 or creating a follow-on issue to track the AI artifact validation work as a separate deliverable.


📝 PR Template Compliance

✅ Description is well-filled with detailed context, phase descriptions, output artifacts, and success indicators.

✅ Related Issue(s): Closes #1281 — valid reference.

✅ Type of Change: Multiple applicable boxes checked (New feature, Documentation update, GitHub Actions workflow, Security configuration, DevContainer configuration, Dependency update, Copilot instructions/prompts/agents, Script/automation).

GHCP Maturity Acknowledgment checkboxes are unchecked. The PR correctly identifies 11 experimental GHCP artifacts and includes the maturity table, but neither acknowledgment checkbox is checked:

  • [ ] I acknowledge this PR includes non-stable GHCP artifacts
  • [ ] Non-stable artifacts are intentional for this change

These should be checked before merging.

AI Artifact Contributions checklist is unchecked. All three items remain unchecked:

  • [ ] Used /prompt-analyze to review contribution
  • [ ] Addressed all feedback from prompt-builder review
  • [ ] Verified contribution follows common standards and type-specific requirements

Per the PR template notes, AI Artifact Contributors are expected to complete the prompt-builder review process. If this was intentionally skipped, add a note explaining why.

Required Automated Checks checklist is unchecked. All 7 validation commands (lint:md, spell-check, lint:frontmatter, validate:skills, lint:md-links, lint:ps, lint:ai-artifacts) remain unchecked in the checklist. The Testing table shows several validations passed, but the checklist items should be checked to confirm each specific command ran successfully.


🔍 Code Quality and Security (Partial — size limit reached)

Due to the 61-file size, a full code quality review was not performed. The items flagged above are based on PR metadata and description only.


📋 Action Items

  1. ✅ Check the two GHCP Maturity Acknowledgment boxes.
  2. ✅ Complete or explain the AI Artifact Contributions checklist items.
  3. ✅ Check the Required Automated Checks boxes after confirming each command passes.
  4. 💡 Consider whether the AI artifact validation pipeline work warrants its own issue/PR for traceability.

Generated by PR Review for issue #1287 · ● 675.6K

Copy link
Copy Markdown
Contributor

@rezatnoMsirhC rezatnoMsirhC left a comment

Choose a reason for hiding this comment

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

Good PR overall. Phase restructuring, scoring removal, guide alignment, and cosign infrastructure are well executed. Two items need resolution before merge: the indicator method inconsistency in rai-identity.instructions.md and the AI artifact validation scope mismatch that makes the CI job a no-op. Also, the GHCP Maturity table in the PR description references rai-sensitive-uses-triggers.instructions.md but that file was never added; the correct name is rai-risk-classification.instructions.md.

Comment thread .github/instructions/rai-planning/rai-identity.instructions.md
Comment thread .github/config/footer-with-review.yml
Comment thread scripts/security/Sign-PlannerArtifacts.ps1
Comment thread scripts/linting/Validate-PlannerArtifacts.ps1
- correct rai-identity indicator types (categorical, continuous)
- document footer-with-review.yml artifact scope for CI
- resolve Sign-RaiArtifacts artifact dir from git root
- hoist PowerShell-Yaml import in Validate-AIArtifacts

🔒 - Generated by Copilot
WilliamBerryiii added a commit that referenced this pull request Apr 23, 2026
# Pull Request

## Description

Pin the `PowerShell-Yaml` PowerShell Gallery module to `0.4.7` at every
install site across the repository so that workflows, the devcontainer,
and contributor environments install a deterministic version instead of
silently floating to whatever the gallery currently serves. A breaking
upstream release would otherwise surface as red CI with no obvious
cause.

The change applies the same pin pattern (`Install-Module -Name
PowerShell-Yaml -RequiredVersion 0.4.7 -Force -Scope CurrentUser`) to:

* `.devcontainer/scripts/on-create.sh`
* All ten workflows under `.github/workflows/` that install the module
(including a re-added `.github/workflows/ai-artifact-validation.yml`)
* Documentation snippets in
[extension/PACKAGING.md](extension/PACKAGING.md),
[scripts/collections/README.md](scripts/collections/README.md), and
[scripts/plugins/README.md](scripts/plugins/README.md)
* Diagnostic strings in
[scripts/linting/Invoke-MsDateFreshnessCheck.ps1](scripts/linting/Invoke-MsDateFreshnessCheck.ps1)
and
[scripts/linting/Modules/FrontmatterValidation.psm1](scripts/linting/Modules/FrontmatterValidation.psm1)

Surfaced from PR #1287 review comment
[`r3104011635`](#1287 (comment)).

## Related Issue(s)

Closes #1377

Related: #1287 (RAI Planner alignment update — origin of the review
feedback)

## Type of Change

**Code & Documentation:**

* [x] Bug fix (non-breaking change fixing an issue)
* [ ] New feature (non-breaking change adding functionality)
* [ ] Breaking change (fix or feature causing existing functionality to
change)
* [ ] Documentation update

**Infrastructure & Configuration:**

* [x] GitHub Actions workflow
* [ ] Linting configuration (markdown, PowerShell, etc.)
* [ ] Security configuration
* [x] DevContainer configuration
* [ ] Dependency update

**AI Artifacts:**

* [ ] Reviewed contribution with `prompt-builder` agent and addressed
all feedback
* [ ] Copilot instructions (`.github/instructions/*.instructions.md`)
* [ ] Copilot prompt (`.github/prompts/*.prompt.md`)
* [ ] Copilot agent (`.github/agents/*.agent.md`)
* [ ] Copilot skill (`.github/skills/*/SKILL.md`)

**Other:**

* [x] Script/automation (`.ps1`, `.sh`, `.py`)
* [ ] Other (please describe):

## Testing

* Verified diff manually: every previously unpinned `Install-Module
PowerShell-Yaml` site now passes `-RequiredVersion 0.4.7`, and
idempotency guards (`Get-Module -ListAvailable | Where-Object Version
-eq '0.4.7'` / `if (-not (Get-Module ...))`) were preserved or added so
reruns stay fast.
* Required automated checks listed below.

## Checklist

### Required Checks

* [x] Documentation is updated (if applicable)
* [x] Files follow existing naming conventions
* [x] Changes are backwards compatible (if applicable)
* [ ] Tests added for new functionality (if applicable)

### Required Automated Checks

* [x] Markdown linting: `npm run lint:md`
* [x] Spell checking: `npm run spell-check`
* [ ] Frontmatter validation: `npm run lint:frontmatter`
* [ ] Skill structure validation: `npm run validate:skills`
* [ ] Link validation: `npm run lint:md-links`
* [x] PowerShell analysis: `npm run lint:ps`
* [ ] Plugin freshness: `npm run plugin:generate`
* [ ] Docusaurus tests: `npm run docs:test`

## Security Considerations

* [x] This PR does not contain any sensitive or NDA information
* [x] Any new dependencies have been reviewed for security issues
* [x] Security-related scripts follow the principle of least privilege

Pinning a specific module version reduces supply-chain risk by removing
implicit trust in whatever version the gallery serves at install time.
No new dependencies are introduced; the pinned version (`0.4.7`) is
already in active use.

## Additional Notes

* `.github/workflows/ai-artifact-validation.yml` is added back as part
of this change so the pin can land at every install site uniformly. A
merge conflict against `main` is anticipated for this file and will be
resolved in a follow-up.
* Renovate already monitors the `powershell-galleryV2` ecosystem, so it
can propose future bumps once a pinned version is in place. Dependabot
does not yet have a PowerShell Gallery datasource.
- re-apply planner rename for validate and sign scripts
- sync ai-artifact-validation workflow with renamed planner script
- merge cspell, collection, and package.json updates
- regenerate plugin READMEs

🔀 - Generated by Copilot
- delete collections/rai-planning.collection.{yml,md}

- remove plugins/rai-planning and extension rai-planning artifacts

- regenerate marketplace manifest (13 plugins)

🧹 - Generated by Copilot
@WilliamBerryiii
Copy link
Copy Markdown
Member Author

Update: main merge + standalone rai-planning collection removed

Merge from main (4fbda7c)

Merged main into feat/rai-planner-guide-alignment, which re-applied the planner rename:

  • scripts/linting/Validate-AIArtifacts.ps1scripts/linting/Validate-PlannerArtifacts.ps1
  • .github/workflows/ai-artifact-validation.yml updated to invoke the renamed script
  • Plus cspell, collection, and package.json updates and regenerated plugin READMEs

Collection change (418d8e2)

Removed the standalone rai-planning collection now that its content lives in the planner guide alignment work:

  • Deleted collections/rai-planning.collection.{yml,md}
  • Removed plugins/rai-planning/ (18 files) and extension/{package,README}.rai-planning.{json,md}
  • Regenerated .github/plugin/marketplace.json (now 13 plugins, was 14)

Validation

  • npm run lint:ps
  • npm run lint:collections-metadata
  • npm run test:ps ✅ (Result: Passed, 65/67, 0 failed)

Follow-up

The broader ai-artifactplanner-artifact terminology rename across the workflow filename, job/artifact names, npm scripts, and logs/ai-artifact-results.json is not part of this PR — tracked separately in the backlog.

🧹 - Generated by Copilot

Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

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

Advisory review, this PR is from a maintainer. Findings are informational only.


Overview

This PR significantly expands the RAI Planner system with a 5→6 phase restructuring, scoring model replacement, artifact signing infrastructure, and a new config-driven AI artifact validation pipeline. The implementation is thorough and well-documented. Three advisory findings are noted below.


Issue Alignment

Issue #1281 described a scope of 11 files across the rai-planning directories. This PR touches 77 files across agents, instructions, prompts, documentation, plugins, collection manifests, CI workflows, scripts, and the devcontainer. The expanded scope includes work that was not mentioned in the issue — specifically:

  • Deletion of the standalone rai-planning collection (collections/rai-planning.collection.yml / .md)
  • New CI validation workflow (ai-artifact-validation.yml)
  • Artifact signing script and Pester test suite
  • cosign installation in the devcontainer
  • Changes to security-planner.agent.md and sssc-planner.agent.md

The issue acceptance criteria remain unchecked in the issue itself (though the PR description confirms they were satisfied). Consider closing the issue or updating acceptance criteria as the implementation has clearly moved well beyond the original 11-file scope.

The deletion of collections/rai-planning.collection.yml is a potentially breaking change for users who had the standalone rai-planning collection installed separately. The PR marks no checkboxes for "Breaking change," though this is arguable given the experimental maturity of the artifacts.


PR Template Compliance

Three sets of checkboxes in the PR template are unchecked and should be addressed before merge:

  1. GHCP Maturity Acknowledgment — Both acknowledgment boxes under "GHCP Artifact Maturity" are unchecked ([ ] I acknowledge this PR includes non-stable GHCP artifacts / [ ] Non-stable artifacts are intentional for this change).
  2. AI Artifact Contributions checklist — All three items (/prompt-analyze, prompt-builder review, and standards verification) are unchecked.
  3. Required Automated Checks — All seven validation commands (lint:md, spell-check, lint:frontmatter, validate:skills, lint:md-links, lint:ps, lint:ai-artifacts) appear unchecked in the template, though the Testing table confirms they were run and passed.

Additionally, "Linting configuration" was not checked under Infrastructure & Configuration, though Validate-PlannerArtifacts.ps1 is wired into lint:all and constitutes a new linter.


Coding Standards

See the two inline comments for:

  • scripts/security/Sign-PlannerArtifacts.ps1 line 31 — stale .EXAMPLE path referencing the pre-rename filename Sign-RaiArtifacts.ps1.
  • scripts/linting/Validate-PlannerArtifacts.ps1 line 207Test-DisclaimerInContent is an exact duplicate of Test-FooterInContent; consider consolidating into a single helper.

Code Quality

  • footer-with-review.yml scope mismatch — See inline comment on line 35–50. The CI workflow enforcing this config will always report 0 findings because instruction files never contain the generated footers. The enforcement gap is documented in the YAML but could mislead future maintainers. Consider a more explicit comment in the CI workflow or a fixture-based test.
  • PR size (77 files) — While the changes are logically coherent, the PR spans many concern areas (RAI planner restructure, artifact signing, validation infra, collection reorganization). Future maintainers may find it easier to bisect issues if these are separated by concern.

Summary

No blocking issues. The stale example path and duplicate function are minor clean-up items; the template checkbox state and scope mismatch are housekeeping notes. The implementation quality is high across the new scripts, workflows, and instruction files.

Generated by PR Review for issue #1287 · ● 3.8M

Comment thread scripts/linting/Validate-PlannerArtifacts.ps1
Comment thread scripts/security/Sign-PlannerArtifacts.ps1 Outdated
Comment thread .github/config/footer-with-review.yml
Copy link
Copy Markdown
Collaborator

@mspuckit mspuckit left a comment

Choose a reason for hiding this comment

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

Run this through the PR Review and did my own quick review. Things look great. Thank you for removing sensitive and restricted use cases from the RAI planner and including the disclaimers. No easy task and appreciate the effort.

…n deletion

Also updates SHA staleness test expectations from 4 to 2 release-latest fetches to match reduced tool inventory.
Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

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

Advisory review — this PR is from a maintainer. Findings are informational only.


Review Overview

This is a substantial, well-described PR that meaningfully expands the RAI Planner from a 5-phase to a 6-phase workflow, replaces numeric scoring with qualitative concern levels, and establishes a config-driven AI artifact validation pipeline. The implementation quality is generally high: SHA-pinned workflows, verified binary downloads, thorough Pester test coverage, and clear config-driven validation architecture. Findings below are informational for the author's awareness.


Issue Alignment

Linked issue: Closes #1281

The core issue acceptance criteria are addressed (phase restructuring, guide alignment, disclaimer/attribution, UX improvements, output customization). However, issue #1281 scoped the work to 11 files across three directories. This PR changes 80 files spanning agents, instructions, prompts, CI workflows, devcontainer config, collection manifests, plugins, documentation, scripts, and test suites.

The scope expansion is well-justified and thoroughly documented in the PR description, but the original issue has not been updated to reflect the broader intent. Consider updating issue #1281 to capture the full scope of what shipped, or noting this explicitly in the PR.


PR Template Compliance

Several required template sections are incomplete:

Security Considerations section missing — The template includes a Security Considerations section with three checkboxes. This entire section is absent from the PR body:

  • This PR does not contain any sensitive or NDA information
  • Any new dependencies have been reviewed for security issues
  • Security-related scripts follow the principle of least privilege

Given that this PR adds Sign-PlannerArtifacts.ps1 (handles cosign keyless signing), installs cosign in devcontainer and CI, and adds config files under .github/config/, this section is directly applicable and should be completed.

GHCP Maturity Acknowledgment checkboxes unchecked — The PR correctly identifies 11 experimental artifacts in the maturity table, but neither acknowledgment checkbox is checked:

  • I acknowledge this PR includes non-stable GHCP artifacts
  • Non-stable artifacts are intentional for this change

AI Artifact Contributions checklist unchecked — All three items remain unchecked despite the PR containing agents, prompts, and instructions:

  • Used /prompt-analyze to review contribution
  • Addressed all feedback from prompt-builder review
  • Verified contribution follows common standards and type-specific requirements

Required Automated Checks unchecked — The testing table shows strong validation results, but the checklist checkboxes themselves are all unchecked. Additionally, two standard template checks (Plugin freshness: npm run plugin:generate and Docusaurus tests: npm run docs:test) have been replaced with AI artifact validation: npm run lint:ai-artifacts. The substitution is reasonable given the PR's focus, but deviates from the standard template.


Coding Standards

Applicable instruction files reviewed:

  • .github/instructions/workflows.instructions.md (GitHub Actions conventions)
  • .github/instructions/coding-standards/powershell.instructions.md (PowerShell conventions)
  • .github/instructions/coding-standards/powershell-tests.instructions.md (Pester conventions)
  • .github/instructions/coding-standards/bash.instructions.md (Bash conventions)

GitHub Actions workflows: ✅ All actions use full SHA pins with semantic version comments; explicit permissions: blocks are declared at both workflow and job level; persist-credentials: false is set where applicable; reusable workflows follow the established pattern.

PowerShell scripts: Mostly ✅. Validate-PlannerArtifacts.ps1 follows all conventions (copyright header, #Requires, comment-based help, [CmdletBinding()], $ErrorActionPreference = 'Stop', #region/#endregion, invocation guard). Sign-PlannerArtifacts.ps1 follows the same pattern with one doc bug (see inline comment on line 32).

Pester tests: ✅ Files follow #Requires -Modules Pester before copyright header; BeforeAll dot-sources scripts; -Tag 'Unit' present; $TestDrive used for isolation.

Bash (on-create.sh):set -euo pipefail; copyright header; checksum verification before installation; consistent error message format.


Code Quality

Two observations (see inline comments for line-level detail):

  1. scripts/security/Sign-PlannerArtifacts.ps1 line 32 — First .EXAMPLE entry references the old script name Sign-RaiArtifacts.ps1. The second and third examples use the correct Sign-PlannerArtifacts.ps1. Simple one-line fix.

  2. .github/workflows/copilot-setup-steps.yml — The cosign step (new in this PR) uses a defensive if ! guard for checksum verification with explicit exit 1. The pre-existing actionlint step uses an unguarded inline form. The cosign pattern is strictly safer; a follow-up to align actionlint would improve consistency.


Summary

Category Verdict
Issue alignment ✅ Core criteria met; scope expansion well-documented but issue not updated
PR template compliance ⚠️ Security Considerations missing; several checkboxes unchecked
Coding standards ✅ Workflows, PowerShell, Pester, and Bash all follow conventions
Code quality ⚠️ One stale script name in doc comment; one minor verification inconsistency

No blocking issues identified. The two items requiring author action before merge are the missing Security Considerations section and the unchecked GHCP Maturity Acknowledgment checkboxes.

Generated by PR Review for issue #1287 · ● 3.4M

Comment thread .github/workflows/copilot-setup-steps.yml
Comment thread scripts/security/Sign-PlannerArtifacts.ps1
@WilliamBerryiii WilliamBerryiii merged commit b794ff6 into main Apr 23, 2026
58 of 59 checks passed
Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

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

Advisory review, this PR is from a maintainer. Findings are informational only.


PR Review: feat(agents): align RAI planner with guide, remove scoring, improve UX

PR #1287 · 80 files changed · Author: WilliamBerryiii (MEMBER)

This is a broad, well-motivated PR that ships a cohesive set of improvements to the RAI planning agent, adds AI artifact signing and validation infrastructure, and cleans up associated collection manifests and plugin outputs. The implementation quality is generally high. The notes below are informational and do not block merging.


📋 Issue Alignment

Linked issue: Closes #1281

Issue #1281 described a focused change to "11 files across .github/agents/rai-planning/, .github/instructions/rai-planning/, and .github/prompts/rai-planning/." This PR delivers 80 changed files encompassing new CI workflows, PowerShell signing/validation scripts, Pester tests, package.json scripts, collections/ YAML and Markdown, plugins/ regeneration, and documentation.

The scope expansion is substantive and well-justified by the work being done, but issue #1281's description is now stale — it does not capture the CI infrastructure, signing pipeline, or collection/plugin changes that form a significant portion of the PR. Consider updating the issue body or closing it with a comment that summarizes the actual delivery scope, so the history remains accurate for future contributors.

No scope creep in the negative sense — the additional work is clearly additive and cohesive with the stated goal.


📝 PR Template Compliance

The PR description is detailed and well-written. Two template compliance gaps were identified:

1. GHCP Maturity Acknowledgment checkboxes are unchecked

The GHCP Maturity section was inserted (correctly — the PR includes experimental and preview artifacts) but both acknowledgment boxes remain [ ]:

- [ ] I acknowledge this PR includes non-stable GHCP artifacts
- [ ] Non-stable artifacts are intentional for this change
```

These should be checked before merge to confirm deliberate intent.

**2. AI Artifact Contributions checklist is unchecked**

The PR checks `[x] Copilot instructions`, `[x] Copilot prompt`, and `[x] Copilot agent` under Type of Change, which triggers the requirement (from PR template instructions) to also complete the AI Artifact Contributions checklist. All three items are currently `[ ]`:

```
- [ ] Used /prompt-analyze to review contribution
- [ ] Addressed all feedback from prompt-builder review  
- [ ] Verified contribution follows common standards and type-specific requirements

Check these or explicitly mark them N/A with a note if the prompt-builder review step was intentionally skipped.


🔍 PR Description Accuracy

Three file name discrepancies between the PR description and the actual committed files:

PR Description Says Actual File
Validate-AIArtifacts.ps1 (612 lines) Validate-PlannerArtifacts.ps1 (636 lines)
Sign-RaiArtifacts.ps1 Sign-PlannerArtifacts.ps1
"Created ai-artifact-validation.yml" File already exists on main with identical SHA — the PR calls this existing workflow from pr-validation.yml, but did not create it

These don't affect the code, but keeping the description accurate helps reviewers and future readers correlate what was shipped.


🏗️ Coding Standards

.github/workflows/ compliance — ✅ No violations

  • Third-party actions are SHA-pinned with version comments (actions/checkout@de0fac..., actions/upload-artifact@043fb4...) ✅
  • Top-level and job-level permissions: blocks present ✅
  • persist-credentials: false present ✅
  • Runners: ubuntu-latest

scripts/security/Sign-PlannerArtifacts.ps1 — ✅ Minor advisory

  • Copyright header, shebang, #Requires -Version 7.0, [CmdletBinding()], $ErrorActionPreference = 'Stop', main invocation guard — all present ✅
  • Get-ArtifactHash has abbreviated comment-based help (see inline comment, line 80)

scripts/linting/Validate-PlannerArtifacts.ps1 — ✅

  • 636-line script follows all structural conventions ✅

🔒 Code Quality and Security

ai-artifact-validation.yml — Install-Module without checksum

The workflow installs [email protected] using Install-Module -RequiredVersion 0.4.7 -Force without hash/checksum verification. This contrasts with the cosign installation in copilot-setup-steps.yml which explicitly verifies a SHA256 digest after download.

For a module installed at CI runtime to validate artifact integrity, an unverified module installation is a minor inconsistency in the security posture. This is a low-severity advisory observation — PowerShell Gallery packages are not known malicious, and RequiredVersion pins the exact release — but if the validation workflow's trust model is important, consider pinning the module install to a verified hash (e.g., downloading the .nupkg and verifying before expanding).

copilot-setup-steps.yml — Redundant version print

cosign version is called at the end of the "Install cosign" step and again in a separate "Verify tool availability" step. This is harmless but generates duplicate output in CI logs. Consider removing the redundant call from the install step.


📏 PR Size Advisory

This PR changes 80 files, which exceeds the 50-file threshold noted in the review guidelines. The changes are logically cohesive and the scope expansion from the original issue is justified, so this is purely informational. Future PRs of this scope could consider sequencing infrastructure additions (CI workflows, signing) ahead of content changes in a separate preparatory PR for easier review.


✅ Summary

Overall this is a solid, well-structured PR. The RAI planner alignment looks coherent, the new signing/validation infrastructure follows established repository patterns, and the CI additions are correctly implemented. The items above are minor and informational:

  1. Check GHCP Maturity Acknowledgment boxes in the PR description
  2. Check or annotate AI Artifact Contributions checklist items
  3. Correct script names in the PR description (Validate-PlannerArtifacts.ps1, Sign-PlannerArtifacts.ps1) and clarify the ai-artifact-validation.yml claim
  4. Update issue #1281 to reflect the actual delivery scope
  5. See inline comments for two minor code-level observations

Generated by PR Review for issue #1287 · ● 2.8M

Comment thread package.json
"extension:package:prerelease": "pwsh ./scripts/extension/Package-Extension.ps1 -PreRelease",
"validate:copyright": "pwsh -File scripts/linting/Test-CopyrightHeaders.ps1",
"validate:skills": "pwsh -NoProfile -Command \"& './scripts/linting/Validate-SkillStructure.ps1' -WarningsAsErrors\"",
"validate:ai-artifacts": "pwsh -NoProfile -Command \"& './scripts/linting/Validate-PlannerArtifacts.ps1'\"",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💡 Advisory: Disambiguation between validate:ai-artifacts and lint:ai-artifacts

Both scripts invoke Validate-PlannerArtifacts.ps1, but with different semantics:

  • lint:ai-artifacts (in lint:all) — runs with -FailOnMissing, enforcing CI compliance
  • validate:ai-artifacts (standalone) — runs without -FailOnMissing, informational pre-check

The distinction is sound, but may not be immediately clear to contributors who see both validate:skills and validate:ai-artifacts and expect them to behave similarly (both would appear to be soft-check aliases of their lint: counterparts, but validate:skills is in lint:all via a different route).

Consider adding a brief comment in CONTRIBUTING.md or the npm scripts section of the project instructions to document which variant to use locally vs. in CI. The validate:* prefix elsewhere in the repo (validate:copyright, validate:skills) is not consistently "informational-only", so the naming pattern could be confusing.

param(
[Parameter(Mandatory)]
[string]$FilePath
)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💡 Advisory: Incomplete comment-based help in Get-ArtifactHash

Per the PowerShell Script Instructions (applyTo: **/*.ps1):

Use block comment style with .SYNOPSIS, .DESCRIPTION, .PARAMETER, .EXAMPLE, and .NOTES sections

The Get-ArtifactHash function's help block is missing the .PARAMETER FilePath entry and an .EXAMPLE section. PSScriptAnalyzer's PSProvideCommentHelp rule enforces comment-based help for functions with parameters.

Suggested addition:

<#
.SYNOPSIS
    Computes the SHA-256 hash of a file and returns a lowercase hex string.
.PARAMETER FilePath
    Absolute path to the file to hash.
.OUTPUTS
    [string] Lowercase hex SHA-256 digest.
.EXAMPLE
    Get-ArtifactHash -FilePath '/tmp/report.json'
#>

WilliamBerryiii pushed a commit that referenced this pull request Apr 24, 2026
## Pre-Release 3.3.101

### ✨ Features

- add removed maturity tier and retire owasp-docker (#1444)
- add evaluation dataset creator (#1279)
- align RAI planner with guide, remove scoring, improve UX (#1287)
- add PSGallery staleness check and BOM cleanup (#1379)
- ISA-95 network planner agent (#1177)
- auto-generate collection.md with maturity filtering (#1316)
- add folder-consistency check and standardize WARN outp… (#1350)
- add synth-data-generate prompt to data-science collection (#1419)
- add canonical deck workflow and customer-card rendering for design
thinking (#1413)
- add Figma MCP integration for DT artifact export (#1222)
- introduce `owasp-docker` (#1245)
- replace hve-core-specific references with portable discovery-based
language (#1335)
- introduce `owasp-cicd` (#1246)
- add secure-by-design knowledge skill (#1223)
- introduce `owasp-infrastructure` (#1244)
- introduce `owasp-mcp` (#1207)
- add OutputPath parameter to Invoke-LinkLanguageCheck.ps1 (#1229)
- add -OutputPath parameter to Validate-SkillStructure.ps1 (#1225)
- add maintainer-only skip-review label guard (#1293)
- add extension collections overview and integrate into getting started
flow (#950)
- add agentic workflows for automated issue triage, implementation, PR
review, dependency review, and doc-staleness detection (#1219)
- consolidate package-lock.json version sync into
Update-VersionFiles.ps1 (#1240)
- add standards code review agent and full review orchestrator (#1174)
- standardize pytest-mock as Python mocking framework (#1170)
- add Jira backlog workflows and Jira/GitLab skills (#978)
- add centralized version bump script and supply-chain attestation
(#1183)

### 🐛 Bug Fixes

- pin PowerShell-Yaml to 0.4.7 across all install sites (#1378)
- close fork-PR/workflow-file-PR secret-strip gap and normalize
upload-artifact version (#1421)
- replace stream-based lookahead with array indexing in
list-changed-files.sh (#1376)
- centralize ISO 8601 timestamp regex in CIHelpers (#1343)
- update stale documentation date in release-process.md (#1363)
- pin basic-ftp to 5.3.0 to resolve GHSA-rp42-5vxx-qpwr (#1374)
- add bot filter to dependency PR review workflow (#1362)
- resolve pip-audit findings in powerpoint, gitlab, and jira skill lock
files (#1360)
- standardize Timestamp JSON key casing across all lint result files
(#1314)
- add synchronize trigger to PR Review workflow (#1323)
- standardize timestamp in Validate-SkillStructure.ps1 to use
Get-StandardTimestamp (#1280)
- add parallel subagent dispatch and structured JSON contracts to
code-review-full (#1304)
- standardize timestamp in SecurityHelpers.psm1 to use
Get-StandardTimestamp (#1284)
- standardize timestamps in Test-DependencyPinning.ps1 and
SecurityClasses.psm1 (#1282)
- derive collection artifact counts from YAML at build time (#1275)
- standardize timestamp in FrontmatterValidation.psm1 to use
Get-StandardTimestamp (#1285)
- standardize timestamp in Markdown-Link-Check.ps1 to use
Get-StandardTimestamp (#1283)
- escape hyphens in Mermaid diagram on Collections page (#1262)
- add summary timestamp to PSScriptAnalyzer output (#1211)
- fix plugin compatibility and robustness for coding-standards code
review agents (#1289)
- standardize timestamp in Test-CopyrightHeaders.ps1 to use
Get-StandardTimestamp (#1278)
- standardize timestamp in Invoke-YamlLint.ps1 to use
Get-StandardTimestamp (#1270)
- standardize timestamp in Invoke-LinkLanguageCheck.ps1 to use
Get-StandardTimestamp (#1264)
- fix dependency-review path filters and sparse-checkout cone mode
(#1259)
- replace invalid bare tool names with official tool identifiers (#1198)
- fix broken links and remove orphaned reference in code review docs
(#1257)
- exclude Python env dirs from skill validation warnings (#1255)
- pin happy-dom and serialize-javascript to resolve Dependabot
vulnerabilities (#1253)
- remove Mermaid diagram and add missing collection cards (#1247)
- disable MCP servers by default to prevent token limit errors (#1144)
- sync package-lock.json after pre-release version bump (#1236)
- separate mermaid node declarations and add dynamic diagram generation
with tests (#1215)
- replace anchor links in meeting-analyst with bold text references
(#1201)
- remove recursive symlinks in jira and gitlab skill directories (#1233)
- validate-installation scripts now check .github/skills directory
(#1010) (#1206)
- resolve npm audit vulnerabilities via dependency overrides (#1200)
- add post-release triggers to scorecard workflow (#1186)
- add missing .md extensions to relative links in agent documentation
(#1180)

### 📚 Documentation

- broaden Security Review description beyond OWASP (#1385)
- document maintainer advisory mode and skip-review label guard (#1386)
- document ExcludePaths/OutputPath for Invoke-LinkLanguageCheck (#1383)
- CLI getting-started: clarify plugin install commands as alternatives
(-all vs base) (#1251)

### ♻️ Refactoring

- align agent and prompt folder names to collection identifier (#1210)

### 🔧 Maintenance

- pin PSScriptAnalyzer to 1.25.0 and sync stale workflow version
comments (#1389)
- bump lxml from 6.0.2 to 6.1.0 in
/.github/skills/experimental/powerpoint (#1424)
- bump @vscode/vsce from 3.7.1 to 3.9.1 in the npm-dependencies group
(#1390)
- bump the github-actions group across 1 directory with 7 updates
(#1391)
- bump follow-redirects from 1.15.11 to 1.16.0 in /docs/docusaurus
(#1356)
- upgrade Node.js from 20 to 24 and bump cspell to v10 (#1353)
- bump basic-ftp from 5.2.0 to 5.2.1 (#1324)
- update github/gh-aw-actions requirement to
536ea1bad8c6715d098a9dc1afea8d403733acfe in the github-actions group
across 1 directory (#1298)
- update security instruction attributions and compliance (#1294)
- bump the npm-dependencies group with 2 updates (#1297)
- pre-release 3.3.41 (#1252)
- streamline RAI Planner phase structure and documentation (#1273)
- bump happy-dom from 20.8.8 to 20.8.9 in /docs/docusaurus (#1237)
- pre-release 3.3.27 (#1191)
- bump pygments from 2.19.2 to 2.20.0 in /.github/skills/gitlab/gitlab
(#1234)
- bump path-to-regexp from 0.1.12 to 0.1.13 in /docs/docusaurus (#1226)
- bump the github-actions group with 4 updates (#1231)
- add missing folders and alphabetize location lists (#1193)
- bump brace-expansion (#1224)
- bump handlebars from 4.7.8 to 4.7.9 in /docs/docusaurus (#1217)
- bump brace-expansion from 5.0.3 to 5.0.5 in /docs/docusaurus (#1213)
- pre-release 3.3.10 (#1187)
- bump markdownlint-cli2 from 0.21.0 to 0.22.0 in the npm-dependencies
group (#1175)
- bump the github-actions group with 3 updates (#1176)
- pre-release 3.3.1 (#1165)

---
*Managed automatically by pre-release workflow.*

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Align RAI Planner with Impact Assessment Guide and improve UX

7 participants