Skip to content

feat(st2): portable standard + 0.7.0 release cut - #31

Merged
SollanSystems merged 2 commits into
mainfrom
feat/st2-portable-standard
Jul 8, 2026
Merged

SollanSystems merged 2 commits into
mainfrom
feat/st2-portable-standard

Conversation

@SollanSystems

Copy link
Copy Markdown
Owner

0.7.0 — Portable standard (ST2)

Closes the v0.7.0 roadmap milestone: the on-disk contract becomes a documented, versioned, tool-agnostic standard, and the release is cut.

Spec: docs/superpowers/specs/2026-06-30-st2-portable-contract-spec.md. Most of the spec's findings (DG-1, DG-2, DG-3-core, M5, QW11) already landed via the #27#30 review patch set; this PR ships the remainder.

What's in

  • Normative standardreference/repo-os-contract.md promoted: stability note + versioning model (§0: loop-engineer/<artifact>@<major> $ids, strictly additive within a major, breaking ⇒ new major side by side), artifact/schema table across all 7 published schemas with required keys verbatim from schemas/*.schema.json (§11), lifecycle vocabulary + terminal-file-iff rule (§12), repair-record vs rollout-record two-shape clarification (§13), conformance checklist A1–E1 (§14).
  • doctor lifecycle linevalidate_contract reports lifecycle: planned | running | terminated:<State> | unknown. Additive reporting only (never an issue source), so an in-flight loop is visibly conformant instead of being pushed to fabricate a terminal file. DG-3 regressions pin both directions in both validation modes.
  • Round-trip template regression (scripts/test_template_roundtrip.py) — every templates/* artifact, filled with schema-valid values, passes validate_contract with zero issues in both modes (in-flight + terminated scaffolds). The DG-class drift cannot silently return.
  • Runnable conformance checklist (scripts/test_conformance.py) — executes A1–E1 in CI against examples/coverage-repair and a fresh template scaffold, incl. additive-key tolerance (D2), lifecycle honesty (E1), and a doc-parity guard binding every checklist ID to the normative doc.
  • Release cut 0.7.0 — CHANGELOG collects the ST2 work, the adoption slices (A1/B1/C1/PR5, previously Unreleased), and the previously-unchangelogged fix(doctor): close review findings F1/F5/F6/F2/F7 — evidence, ledgers, YAML, verify surface, file targets #27fix(inspect): score on execution evidence — close review findings M2/M3 #30 fixes; version bumps + docs-version gate. The README Adopt-section @v0.7.0 action pin becomes accurate at this release's tag.

Process

4 parallel opus TDD builders → 4 opus adversarial verifiers (workflow wf_0f8b597c-f5f), all four verdicts PASS, 0 blockers — non-vacuity of the new tests proven by mutation (e.g. reordering the canonical terminal_states in the shipped template flips the round-trip test red). Integration guards tightened post-workflow (E1 + doc-parity now hard-assert).

Gates (operator-run)

  • Full suite, jsonschema mode: 372 passed / 10 skipped
  • Full suite, structural fallback (no jsonschema): 361 passed / 21 skipped
  • Fresh-checkout simulation (git archive HEAD): 370 passed / 12 skipped — all skips are the known env-guard / checked-when-present classes
  • self_eval.py 13/13 · validate_frontmatter.py 9/9 · py_compile clean · plugin.json valid JSON
  • Doc table fact-checked against schemas/*.schema.json — every $id and required-keys row matches

🤖 Generated with Claude Code

SollanSystems and others added 2 commits July 8, 2026 11:55
Promote reference/repo-os-contract.md to the normative spec: stability
note and versioning model (§0), artifact/schema table across all 7
published schemas with required keys verbatim from schemas/ (§11),
lifecycle vocabulary + terminal-file-iff rule (§12), repair-record vs
rollout-record two-shape clarification (§13), and the A1-E1 conformance
checklist (§14).

- doctor lifecycle line: validate_contract reports
  lifecycle: planned | running | terminated:<State> | unknown —
  additive reporting only, never an issue source; DG-3 regressions pin
  both directions in both validation modes.
- scripts/test_template_roundtrip.py: every templates/* artifact,
  filled with schema-valid values, passes validate_contract with zero
  issues in both modes (in-flight + terminated scaffolds).
- scripts/test_conformance.py: executes checklist A1-E1 in CI against
  examples/coverage-repair and a fresh template scaffold, incl.
  additive-key tolerance (D2), lifecycle honesty (E1), and a doc-parity
  guard binding every checklist ID to the normative doc.
- README: pointer subsection for the versioned standard.

ST2 spec: docs/superpowers/specs/2026-06-30-st2-portable-contract-spec.md
(DG-1/DG-2/DG-3-core/M5/QW11 had already landed via #27-#30).
Suite: 372 passed / 10 skipped (jsonschema), 361 / 21 (structural).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
CHANGELOG 0.7.0 collects the ST2 standard work, the adoption slices
(A1/B1/C1/PR5, previously Unreleased), and the external-review patch
set #27-#30 (previously unchangelogged). Version 0.6.1 -> 0.7.0 in
pyproject.toml, plugin.json, README badge + Status; docs-version gate
updated. The README Adopt-section @v0.7.0 action pin becomes accurate
at this release's tag.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 8, 2026 15:57

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@SollanSystems
SollanSystems merged commit 4647820 into main Jul 8, 2026
6 checks passed
@SollanSystems
SollanSystems deleted the feat/st2-portable-standard branch July 8, 2026 15:59

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a761c14fa3

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread loop/contract.py
"""
state_is_dict = isinstance(state, dict)
terminal_state_val = state.get("terminal_state") if state_is_dict else None
if (state_is_dict and terminal_state_val is not None) or terminal_exists:

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Reject stale terminal files for in-flight state

When state.json still has terminal_state: null but a stale .loop/terminal_state.json remains, this branch treats the contract as terminated and validate_contract() never emits an issue, so the report is ok: true/lifecycle: terminated:<state>. That violates the new terminal-file-iff/B1 rule in this commit, which requires exactly the in-flight arm (terminal_state null and no terminal file) or the terminated arm (non-null terminal state plus terminal file), and lets non-conformant contracts pass doctor.

Useful? React with 👍 / 👎.

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