Skip to content

[#229] feat: pair-capability-grill interview engine#267

Open
rucka wants to merge 4 commits into
mainfrom
feature/#229-pair-capability-grill
Open

[#229] feat: pair-capability-grill interview engine#267
rucka wants to merge 4 commits into
mainfrom
feature/#229-pair-capability-grill

Conversation

@rucka

@rucka rucka commented Jul 7, 2026

Copy link
Copy Markdown
Collaborator

PR Information

PR Title: [#229] feat: pair-capability-grill interview engine
Story/Epic: #229 (pair-capability-grill — interview engine); Parent Epic #205 (Structured & parametrized brainstorming)
Type: Feature
Priority: P0 (Must-Have)
Assignee: N/A (agent-authored)
Reviewers: N/A
Labels: feature, documentation, skills

Summary

What Changed

Adds a new capability skill, pair-capability-grill (.claude/skills/pair-capability-grill/SKILL.md), a reusable write-free interview engine with two modes:

  • interview — freeform exploration of a topic, one question at a time, always with a recommendation.
  • sync — systematic AI↔human alignment across six story aspects (Goal, AC, Edge Cases, Dependencies, Design, Risks), ending only on explicit shared-understanding confirmation.

The skill explores the KB/codebase before asking anything answerable that way, never writes to adoption files or PM tool issues (the only permitted write is an optional .pair/working/ handoff), and is invocable standalone or composed by /pair-process-brainstorm (phase 1) and a future /pair-process-refine-story phase 0.

Docs and distribution were updated to catalog the new skill and reconcile capability/total skill counts (20→22 capability, 32/33→34 total) across the docs site and .pair/knowledge/skills-guide.md, plus the packaged knowledge-hub dataset copy.

A second commit (0b55179 / e12cb71 on this branch) fixed a mapping bug found during self-review: the Sync Coverage Checklist's Goal row referenced a User Value section that only exists in the template's Initial Breakdown, not the Refined User Story Template that sync mode targets — removed. The same commit also reconciled the capability count, which had been bumped 20→21 in the first commit against a stale baseline rather than the actual directory count (22).

Why This Change

Interviews currently happen ad hoc and inconsistently across brainstorm and refine-story. This story extracts a single, reusable, write-free interview engine so both flows (and standalone use) share the same one-at-a-time / always-recommend / explore-first discipline, and so the sync mode can gate the Ready transition (R3.11) on an explicit, systematically-covered shared understanding rather than an implicit one.

Story Context

User Story: As a pair user in discovery or refinement, I want pair-capability-grill — a reusable, write-free interview engine (one question at a time, always with a recommendation, exploring KB/codebase before asking) with a sync mode for AI↔human story alignment — so that interviews are consistent across brainstorm and refine, and shared understanding gates the Ready transition (R3.11).

Acceptance Criteria:

  1. One question at a time, each with a recommendation; anything answerable by exploring KB/codebase is explored instead of asked.
  2. $mode: sync covers all six story aspects systematically and ends only at explicit shared understanding, returning the alignment synthesis to the caller.
  3. Grill writes nothing to adoption/issues in any mode — returns synthesis to caller; standalone allows an optional .pair/working/ handoff on request.
  4. Standalone invocation works with no composition context (decision Q8).

Changes Made

Implementation Details

  • Change 1: Authored .claude/skills/pair-capability-grill/SKILL.md — frontmatter, Arguments ($mode/$topic/$story/$context/$aspects), Modes, 7-step Algorithm (Step 0 mode/target detection + HALT, Step 1 explore-first, Step 2 queue building, Step 3 one-question-at-a-time with mandatory recommendation, Step 4 explicit-confirmation-only exit, Step 5 synthesis assembly, Step 6 return-never-write + optional handoff), Sync Coverage Checklist, Output Format, Composition Interface, Example Transcripts, Edge Cases, HALT Conditions, Graceful Degradation, Notes.
  • Change 2: Built the six-row Sync Coverage Checklist mapping each aspect (Goal, AC, Edge Cases, Dependencies, Design, Risks) to the exact Refined User Story Template section(s), each with an "Explore First" source and a "Sample Probe".
  • Change 3: Specified the Composition Interface (brainstorm phase 1, refine-story phase 0 as a documented future extension, standalone) and the .pair/working/ handoff file convention (naming, content, degradation path if the directory can't be written).
  • Change 4: Updated docs site (skills-catalog.mdx, writing-skills.mdx, skill-management.mdx) and .pair/knowledge/skills-guide.md (project + distributed copies) with a new "Discovery" category and reconciled skill counts; added the distributed copy packages/knowledge-hub/dataset/.skills/capability/grill/SKILL.md.

Files Changed

  • Modified: .pair/knowledge/skills-guide.md, packages/knowledge-hub/dataset/.pair/knowledge/skills-guide.md, apps/website/content/docs/contributing/writing-skills.mdx, apps/website/content/docs/reference/skill-management.mdx, apps/website/content/docs/reference/skills-catalog.mdx
  • Added: .claude/skills/pair-capability-grill/SKILL.md, packages/knowledge-hub/dataset/.skills/capability/grill/SKILL.md
  • Deleted: None
  • Renamed: None

Database Changes

N/A — no database involved in this repo/change.

API Changes

N/A — no API surface changed; this is a prose skill definition (no runtime code per story sizing).

Testing

Test Coverage

  • Unit Tests: None — no runtime code to test (skill is a markdown prose asset).
  • Integration Tests: None.
  • End-to-End Tests: None specific to this change; existing @pair/website e2e suite re-run (see Test Results) since this branch touches docs-site pages/counts.
  • Manual Testing: Not performed as scripted, recorded session transcripts. The story's own Validation and Testing Strategy calls for "scripted session transcripts (interview + sync); write-free audit" — none exist in this diff or repo-wide. The two dialogues in SKILL.md's "Example Transcripts" section are illustrative documentation, not executed-and-captured verification evidence.

Test Results

Test Suite: quality-gate (ts:check, test, lint, prettier:fix, mdlint:fix, hygiene:check, docs:staleness) — PASS
Coverage: N/A (no runtime code added)
Performance Tests: N/A
Security Scan: N/A (no automated security scan configured in this repo)
Linting: Clean
Smoke tests (scripts/smoke-tests/run-all.sh): PASS — all scenarios passed
Website e2e (@pair/website, 35 tests): PASS on re-run (first run hit a 120s webserver cold-start timeout, unrelated to this diff — confirmed by clean retry with 35/35 green)

Testing Strategy

  • Happy Path: Not exercised via a scripted transcript — see gap noted above.
  • Edge Cases: "Don't know" → provisional-answer-as-assumption, and session-interrupted → handoff-offer are specified in prose (SKILL.md Edge Cases section) but not exercised in an actual session.
  • Error Handling: sync mode's HALT when no target story is resolvable is specified (Step 0.4 / HALT Conditions) but not exercised.
  • Performance: N/A.

Quality Assurance

Code Quality Checklist

  • Code (prose) follows established skill-authoring conventions (Check/Act/Verify step structure, matches other pair-capability-* skills)
  • Frontmatter and sections documented per skill-authoring guide
  • Edge cases documented (don't-know, interrupted session, already-answered aspect)
  • No security-sensitive logic (no runtime code, no secrets)
  • Performance considerations: N/A (no runtime code)
  • No debugging code or console logs (no code at all)

Review Areas

  • Business Logic: Verified prose against AC1–AC4 (see review comment for detail)
  • Code Structure: Single markdown file, consistent with sibling capability skills
  • Error Handling: Specified but unverified by execution — see review comment
  • Performance: N/A
  • Security: N/A — no code, no secrets, no external calls
  • Testing: Coverage gap — see review comment (no scripted transcripts / write-free audit)

Deployment Information

Environment Impact

  • Development: Ready — skill file is picked up by any agent reading .claude/skills/
  • Staging: N/A — no staging environment for skill content
  • Production: N/A — distributed via packages/knowledge-hub/dataset/ on next knowledge-hub release
  • Configuration: N/A

Deployment Notes

  • Database Migration: N/A
  • Configuration Changes: N/A
  • Feature Flags: N/A
  • Dependencies: None added (no package.json changes in this diff)

Rollback Plan

Revert the commits / delete .claude/skills/pair-capability-grill/ and the distributed dataset copy, and revert the doc count changes. No data or runtime state to roll back.

Breaking Changes

API Breaking Changes

N/A — no API in this repo affected.

Integration Breaking Changes

N/A — grill is a net-new, opt-in composition point; nothing currently calls it (refine-story's phase 0 composition is documented as a future extension, not yet wired).

Migration Guide

N/A.

Documentation

Documentation Updates

  • README: N/A — no README changes
  • API Documentation: N/A
  • User Documentation: Docs site updated — new "Discovery Capabilities" section in skills-catalog.mdx, count bumps in writing-skills.mdx / skill-management.mdx
  • Technical Documentation: .pair/knowledge/skills-guide.md updated with new "Discovery Skills (1)" subsection and directory tree entry

Knowledge Sharing

  • Technical Decisions: Composition contract (brainstorm/refine-story/standalone) documented inline in SKILL.md's Composition Interface section
  • Learning Notes: First-commit mapping bug (stray User Value section reference) and count-reconciliation miss are both disclosed in the issue's Task Breakdown notes and fixed in the follow-up commit on this branch
  • Best Practices: N/A beyond following the existing capability-skill authoring pattern

Performance Impact

Performance Metrics

  • Load Time: N/A
  • Response Time: N/A
  • Memory Usage: N/A
  • Database Performance: N/A

Benchmarking Results

N/A — no runtime code, nothing to benchmark.

Monitoring

  • Metrics Added: N/A
  • Alerts Configured: N/A
  • Dashboards Updated: N/A

Security Considerations

Security Review

  • Authentication: N/A — no auth surface
  • Authorization: N/A
  • Data Protection: N/A — grill's write-free contract is itself the main safety property of this story (AC3); asserted in three places in SKILL.md (Step 6, Composition Interface, Notes) but not independently audited (see Testing gap)
  • Input Validation: N/A — no code accepting untrusted input
  • Dependency Security: N/A — no dependencies added

Security Testing

  • Security Scan: N/A — no automated scan in this repo's pipeline
  • Penetration Testing: N/A
  • Compliance Check: N/A

Accessibility

Accessibility Compliance

N/A — no UI shipped in this change (docs-site count/text edits only, no new components).

Accessibility Testing

N/A.

Risk Assessment

Technical Risks

Risk Impact Probability Mitigation
Write-free contract (AC3) never independently exercised/audited Medium Medium Add a scripted write-free audit before this composes into refine-story's real writes
Sessions too long in sync mode (story's own risk table) Medium Medium Coverage checklist ordered by risk of omission; explored/already-answered aspects skipped
Composition contract with refine-story unverified (phase 0 not built) Low Medium Verify with a mock caller once /pair-process-refine-story phase 0 lands

Business Risks

Risk Impact Probability Mitigation
Docs count drift again as more skills are added Low Medium docs:staleness quality-gate check already catches this (ran PASS)
Inconsistent interview UX until brainstorm/refine actually adopt grill Low Low Tracked by dependent stories #230 (brainstorm) and refine-story extension (#202 epic)

Reviewer Guide

Review Focus Areas

  1. Business Logic Validation: Confirm the Algorithm's Steps 3/4/6 actually implement AC1 (one-at-a-time + recommendation + explore-first), AC2 (sync systematic coverage + explicit-only exit), AC3 (write-free), AC4 (standalone works with no context).
  2. Code Quality Assessment: Prose structure, consistency with sibling pair-capability-* skills, correctness of the Sync Coverage Checklist's section-name mapping against user-story-template.md.
  3. Technical Implementation: No architectural decision required (no runtime code, no new dependency); verify doc/count changes match the actual skill directory counts.

Testing the Changes

git checkout feature/#229-pair-capability-grill
pnpm install
pnpm quality-gate
pnpm smoke-tests
pnpm --filter @pair/website e2e
# Manually: invoke /pair-capability-grill in an agent session, standalone and with a mock $story, to exercise the modes.

Key Test Scenarios

  1. Scenario 1: Standalone interview mode with no $topic — should ask for the topic first, then proceed one question at a time with recommendations.
  2. Scenario 2: sync mode with $story pointing at a partially-refined story — should skip already-covered aspects and only queue genuinely open ones.
  3. Scenario 3: sync mode with no $story and no composer $context — should HALT per Step 0.4.

Dependencies & Related Work

Blocking Dependencies

  • PR Dependency: None
  • Infrastructure: None
  • Third-party: None

Related PRs

Follow-up Work

  • Technical Debt: Missing QA transcripts / write-free audit (DoD checklist items "Composition contract verified with a mock caller" and "Write-free property verified" are unchecked on issue pair-capability-grill — interview engine (interview|sync modes) #229) — flagged in review comment, not fixed in this PR per task scope.
  • Future Enhancements: Wire refine-story phase 0 to actually compose grill (currently documented as future extension only).
  • Monitoring: N/A.

Stakeholder Communication

Stakeholder Notification

  • Product Owner: N/A
  • Business Stakeholders: N/A
  • Customer Support: N/A
  • Operations Team: N/A

Communication Plan

  • Before Merge: N/A
  • After Deployment: N/A
  • Issue Response: N/A

@github-actions github-actions Bot temporarily deployed to Website Preview July 7, 2026 16:48 Inactive
@rucka

rucka commented Jul 7, 2026

Copy link
Copy Markdown
Collaborator Author

Review Information

PR Number: #267
Author: (branch author, feature/#229-pair-capability-grill)
Reviewer: pair-process-review (agent)
Review Date: 2026-07-07
Story/Epic: #229 (parent epic #205)
Review Type: Feature (documentation/skill-authoring — no runtime code per story sizing)
Estimated Review Time: 45 minutes

Review Summary

Overall Assessment

  • Approved with Comments — Minor/tech-debt issues noted, can merge (see verdict rationale below)

Key Changes Summary

Adds .claude/skills/pair-capability-grill/SKILL.md, a new write-free interview-engine capability skill (interview / sync modes), plus its distributed dataset copy, docs-site catalog entry, and reconciled capability/total skill counts (22 capability / 34 total). Two commits: the feature commit and a same-branch self-correction fixing a Sync Coverage Checklist mapping bug and the count reconciliation.

Business Value Validation

Delivers a reusable interview discipline (one-at-a-time, always-recommend, explore-first, write-free) intended to be composed by /pair-process-brainstorm and a future /pair-process-refine-story phase 0. Standalone-usable today per decision Q8. Value is real but not yet realized end-to-end: nothing in the repo composes grill yet (refine-story phase 0 is explicitly marked "future extension" in the skill text itself), so this PR lands the engine without a consumer.

Code Review Checklist

Functionality Review

  • Requirements Met — AC1 (one-at-a-time + recommendation + explore-first): Step 3/Step 1 (SKILL.md L44-56, L64-69). AC2 (sync systematic coverage, explicit-only exit): Sync Coverage Checklist (L101-112) + Step 4 (L79-84). AC3 (write-free): Step 6 (L91-99) + Composition Interface (L132-145) + Notes (L207). AC4 (standalone, no context required): Composition Interface "standalone" bullet (L141-143). All four ACs are traceable to specific prose sections — verified by direct read.
  • Business Logic — Logic (as prose) is internally consistent; the "don't know" → provisional-assumption and interrupted-session → handoff-offer edge cases are both specified (L169-173, Edge Cases section) and are the correct behaviors per the story's Edge Cases and Error Handling section.
  • User Experience — One-question-at-a-time with a mandatory recommendation line is a real, well-specified UX contract; format is unambiguous and easy for an LLM to follow.
  • Integration — Not yet integrated with anything. Refine-story composition (AC2's real trigger) is documented as "(future extension)" — L139. This is honestly disclosed, not hidden, but it means AC2 is only partially demonstrable today (sync mode works standalone with an explicit $story, but the composed path it's designed for doesn't exist yet).
  • Error Handling — HALT condition for sync with no resolvable $story is specified (Step 0.4, L26; HALT Conditions L197) and directly traceable.
  • Performance — N/A, no runtime code.

Code Quality Assessment

  • Readability — Clear, well-organized markdown; consistent with sibling pair-capability-* skills' Check/Act/Verify step structure.
  • Maintainability — Single self-contained file; six-row checklist table is easy to extend.
  • Reusability$aspects argument lets sync be scoped to a subset of the checklist (L20), reused by both standalone and composed invocations.
  • Naming — Argument names ($mode/$topic/$story/$context/$aspects) are clear and consistently used throughout.
  • Comments — N/A (prose file, not code), but the Notes section adequately restates the two most safety-relevant contracts (write-free, never-auto-exit) for redundancy.
  • Complexity — 7-step algorithm is appropriately scoped for what's being specified; no unnecessary complexity.

Technical Standards Compliance

  • Style Guide — Matches the skill-authoring convention used by every other pair-capability-* skill (frontmatter → Arguments → Modes/Algorithm → HALT/Graceful Degradation/Notes).
  • Architecture — No new architectural pattern introduced; consistent with existing skills infrastructure (ADR-005). Correctly does not introduce a new ADR since it's an addition within an already-adopted pattern, not a new pattern.
  • Design Patterns — N/A (prose).
  • Dependencies — None added; verified git diff main...HEAD --stat touches no package.json/lockfile.
  • API Design — N/A.
  • Database — N/A.

Security Review

Security Checklist

  • Input Validation — N/A, no code accepting untrusted input.
  • Output Encoding — N/A.
  • Authentication / Authorization — N/A.
  • Data Protection — The write-free contract (never touches adoption/issues) is itself the security-relevant property here. Stated three times (Step 6 L93, Composition Interface L132-145, Notes L207) but see Testing Review below — never independently exercised.
  • Dependency Security — No dependencies added.
  • Secrets Management — No secrets present or handled.
  • HTTPS/TLS — N/A.

Security Concerns

Concern Severity Description Recommendation
Write-free property (AC3) is asserted but not audited Medium The most safety-relevant AC (grill must never write to adoption/issues) is only prose assertion — no scripted session or mock-caller run has exercised it Run and record a write-free audit transcript (a session that tries several write-triggering prompts and confirms no file/issue write occurs) before this composes into real writes via refine-story

Testing Review

Test Coverage Assessment

  • Unit Tests — None exist or are expected (no runtime code; story sizing explicitly says "no runtime code").
  • Integration Tests — None. No mock-caller test exercises the Composition Interface end-to-end.
  • End-to-End Tests — Not scoped to this content, but the pre-existing @pair/website e2e suite was re-run since this branch touches docs-site pages/counts (see Testing Feedback) — passes.
  • Edge Cases — Specified in prose (don't-know, interrupted session, already-answered aspect) but not exercised by any recorded transcript.
  • Error Scenarios — The sync-with-no-$story HALT is specified but not exercised.
  • Performance Tests — N/A.

Test Quality Review

N/A — no automated tests exist for skill prose content in this repo (consistent with every other pair-capability-* skill).

Testing Feedback

Current Coverage: N/A (no runtime code base)
New Coverage: N/A
Coverage Change: N/A

quality-gate (ts:check, test, lint, prettier:fix, mdlint:fix, hygiene:check, docs:staleness): ✅ PASS (ran via pre-push hook)
smoke-tests (scripts/smoke-tests/run-all.sh --cleanup): ✅ PASS — all scenarios passed
@pair/website e2e (35 tests): ✅ PASS on retry (35/35). First attempt hit "Timed out waiting 120000ms from config.webServer" — a cold-start dev-server compile timeout, not a functional failure; ports were free before retry and the clean re-run passed 35/35 with no flakes, so this is environmental, not a regression introduced by this diff.

Real, disclosed gap (flagging only, not treated as blocking): The story's own Validation and Testing Strategy calls for "scripted session transcripts (interview + sync); write-free audit." Repo-wide search (grep -rl "write-free audit\|scripted session transcript" and find -iname "*grill*") found no such artifacts anywhere — only the two illustrative "Example Transcripts" inside SKILL.md itself, which are documentation prose written alongside the skill, not evidence from an executed session. The DoD checklist on issue #229 has both "Composition contract verified with a mock caller" and "Write-free property verified" unchecked, consistent with this being a genuine, acknowledged gap (the issue's own T-1/T-3/T-4 notes disclose this candidly) rather than an oversight.

Performance Review

N/A across the board — no runtime code, no database, no API.

Documentation Review

Documentation Checklist

  • Code Comments — N/A.
  • API Documentation — N/A.
  • README Updates — N/A, none needed.
  • User Documentationskills-catalog.mdx gets a new "Discovery Capabilities" section (one row for grill); writing-skills.mdx and skill-management.mdx get count bumps.
  • Technical Documentation.pair/knowledge/skills-guide.md (project + distributed dataset copy) gets a new "Discovery Skills (1)" subsection and directory-tree entry.
  • Change Log — N/A, no CHANGELOG in this repo's skill-authoring flow.

Documentation Quality

  • Accuracy — Verified: ls -d .claude/skills/pair-capability-*/ | wc -l = 22, process = 11, .claude/skills/pair-next = 1 → 34 total, matching every doc location on this branch. Also verified packages/knowledge-hub/dataset/.skills/ has matching capability (22) and process (11) counts.
  • Completeness — All four count-bearing doc locations were updated (skills-guide.md ×2 copies, writing-skills.mdx, skill-management.mdx, skills-catalog.mdx).
  • Clarity — Docs prose is clear and consistent with existing catalog entries' format.
  • Examples — Two example transcripts included in SKILL.md (interview, sync) — helpful for readers, though see Testing Review re: these not being verification evidence.
  • Up-to-date — Confirmed the count is still correct after the map-subdomains/map-contexts reclassified process→capability (scoped, callers matrix) #246 relocation merged into main (this branch is rebased onto latest main including map-subdomains/map-contexts reclassified process→capability (scoped, callers matrix) #246): docs:staleness quality-gate check reports "PASS — 34 skills, 8 commands in sync" on this exact branch state, and my independent directory count matches. No further count drift found.

Detailed Review Comments

Positive Feedback

What's Done Well:

  • The Sync Coverage Checklist → Refined User Story Template section mapping (L101-112) was independently cross-checked against .pair/knowledge/guidelines/collaboration/templates/user-story-template.md's actual headings — every mapped section name now resolves exactly (Story Statement, Acceptance Criteria, Edge Cases and Error Handling, Dependencies and Coordination, Technical Analysis, Technical Risks and Mitigation). The stray User Value reference (only present in the template's Initial Breakdown, not Refined) that shipped in the first commit is confirmed absent in the current Goal row (L107) — the self-correction genuinely landed.
  • All relative markdown links in SKILL.md (../../../.pair/adoption/product/PRD.md, .../tech/way-of-working.md, .../tech/architecture.md, .../tech/tech-stack.md, .../knowledge/guidelines/collaboration/templates/user-story-template.md) were verified to resolve to real files from the skill's actual path — no broken links.
  • The write-free contract is stated redundantly in three independent places (Step 6, Composition Interface, Notes) rather than once — good defense against future partial edits silently weakening the guarantee.
  • Honest self-disclosure: the SKILL.md text itself flags the refine-story composition as "(future extension)" rather than overstating what's wired up today.

Issues to Address

Critical Issues ⚠️

None found.

Major Issues 🔍

  • .claude/skills/pair-capability-grill/SKILL.md (whole file, cf. issue pair-capability-grill — interview engine (interview|sync modes) #229 DoD checklist) — Write-free property (AC3, the story's most safety-relevant AC) has never been independently exercised. No scripted transcript, no mock-caller test, no write-free audit exists anywhere in the repo. This is a real verification gap, not a formality — recommend it be closed (via a follow-up task, not blocking this merge given the skill has no live composer yet) before grill is wired into refine-story's actual writes.

Minor Issues 💡

  • Issue pair-capability-grill — interview engine (interview|sync modes) #229 DoD — "Composition contract verified with a mock caller" is unchecked and no mock-caller artifact exists; consistent with the Major issue above but specifically about the composed-invocation shapes (brainstorm's $context, refine-story's $story/$context) never having been exercised against actual input.
  • .pair/adoption/decision-log/ — Decision Q8 ("standalone allowed") is recorded only in issue pair-capability-grill — interview engine (interview|sync modes) #229's prose ("Refinement Session Insights: Q8 decided"), not as a dedicated decision-log entry. Given this repo's convention of recording project decisions as ADR/ADL, this is arguably borderline — it's a scoping decision for one story rather than a durable cross-cutting policy, so I'm not treating it as blocking, but flagging for the team's judgment call.

Questions ❓

Suggestions and Improvements

Architecture Suggestions

  • None required — no runtime code, no architectural pattern change. The prose-only, single-file skill approach is consistent with every other pair-capability-* skill in this repo.

Best Practices

  • Before refine-story's phase 0 actually composes grill, run the scripted transcripts (interview + sync) and a write-free audit called for by the story's own Validation and Testing Strategy — this closes both unchecked DoD boxes and the Major issue above.

Risk Assessment

Technical Risks

Risk Impact Probability Mitigation
Write-free contract unverified by execution Medium Medium Scripted write-free audit before composing into refine-story's real writes
Composition contract (refine-story shape) unverified with a mock caller Low Medium Mock-caller test once /pair-process-refine-story phase 0 exists
Sync-mode session length (story's own risk) Medium Medium Already mitigated by risk-ordered checklist + skip-if-explored (L113-114)

Business Risks

Risk Impact Probability Mitigation
Doc count drift as more skills are added Low Medium docs:staleness quality-gate check already catches this automatically
Grill ships with no consumer, value not yet realized Low High Tracked by dependent stories #230 and refine-story extension (#202 epic)

Deployment Considerations

Deployment Checklist

  • Database Migration — N/A
  • Configuration — N/A
  • Feature Flags — N/A, not flag-gated (skill files are additive/opt-in by nature)
  • Rollback Plan — Trivial: delete the skill file + distributed copy + revert doc counts
  • Monitoring — N/A, docs:staleness gate is the only relevant automated check and it's green
  • Documentation — Updated and verified accurate (see Documentation Review)

Tech Debt Assessment

New debt introduced by this diff specifically:

  1. Missing verification artifacts (Medium priority, Medium impact × Low effort to close) — No scripted transcripts or write-free audit exist despite being explicitly called for by the story. Low effort to close (a few conversation-driven sessions), medium impact because it's the story's core safety guarantee. Recommend prioritizing before refine-story composition lands.
  2. One-sided composition contract (Low priority, Low impact × Medium effort to close) — Composition Interface documents the refine-story shape but nothing on the other end exists to validate it against. Naturally resolves once refine-story phase 0 is built and a mock-caller test is added; not worth separate tracking beyond the dependent story already in the backlog.

No pre-existing repo debt is being newly surfaced by this review — both items above are scoped strictly to this diff's own unmet DoD boxes.

Adoption Compliance

Area Status Notes
Tech Stack (dependencies) CONFORMANT No package.json/lockfile changes in this diff — nothing new to record.
Architecture / ADR CONFORMANT No new architectural pattern; addition fits within existing skills infrastructure (ADR-005) — no new ADR required.
Security CONFORMANT No code, no secrets, no external calls; write-free contract is the relevant control and is documented (verification gap noted above, not a compliance failure).
Coding Standards CONFORMANT Follows the established skill-authoring convention used by every sibling pair-capability-* skill.
Infrastructure CONFORMANT No infra changes.
Decision Recording (ADL) MINOR GAP Decision Q8 (standalone allowed) is recorded in issue prose only, not as a dedicated decision-log entry — see Minor Issues above; not blocking.

Follow-up Actions

Author Action Items

Reviewer Follow-up

  • Re-review — Not required before merge (no critical/blocking issues); recommend a lightweight follow-up review once the write-free audit lands.

Team Actions

  • Process Improvement — Consider whether "scripted verification transcript" should become a checked-by-CI or checked-by-reviewer gate for future write-free/safety-critical skills, given this is the second time (per the issue's own notes) that a stated DoD item shipped unchecked.

Review Timeline

Review Process

  • Review Started: 2026-07-07
  • Initial Review Completed: 2026-07-07
  • Final Assessment: Approved with Comments (tech debt tracked, not blocking)

Review Effort

  • Time Spent Reviewing: ~45 minutes (diff read, issue cross-check, template verification, quality-gate/smoke-tests/e2e run, doc-count independent verification, link-resolution check)
  • Complexity Level: Low (no runtime code) but High diligence required (safety-relevant write-free claim needed independent verification of absence of evidence)
  • Review Thoroughness: Deep

Verdict: TECH-DEBT (approve with tracking)

No critical issues, no missing ADR, no security holes, no failing quality gates/tests. The one Major issue (missing write-free audit / mock-caller verification) is a real, honestly-disclosed gap consistent with "minor issues or debt items" rather than a blocker — grill has no live composer yet, so nothing in production depends on the unverified property today. Recommend tracking the two follow-up action items above rather than requesting changes on this PR.

Note on self-approval: Per GitHub's own restriction, gh pr review --approve on this PR by the same actor that opened it will fail ("cannot approve your own pull request"). Attempted and confirmed below — this is expected and does not indicate a review-process failure.

@rucka rucka force-pushed the feature/#229-pair-capability-grill branch from e12cb71 to 298eb19 Compare July 7, 2026 18:47
@github-actions github-actions Bot temporarily deployed to Website Preview July 7, 2026 18:47 Inactive
@rucka rucka force-pushed the feature/#229-pair-capability-grill branch from 298eb19 to ae24163 Compare July 7, 2026 19:16
@github-actions github-actions Bot temporarily deployed to Website Preview July 7, 2026 19:16 Inactive
@rucka rucka force-pushed the feature/#229-pair-capability-grill branch from ae24163 to 1bb14e7 Compare July 8, 2026 08:28
@github-actions github-actions Bot temporarily deployed to Website Preview July 8, 2026 08:29 Inactive
@rucka rucka force-pushed the feature/#229-pair-capability-grill branch from 1bb14e7 to cffeecc Compare July 8, 2026 09:33
@github-actions github-actions Bot temporarily deployed to Website Preview July 8, 2026 09:33 Inactive
rucka added 3 commits July 8, 2026 15:40
one-question-at-a-time capability, interview|sync modes, write-free.
sync mode = systematic story coverage (goal/AC/edge/deps/design/risks)
until explicit shared understanding. distributes to .claude/skills;
catalog docs + skills-guide updated.
Goal aspect mapped to Refined template's only matching section
(Story Statement; User Value is Initial-Breakdown-only). Reconciled
capability count to 22 (verified dir count) across skills-guide and
website docs; skills-catalog.mdx was already correct.
…base

Found while rebasing this branch onto the updated main: this file's own
"Process 11 / Capability 22" counts predate #246's process→capability
reclassification and weren't part of the rebase conflict (git auto-merged
it verbatim since main never touched this specific file). Corrected to
Process 9 / Capability 24, consistent with skills-guide.md and
skills-catalog.mdx. Also fixed a pre-existing MD012 (multiple blank lines)
markdownlint violation at EOF.

Refs: #229
@rucka rucka force-pushed the feature/#229-pair-capability-grill branch from cffeecc to 70605aa Compare July 8, 2026 13:46
@github-actions github-actions Bot temporarily deployed to Website Preview July 8, 2026 13:47 Inactive
…iew remediation)

- Add a HITL self-answering guard to Step 3 (both SKILL.md copies):
  the agent must never answer a question on the human's behalf or
  treat a missing reply as acceptance. Inspired by an equivalent fix
  landed in mattpocock/skills' wayfinder/grilling (v1.1, 2026-07-06):
  "a grilling agent that answers its own questions has broken this."
- Record decision-log/2026-07-08-grill-standalone-no-composition-context.md
  (Q8): the story's own AC/Composition Interface cite "decision Q8" with
  no backing record — same gap pattern closed for D21/Q11 in #232.

Refs: #229
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant