feat(instructions)!: disclaimer SSOT migration (stacked on #1497)#1639
Open
WilliamBerryiii wants to merge 1 commit into
Open
feat(instructions)!: disclaimer SSOT migration (stacked on #1497)#1639WilliamBerryiii wants to merge 1 commit into
WilliamBerryiii wants to merge 1 commit into
Conversation
…instructions.md BREAKING CHANGE: .github/config/disclaimers.yml removed; consumers must reference disclaimer-language.instructions.md.
This was referenced May 23, 2026
rezatnoMsirhC
requested changes
May 26, 2026
Comment on lines
+18
to
+22
| (Join-Path $script:repoRoot '.github/instructions/security/backlog-handoff.instructions.md'), | ||
| (Join-Path $script:repoRoot '.github/instructions/security/sssc-backlog.instructions.md') | ||
| ) | ||
| $script:identityFiles = @( | ||
| (Join-Path $script:repoRoot '.github/instructions/security/identity.instructions.md'), |
Contributor
There was a problem hiding this comment.
The test array includes backlog-handoff.instructions.md alongside sssc-backlog.instructions.md, but backlog-handoff.instructions.md does not contain either the noteLiteral or checkboxLiteral strings asserted here. Both of these tests will fail for that file.
sssc-backlog.instructions.md carries both literals in its ADO and GitHub format sections and will pass. Consider either adding both literals to the work item templates in backlog-handoff.instructions.md, or removing it from $script:backlogFiles if the attribution requirement does not apply to that file.
rezatnoMsirhC
approved these changes
May 26, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pull Request
Description
This PR migrates the planner disclaimer single-source-of-truth (SSOT) from the standalone YAML config at
.github/config/disclaimers.ymlto a markdown authoring contract embedded in.github/instructions/shared/disclaimer-language.instructions.md. It stacks on #1497 (feat/sssc-planner-rai-parity) because removingdisclaimers.ymlwould conflict with any branch in the stack that does not include this migration.The instruction file now defines the disclaimer corpus as H2 sections whose slugified headings (for example, RAI Planning →
rai-planner) are the parser-derived keys. Each section carries a CAUTION blockquote that captures the session-start disclaimer, plus prose paragraphs joined into a single string by the parser. A short Authoring Contract preamble documents the rules so future edits stay machine-readable without referring to the validator source.The validator,
scripts/linting/Validate-PlannerArtifacts.ps1, swaps its YAML loader forImport-DisclaimerSource, which parses the new markdown SSOT, derives planner keys from heading slugs, extracts CAUTION blockquotes (stripping the> [!CAUTION]prefix), and joins multi-line prose. The function's-DisclaimerConfigPathparameter is renamed to-DisclaimerSourcePathto reflect the markdown origin.A new contract suite,
scripts/tests/linting/Test-DisclaimerArtifacts.Tests.ps1(8 cases), asserts that:To satisfy the second assertion, this PR also adds the Disclaimer and Attribution Protocol section to
.github/instructions/security/identity.instructions.md, sourced verbatim from the snapshot. The hunks inscripts/tests/linting/Validate-PlannerArtifacts.Tests.ps1are trimmed to disclaimer-related coverage only; the SSSC-parity hunks are deferred to a later PR in the stack.The three regenerated
plugins/*/README.mdfiles reflect the disclaimer SSOT description text and are produced bynpm run plugin:generate.Related Issue(s)
Stacks on #1497. No other issue references in commits or branch name.
Type of Change
Select all that apply:
Code & Documentation:
Infrastructure & Configuration:
AI Artifacts:
prompt-builderagent and addressed all feedback.github/instructions/*.instructions.md).github/prompts/*.prompt.md).github/agents/*.agent.md).github/skills/*/SKILL.md)Other:
.ps1,.sh,.py)Sample Prompts (for AI Artifact Contributions)
For detailed contribution requirements, see:
Testing
Automated validation performed by the agent:
npm run lint:md— markdown linting: Passed (211 files, 0 errors).npm run lint:frontmatter— frontmatter validation: Passed (541 files, 0 errors).npm run lint:ps— PowerShell analysis: Passed.npm run lint:yaml— YAML validation: Passed (50 files).npm run plugin:validate— plugin metadata: Passed.npm run plugin:generate— plugin outputs regenerated and committed.npm run test:ps -- -TestPath scripts/tests/linting/Test-DisclaimerArtifacts.Tests.ps1— 8/8 passed.npm run test:ps -- -TestPath scripts/tests/linting/Validate-PlannerArtifacts.Tests.ps1— 34/34 passed.grep -r "config/disclaimers" .github docs scripts collections plugins— empty, confirming no orphan references.Security analysis findings:
Diff-based assessments:
.github/instructions/,scripts/linting/, andscripts/tests/linting/conventions.Note
Manual testing was not performed.
Checklist
Required Checks
.github/config/disclaimers.ymlis removed; consumers must referencedisclaimer-language.instructions.md. Tree-wide grep confirms zero in-codebase consumers of the deleted path; all internal callers are updated in this PR.)AI Artifact Contributions
/prompt-analyzeto review contributionprompt-builderreviewRequired Automated Checks
The following validation commands must pass before merging:
npm run lint:mdnpm run spell-checknpm run lint:frontmatternpm run validate:skillsnpm run lint:md-linksnpm run lint:psnpm run plugin:generatenpm run docs:testSecurity Considerations
Additional Notes
This PR is the second stacked increment in the post-#1497 stack (PR C in plan ordering). The base will switch from
feat/sssc-planner-rai-paritytomainafter #1497 merges. The companion PRs in the stack are:main).main, optional).A small Disclaimer and Attribution Protocol section is added to
.github/instructions/security/identity.instructions.md(sourced verbatim from the snapshot) so the new contract test passes for both planner identities. The SSSC-parity hunks inValidate-PlannerArtifacts.Tests.ps1are intentionally deferred to PR B, which lands them alongside the Security Planner content they exercise.Merge Order
This PR is part of a stack derived from PR #1497. Required merge sequence:
stack/security-state-schema) — addsdisclaimerShownAtto canonical schemasstack/security-planner-parity) — consumes both#1640 and #1641 are siblings and may merge in any order independent of this chain.