Skip to content

feat(st5): harness scoreboard — 9 public harnesses, foreign-layout registry, 8 vendored fixtures - #41

Merged
SollanSystems merged 3 commits into
mainfrom
feat/st5-scoreboard
Jul 10, 2026
Merged

SollanSystems merged 3 commits into
mainfrom
feat/st5-scoreboard

Conversation

@SollanSystems

Copy link
Copy Markdown
Owner

What

The roadmap's "inspect N public harnesses" scoreboard post (the seed was docs/gap-reports/superpowers.md, PR #33). Three commits:

  1. a01bccc — ST5 spec+plan; root-anchor workbench .gitignore patterns (unanchored .claude//.loop//memory/ matched at any depth and would have silently swallowed fixture dot-dirs; resolves the !examples/*/.loop/** follow-up).
  2. 8dbbb03loop/foreign.py → data-driven layout registry (9 layouts: superpowers + spec-kit, agent-os, bmad, task-master, ccpm, prp, openspec, ruflo). Mapper-never-scorer preserved; scoring layout-blind; doctor unmapped; native contract always wins. Superpowers detection tightened (journal required) — fixes the own-root false-positive follow-up. 7 vendored fixtures + 31 tests.
  3. 193bbe5docs/gap-reports/scoreboard.md (the post) + the verifier-corrected prp-run fixture + seed-report link.

Methodology / fairness

  • One fictional csv-dedupe task instantiated as a completed, success-claiming run per harness's documented layout at a pinned SHA; structure theirs, every sentence ours (BMAD / Task Master / PRPs are not MIT).
  • Every row advisory: true, composes-not-competes framing, reproduce command per row.
  • Per-row adversarial verification against the pinned clones: fixture fidelity, licensing spot-checks (several verbatim template spans caught and reworded), and a fairness hunt for verification machinery the conservative signals cannot credit — captured in each row's notes (e.g. Spec Kit's console-only checkbox gate, ruflo's SQLite-held quality gates, PRPs' on-disk verdict.json).

Results

calibration (native contract) 90 strong 7/7
Superpowers / Spec Kit / CCPM 12 weak 0/7
BMAD / Task Master / OpenSpec / ruflo / Agent OS / PRPs 0 weak 0/7

Headline: 0/7 typed terminal states on all nine harnesses (~590k stars). The 0-vs-12 split is a heading-vocabulary match, not a discipline ranking — stated prominently in the doc.

Evidence

  • Full suite 431 passed / 9 skipped (all extras; baseline 400/9, +31 tests, skips unchanged) — run independently twice, incl. after verifier fixes.
  • self_eval.py 13/13; validate_frontmatter.py 9/9.
  • All 11 fixtures: deterministic scores, correct foreign_layout detection.

Held for the operator

  • No auto-merge label — this doc names popular projects publicly; review the framing before it lands on main.
  • Show HN draft (+ pre-publish checklist) is in gitignored roadmap/launch/show-hn-scoreboard.md; publication remains human-gated, and pip install loop-engineer in the draft is only true after the PyPI tags/publisher gate from the v0.8.0 release.

Follow-ups (non-blocking)

  • Deep-dive gap reports per row (superpowers.md is the template; ruflo's fixture README anticipates one).
  • Consider a ## Success Measures/## Acceptance Criteria vocabulary extension to the defines_success signal — deliberately NOT done here (no scoring changes in a scoreboard slice).

…ch gitignore patterns

Root-anchoring .loop/ .claude/ .gsd/ memory/ review/ roadmap/ .tmp/ lets
examples/*-run fixtures track same-named dot-dirs (resolves the
'!examples/*/.loop/**' roadmap follow-up at the root).
…un fixtures

loop/foreign.py becomes a data-driven registry — detection predicate +
per-role resolvers per layout; mapper-never-scorer preserved; scoring stays
layout-blind; doctor stays unmapped; native .loop/state.json always wins.
Superpowers detection tightened per the roadmap follow-up (journal required),
fixing the own-root false positive. tasks maps only where the ledger is
genuine JSON (task-master); markdown/YAML ledgers surface via runlog.

Fixtures instantiate the same fictional csv-dedupe task as a completed run
per harness's documented layout at a pinned SHA; structure theirs, every
sentence ours (BMAD/Task Master/PRPs are not MIT). +31 tests: per-fixture
detect/advisory/determinism + repo-root-negative regression. Suite 431/9.
docs/gap-reports/scoreboard.md: 9 public harnesses (~590k combined stars,
pinned SHAs) + 2 calibration rows, scored advisory-only against the vendored
fixtures. Headline finding: 0/7 typed terminal states on every foreign row —
done is always expressible, typed failure never is. Per-row fairness notes
from adversarial passes over each pinned source name the real verification
machinery the conservative signals cannot credit (console-only gates,
off-disk state, self-asserted verdicts). Adds the prp-run fixture
(verifier-corrected: real stdout run log, pre-archive plan paths, licensing
rewording) and links the scoreboard from the superpowers seed report.
Copilot AI review requested due to automatic review settings July 10, 2026 02:14

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 ad239dd into main Jul 10, 2026
7 checks passed
@SollanSystems
SollanSystems deleted the feat/st5-scoreboard branch July 10, 2026 02:17

@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: 193bbe5ed0

ℹ️ 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".


import csv

from src.import_contacts import import_contacts, normalize_key

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 Make the BMAD fixture tests importable from the repo root

When this new fixture test is collected from the repository root, e.g. python -m pytest -q examples/bmad-run/tests/test_import_contacts.py, collection fails with ModuleNotFoundError: No module named 'src' because pytest puts the repo root on sys.path, not examples/bmad-run. This prevents anyone running or validating the vendored BMAD sample tests outside that fixture directory; add the fixture root to sys.path, package the sample, or import the module by path.

Useful? React with 👍 / 👎.

SollanSystems added a commit that referenced this pull request Jul 17, 2026
Version 0.8.0 -> 0.9.0 across pyproject.toml, plugin.json, README
(badge, action example, schema list 4 -> 10, event-sourced runtime
bullet, Status), CHANGELOG 0.9.0 entry covering #41-#48 and #59-#77,
and the version-pin test.
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