Skip to content

feat(workflow): implement lightweight SDD and stabilize delivery workflows - #121

Merged
eschaar merged 17 commits into
mainfrom
docs/lightweight-sdd-proposal
Oct 26, 2026
Merged

eschaar merged 17 commits into
mainfrom
docs/lightweight-sdd-proposal

Conversation

@eschaar

@eschaar eschaar commented Oct 26, 2026

Copy link
Copy Markdown
Owner

Summary

  • Implement compact, changedoc-driven lightweight SDD across source templates, delivery roles, testing instructions, and generated artifacts.
  • Preserve proportional routing, scope ownership, approvals, existing customized templates, and explicit verification evidence.
  • Fix legacy manifest location and MD5 migrations, malformed workflow stage validation, and invalid manifest error handling.
  • Isolate baseline benchmarks from user Git state, select native benchmark runners, and report failures explicitly.
  • Align changedoc paths and tester routing; push approved changes before reusing existing pull requests.
  • Refresh related documentation and verify the built wheel install lifecycle before publication.
  • Verification: 778 tests passed on each of Python 3.11, 3.12, 3.13, 3.14, and 3.15, with 100% coverage per runtime. Formatting, Markdown lint, Ruff, mypy, source validation, and installed artifact verification passed. A freshly built wheel passed install, verify, reinstall, verify, and uninstall outside the checkout in isolated Python mode.

Why

  • Keep delivery intent and evidence concrete and durable without introducing a heavyweight specification framework or mandatory full pipeline.
  • Reduce instruction duplication while retaining safety and contract obligations.
  • Resolve the runtime and procedural defects identified by the repository audit.
  • Actual credit-consumption measurement and live Copilot delivery scenarios are explicitly outside the agreed verification scope.

Version impact

  • None
  • Patch
  • Minor
  • Major

eschaar and others added 15 commits October 17, 2026 16:23
Define proportional requirements, acceptance, execution planning, and evidence using existing vstack artifacts. Keep the proposal in CONCEPT without implementing product changes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Extend changedocs with requirements, optional tasks, and criterion-linked evidence. Align skills and roles around proportional routing, preserved approvals, and bounded verification without new runtime tooling.

Reduce aggregate source and rendered guidance size, preserve customized templates, and add rendered-contract and adoption regressions. Regenerate managed artifacts and golden fixtures.

Validation: 734 tests pass with 100% coverage on Python 3.14; make check, vstack validate, and vstack verify pass. Other Python matrix interpreters are unavailable.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Detect manifests in the legacy .github location, require explicit migration for other operations, and preserve both files when migration cannot proceed.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Infer 32-character legacy checksums as MD5 before manifest schema migration changes the top-level default to SHA-256.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Fail fast with indexed validation errors when workflow stages are not mappings or have missing, non-string, or empty roles.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Validate the decoded manifest root before model conversion so arrays, null values, and other JSON scalars become the standard read error.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Compare against a detached worktree instead of stashing or switching the user's branch. Exercise clean, staged, unstaged and untracked states with an existing stash on benchmark success and failure.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Remove cross-ecosystem fallbacks and suppressed errors. Distinguish failed or unavailable measurements from performance passes and test runner selection and exit propagation.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use the existing explicit project-root output override so product writes docs/changes consistently with the changedoc skill, including with a custom items root.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Keep guardrails scoped to destructive-action safety and use inspect or authorized verify for reliability and observability checks.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Do not exit before pushing when a PR exists. Stop on GitHub or push failures and replace blanket staging and cleanup messages with scoped Conventional Commits.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Correct skill inventory and dependency constraints, document focused planner routing and configurable approval policy, and repair historical report links.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Exercise fresh install, source/output verification, reinstall and tracked-artifact removal outside the checkout under Python isolated mode. Verified locally using a freshly built wheel in a separate environment.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Exercise missing and blank roles through direct graph validation and refresh generated manifest state after the full install pass. The full quality gate now passes 778 tests with 100 percent coverage on Python 3.14.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@eschaar
eschaar force-pushed the docs/lightweight-sdd-proposal branch from a93986e to 541ee64 Compare October 26, 2026 20:56
@eschaar
eschaar requested a balanced review from Copilot October 26, 2026 21:04

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Benchmark comparisons can target different components, and PR reuse can select an unrelated fork’s pull request.

2 open issues
What changed in this PR

This PR introduces lightweight specification-driven delivery through vstack’s existing changedocs, skills, and delivery roles. It connects scope to verification evidence while preserving proportional workflows, ownership, and required approvals.

Changes:

  • Simplifies delivery guidance and adds change-local requirements, optional tasks, and explicit evidence states.
  • Hardens manifest migration, workflow validation, benchmark isolation, and push-before-PR-reuse behavior.
  • Adds regression coverage and isolated wheel lifecycle checks, updates documentation, and regenerates installed artifacts.
File Description
tests/​vstack/​test_publish_workflow.py Checks wheel lifecycle smoke-test commands.
tests/​vstack/​skills/​test_templates.py Tests PR sequencing and compact delivery guidance.
tests/​vstack/​skills/​test_shell_workflows.py Tests benchmark isolation and runner failures.
tests/​vstack/​manifest/​test_store.py Covers legacy MD5 and invalid manifest roots.
tests/​vstack/​instructions/​test_generator.py Checks rendered acceptance-focused testing policy.
tests/​vstack/​cli/​test_service.py Covers manifest migration safeguards and errors.
tests/​vstack/​cli/​test_interface.py Covers malformed workflow stage rejection.
tests/​vstack/​cli/​test_install.py Tests additive changedoc seeding and preservation.
tests/​vstack/​agents/​test_template_structure.py Checks role routing, ownership, and evidence guidance.
tests/​vstack/​agents/​test_generator.py Tests canonical changedoc output paths.
tests/​_fixtures/​golden/​instructions/​testing.instructions.md Updates expected testing policy output.
tests/​_fixtures/​golden/​agents/​product.agent.md Updates expected product-role output.
tests/​_fixtures/​golden/​agents/​planner.agent.md Updates expected planner output.
src/​vstack/​manifest/​store.py Detects legacy locations, preserves MD5, validates roots.
src/​vstack/​cli/​service.py Migrates legacy manifests without overwriting destinations.
src/​vstack/​cli/​interface.py Rejects malformed stages with indexed diagnostics.
src/​vstack/​_templates/​skills/​verify/​template.md Defines scoped, authorized verification and evidence reporting.
src/​vstack/​_templates/​skills/​verify/​config.yaml Updates verification description and version.
src/​vstack/​_templates/​skills/​requirements/​template.md Simplifies requirements and acceptance capture.
src/​vstack/​_templates/​skills/​requirements/​config.yaml Updates requirements description and version.
src/​vstack/​_templates/​skills/​pr/​template.md Pushes before reuse and preserves command failures.
src/​vstack/​_templates/​skills/​pr/​config.yaml Documents PR reuse and template-based creation.
src/​vstack/​_templates/​skills/​performance/​template.md Adds isolated baselines and explicit benchmark outcomes.
src/​vstack/​_templates/​skills/​performance/​config.yaml Bumps performance skill version.
src/​vstack/​_templates/​skills/​inspect/​template.md Aligns read-only assessment with acceptance evidence.
src/​vstack/​_templates/​skills/​inspect/​config.yaml Updates inspection description and version.
src/​vstack/​_templates/​skills/​changedoc/​template.md Defines proportional planning and evidence lifecycle.
src/​vstack/​_templates/​skills/​changedoc/​config.yaml Updates changedoc description and version.
src/​vstack/​_templates/​skills/​analyse/​template.md Adds scoped consistency review without implementation.
src/​vstack/​_templates/​skills/​analyse/​config.yaml Updates analysis description and version.
src/​vstack/​_templates/​instructions/​testing/​template.md Links testing policy to observable acceptance.
src/​vstack/​_templates/​instructions/​testing/​config.yaml Bumps testing instruction version.
src/​vstack/​_templates/​agents/​tester/​template.md Clarifies evidence ownership and reliability routing.
src/​vstack/​_templates/​agents/​tester/​config.yaml Bumps tester version.
src/​vstack/​_templates/​agents/​release/​template.md Requires current scoped evidence and sign-offs.
src/​vstack/​_templates/​agents/​release/​config.yaml Updates release-role description and version.
src/​vstack/​_templates/​agents/​product/​template.md Introduces proportional intake and explicit lifecycle states.
src/​vstack/​_templates/​agents/​product/​config.yaml Corrects changedoc ownership path and role metadata.
src/​vstack/​_templates/​agents/​product/​artifacts/​changes/​changedoc.md Adds requirements, optional tasks, and verification sections.
src/​vstack/​_templates/​agents/​planner/​template.md Refines focused routing and independent stage execution.
src/​vstack/​_templates/​agents/​planner/​config.yaml Updates planner description and version.
src/​vstack/​_templates/​agents/​engineer/​template.md Connects implementation slices to acceptance evidence.
src/​vstack/​_templates/​agents/​engineer/​config.yaml Bumps engineer version.
src/​vstack/​_templates/​agents/​designer/​template.md Limits baseline updates to affected contracts.
src/​vstack/​_templates/​agents/​designer/​config.yaml Bumps designer version.
src/​vstack/​_templates/​agents/​architect/​template.md Connects affected constraints and risks to acceptance.
src/​vstack/​_templates/​agents/​architect/​config.yaml Bumps architect version.
docs/​user/​explanation/​workflow-modes.md Explains focused routing versus full pipelines.
docs/​releases/​2026-05-12.md Corrects relative report links.
docs/​product/​roadmap.md Records lightweight delivery and deferred automation.
docs/​product/​requirements.md Adds delivery requirements and corrects catalog/dependency facts.
docs/​design/​workflow.md Documents proportional entry, evidence, and approval semantics.
docs/​design/​overview.md Describes changedoc evolution and wheel lifecycle checks.
docs/​architecture/​overview.md Documents change-local intent and role ownership.
docs/​architecture/​adr/​033-lightweight-sdd.md Records the decision, alternatives, and pipeline impact.
.github/​workflows/​publish.yml Smoke-tests isolated install, verify, reinstall, and uninstall.
.github/​skills/​workflow-check/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​vision/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​verify/​SKILL.md Regenerates scoped verification guidance.
.github/​skills/​upgrade-plan/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​threat-model/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​terragrunt/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​terraform/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​space-setup/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​simplify/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​security/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​secret-scan/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​requirements/​SKILL.md Regenerates proportional requirements guidance.
.github/​skills/​release-notes/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​release-check/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​refactor/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​reasoning/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​rca/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​rancher/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​pr/​SKILL.md Regenerates push-before-reuse PR guidance.
.github/​skills/​postmortem/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​performance/​SKILL.md Regenerates isolated benchmark guidance.
.github/​skills/​openapi/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​onboard/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​migration-plan/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​migrate/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​lazy/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​k8s/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​inspect/​SKILL.md Regenerates acceptance-based inspection guidance.
.github/​skills/​incident/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​helm/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​guardrails/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​gh-release/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​gh-issues/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​gdpr/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​explore/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​docs/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​design/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​dependency/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​dependabot/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​debug/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​copilot-ops/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​conventional-commit/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​container/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​consult/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​concise/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​codeql/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​code-review/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​cloudformation/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​cicd/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​changedoc/​SKILL.md Regenerates change-local planning and evidence guidance.
.github/​skills/​aws-cli/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​ask/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​architecture/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​analyse/​SKILL.md Regenerates scoped consistency-review guidance.
.github/​skills/​advise/​SKILL.md Refreshes generator-version metadata only.
.github/​skills/​adr/​SKILL.md Refreshes generator-version metadata only.
.github/​instructions/​typescript.instructions.md Refreshes generator-version metadata only.
.github/​instructions/​testing.instructions.md Regenerates acceptance-focused testing policy.
.github/​instructions/​terragrunt.instructions.md Refreshes generator-version metadata only.
.github/​instructions/​terraform.instructions.md Refreshes generator-version metadata only.
.github/​instructions/​security.instructions.md Refreshes generator-version metadata only.
.github/​instructions/​rancher.instructions.md Refreshes generator-version metadata only.
.github/​instructions/​python.instructions.md Refreshes generator-version metadata only.
.github/​instructions/​markdown.instructions.md Refreshes generator-version metadata only.
.github/​instructions/​k8s.instructions.md Refreshes generator-version metadata only.
.github/​instructions/​java.instructions.md Refreshes generator-version metadata only.
.github/​instructions/​helm.instructions.md Refreshes generator-version metadata only.
.github/​instructions/​git.instructions.md Refreshes generator-version metadata only.
.github/​agents/​tester.agent.md Regenerates evidence ownership and verification routing.
.github/​agents/​release.agent.md Regenerates scoped release-readiness guidance.
.github/​agents/​product.agent.md Regenerates proportional intake and changedoc ownership.
.github/​agents/​planner.agent.md Regenerates focused routing and lifecycle guidance.
.github/​agents/​engineer.agent.md Regenerates acceptance-linked implementation guidance.
.github/​agents/​designer.agent.md Regenerates affected-contract design guidance.
.github/​agents/​architect.agent.md Regenerates scoped architecture and risk guidance.

Review effort: Balanced

Comment thread src/vstack/_templates/skills/performance/template.md
Comment thread src/vstack/_templates/skills/pr/template.md Outdated
Compare the selected nested component on both revisions instead of benchmarking the repository root. Cover nested paths, user Git state, benchmark failures and components absent from the base revision.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@eschaar
eschaar force-pushed the docs/lightweight-sdd-proposal branch from e03d82f to 77386f4 Compare October 26, 2026 21:26
Select existing PRs by both head repository and branch in the explicit base repository. Bind push and new PR creation to the verified push destination and cover unrelated forks, repositories, branches and mixed candidate lists.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@eschaar
eschaar merged commit 946a166 into main Oct 26, 2026
18 checks passed
@eschaar
eschaar deleted the docs/lightweight-sdd-proposal branch October 26, 2026 21:27
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.

2 participants