Consolidate collection manifests and remove attributions#2048
Consolidate collection manifests and remove attributions#2048WilliamBerryiii wants to merge 32 commits into
Conversation
Add a maturity-edge dependency check so a higher-maturity artifact cannot depend on a lower-maturity one, wired into lint:core-manifest and lint:all: - Resolve maturity-edge dependencies across agents, prompts, instructions, and skills using shared helpers in CoreManifestHelpers.psm1. - Discover artifacts recursively with -Recurse -Filter so nested subagents and coding-standards instructions are found. - Treat removed artifacts as intentionally kept on disk but excluded from collections (no removed-but-on-disk warning). - Reclassify operationally stable manifest targets to clear pre-existing violations. Apply review hardening: tighten the embedded-reference regex, make dedup collision-safe and ordinal, extract section-name and token-resolution helpers, and surface frontmatter parse failures via Write-Warning. Add Pester coverage for the new helpers and the removed-on-disk case. 🔒 - Generated by Copilot
…source
- remove legacy *.collection.{yml,md} files in favor of core-manifest.yml
- add Render-Collections and Verify-CollectionProjection scripts
- regenerate plugin outputs and update collection/extension tooling
♻️ - Generated by Copilot
- thread -C $RepoRoot through ls-files, hash-object, and update-index in Repair-PluginSymlinkIndex - prevent test runs with temp RepoRoot from mutating the real repo git index - eliminates fixture-collection AD index leaks during Pester runs 🔒 - Generated by Copilot
- Remove 26 individual *.collection.yml files; core-manifest.yml is now single source of truth - Strip maturity suffixes from 32 agent frontmatter (model-maturity: ga → removed) - Remove duplicate plugin symlinks from plugins/experimental/ and plugins/jira/ (11 files) - Rename dt-coach-telemetry.instructions.md to dt-coach-telemetry.md per naming convention 9 collections validated, 0 errors. 🔧 - Generated by Copilot
# Conflicts: # package.json
…from descriptions - Remove "Brought to you by microsoft/hve-core" suffix from 56 source files - Fix idempotent regeneration in New-CollectionReadme by stripping ## Included Artifacts heading - Update test fixtures in Validate-SkillStructure.Tests.ps1 🔧 - Generated by Copilot
- Stop copying plugins/ to scratch repo in Verify-CollectionProjection (Copy-Item -Recurse follows symlinks, expanding them to real dirs, which breaks symlink creation during regeneration) - Update accessibility folder test to use New-CoreManifestFixture (validation now expects core-manifest.yml, not .collection.yml)
- strip footer lines and suffix patterns from agents, instructions, prompts, skills - update prompt-builder.instructions.md to remove attribution requirement - clean extension READMEs and contributing docs 🧹 - Generated by Copilot
Dependency ReviewThe following issues were found:
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #2048 +/- ##
==========================================
- Coverage 81.24% 79.96% -1.29%
==========================================
Files 127 132 +5
Lines 18831 20496 +1665
Branches 12 12
==========================================
+ Hits 15300 16390 +1090
- Misses 3528 4103 +575
Partials 3 3
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
- ado-backlog-manager.agent.md - github-backlog-manager.agent.md - jira-backlog-manager.agent.md Frontmatter delimiters (---) were accidentally stripped during attribution removal, breaking plugin description extraction. 🔧 - Generated by Copilot
📝 A note for reviewers — where to spend your timeThis is a large diff (341 files, +10,970 / −5,150), but the changes fall into a few clear buckets and only a small slice needs careful, line-by-line review. Here's how I'd suggest approaching it. 🎯 Review these closely (the real logic)This is the heart of the change — the new "single source of truth" projection engine. Everything else is downstream of it.
👀 Skim only (mechanical / generated)
✅ Validation status
🔁 Suggested review order
Happy to walk through any of the projection logic if it's helpful. 🙏 |
- remove MD012 consecutive blank lines from 23 docs files - update Docusaurus collectionCards to read from core-manifest.yml - remove experimental/gitlab/jira placeholder cards not in manifest - update ms.date to 2026-06-17 in 22 stale PR files 🔧 - Generated by Copilot
…documentation Removes attribution sections and references that are no longer applicable after the removal of 'Brought to you by' attributions in commit dd80d57. Affected areas: - ai-artifacts-common.md: Remove Attribution Requirements section - custom-agents.md: Remove attribution link from external sources - instructions.md: Remove Attribution Footer requirement - prompts.md: Remove Attribution Footer requirement - skills.md: Update description format to remove attribution
bindsi
left a comment
There was a problem hiding this comment.
Approved: the core manifest consolidation preserves existing behavior while centralizing collection metadata. I did not find actionable correctness or generated-artifact issues.
…tions - add Test-SharedDependencyClosure guardrail to Validate-Collections - backfill shared instruction/skill membership in themed collections - fix OrderedDictionary .Contains check in Prepare-Extension - add closure regression tests and regenerate plugin outputs 🔒 - Generated by Copilot
# Conflicts: # .github/instructions/rai-planning/rai-backlog-handoff.instructions.md # .github/instructions/rai-planning/rai-impact-assessment.instructions.md # .github/instructions/rai-planning/rai-risk-classification.instructions.md # .github/instructions/rai-planning/rai-security-model.instructions.md # .github/instructions/rai-planning/rai-standards.instructions.md # .github/skills/hve-core/vally-tests/SKILL.md # collections/data-science.collection.md # collections/data-science.collection.yml # collections/hve-core-all.collection.md # collections/hve-core-all.collection.yml # collections/hve-core.collection.md # collections/hve-core.collection.yml # collections/project-planning.collection.md # collections/project-planning.collection.yml # collections/security.collection.md # collections/security.collection.yml # docs/getting-started/collections.md # plugins/data-science/.github/plugin/plugin.json # plugins/data-science/README.md # plugins/hve-core-all/README.md # plugins/hve-core/README.md # plugins/project-planning/.github/plugin/plugin.json # plugins/project-planning/README.md
Remove the redundant per-collection itemCount field from core-manifest.yml and update the docusaurus collectionCards test to compute each collection's artifact count from manifest membership instead of the stored itemCount.
# Conflicts: # .github/agents/project-planning/arch-diagram-builder.agent.md # .github/skills/project-planning/adr-author/SKILL.md # collections/hve-core-all.collection.md # collections/hve-core-all.collection.yml # collections/project-planning.collection.md # collections/project-planning.collection.yml # plugins/hve-core-all/README.md # plugins/project-planning/.github/plugin/plugin.json # plugins/project-planning/README.md
… form, and unresolved agent refs - flag artifact entries listing the same collection more than once - require release excludePaths entries to use repo-relative slash form - warn when agent and handoff references do not resolve to a manifest artifact - add Pester coverage for the new validation rules 🔒 - Generated by Copilot
- resolve accessibility agent/skill conflicts to origin/main (#2077) - keep deleted collection projection files (projected from core-manifest.yml) - regenerate plugins and extension manifests - register project-planning, data-science, hve-core, installer asset folders - remove empty orphan skill/agent/prompt directory skeletons 🔀 - Generated by Copilot
…ubagent discovery - Relax Validate-CoreManifest to not require nested */subagents folders (VS Code asset discovery recurses beneath registered folders) - Point manifest collection path: to plugins/*/.github/plugin/plugin.json - Add asset-folder sync enforcement with paste-ready remediation prompt - Surface remediation in plugin-validation CI step summary on failure - Enhance Promote-Agent; add Render-Collections stale-file warning - Register missing asset folders in .vscode/settings.json - Document settings registration requirement in prompt-builder instructions
🔒 - Generated by Copilot
✨ - Generated by Copilot
# Conflicts: # .github/agents/hve-core/doc-ops.agent.md # collections/hve-core-all.collection.md # collections/hve-core-all.collection.yml # collections/hve-core.collection.yml # extension/manifest-review/hve-core/hve-core.collection.md # plugins/hve-core/README.md
Eval Execution❌ Status: Failed
|
# Conflicts: # .github/copilot-instructions.md
- cast themes array to PluginConfig[] to clear search-local type errors - add homepage collection-count guard test against core-manifest drift - refresh docusaurus-tests change-filter comment for core-manifest.yml 🔒 - Generated by Copilot
- add 4 agent stimulus partials (accessibility-framework-assessor, brd-quality-reviewer, prd-quality-reviewer, rai-skill-assessor) - append 13 instruction blocks to instructions.eval.yaml - append 12 skill stimuli to skill-behavior.eval.yaml (mural, adr-author, requirements-author, supply-chain-security) - regenerate agent-behavior eval.yaml to inject agent coverage tags ✅ - Generated by Copilot
katriendg
left a comment
There was a problem hiding this comment.
PR Review: Consolidate collection manifests and remove attributions
Consolidates collection infrastructure onto a single collections/core-manifest.yml source of truth (replacing the committed *.collection.yml / *.collection.md files), adds maturity-dependency validation, updates plugin/extension generation to consume the manifest, and removes "Brought to you by microsoft/hve-core" attribution footers.
Verification performed locally (branch checked out; nothing committed)
| Check | Result |
|---|---|
npm run lint:core-manifest |
✅ pass (1 benign warning: memory.agent.md handoff /clear is a builtin) |
npm run verify:collection-projection |
✅ 559/559 plugin files byte-for-byte; 577 total reproduced |
npm run plugin:generate → git status |
✅ idempotent — 0 changes |
npm run extension:prepare + :prerelease |
✅ both idempotent — 0 changes |
| Pester: collections / plugins / extension | ✅ 242 / 128 / 353 pass (1 skip) |
lint:collections-metadata, validate:skills, lint:marketplace |
✅ 9 collections, 0 errors; marketplace 9 plugins OK |
The build mechanics are solid: manifest validation, projection parity, and all three regenerators reproduce committed output deterministically. The findings below are cleanup items, not correctness blockers. Three are attached as inline comments (vally-tests SKILL.md, base-frontmatter.schema.json, the stray extension/manifest-review/ artifact); the remainder are below where the diff doesn't cleanly anchor.
General comments
accessibility-planner agent description still ends with Brought to you by microsoft/hve-core., and that text flows through into generated, in-diff READMEs:
- Source:
.github/agents/accessibility/accessibility-planner.agent.md(Line 7, multi-linedescription) - Generated:
plugins/project-planning/README.md(Line 22) - Generated:
plugins/hve-core-all/README.md(Line 33)
Fix the source description, then re-run npm run plugin:generate and npm run extension:prepare / :prerelease so the regenerated READMEs drop the suffix.
💡 Body-footer attribution remaining in skill docs. These > Brought to you by microsoft/hve-core body footers remain. The first is in a file this PR already modifies (in scope); the others are untouched and may be deferred:
.github/skills/project-planning/adr-author/SKILL.md(Line 179) — file modified by this PR.github/skills/accessibility/accessibility/SKILL.md(Line 120) — not otherwise touched.github/skills/hve-core/documentation/SKILL.md(Line 66) — not otherwise touched.github/skills/hve-core/architecture-diagrams/SKILL.md(Line 232) — not otherwise touched
Note: the Brought to you by Microsoft ISE HVE Essentials lines in extension/README.* are a separate, intentional marketplace footer and are out of scope.
💡 PR description accuracy. The description's "Changes" list and "Strip ... footer lines from 67 files" claim read as a complete attribution sweep, but several artifacts above still carry the attribution. Please reconcile the description with what actually landed — either finish the sweep or scope the claim to the files actually cleaned.
ℹ️ New frontmatter fields are currently unused (informational). base-frontmatter.schema.json adds optional maturity and collections properties, but no source artifact populates either field yet (membership/maturity live in the manifest). This reads as a forward-looking addition (relates to #2141 / #1319). Fine to merge as-is; flagging only so it isn't mistaken for a wired-up control.
Summary by category
- Attribution cleanup: 3 (vally-tests inline, propagated READMEs, body footers)
- Maintainability: 1 (stray
extension/manifest-review/artifact, inline) - Conventions: 1 (schema trailing newline, inline)
- Documentation: 1 (description accuracy)
- Schema: 1 (informational)
- Security: 0
Instruction compliance
- ✅ Packaging workflows correctly switch off the deleted
*.collection.ymlglob toFind-CollectionManifests.ps1;plugin-validation.ymladds core-manifest + asset-sync + marketplace freshness checks. - ✅ New
lint:core-manifestandverify:collection-projectionare chained into bothlint:allandplugin:validate. ⚠️ Attribution removal partially applied; residual suffixes remain (see above).
Related issues (post-merge follow-up)
#1701 (implemented — close/link), #1699 (parent tracker), #2046/#2047 (verify auto-close), #2141 + #1319 (maturity decoupling/standardization — addressed), #1598 (prerelease maturity desc — addressed), #1707/#1317 (docs/Docusaurus), #2078/#1869/#2031 (collections.md count touch-ups).
Recommendation
Approve with minor changes. Engineering is green and reproducible. Requested before merge: finish the attribution sweep, remove the stray extension/manifest-review/hve-core/ artifact, add the schema trailing newline, and reconcile the PR description.
| --- | ||
| name: vally-tests | ||
| description: 'Authors Vally conformance tests for prompts, instructions, agents, and skills, including refusals for jailbreak, prompt-injection, harmful-elicitation, TOS, CoC, and PII-extraction stimuli - Brought to you by microsoft/hve-core' | ||
| description: 'Authors Vally conformance tests for prompts, instructions, agents, and skills, with explicit refusal of jailbreak, prompt-injection, harmful-elicitation, TOS, CoC, model-refusal-elicitation, and PII-extraction stimuli - Brought to you by microsoft/hve-core' |
There was a problem hiding this comment.
description line but leaves the - Brought to you by microsoft/hve-core suffix in place, which is inconsistent with the attribution-removal goal of this PR. The suffix also propagates into generated marketplace/README output.
Suggested:
description: 'Authors Vally conformance tests for prompts, instructions, agents, and skills, with explicit refusal of jailbreak, prompt-injection, harmful-elicitation, TOS, CoC, model-refusal-elicitation, and PII-extraction stimuli'| "minLength": 1 | ||
| }, | ||
| "uniqueItems": true, | ||
| "description": "Collection identifiers this artifact belongs to" | ||
| } | ||
| } |
There was a problem hiding this comment.
💡 Nit: this edited schema file has no trailing newline (\ No newline at end of file in the diff). Other JSON files in the repo terminate with a newline — please add one for consistency.
Note (informational, no action needed): the new maturity and collections properties are not yet populated by any source artifact (membership/maturity currently live in core-manifest.yml), so this reads as a forward-looking addition.
There was a problem hiding this comment.
.md sibling) looks like a stray commit of a CI build artifact. extension/manifest-review/<id>/ is generated per-collection during packaging and uploaded by extension-package.yml as an ephemeral artifact (30-day retention, continue-on-error). Only the hve-core collection's files are committed here (asymmetric — no other collection has them), the path isn't in .gitignore, and they're renamed from the now-deleted collections/hve-core.collection.*.
Suggested: remove these two files and add extension/manifest-review/ to .gitignore. If a committed reference snapshot is intended, generate it for all collections consistently instead.
- Fold RPI and prompt-builder skills into hve-core and hve-core-all - Add copilot-tracking instruction; remove obsolete *.collection.* files - Regenerate plugin/extension outputs; merge skill-behavior eval coverage
Summary
This PR consolidates the collection infrastructure to use a single
core-manifest.ymlsource of truth and removes legacy "Brought to you by microsoft/hve-core" attribution footers.Changes
Collection Consolidation
collections/core-manifest.ymlas canonical registry for all artifact paths, kinds, collection membership, and maturity*.collection.yml/*.collection.mdfiles (now projected in-memory)Attribution Removal
prompt-builder.instructions.mdTesting
npm run lint:allpassesnpm run test:pspassesnpm run plugin:generateproduces correct outputsRelated Issues
Closes #2046
Closes #2047