Bring the three Python plugins into the os-sdlc gates and system-model analysis #1554

Open
opened 2026-11-04 21:52:04 +00:00 by jared · 2 comments
Owner

Problem

Targets os-context, os-doc-hygiene, and os-vault exist in .sdlc/project.yaml (commit 6a60f2df), but they do not work like os-sdlc and os-backlog. The planned analysis returns nothing for them, and the os-sdlc test gates refuse them.

Observed

SUPPORTED_TEST_FRAMEWORKS is ["minitest"], and plugins/os-sdlc/lib holds no pytest string, so test gates return unsupported_framework. system-model shapes returns coverage 0/0, findings 0 for each plugin, because the analysis reads Ruby through Prism.

Option Size Covers
Ruby port os-context 222 lines; os-vault 637 lines in 9 files; os-doc-hygiene 11,401 lines in 25 files Test gates, rubocop, test-writer, programmer, analysis
Pytest summary parser About 60 lines plus 100 lines of tests (plugins/os-sdlc/reference/adding-a-summary-parser.md) Test gates only

Related: #1527 ports the Python hooks to Ruby for journey tracing. It does not cover os-doc-hygiene or the pytest gate.

Reproduce

Run plugins/os-sdlc/bin/system-model shapes on each of the three targets.

Origin

  • Trigger: target setup for all plugins on 2026-11-04
  • Improvised this session: added the targets with test_framework: pytest, which load but cannot pass a test gate
  • Chain: analysis returns 0/0 ← plugins hold no Ruby classes ← plugins stayed in Python (.sdlc/project.yaml) ← DESIGN
  • Root candidate: none found; searched pytest, SUPPORTED_TEST_FRAMEWORKS, os-context, os-vault, os-doc-hygiene, python, summary parser. Related but not a match: #1527.
  • Where: plugins/os-sdlc/lib/os_sdlc/lint/base_assert.rb
  • Session: e373aa6d-dc8a-40ed-aa47-d24d4d50f17f
  • Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os/e373aa6d-dc8a-40ed-aa47-d24d4d50f17f.jsonl

VERDICT: CREATE

## Problem Targets `os-context`, `os-doc-hygiene`, and `os-vault` exist in `.sdlc/project.yaml` (commit 6a60f2df), but they do not work like `os-sdlc` and `os-backlog`. The planned analysis returns nothing for them, and the os-sdlc test gates refuse them. ## Observed `SUPPORTED_TEST_FRAMEWORKS` is `["minitest"]`, and `plugins/os-sdlc/lib` holds no `pytest` string, so test gates return `unsupported_framework`. `system-model shapes` returns `coverage 0/0, findings 0` for each plugin, because the analysis reads Ruby through Prism. | Option | Size | Covers | |---|---|---| | Ruby port | os-context 222 lines; os-vault 637 lines in 9 files; os-doc-hygiene 11,401 lines in 25 files | Test gates, rubocop, test-writer, programmer, analysis | | Pytest summary parser | About 60 lines plus 100 lines of tests (`plugins/os-sdlc/reference/adding-a-summary-parser.md`) | Test gates only | Related: #1527 ports the Python hooks to Ruby for journey tracing. It does not cover `os-doc-hygiene` or the pytest gate. ## Reproduce Run `plugins/os-sdlc/bin/system-model shapes` on each of the three targets. ## Origin - Trigger: target setup for all plugins on 2026-11-04 - Improvised this session: added the targets with `test_framework: pytest`, which load but cannot pass a test gate - Chain: analysis returns 0/0 ← plugins hold no Ruby classes ← plugins stayed in Python (`.sdlc/project.yaml`) ← DESIGN - Root candidate: none found; searched pytest, SUPPORTED_TEST_FRAMEWORKS, os-context, os-vault, os-doc-hygiene, python, summary parser. Related but not a match: #1527. - Where: `plugins/os-sdlc/lib/os_sdlc/lint/base_assert.rb` - Session: e373aa6d-dc8a-40ed-aa47-d24d4d50f17f - Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os/e373aa6d-dc8a-40ed-aa47-d24d4d50f17f.jsonl VERDICT: CREATE
Author
Owner

Predicted ruling (ruling 17 in docs/decisions/rulings.tsv, confidence 72, session 47ffa777). Jared can correct it.

Route: Ruby for all three plugins. No pytest parser: it covers test gates only, the analysis still returns 0/0, and it has no consumer. Nothing is built now, because the current work is the scope-in.

Order: os-context and os-vault fold into #1527. os-vault goes after #1540 and #1545 settle, because session_start.py is still changing and the os-vault tests are on ticket-1545. os-doc-hygiene goes last, when the analysis reaches it. This ticket stays open for that part.

Size correction: os-doc-hygiene is 5,017 production lines plus 6,383 test lines, not 11,401 lines of code. It depends on tiktoken.

Missing evidence: no statement from Jared on porting os-doc-hygiene against leaving it outside the analysis.

Predicted ruling (ruling 17 in `docs/decisions/rulings.tsv`, confidence 72, session 47ffa777). Jared can correct it. Route: Ruby for all three plugins. No pytest parser: it covers test gates only, the analysis still returns 0/0, and it has no consumer. Nothing is built now, because the current work is the scope-in. Order: `os-context` and `os-vault` fold into #1527. `os-vault` goes after #1540 and #1545 settle, because `session_start.py` is still changing and the `os-vault` tests are on `ticket-1545`. `os-doc-hygiene` goes last, when the analysis reaches it. This ticket stays open for that part. Size correction: `os-doc-hygiene` is 5,017 production lines plus 6,383 test lines, not 11,401 lines of code. It depends on tiktoken. Missing evidence: no statement from Jared on porting `os-doc-hygiene` against leaving it outside the analysis.
Author
Owner

Correction: the Python plugin route ruling is ruling 21 in docs/decisions/rulings.tsv, not ruling 17. Ruling 17 is the #1545 order.

Correction: the Python plugin route ruling is ruling 21 in `docs/decisions/rulings.tsv`, not ruling 17. Ruling 17 is the #1545 order.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
jared/cc-os#1554
No description provided.