Merge origin/main into feature/ADR-296-concurrency - #79
Merged
jodavis merged 10 commits intoJul 22, 2026
Conversation
* ADR-317: Add playbook-contract knowledge skill Defines the normative two-layer playbook directory contract (required SKILL.md + spec-template.md; optional dev-team.md overlay and scripts), TODO marker semantics with mandatory manual fallbacks, vendor-neutrality rules with compliant/violating step-prose examples, the Method marker convention (format, lifecycle, post-harvest target shape), and bare-name playbook resolution order. * ADR-317: Restructure violating vendor-neutrality example to lead with quoted bad step prose Addresses PR #62 review comment: the Violating bullet previously led with the litmus question instead of a concrete example of violating step prose, unlike the Compliant bullet which quotes a complete step. Now both bullets quote step prose first, with the litmus question explained as the diagnostic used to catch the violation. * ADR-317: Broaden playbook-contract use-case to any reusable process Review feedback: the "Use this skill when" bullet described playbooks narrowly as capturing "how to build a family of similar components," but a playbook can capture any reusable process discovered while implementing a spec (a testing strategy, a documentation format, etc.), not only component-building. Reworded to list component-family construction as one example among several rather than the sole use case. * ADR-317: Remove dev-team.md overlay concept from playbook contract Review feedback: no dev-team artifacts should live in the playbook directory contract until a real need for one proves itself. Removed the dev-team.md optional overlay from the directory tree diagram and its explanatory bullet, dropped the resulting "two-layer" framing from the section heading and frontmatter description (only the required core plus optional scripts/assets remain), and reworded the intro paragraph to state plainly that the contract has no dev-team-specific overlay file. * ADR-317: Remove dev-team.md overlay references from spec The overlay concept was dropped from playbook-contract per PR #62 review feedback (no dev-team artifacts in playbooks until a real need proves itself). Updates the spec's design decisions, directory tree diagrams, Component Breakdown, Open Questions, and task exit criteria (including retroactive updates to the already-completed Task 1) to match. Closes #64. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JNYTYW974in8rcD7cWd3Ca --------- Co-authored-by: Claude on behlaf of jodavis <ElwoodMoves@hotmail.com> Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
* ADR-318: Build the skill dry-run harness for Playbook Harvesting Fixtures and a documented run procedure that verify the Testable prose components (harvest-playbook, spec-first-draft instance mode, spec-task-breakdown seeding) introduced by the Playbook Harvesting feature, per missing-test-harness. Key decisions: - Fixture directory: plugins/dev-team/fixtures/playbook-harvesting/ (shared location, since three later skills' dry runs each consume a subset). - Interview answer key: a Markdown table (question theme -> scripted answer), human-readable and easy for a validating subagent to parse. - Mechanical assertions live inline in RUN.md under each component's checklist item, rather than as separate scripts. - Method-marker format and playbook-directory contract authored directly from _spec_PlaybookHarvesting.md's own definitions, since ADR-317 (playbook-contract) has not landed yet in this worktree; cross-check against the real playbook-contract SKILL.md once ADR-317 lands. - materialize.py's git-replay logic was driven through genuine red/green TDD directly (tests-first, confirmed red, then green) rather than the full tdd-tester/tdd-implementer/tdd-refactorer trio spawn, since the component is overwhelmingly hand-authored fixture content with only one small, cohesive piece of AAA-testable logic. * ADR-318: validate manifest entry shape before dereferencing dir/message keys materialize.py's load_manifest() and validate_snapshots_exist() dereferenced entry["dir"]/entry["message"] without first checking the entry was a dict carrying both keys as strings. A malformed manifest entry raised an uncaught KeyError/TypeError with a raw traceback, violating the module's documented contract of printing a friendly "Error: ..." message and exiting 1. Adds _validate_entry_shape(), called from load_manifest() for every entry, which raises MaterializeError with a clear message for a non-dict entry, a missing dir/message key, or a non-string dir/message value. Adds 5 tests covering each new failure branch. Addresses PR review comment on #66. --------- Co-authored-by: Claude on behlaf of jodavis <ElwoodMoves@hotmail.com>
* Readiness review updates for concurrent implementation and playbook harvesting specs * Give `SendMessage` tool to Developer sub-agent * Improve efficiency of sub agent startup by caching more information in the task context file * TDD isolation using a driver script * Tweak language in use-context-file/SKILL.md * Address PR #68 review comments - Keep each trio member's claude subprocess alive across turns via --input-format/--output-format stream-json instead of restarting per turn (--resume every call). Confirmed by live smoke test: session_id and prompt cache persist across turns, and tool auto-approval needs no extra control-request handling. Also caught and fixed a real gap found during that smoke test: --output-format stream-json requires --verbose alongside --print. - Make the TDD trio's test-file/production-file split configurable via a new testing.test-file-patterns project config key instead of a hardcoded Python-only convention. - Pass the component prompt to tdd_cycle.py over stdin instead of a scratch temp file. - Remove dead fallback in _project_configuration now that context files always cache project configuration at creation time. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Fx1tsWZzfZCMemBEiN2TF1 --------- Co-authored-by: Claude on behlaf of jodavis <ElwoodMoves@hotmail.com> Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
…cher (#69) * ADR-319: Implement harvest-playbook skill and /harvest command dispatcher Adds plugins/dev-team/skills/harvest-playbook/SKILL.md, the core six-step harvest procedure (gather inputs from paths -> build candidate method content via Method markers/litmus-test classification/exemplar diffing -> interview -> author the playbook directory -> replace consumed Method markers with provenance links -> present the TODO list and replay-and-diff validation procedure), and plugins/dev-team/commands/harvest.md, a thin dispatcher documenting the argument contract and forwarding to the skill. Key decisions: - The Testable component (harvest-playbook) was implemented directly rather than through the tdd-tester/tdd-implementer/tdd-refactorer trio: the component is pure agent-skill prose with no AAA-testable logic of its own, verified instead by the fixture-driven dry-run harness (component-taxonomy's explicit "agent-skill prose" example of a Testable component verified by whatever mechanism fits). This mirrors ADR-318's own precedent of bypassing the trio for its hand-authored-fixture content. - Treated the dry-run checklist (authored before the skill prose, red) as this task's TDD-red analogue in place of Gherkin E2E scenarios, since no Gherkin/BDD harness exists anywhere in this repo and missing-test-harness prohibits inventing one; the checklist is included in the work summary as reviewable content per the brief. - Verified green by materializing the fixture exemplar repos, spawning a subagent blind to authoring context to run harvest-playbook to completion against the fixture spec/exemplars/template-output/interview-answer-key, and grading its output against the checklist (all mechanical and judgment-shaped items passed, including the derived strip/replace step and the surfaced logging-format divergence). * ADR-319: address PR review comments on harvest-playbook - Support partial-spec harvests: scope can be given conversationally in step 1, or asked explicitly at the start of step 3, instead of assuming the whole artifact is always in scope. - Add a review step (step 5) that invokes spec-discussion against the authored playbook's SKILL.md before Method markers are replaced, so the user can leave REVIEW comments the same way they would on a spec. - Reword the Method provenance line per suggestion ("see" instead of "harvested into"). - Drop the replay-and-diff validation procedure from harvest-playbook's presented output — it's this feature's own one-time acceptance test (see _spec_PlaybookHarvesting.md), not a standard step for every harvested playbook. Updated the spec's decision record and Task 3 exit criteria to match. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RBnDBvr47h4fVqNte6feE2 --------- Co-authored-by: Claude on behlaf of jodavis <ElwoodMoves@hotmail.com> Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
… spec pipeline (#71) * ADR-320: spec-discussion guards Method markers from being treated as review comments * ADR-320: spec-first-draft review-pass message teaches Method marker callout * ADR-320: spec-first-draft header template uses Design doc line instead of Will become * ADR-320: final-sign-off passively mentions /harvest availability when spec has Method markers * ADR-320: retrofit existing spec headers to the Design doc form * ADR-320: address PR review comments - Revert final-sign-off's passive /harvest mention (commit 3fce0a6) — not worth the added complexity for a reminder comment, per review feedback. - spec-first-draft: name spec-task-breakdown as the explicit owner of the "final documentation task" the Design doc header line refers to, and state the invariant that every task breakdown must append it. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RBnDBvr47h4fVqNte6feE2 --------- Co-authored-by: Claude on behlaf of jodavis <ElwoodMoves@hotmail.com> Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
…ec (#76) * Add write-design-spec PM design phase, rename spec pipeline to dev-spec Splits the old single-pass spec skill into two phases: write-design-spec produces a PM-style design (problem, solution, observable behavior, broken into independently cuttable deliverables), while write-dev-spec (renamed from spec) covers the implementation-level "how" that follows it. The dev-spec-* rename disambiguates the existing pipeline now that "design" and "spec" are both real, distinct document types. - New write-design-spec command and its skills: gather-brief-sources, design-first-draft, design-deliverable-breakdown, design-work-items, researcher-design-review. - Renamed spec-* skills to dev-spec-* (dev-spec-first-draft, dev-spec-task-breakdown, dev-spec-task-work-items, read-dev-spec-section, researcher-dev-spec-review) and merged the document-review skills (spec-discussion, spec-readiness-review) into shared, document-type-agnostic document-discussion and document-readiness-review skills. - documentation.specs now covers the new PM design doc (_design_<slug>.md); the old dev spec category moves to the new documentation.dev-specs key (_spec_<slug>.md unchanged on disk). - add-to-spec stays a single command that branches internally by document type rather than splitting in two. - Updated all ripple references across README, researcher agent, playbook-contract, harvest-playbook, and the playbook-harvesting fixture/dry-run harness to the renamed skill names. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * Address PR #76 review feedback on write-design-spec skill - Move specs location to docs/ (design docs span the whole project) - Push stop-condition wording to gather-brief-sources: warn on an unresolved specifically-referenced source instead of treating "no tracked work item" as a stop condition in write-design-spec / write-dev-spec - Clarify independently-cuttable sizing rule: siblings may depend on one shipping before them, but never only lay groundwork for a later one; spell out the two failure modes this guards against - Move "identify related existing work items" to a new step 2 in write-design-spec, before the first draft, and have design-deliverable-breakdown reconcile against that list instead of asking fresh per-deliverable Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> --------- Co-authored-by: Claude on behlaf of jodavis <ElwoodMoves@hotmail.com> Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
* Add /dev-team:config skill and fix stale developer-standards entry Adds a config command and update-project-configuration skill for initializing or changing .dev-team/config.yaml settings at the user, project, or per-user-local tier. Also removes this project's committed config.yaml entry for CLAUDE.md, which doesn't exist in this repo. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * Rename /dev-team:config command to /dev-team:configure, add C# test detection Address PR review comments: rename the command file (and thus its slash name) from config.md to configure.md per reviewer request, and extend the testing-detection find command in update-project-configuration/SKILL.md to also match C# xUnit/NUnit/MSTest conventions (*Tests.cs, *Test.cs). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> --------- Co-authored-by: Claude on behlaf of jodavis <ElwoodMoves@hotmail.com> Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
jodavis
approved these changes
Jul 21, 2026
…96-concurrency # Conflicts: # plugins/dev-team/skills/ensure-working-branch/SKILL.md # plugins/dev-team/skills/workflow-orchestrate/scripts/dev_team.py
jodavis
force-pushed
the
merge/main-into-ADR-296-concurrency
branch
from
July 22, 2026 00:31
800f5a0 to
4597613
Compare
build-and-test: Python test resultsStatus: ✅ Passed Test log |
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.
Summary
feature/ADR-296-concurrencywithorigin/main. The branch was reset to the currentorigin/feature/ADR-296-concurrencytip (it had moved forward to include ADR-308's task-readiness-checker work, ADR-308: Task readiness checker and dependency-aware base-branch resolver #70) and re-merged fromorigin/mainafter that move surfaced additional conflicts.plugins/dev-team/skills/workflow-orchestrate/scripts/dev_team.py:main's inlinePipelineContextdataclass collides with this branch's already-extractedpipeline_context.pymodule (added by ADR-335). Resolved by dropping main's inline redefinition — the extracted module is a strict superset (same fields plusextra_frontmatterpreservation) anddev_team.pyalready importsPipelineContextfrom it.plugins/dev-team/skills/ensure-working-branch/SKILL.md: two related conflicts.main's later efficiency fix (0c75f3f) of readinggit-repo/documentationfrom the context file's cachedProject Configurationsection instead of invokingget-project-configurationfresh — ADR-308 had branched off the pre-efficiency-fix version and never picked that change up, so keeping its literal text would have been a silent regression.documentation.specs.search→documentation.dev-specs.search: adoptedmain's renamed key (from Add write-design-spec PM design phase; rename spec pipeline to dev-spec #76), sincedocumentation.specsnow refers to the new PM design doc, not the dev spec.plugins/dev-team/skills/spec-task-breakdown/SKILL.md→dev-spec-task-breakdown/SKILL.mdmerged cleanly as a rename both times; this branch never touched that file.Test plan
python -m py_compileondev_team.pyandpipeline_context.pypytest test_dev_team.py test_pipeline_context.py— 137 passed, 1 pre-existing failure (test_home_relative_script_is_expanded, a WindowsHOME/expanduser()env quirk unrelated to this merge)merge_config.py --repo-root .parses cleanly<<<<<<</=======/>>>>>>>conflict markers — none founddocumentation.specsreferences in the resolved file — none found🤖 Generated with Claude Code