Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
6bc279f
chore(beads): reconcile free-threaded bootstrap closure
Sinity Aug 11, 2026
61532d3
refactor(test): adopt native testmon lifecycle
Sinity Aug 13, 2026
32ed7b9
fix(test): harden native lifecycle authority
Sinity Aug 13, 2026
2a7ac04
test: stabilize native lifecycle evidence
Sinity Aug 13, 2026
8b94a0c
refactor(test): make native correctness corpus complete
Sinity Aug 13, 2026
906dc65
fix(test): close native lifecycle authority gaps
Sinity Aug 13, 2026
df68f13
refactor(test): narrow native lifecycle boundaries
Sinity Aug 13, 2026
fe083e9
test(devtools): type merge dispatch probes
Sinity Aug 13, 2026
d7d85fe
fix(test): close final native lifecycle gaps
Sinity Aug 13, 2026
e98ac04
fix(test): finalize native lifecycle receipts
Sinity Aug 13, 2026
5263266
fix(test): fail closed on runtime data changes
Sinity Aug 13, 2026
7e01d93
test(devtools): prove full release authority path
Sinity Aug 13, 2026
c64115b
fix(testmon): fail closed on untraceable runtime changes
Sinity Aug 13, 2026
715b325
fix: harden native testmon verification lifecycle
Sinity Aug 14, 2026
1f53045
fix(verify): deny narrowed pytest baselines
Sinity Aug 14, 2026
f5fe9a3
fix(verify): neutralize external pytest addopts
Sinity Aug 14, 2026
5bd4b04
fix(verify): own release pytest discovery
Sinity Aug 14, 2026
55c4cac
fix: close native pytest execution contract
Sinity Aug 14, 2026
928caa5
fix: harden native verification finalization
Sinity Aug 14, 2026
d7aa3a9
test: align native environment identity contract
Sinity Aug 14, 2026
d342f68
fix: preserve authority on verifier exceptions
Sinity Aug 14, 2026
a2d014d
fix: close native verifier edge paths
Sinity Aug 14, 2026
faadc88
fix: bind native testmon state ownership
Sinity Aug 14, 2026
715408f
chore: drop stale Beads delta after rebase
Sinity Aug 14, 2026
c7556c9
style: format rebased authority monitor
Sinity Aug 14, 2026
25de372
fix: isolate managed verification Python startup
Sinity Aug 14, 2026
43fee85
fix(verify): harden native testmon release authority
Sinity Aug 14, 2026
567dc17
test: isolate merge flow from Bead history
Sinity Aug 14, 2026
9d3120c
fix(verify): harden native testmon review paths
Sinity Aug 14, 2026
0aec21d
fix(verify): close native testmon review gaps
Sinity Aug 14, 2026
38b0c8f
fix(testmon): classify pure enum contracts as runtime data
Sinity Aug 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 8 additions & 5 deletions .github/workflows/nightly-scale.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: Nightly Scale

# Runs the large-tier scale fixtures (issue #1183) outside the normal
# Runs the explicit large benchmark nodes outside the normal
# CI critical path, captures benchmark results as structured JSON, and
# compares against the committed baseline to detect regressions (#1220).
#
Expand Down Expand Up @@ -41,16 +41,19 @@ jobs:
python-version: "3.14"
- run: uv sync --extra dev --frozen

- name: Run large-tier scale tests
- name: Run large benchmark campaign
env:
POLYLOGUE_FORCE_PLAIN: "1"
HYPOTHESIS_PROFILE: ci
run: |
uv run pytest -q --tb=short --ignore=tests/integration \
-m "scale_large" -p no:randomly -n 0 \
uv run pytest -q --tb=short -p no:randomly -n 0 \
--benchmark-enable \
--benchmark-json=nightly-results.json \
--benchmark-group-by=group \
tests/benchmarks
'tests/benchmarks/test_daemon_convergence.py::test_convergence_scale_tier[xxl-mega-session]' \
tests/benchmarks/test_daemon_convergence.py::test_convergence_huge_session_memory_bounded \
tests/benchmarks/test_scale_tiers.py::test_bench_50k_fts_search_returns_results \
tests/benchmarks/test_scale_tiers.py::test_bench_50k_list_sessions

- name: Upload benchmark results
uses: actions/upload-artifact@v7
Expand Down
17 changes: 9 additions & 8 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -336,12 +336,13 @@ testmon-affected set.

- `mypy --strict` (via `devtools verify`) is the primary net for type/identifier
refactors — trust it. Config in `pyproject.toml`, no exclude list.
- Seed testmon on a fresh checkout / after harness or dependency changes:
`devtools verify --seed-testmon --skip-slow`. A linked worktree auto-bootstraps
its testmon cache from the main checkout's valid seed instead (`devtools/testmon_bootstrap.py`),
so this is only needed when the main checkout itself has no seed yet.
- Reserve `devtools verify --all` (full non-integration run) for
harness/dependency changes or a final pre-PR diagnostic.
- Plain `devtools verify` owns the native pytest-testmon lifecycle. It repairs
invalid local state, optionally copies a matching main-checkout database,
and automatically runs the complete correctness corpus when no valid native
environment exists. Never ask an operator or agent to seed or repair it.
- Reserve `devtools verify --all` (complete unit/property/fuzz/integration
correctness corpus; performance benchmarks excluded) for harness/dependency
changes or a final pre-PR diagnostic.
- `devtools verify --quick` = format + lint + mypy + `render all --check`
(no tests); it runs on `git push` via the pre-push hook. It is a fast gate,
not a substitute for the default baseline before a PR.
Expand Down Expand Up @@ -522,7 +523,7 @@ isolated XDG paths + archive root.
without a managed run identity or an explicit basetemp root is forced to
`/realm/tmp/polylogue-pytest` (NVMe). Managed `devtools test` and
`devtools verify` runs may use bounded `/dev/shm` tmpfs only after the
runtime policy admits the requested demand; full-suite and seed-testmon
runtime policy admits the requested demand; full/bootstrap native
runs default to NVMe because their aggregate fixture tree can exceed the
supervised tmpfs ceiling.
`POLYLOGUE_PYTEST_BASETEMP_MIN_FREE_MB` overrides required headroom; an
Expand Down Expand Up @@ -565,7 +566,7 @@ Core loop:
changing docs, CLI help, or schema. **Gotcha:** `render all --check` can print
per-surface `sync OK` yet still exit 1 — grep the output for `out of sync`,
don't trust the tail line.
- `devtools verify [--quick|--all|--lab|--seed-testmon]` — see
- `devtools verify [--quick|--all|--lab]` — see
[Verification](#verification--testmon-inner-loop-never-blanket-run).
- `devtools test <sel>` — focused pytest through the managed harness.
- `devtools lab …` — executable schema/provider/pipeline/lane checks.
Expand Down
35 changes: 18 additions & 17 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,8 @@ targeting `master`.
2. Create a branch from `origin/master`.
3. Work on the branch. Git hooks enforce format and lint on commit, and
run `devtools verify --quick` on push.
4. Run `devtools verify` before creating the PR. The default pytest step uses
pytest-testmon affected-test selection; run `devtools verify --seed-testmon`
first if the dependency database is not seeded.
4. Run `devtools verify` before creating the PR. It automatically builds or
repairs native pytest-testmon state, then uses affected-test selection.
5. Open a pull request. The template has required sections — fill them
all in. The PR title becomes the squash-merge subject on `master`.
6. CI must pass. Fix failures on the branch, do not merge with red CI.
Expand Down Expand Up @@ -295,27 +294,29 @@ local pytest selection is accelerated by pytest-testmon.

```bash
devtools verify # static/generated gates + pytest-testmon affected tests
devtools verify --seed-testmon --skip-slow # seed/update affected-test DB
devtools verify --all # explicit full non-integration pytest diagnostic
devtools verify --all # complete correctness corpus; benchmarks excluded
devtools verify --quick # format + lint + mypy + render all --check (skip tests)
devtools verify --lab # explicit lab checks beyond the quick/default loop
```

The quick gate runs on `git push` via the active pre-push hook. It's a fast
check, not a substitute for the default baseline. The default command fails
fast when `.cache/testmon/testmondata` and `.cache/testmon/seed.json` are
missing; do not rely on silent full-suite fallback.
check, not a substitute for the default baseline. The default command safely
repairs missing or invalid native testmon state and automatically builds a new
environment when collection semantics change.

`devtools verify` does not replay a prior verify result. It always runs the
static gates and then invokes pytest-testmon for affected-test selection from
the current source, dependency, and Python-version state. The default pytest
step combines marker filters with `--testmon-forceselect` so scale-tier
deselection does not silently expand the run back to the whole suite; affected
testmon runs are single-process by default to avoid xdist collection skew.
Polylogue does not maintain a parallel changed-file router for helper/config
paths; use `devtools verify --seed-testmon` when you intentionally want to
refresh the dependency database and `devtools verify --all` for an explicit full
diagnostic.
static gates. With a valid native environment, it invokes pytest-testmon for
affected-test selection from the current source, dependency, and Python-version
state. When it bootstraps a missing or invalid native environment, it runs the
complete correctness corpus. The pytest step covers unit, property, fuzz, and
integration tests while excluding the separately operated `tests/benchmarks`
performance surface. It uses
`--testmon-forceselect` for affected selection, with one parallel `not
load_sensitive` lane and one serial `load_sensitive` lane over the same native
environment. `tui` is a category marker and remains parallel unless a test is
also explicitly `load_sensitive`. Use
`devtools verify --all` for the complete correctness corpus; there is no
manual seed or repair command.
Comment thread
coderabbitai[bot] marked this conversation as resolved.

Add `devtools release build-package` or `nix flake check` when touching packaging or
Nix expressions. See [TESTING.md](TESTING.md) and [docs/devtools.md](docs/devtools.md)
Expand Down
Loading