feat(skills): add traceable proposal response (RFI/RFP) skill into project planning - #2682
feat(skills): add traceable proposal response (RFI/RFP) skill into project planning#2682Katrien De Graeve (katriendg) wants to merge 26 commits into
Conversation
- add traceable analyze, contribute, and draft operations - integrate explicit BRD and PRD builder activation - add behavior coverage, documentation, and package projections 📋 - Generated by Copilot
…ss and source immutability - clarify blocking_ids definition in response quality rubric - specify rendering requirements for unresolved questions in response draft - add new behavior evaluation for source immutability in proposal response 🔒 - Generated by Copilot
… response - modify descriptions to reflect new conventions - update metadata dates for consistency - enhance examples with detailed instructions for contributions 🔍 - Generated by Copilot
- gate builder artifact recording on RESPONSE_EVIDENCE_POINTER_V1 only - define response_state conditions, transitions, and blocking_ids derivation - exclude injected directive text from question_count via inclusion test - route legal_or_commercial questions to unresolved items, not claims - stop artifact rewrites for read-only status requests and add eval coverage 🧾 - Generated by Copilot
…osal responses feat(proposal-response): enhance response draft and appendix templates with markdown linting 🔒 - Generated by Copilot
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #2682 +/- ##
==========================================
- Coverage 83.08% 81.73% -1.36%
==========================================
Files 183 162 -21
Lines 33712 22377 -11335
Branches 25 25
==========================================
- Hits 28010 18289 -9721
+ Misses 5699 4085 -1614
Partials 3 3
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
Eval Execution✅ Status: Passed — no merge-blocking failures (32 advisory assertion failure(s) present)
|
…siness and product contributions - add compact YAML result for proposal-response operations - include artifact paths and status in the response - clarify handling of evidence and approval statuses 🔧 - Generated by Copilot
…onse - register user-named BRD or PRD as SRC records with resolvable evidence - derive next_operation; bind analyze, contribute, draft in both builders - drop caller state echo, record enumeration, and output-order mandates 📋 - Generated by Copilot
- register inline approved evidence as a user_supplied source, version unknown - scope the unresolved-source stop rule to a named path only - mount fixtures for stimuli that described a payload instead of supplying one - trim graders toward user-visible behavior over transcript shape 🔧 - Generated by Copilot
- focus graders on user-visible outcomes - reduce timeout-prone BRD and PRD stimuli - reject false-positive draft results 🧪 - Generated by Copilot
…t/hve-core into feat/proposal-rsp-skill
- retain proposal-response coverage in the skill suite - bound builder checks to read-only behavior - remove orphaned agent fixtures 🧪 - Generated by Copilot
- add typed outcome evidence and readiness handling - clarify handoff transport and privacy fallback behavior - expand behavior conformance coverage 🔗 - Generated by Copilot
…handling - add logic to retry reading missing artifact paths - update response to include registered SRC record and compact pointer - clarify prompts for overwriting supplied source artifacts 🔧 - Generated by Copilot
Bill Berry (WilliamBerryiii)
left a comment
There was a problem hiding this comment.
Thank you for the substantial proposal-response workflow and its traceability work. After a full review and a contrarian conformance pass, I am requesting changes for one blocking state-model issue and four contract or evaluation issues described inline. The unresolved-item model cannot represent a cleared item while preserving its history. The remaining inline comments cover an unsupported concurrency guarantee, malformed BRD and PRD rejected-operation expectations, and an error-response mismatch with the builder reporting contract. Four lower-priority portability and documentation issues remain in the linked review report but are not posted inline. Earlier speculative security and accessibility concerns were withdrawn from this review.
- preserve cleared unresolved records with evidence links - separate success and rejection reporting contracts - add lifecycle and builder rejection eval coverage - use workspace-aware reads for relative artifact paths
🔀 - Generated by Copilot
This PR adds a new
proposal-responseskill for project planning and wires it into the BRD Builder and PRD Builder, so a user holding an RFP question set plus an existing BRD or PRD can reach a traceable internal-review draft without transcribing documents into chat or leaving the agent they started in.The skill records, qualifies, and drafts from approved evidence. It does not authorize external use, approval, submission, or release.
The skill
.github/skills/project-planning/proposal-response/withanalyze,contribute, anddraftoperations, persisting a singleRESPONSE_EVIDENCE_V1artifact per response and returning a compactRESPONSE_EVIDENCE_POINTER_V1.SQ,CLM,RSP,UNR, andSRCrecord IDs, a derivedresponse_statetable, a source-question inclusion test that keeps directive text out of every count, and derivedblocking_ids.Approved-source intake
A user names an existing BRD or PRD, and the skill reads it, registers it as an
SRCrecord with its kind, read date, declared version, and the sections used, then cites it from every claim asSRC-001#NFR-014. A reviewer can trace any statement back to the approved document rather than to recalled text.Sources take two forms.
origin: fileis an artifact the skill opened at a named path.origin: user_suppliedis approved evidence stated directly in the request, recorded withsource_version: unknownbecause there is nothing to re-read. The skill prefers a named artifact and says so when it falls back.Self-describing sequence
Every pointer carries
next_operation, derived from the current records through an ordered condition table rather than asserted. It reaches the terminalnonewhen every question has a current response, or when the only remaining open items need a human decision the skill cannot make, so an openlegal_or_commercialitem no longer leaves the caller looping.The pointer reports
record_countsper record kind plus the IDs this operation changed, so its size stays constant as the record set grows.Builder integration
contributeonly: BRD Builder contributes business-owned evidence, PRD Builder product-owned.references/builder-extension-contract.mdinside the skill, loaded on activation. Each agent keeps its trigger, domain and operation bindings, extension-state marker, supported rendering choices, and non-activation boundary.Drafting versus rendering
The
draftoperation recordsRSPentries inside the evidence artifact. Writingresponse-draft.mdor an appendix is a separate rendering that happens only on request, so a draft with no rendering request returns an empty rendered-artifact list. A repeated rendering replaces the file from the stored payload rather than appending, keeping one response block per question.Supporting changes
.copilot-tracking/proposal-responses/**to the tracking conventions, including the rule that versioned payload contracts use their owning schema's YAML or JSON format.Note
This branch also carries a BRD-to-PRD handoff persistence change in
requirements-author:BRD_TO_PRD_HANDOFF_V1is now written to.copilot-tracking/brd-sessions/<brd-name>.handoff.ymland passed by path rather than inline. It is unrelated to proposal response and may be worth splitting out.Safety and boundary design
internal_review_draft, bothexternal_use_statusvalues deny external use, andrelease_decisionstaysoutside_skill_scope.Related Issue(s)
Fixes #2681
Type of Change
Select all that apply:
Code & Documentation:
Infrastructure & Configuration:
AI Artifacts:
hve-builderand addressed all actionable findings.github/instructions/*.instructions.md).github/prompts/*.prompt.md).github/agents/*.agent.md).github/skills/*/SKILL.md).github/hooks/*/*.json)evals/)Other:
.ps1,.sh,.py)Sample Prompts (for AI Artifact Contributions)
User Request:
I have an RFP question set and an existing BRD at
docs/project-planning/supplier-onboarding-brd.md. Help me answer it without granting approval or release authority.Execution Flow:
analyzereads the named BRD, registers it asSRC-001with its version and read date, and normalizes the questions intoSQrecords.next_operation: contribute, derived from the records, and the turn closes by naming that step.contributeadds business-owned claims whoseevidence_refsciteSRC-001#BG-001and similar, leaving unsupported material as qualified claims or unresolved items.draftrecordsRSPentries across every reviewed claim, including questions answered by product-owned evidence, and reportsnext_operation: none.Output Artifacts:
.copilot-tracking/proposal-responses/<response-slug>/response-evidence.ymlresponse-draft.mdinternal-review renderingSuccess Indicators:
nonewhen only human decisions are left.internal_review_draftand never claims approval or release authority.Testing
Validated for this change set:
npm run validate:skillspassed across 65 skills with no errors or warnings.npm run ci:eval:lint:schemavalidated all 16 eval specifications, 110 reachable tag values, and all 35 parent agents.Build-AgentBehaviorSpec.ps1 -WhatIfreported no drift after regeneration.npm run docs:generate:checkreported no generated-reference drift across 233 pages, andnpm run plugin:validatepassed for all 10 marketplace packages.npm run validate:docspassed 10 documentation test suites and 101 tests;npm run spell-checkpassed across 836 files.The proposal-response operation journeys are exercised in the skill-behavior suite, which can observe the skill contract directly. The builder agent suite intentionally does not claim native agent-binding coverage because its current executor does not route through the named
.agent.mddefinition.Checklist
Required Checks
AI Artifact Contributions
hve-builderreview mode to review contributionhve-builderreviewRequired Local Checks
The following local-safe validation commands must pass before merging:
npm run validate:local(fails on existing markdown-link issues outside this feature)npm run validate:docsnpm run spell-checknpm run lint:md-links(fails on existing markdown link references and one missing prompt path)Security Considerations
Additional Notes
This change is intentionally scoped to a traceability-first, internal-review drafting workflow. The operational boundary remains strict: the skill records, qualifies, and drafts from approved evidence but does not authorize external use, approval, submission, or release decisions.
Two design choices are worth a reviewer's attention. The shared builder-extension contract ships as a reference inside the skill rather than as a packaged instruction file, because it is only needed when an agent activates the skill and it inherits the skill's existing package membership that way. And the returned pointer deliberately reports
record_countsrather than enumerating every retained record, so the contract a caller reads stays the same size as a response grows.