You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs(readme): sync status banner and roadmap to v0.2.0 (#27)
* docs(readme): update status banner and roadmap for v0.2.0
The status line and Status-and-roadmap section still referenced 0.1.0
after the v0.2.0 release shipped. Updates:
- Status banner now reads "0.2.0 - Phase 1 first wave shipped" and
names the five additions (inspect, history, paraphrase, case study,
CD pipeline).
- Roadmap section reframes 0.2.0 as the current release with all five
items checked off; 0.1.0 stays as the historical Phase-0 MVP entry.
- "Coming next" section names the two locked tracks: diff sharpening
(Phase D) and the post-Phase-D artifact infrastructure track
(verify -> export --bundle -> embedded invocation). Lean by design;
not pre-planning beyond Phase D.
* docs: sync release-state metadata for v0.2.0
Pre-merge audit caught several stale 0.1.0 references that should be
0.2.0 now that the release has shipped. All release-state metadata
(machine-readable + reader-facing):
- CITATION.cff: version 0.1.0 -> 0.2.0; date-released 2026-05-21 ->
2026-05-22.
- CHANGELOG.md: add [0.2.0] reference link at the bottom (matches the
existing [0.1.0] link pattern).
- docs/EVIDENCE.md: "Today (0.1.0)" -> "Today (0.2.0)" in the
artifact-identity section; also names the post-Phase-D artifact
track (verify -> export --bundle) since it's the concrete answer to
what's "deferred" in that paragraph.
- docs/case-studies/01-invisible-character-substitution.md: pip
install command updated from 0.1.0 to 0.2.0 so readers install the
version that contains the case study itself.
- docs/RELEASE.md: example tag commands use v0.2.0 instead of v0.1.0;
GitHub release section uses generic <version>/<thematic-name>
placeholders; "next dev marker" section advances the example from
0.2.0.dev0 to 0.3.0.dev0 and adds tests/unit/test_version.py to the
bump checklist (caught by the actual 0.2.0 release).
Left alone (historically accurate):
- docs/case-studies/data/README.md "FalsifyAI version: 0.1.0" -
provenance for when those Phase-0 campaign sessions were generated.
- docs/ARCHITECTURE.md "between 0.1.0 and 1.0" - resolver discipline
statement, accurate from 0.1.0 baseline.
- CHANGELOG context lines mentioning "unchanged from 0.1.0" - accurate
historical context within the 0.2.0 entry.
These commits will land in PR #27 (README sync to v0.2.0) since both
are pre-merge release-state metadata cleanup.
* docs(release): add release-state metadata audit checklist
Expands item 7 of the pre-release checklist into an explicit audit of
drift-prone version references, capturing the lesson from the v0.2.0
release where five files needed metadata syncs after the tag landed
(CITATION.cff, README status banner, EVIDENCE.md "Today (X.Y.Z)"
assertion, case study pip-install commands, CHANGELOG link).
Names the specific files that contain release-state metadata and must
advance on every release, AND distinguishes them from files that
contain historically-accurate version references that must NOT change
(provenance, "unchanged from 0.1.0" context, baseline discipline
statements).
Deliberately a human-judgment checklist, not a CI gate: a blanket grep
for version strings would produce both signals (release-state and
historical context) with no way to distinguish, and an automated rule
would erode trust faster than it saved time. The next release pays a
30-second deliberate check instead of a 30-minute audit.
**Status:** 0.1.0 — Phase 0 MVP. Stable enough to use; spec language and verdict semantics are locked for the 0.1.x line.
11
+
**Status:** 0.2.0 — Phase 1 first wave shipped (`inspect`, `history`, `paraphrase`, canonical case study, automated PyPI publishing). Spec language and verdict semantics remain locked for the 0.x line.
12
12
13
13
```bash
14
14
pip install falsifyai
@@ -432,15 +432,20 @@ Contributions follow the conventions in [`CONTRIBUTING.md`](CONTRIBUTING.md). Ar
**0.2.0 (current release) — Phase 1 first wave.** Adds:
436
436
437
-
**Phase 1 in progress** (selected by evidence from real-world validation runs, not roadmap completeness):
437
+
- ✅ **`falsifyai inspect <session_id>`** — per-case deep-dive over preserved evidence. Surfaces every perturbed input, output, and invariant judgment. `--case <case_id>` expands one case; `--full` disables truncation. Pure consumer surface — the artifact already contained the data.
438
+
- ✅ **`paraphrase` perturbation family** — LLM-generated semantic-preserving rewrites with embedding-similarity validity gating. Tests semantic robustness as an orthogonal pressure axis to the character-level families. Configurable per-spec (`count`, `similarity_threshold`, `max_attempts`, optional `model` override).
439
+
- ✅ **`falsifyai history <case_id>`** — temporal view of one case across saved sessions. Newest-first, one row per session, showing verdict + CI + worst family per row. Reads `case.verdict` from preserved artifacts; no aggregation, no trend inference, no reinterpretation.
440
+
- ✅ **Canonical case study** — [Invisible character substitution](docs/case-studies/01-invisible-character-substitution.md): cross-model `contains`-contract brittleness as the thesis (`history`), Pair 3 model-migration regression as the vivid concrete proof (`diff` + `inspect`), over a [bundled replay artifact](docs/case-studies/data/case-study-replays.db) you can re-open and reproduce verbatim.
441
+
- ✅ **Automated PyPI publishing via Trusted Publisher (OIDC)** — `.github/workflows/publish.yml` fires on any `v*` tag push: verifies version match, re-runs tests, builds, validates, publishes. No long-lived tokens in repo.
438
442
439
-
- ✅ **`falsifyai inspect <session_id>`** *(shipped)* — makes the replay artifact legible. Per-case deep-dive surfacing every perturbed input, every model output, every invariant judgment. `--case <case_id>` expands one case; `--full` disables truncation. Consumer-surface only; the artifact already contained the data.
440
-
- ✅ **`paraphrase` perturbation family** *(shipped)* — LLM-generated semantic-preserving rewrites with embedding-similarity validity gating. Tests semantic robustness as an orthogonal pressure axis to the character-level families. Configurable per-spec (`count`, `similarity_threshold`, `max_attempts`, optional `model` override).
441
-
- ✅ **`falsifyai history <case_id>`** *(shipped)* — temporal view of one case across saved sessions. Newest-first, one row per session, showing verdict + CI + worst family per row. Reads `case.verdict` from preserved artifacts; no aggregation, no trend inference, no reinterpretation.
442
-
- ✅ **Canonical case study** *(shipped)* — [Invisible character substitution](docs/case-studies/01-invisible-character-substitution.md): the cross-model `contains`-contract brittleness pattern (`history`) plus the Pair 3 model migration regression (`diff` + `inspect`) over a [bundled replay artifact](docs/case-studies/data/case-study-replays.db) you can re-open and reproduce verbatim.
443
-
- Hardened replay artifacts — cross-run lineage, immutable evidence semantics, and (eventually) signed bundles for cross-org transfer. These strengthen the existing artifact guarantees; the core differentiator remains the artifact's predictable semantics, not the wrapping.
**Coming next** — selected by evidence, not theoretical completeness:
446
+
447
+
- **`diff` sharpening** — `--strict`, `--show-trending`, exit code 6 for low-falsifiability gates. Tightens the binary regression criterion for users who want finer CI control without compromising resolver predictability.
448
+
- **Artifact infrastructure track** — `falsifyai verify <session_id>` (integrity + provenance), `falsifyai export --bundle` (productize the case-study extraction pattern), and a persisted CLI-invocation field in `ReplayArtifact`. Locked sequence; reassess after a second case study or real user pressure.
444
449
445
450
Each addition is evaluated against: *does this preserve evidence density, resolver predictability, and the discipline that makes the artifact trustworthy?* See [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md), [`docs/EVIDENCE.md`](docs/EVIDENCE.md), and [`CONTRIBUTING.md`](CONTRIBUTING.md) for the discipline.
0 commit comments