diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index a38d8a3..65f351e 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -8,6 +8,11 @@ "name": "specflow", "source": "./plugins/specflow", "description": "Grid Dynamics SpecFlow Marketplace plugin" + }, + { + "name": "specflow2", + "source": "./plugins/specflow2", + "description": "Refine specifications before you build. Independent subagents produce ID-keyed readings under different adversarial lenses; a local CLI compares them without using the SpecFlow backend. Your coding-agent and model-provider data policies still apply." } ] } diff --git a/.gitignore b/.gitignore index cb8b9e2..b959c0d 100644 --- a/.gitignore +++ b/.gitignore @@ -10,7 +10,7 @@ gain.json # Python __pycache__/ -*.py[cod +*.py[cod] *$py.class *.so .Python @@ -20,8 +20,8 @@ dist/ downloads/ eggs/ .eggs/ -lib/ -lib64/ +/lib/ +/lib64/ parts/ sdist/ var/ diff --git a/agents/IMPLEMENTATION.md b/agents/IMPLEMENTATION.md index fd8ae9b..3cc39a1 100644 --- a/agents/IMPLEMENTATION.md +++ b/agents/IMPLEMENTATION.md @@ -2,6 +2,26 @@ **Updated**: June 23, 2026 | **Branch**: (current) | **Tests**: 1228+ passing (`make unit-tests`) +## Active Work + +- **PR 59 refinement-plugin presentability fixes (Aug 4)**: Discovery and reviewed + implementation proposal are in + `agents/plans/pr59-presentability/pr59-presentability-{SPECS,PLAN}.md`. + Implementation now uses manifested lens expectations, required grid IDs for + deterministic comparison, exact-id resolution validation, branch-local + marketplace installation, and accurate model-provider data-flow language. + Non-test validation passed: direct CLI flow reported a missing expected lens, + compared only shared cell IDs, ignored case/whitespace-only answer differences, + kept same-anchor findings separate, rejected unknown/invalid resolutions, and + accepted a valid one; local marketplace dry-run used the checkout path. A fresh + wheel contained all three `services/refine_*.py` modules (release workflow + replaces the placeholder package version from the tag). Validation: 81 focused + refinement tests and 834 full unit tests pass; Ruff passes on every changed + Python file. Repository-wide `make check` remains blocked by two unchanged + backend Ruff findings (`claude_code.py` duplicate `run_git` import and + `test_workspace_git_hooks.py` unused `pytest` import); user chose to keep PR 59 + scoped rather than add unrelated cleanup. + ## Core Systems (Production Ready) - **State**: `backend/app/state/` — estimation_state_machine, workspace_state_machine, transitions, workflow_orchestrator diff --git a/docs/specflow-2.0/refinement-loop.html b/docs/specflow-2.0/refinement-loop.html new file mode 100644 index 0000000..25686aa --- /dev/null +++ b/docs/specflow-2.0/refinement-loop.html @@ -0,0 +1,284 @@ +
SpecFlow 2.0 · /specflow-refine · local artifacts, no SpecFlow backend
+↻ Another round, or stop. Round two runs against the spec your + decisions changed, so it reaches questions that only exist downstream of them.
+ ++ code — reproducible + model — judgment +
+Two agents answered the same shared grid cell differently. + Evidence to inspect, not proof of a defect. File and section attached.
+A lens reached a cell in its own grid and could not fill it. + The question existed because the axes forced it. Closest thing to + what building used to surface.
+A decision no reading even reached. + The one real coverage number: cells filled / cells listed.
+Consensus over a spec that said nothing. + A shared blind spot. Disagreement alone cannot see it.
+readiness score · pass/fail gate · “you have converged” ·
+ “the spec is complete”