Skip to content

docs(plan): requirements slice 1 — requirement checks and test generators in every port - #406

Merged
dmealing merged 1 commit into
mainfrom
fm/mo-req-slice1-plan
Oct 6, 2026
Merged

dmealing merged 1 commit into
mainfrom
fm/mo-req-slice1-plan

Conversation

@dmealing

@dmealing dmealing commented Oct 6, 2026

Copy link
Copy Markdown
Member

What this is

An implementation plan, and nothing else. One new file:
docs/superpowers/plans/2026-10-05-requirements-slice-1-checks-and-test-generators.md. No code, no fixtures, no doc edits.

What the plan covers

Slice 1 of the requirements work: every port runs the requirement gate and scaffolds tests from requirements.

  • Two shared corpora, both run by the TypeScript reference: requirement-check-conformance (metadata in, diagnostics and summary counts out, 42 cases) and requirement-test-identity-conformance (metadata in, test identities, skip states and digests out, 16 cases).
  • The requirement gate in each port's verify: Python, Java (Kotlin inherits the Maven goal) and C#. The gate-code table is taken from requirement-check.ts, with each code's condition, order, message text and path format.
  • A requirement-tests generator per port: pytest, JUnit for Java and Kotlin, xUnit for C#. The generated file is fully machine-owned and each test calls a project-owned witness function. No three-way merge is ported.
  • Three seams: a per-claimed-member grain, a renderer hook that receives the requirement digest, and a --require-implementers switch that makes "nothing implements" an error.
  • A new ADR-0057 and the doc edits that reverse "Checks — TypeScript only, by decision".
  • A no-churn proof for a model with no requirement.* node, a list of unverified items, and nine open questions with the plan's assumed default for each.

Order

Corpora and the TypeScript seams first, then Python and Java in parallel, then C# and Kotlin.

Not in this slice

Publishing requirements across repositories, inherited requirements, the Python publisher and deps commands, transitive dependencies, and the response-model items.

How it was checked

Every cited path, function and test file was read or located at 5153aa9dc, or is marked UNVERIFIED and listed. The two worked digests were computed; the first was confirmed a second way with sha256sum. No test suite was run, because the change is one Markdown file.

Decisions for the reviewer

The plan's "Open questions" section holds them. The three that change the most work:

  1. Whether the seven authoring-lint advisories are in this slice (plan assumes a follow-up).
  2. How a JVM or .NET test finds its witness: a generated interface with failing defaults (plan's default) or a by-name lookup at run time.
  3. Whether the corpus pins message text (plan assumes yes, as the field-lint corpus does).

…-test generators in every port

Implementation plan only, no code. Covers the two shared corpora (requirement-check
and requirement-test identity) run by the TypeScript reference, the requirement gate
in each port's verify, a requirement-tests generator per port (pytest, JUnit, xUnit)
with project-owned witness functions, the three seams (per-member grain, a renderer
hook that receives the requirement digest, a require-implementers switch), and the
ADR and docs change that reverses the TypeScript-only decision.
@dmealing
dmealing merged commit 8946325 into main Oct 6, 2026
1 check passed
@dmealing
dmealing deleted the fm/mo-req-slice1-plan branch October 6, 2026 03:06
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.

1 participant