Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
c7f3ffb
Open Milestones 3–5 from the SPIKE-005 architectural review.
cursoragent Sep 13, 2026
53f142a
BUG-001: fix NameError in db export --format sql; drop dead context_l…
cursoragent Sep 13, 2026
d79d6e5
CHORE-004: run full pyflakes, PR-diff complexity, and shellcheck as r…
cursoragent Sep 13, 2026
4b2d773
REF-002 T01: archive removes contract artifacts; no spdd/*/archive fo…
cursoragent Sep 13, 2026
4aa73a5
CHORE-006: regenerate dogfood command packs; harness checks every ada…
cursoragent Sep 13, 2026
11740cf
DOC-004: docs describe the layout init actually creates.
cursoragent Sep 13, 2026
ec067a4
CHORE-007 slice: fix in-tree broken doc links (95 → 70).
cursoragent Sep 13, 2026
8e66d41
Revert "CHORE-007 slice: fix in-tree broken doc links (95 → 70)."
cursoragent Sep 13, 2026
a13f9a3
Revert "DOC-004: docs describe the layout init actually creates."
cursoragent Sep 13, 2026
ea4b339
REF-002: engine is storage v3 only
cursoragent Sep 14, 2026
ee6fecb
REF-003/REF-005: session bridge and commands package
cursoragent Sep 14, 2026
9494101
REF-003: one engine — sdlc.sh is a thin Python dispatcher
cursoragent Sep 14, 2026
a744631
CHORE: refresh dogfood install (twins pruned, framework docs synced)
cursoragent Sep 14, 2026
8aa6089
REF-002: engine and shell resolve every path through the sdlc-spdd home
cursoragent Sep 14, 2026
e877914
TEST: unit/integration suites target the sdlc-spdd home layout
cursoragent Sep 14, 2026
c6292bf
TEST/REF-003: research suite on one engine; capture/complete pass opt…
cursoragent Sep 14, 2026
8cce938
TEST/CI: shared bash harness lib; engine-backed harnesses run in one …
cursoragent Sep 14, 2026
474c628
tests: bash harnesses drive the Python engine only
cursoragent Sep 14, 2026
1432edb
docs: align all documentation with the single Python engine and v3 la…
cursoragent Sep 14, 2026
4af874c
engine: stop pre-creating spdd/memory/entries in ensure_runtime_dirs
cursoragent Sep 14, 2026
aa95d3b
Merge remote-tracking branch 'origin/main' into cursor/architecture-r…
cursoragent Sep 14, 2026
f133bf0
ci/tests: CLI smoke without SDLC_ENGINE; e2e fixtures use the sdlc-sp…
cursoragent Sep 14, 2026
fb0ba93
engine: bring REF-003/005 additions under the complexity gate
cursoragent Sep 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude/commands/sdlc-spdd-commit-message.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Your job is to draft a commit message from the current local changes. Collect th

1. Parse optional arguments: a short user hint and an optional Work ID. Do not invent Work IDs.
2. If Work ID is omitted, try the active pointer via `./sdlc-spdd/scripts/sdlc.sh next` (or `./sdlc-spdd/scripts/sdlc.sh next` in the orchestrator repo) or `sdlc-spdd/.sdlc/sessions/current-session.md`. If still unknown, omit Work ID from the message unless the user hint includes one.
3. Collect the change set by running the Python engine (required — do not improvise with raw git when the engine is available): `./sdlc-spdd/scripts/sdlc.sh commit-message` with `--hint` / `--work-id` when known. In the orchestrator repo this always routes to `python -m sdlc_engine commit-message` even when `SDLC_ENGINE=shell`.
3. Collect the change set by running the Python engine (required — do not improvise with raw git when the engine is available): `./sdlc-spdd/scripts/sdlc.sh commit-message` with `--hint` / `--work-id` when known.
4. Use the engine report as the source of truth for which files/diff to message (source is staged, else unstaged, else commits/diff since merge base). If the engine exits non-zero or reports nothing to commit, report that failure and stop. Do not invent a message.
5. Draft a paste-ready commit message: a concise subject line (imperative mood, ~72 chars); an optional body with why/what when the change needs more than the subject; incorporate the user hint when provided; include the Work ID in the subject or body when known (for example `FEAT-008: …` or a `Work-ID:` trailer).
6. Prefer one focused commit message for the current change set. Do not rewrite unrelated history.
Expand Down
2 changes: 1 addition & 1 deletion .claude/commands/sdlc-spdd-sunset.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Your job is to close out a Work ID by collecting GitHub PR, GitHub issue, commit

1. Parse an optional Work ID. Do not invent Work IDs.
2. If Work ID is omitted, try the active pointer via `./sdlc-spdd/scripts/sdlc.sh next` (or `./sdlc-spdd/scripts/sdlc.sh next` in the orchestrator repo) or `sdlc-spdd/.sdlc/sessions/current-session.md`. If still unknown, stop and ask for a Work ID.
3. Collect tracker and git close-out state by running the Python engine (required — do not improvise with raw `gh`, Jira HTTP, or `git log` when the engine is available): `./sdlc-spdd/scripts/sdlc.sh sunset --work-id <WORK-ID> --apply`. In the orchestrator repo this always routes to `python -m sdlc_engine sunset` even when `SDLC_ENGINE=shell`.
3. Collect tracker and git close-out state by running the Python engine (required — do not improvise with raw `gh`, Jira HTTP, or `git log` when the engine is available): `./sdlc-spdd/scripts/sdlc.sh sunset --work-id <WORK-ID> --apply`.
4. Use the engine report as the source of truth for Jira key/status, GitHub issue and PR number/title/state/URL, and matching commits. If the engine exits non-zero, report that failure and stop. Do not invent issue, PR, commit, or Jira facts.
5. Treat missing remotes as warnings, not a hard stop, when the engine still produced a snapshot (for example `gh` is not installed, or Jira credentials are unset). Report every warning from the engine.
6. After a successful `--apply`, the engine has staged a `session` record (`source=sunset`) in `sdlc-spdd/.sdlc/staged/lessons.jsonl`. Recommend `/sdlc-spdd-accept` to promote it into `sdlc-spdd/spdd/memory/lessons.jsonl`. Do not edit the ledger by hand.
Expand Down
2 changes: 1 addition & 1 deletion .cursor/commands/sdlc-spdd-commit-message.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Your job is to draft a commit message from the current local changes. Collect th

1. Parse optional arguments: a short user hint and an optional Work ID. Do not invent Work IDs.
2. If Work ID is omitted, try the active pointer via `./sdlc-spdd/scripts/sdlc.sh next` (or `./sdlc-spdd/scripts/sdlc.sh next` in the orchestrator repo) or `sdlc-spdd/.sdlc/sessions/current-session.md`. If still unknown, omit Work ID from the message unless the user hint includes one.
3. Collect the change set by running the Python engine (required — do not improvise with raw git when the engine is available): `./sdlc-spdd/scripts/sdlc.sh commit-message` with `--hint` / `--work-id` when known. In the orchestrator repo this always routes to `python -m sdlc_engine commit-message` even when `SDLC_ENGINE=shell`.
3. Collect the change set by running the Python engine (required — do not improvise with raw git when the engine is available): `./sdlc-spdd/scripts/sdlc.sh commit-message` with `--hint` / `--work-id` when known.
4. Use the engine report as the source of truth for which files/diff to message (source is staged, else unstaged, else commits/diff since merge base). If the engine exits non-zero or reports nothing to commit, report that failure and stop. Do not invent a message.
5. Draft a paste-ready commit message: a concise subject line (imperative mood, ~72 chars); an optional body with why/what when the change needs more than the subject; incorporate the user hint when provided; include the Work ID in the subject or body when known (for example `FEAT-008: …` or a `Work-ID:` trailer).
6. Prefer one focused commit message for the current change set. Do not rewrite unrelated history.
Expand Down
2 changes: 1 addition & 1 deletion .cursor/commands/sdlc-spdd-sunset.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Your job is to close out a Work ID by collecting GitHub PR, GitHub issue, commit

1. Parse an optional Work ID. Do not invent Work IDs.
2. If Work ID is omitted, try the active pointer via `./sdlc-spdd/scripts/sdlc.sh next` (or `./sdlc-spdd/scripts/sdlc.sh next` in the orchestrator repo) or `sdlc-spdd/.sdlc/sessions/current-session.md`. If still unknown, stop and ask for a Work ID.
3. Collect tracker and git close-out state by running the Python engine (required — do not improvise with raw `gh`, Jira HTTP, or `git log` when the engine is available): `./sdlc-spdd/scripts/sdlc.sh sunset --work-id <WORK-ID> --apply`. In the orchestrator repo this always routes to `python -m sdlc_engine sunset` even when `SDLC_ENGINE=shell`.
3. Collect tracker and git close-out state by running the Python engine (required — do not improvise with raw `gh`, Jira HTTP, or `git log` when the engine is available): `./sdlc-spdd/scripts/sdlc.sh sunset --work-id <WORK-ID> --apply`.
4. Use the engine report as the source of truth for Jira key/status, GitHub issue and PR number/title/state/URL, and matching commits. If the engine exits non-zero, report that failure and stop. Do not invent issue, PR, commit, or Jira facts.
5. Treat missing remotes as warnings, not a hard stop, when the engine still produced a snapshot (for example `gh` is not installed, or Jira credentials are unset). Report every warning from the engine.
6. After a successful `--apply`, the engine has staged a `session` record (`source=sunset`) in `sdlc-spdd/.sdlc/staged/lessons.jsonl`. Recommend `/sdlc-spdd-accept` to promote it into `sdlc-spdd/spdd/memory/lessons.jsonl`. Do not edit the ledger by hand.
Expand Down
2 changes: 1 addition & 1 deletion .github/prompts/sdlc-spdd-commit-message.prompt.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Draft a commit message from the current local changes. Collect the diff through

1. Parse optional arguments: a short user hint and an optional Work ID. Do not invent Work IDs.
2. If Work ID is omitted, try the active pointer via `./sdlc-spdd/scripts/sdlc.sh next` (or `./sdlc-spdd/scripts/sdlc.sh next` in the orchestrator repo) or `sdlc-spdd/.sdlc/sessions/current-session.md`. If still unknown, omit Work ID from the message unless the user hint includes one.
3. Collect the change set by running the Python engine (required — do not improvise with raw git when the engine is available): `./sdlc-spdd/scripts/sdlc.sh commit-message` with `--hint` / `--work-id` when known. In the orchestrator repo this always routes to `python -m sdlc_engine commit-message` even when `SDLC_ENGINE=shell`.
3. Collect the change set by running the Python engine (required — do not improvise with raw git when the engine is available): `./sdlc-spdd/scripts/sdlc.sh commit-message` with `--hint` / `--work-id` when known.
4. Use the engine report as the source of truth for which files/diff to message (source is staged, else unstaged, else commits/diff since merge base). If the engine exits non-zero or reports nothing to commit, report that failure and stop. Do not invent a message.
5. Draft a paste-ready commit message: a concise subject line (imperative mood, ~72 chars); an optional body with why/what when the change needs more than the subject; incorporate the user hint when provided; include the Work ID in the subject or body when known (for example `FEAT-008: …` or a `Work-ID:` trailer).
6. Prefer one focused commit message for the current change set. Do not rewrite unrelated history.
Expand Down
2 changes: 1 addition & 1 deletion .github/prompts/sdlc-spdd-sunset.prompt.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Close out a Work ID by collecting GitHub PR, GitHub issue, commit, and Jira stat

1. Parse an optional Work ID. Do not invent Work IDs.
2. If Work ID is omitted, try the active pointer via `./sdlc-spdd/scripts/sdlc.sh next` (or `./sdlc-spdd/scripts/sdlc.sh next` in the orchestrator repo) or `sdlc-spdd/.sdlc/sessions/current-session.md`. If still unknown, stop and ask for a Work ID.
3. Collect tracker and git close-out state by running the Python engine (required — do not improvise with raw `gh`, Jira HTTP, or `git log` when the engine is available): `./sdlc-spdd/scripts/sdlc.sh sunset --work-id <WORK-ID> --apply`. In the orchestrator repo this always routes to `python -m sdlc_engine sunset` even when `SDLC_ENGINE=shell`.
3. Collect tracker and git close-out state by running the Python engine (required — do not improvise with raw `gh`, Jira HTTP, or `git log` when the engine is available): `./sdlc-spdd/scripts/sdlc.sh sunset --work-id <WORK-ID> --apply`.
4. Use the engine report as the source of truth for Jira key/status, GitHub issue and PR number/title/state/URL, and matching commits. If the engine exits non-zero, report that failure and stop. Do not invent issue, PR, commit, or Jira facts.
5. Treat missing remotes as warnings, not a hard stop, when the engine still produced a snapshot (for example `gh` is not installed, or Jira credentials are unset). Report every warning from the engine.
6. After a successful `--apply`, the engine has staged a `session` record (`source=sunset`) in `sdlc-spdd/.sdlc/staged/lessons.jsonl`. Recommend `/sdlc-spdd-accept` to promote it into `sdlc-spdd/spdd/memory/lessons.jsonl`. Do not edit the ledger by hand.
Expand Down
37 changes: 0 additions & 37 deletions .github/workflows/test-archive-work.yml

This file was deleted.

6 changes: 3 additions & 3 deletions .github/workflows/test-sdlc-engine.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,9 @@ jobs:
--cov-fail-under=90
- name: CLI smoke via sdlc.sh
run: |
SDLC_ENGINE=python ./scripts/sdlc.sh version
SDLC_ENGINE=python ./scripts/sdlc.sh next
SDLC_ENGINE=python ./scripts/sdlc.sh viewer --help
./scripts/sdlc.sh version
./scripts/sdlc.sh next
./scripts/sdlc.sh viewer --help
- name: Shim regression harness
run: ./tests/test-sdlc-engine-shim.sh

Expand Down
36 changes: 0 additions & 36 deletions .github/workflows/test-sdlc-pointer.yml

This file was deleted.

117 changes: 0 additions & 117 deletions .github/workflows/test-sdlc-workflow.yml

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Test Upgrade Consolidate
name: Test Upgrade Layout

on:
pull_request:
Expand All @@ -10,9 +10,8 @@ on:
- 'scripts/lib/framework-install.sh'
- 'scripts/lib/skills.sh'
- 'templates/**'
- 'tests/test-upgrade-consolidate.sh'
- 'tests/test-framework-install-consolidate.sh'
- '.github/workflows/test-upgrade-consolidate.yml'
- 'tests/test-upgrade-layout.sh'
- '.github/workflows/test-upgrade-layout.yml'
push:
branches: [main]
paths:
Expand All @@ -23,26 +22,28 @@ on:
- 'scripts/lib/framework-install.sh'
- 'scripts/lib/skills.sh'
- 'templates/**'
- 'tests/test-upgrade-consolidate.sh'
- 'tests/test-framework-install-consolidate.sh'
- '.github/workflows/test-upgrade-consolidate.yml'
- 'tests/test-upgrade-layout.sh'
- '.github/workflows/test-upgrade-layout.yml'

jobs:
test-upgrade-consolidate:
test-upgrade-layout:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
python-version: '3.12'

- name: Install engine
run: python -m pip install -q -e ./engine

- name: Check shell syntax
run: |
bash -n scripts/upgrade-project.sh
bash -n scripts/verify-project-install.sh
bash -n scripts/lib/framework-install.sh
bash -n tests/test-upgrade-consolidate.sh
bash -n tests/test-framework-install-consolidate.sh

- name: Unit — framework-install consolidate helpers
run: ./tests/test-framework-install-consolidate.sh
bash -n tests/test-upgrade-layout.sh

- name: Integration — upgrade layout consolidation
run: ./tests/test-upgrade-consolidate.sh
- name: Integration — upgrade layout contract (v3 only)
run: ./tests/test-upgrade-layout.sh
Loading
Loading