Repository navigation
feat(workflow): implement lightweight SDD and stabilize delivery workflows - #121
Merged
Merged
Conversation
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
force-pushed
the
docs/lightweight-sdd-proposal
branch
from
October 26, 2026 20:56
a93986e to
541ee64
Compare
Contributor
There was a problem hiding this comment.
🟡 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
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
force-pushed
the
docs/lightweight-sdd-proposal
branch
from
October 26, 2026 21:26
e03d82f to
77386f4
Compare
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>
Merged
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
Why
Version impact