Skip to content

test: retire mechanical known-red ledger rows (uxrim, bwo2l/vqt48, ndgbm-quiet, 7qw4) - #4006

Merged
Sinity merged 3 commits into
masterfrom
feature/test/wsb-mechanical-known-red-sweep
Aug 19, 2026
Merged

test: retire mechanical known-red ledger rows (uxrim, bwo2l/vqt48, ndgbm-quiet, 7qw4)#4006
Sinity merged 3 commits into
masterfrom
feature/test/wsb-mechanical-known-red-sweep

Conversation

@Sinity

@Sinity Sinity commented Aug 19, 2026

Copy link
Copy Markdown
Owner

Summary

Retires the four mechanical rows of the WS-B known-red/false-green ledger
(.agent/campaigns/2026-08-overhaul/ws-b-suite-health.md): uxrim, bwo2l,
vqt48, and 7qw4 were all already satisfied on master before this branch was
cut; the one row that needed real work was polylogue-ndgbm's quiet
component (Codex query-cardinality oracle's fixture never emitted a
message-shaped record, so the parser's admission gate refused every
payload and the module fixture errored at setup), which this PR fixes and
whose two associated xfail markers it removes.

Problem

The ledger recorded five findings as known-red or false-green test debt,
each with a RECIPE and file:line anchors, dispatched here as a themed sweep.

Solution

  • uxrim (tests/unit/api/test_facade_contracts.py:4789): the recipe
    asked to extend the frozen_clock_modules marker to also cover
    revision_governance. Already done — commit 8ed4f91 (PR fix(tests): repair storage-cluster test drift from origin-vocab+clock-guard fixes #3595,
    2026-08-03) landed exactly that extension. No diff needed.

  • 7qw4 (tests/unit/storage/test_store_ops.py): the recipe asked to
    rewrite the test to call the production aggregate_message_stats async
    fn and delete a test-local shadow reimplementation. Already done —
    commits from PR test(storage): exercise aggregate message stats repository path #3729 (call the repository path) and PR test(storage): assert aggregate stats use public origins #3813 (assert on
    public origins) landed this; no shadow function remains in the file. No
    diff needed.

  • bwo2l + vqt48 (tests/unit/cli/test_archive_maintenance_cli.py,
    tests/unit/sources/test_live_watcher.py,
    tests/unit/sources/test_live_batch_support.py): the recipe asked to give
    refused codex fixtures real conversational content. Already done — the
    9ykn positive-evidence-gate fixes landed across several prior PRs (visible
    in git log --grep: fix(test): add real message content to raw-materialization fixtures #3555, test(storage): give raw-authority-ledger codex fixtures real message text #3572, fix(sources): require a genuine chunk in gemini/drive chunkedPrompt detection #3600, fix(devtools): give synthetic codex raw payloads real message text #3642, test(sources): verify origin parser claims #3841). All 138 + 259
    tests pass.

  • ndgbm quiet component (tests/infra/query_manifest_oracle.py,
    tests/unit/cli/test_query_composition_laws.py): the actual fix in this
    PR. QueryCardinalitySession.wire_records() emitted only
    function_call/function_call_output response_items — zero
    message-shaped records — so codex.is_supported_session_stream()
    (has_message never set) refused every payload before ingest and the
    module-scoped fixture errored at setup before either test could run.
    Added one planted user/assistant message-pair response_item per session
    (same wire shape landed for the bwo2l/vqt48 fixtures), which admits the
    stream; action-identity assertions are unaffected because they only count
    tool rows.

    Removing the two xfail markers this unblocks surfaced two further
    pre-existing issues that had never been reachable before (the tests always
    errored at setup), fixed in the same commit:

    • The naive-duplicate-id-join mutation test's hand-rolled actions view
      predates the production view's result_state CASE projection
      (polylogue-cuxz.5, archive_tiers/index.py:1040) and crashed with
      sqlite3.OperationalError: no such column: a.result_state instead of
      producing the comparably-wrong row count the test actually asserts on.
      Added the same CASE projection to the test's naive view.
    • find ... then delete --yes --all has no non-daemon route — it refuses
      outright when the daemon does not answer the /prepare call. Added a
      daemon-delete stand-in patch on _submit_daemon_mutation, mirroring the
      existing pattern in
      test_verb_cardinality.py::TestDeleteCardinalityLargeNonMocked._daemon_delete_route
      (does the real delete through ArchiveStore, just skips the daemon
      process).
    • _copy_archive's plain shutil.copytree left the durable bootstrap
      marker bound to the original archive root path
      (durable_identity_digest), so the first write-mode ArchiveStore.open_existing
      at the copied path raised DurableChangeTrainError: fresh durable bootstrap marker durable identity mismatch. Re-bind the marker after
      copy, mirroring tests/infra/workload_artifacts.py::clone_seeded_archive.

ndgbm residual (not closed by this PR): the bead also names a second,
separate symptom — the 64-seed process-pool death only reproduces beside a
saturated 10-worker gate (confirmed load-only: quiet re-run 20260818T231534Z
was green in 43s). That's a load-robustness question the dispatch prompt
asked to coordinate with WS-A's e98k cgroup-mmap-budget findings. I could not
type this as a partial disposition in the machine-readable pr-scope
carrier below: the validator requires a pre-existing Beads dependency
edge
(blocks/discovered-from/relates-to/supersedes) between ndgbm
and its named successor before it will accept the disposition, and no such
edge exists between polylogue-ndgbm and polylogue-e98k today. Per the lane
contract I do not invoke bd from a worktree, so I did not create that
link. Coordinator action needed: link polylogue-ndgbm
polylogue-e98k (or a dedicated new successor) via bd dep add (or
equivalent) before ndgbm can be typed partial in a carrier; until then the
bead should stay open with its residual noted in its own notes (already
present).

Verification

  • devtools test tests/unit/api/test_facade_contracts.py -k raw_artifacts_read_source_tier → 1 passed (uxrim, unchanged/confirmed)
  • devtools test tests/unit/cli/test_archive_maintenance_cli.py → 138 passed (bwo2l, unchanged/confirmed)
  • devtools test tests/unit/sources/test_live_watcher.py tests/unit/sources/test_live_batch_support.py → 259 passed (vqt48, unchanged/confirmed)
  • devtools test tests/unit/storage/test_store_ops.py -k aggregate_message_stats → 1 passed (7qw4, unchanged/confirmed); mutation red-check locally re-applied AG1 (role-swap on the unfiltered role_row query) and AG2 (words_approx = 0) against polylogue/storage/sqlite/queries/stats.py, both now fail (assert 1 == 2, assert 0 == 9), reverted before commit — no diff shipped for this row
  • devtools test tests/unit/cli/test_query_composition_laws.py → 2 passed, 0 xfail (ndgbm quiet component: red→green; both -p no:testmon and cached runs confirmed)
  • devtools verify --quick → exit 0 (format + lint + mypy + render all --check; no out of sync in output)

All four rows were verified in the context that was failing: each command
above is the exact standalone-context command named in the dispatch recipe,
run directly (not nested inside a broader suite run).

Bead disposition matrix

Bead Disposition Evidence Notes
polylogue-uxrim SATISFIED test pass + commit 8ed4f91 already fixed on master, PR #3595
polylogue-bwo2l SATISFIED test pass (138/138) already fixed on master
polylogue-vqt48 SATISFIED test pass (259/259) already fixed on master
polylogue-7qw4 SATISFIED test pass + mutation red-check already fixed on master (PR #3729, #3813)
polylogue-ndgbm PARTIAL test pass (2/2, no xfail) + diff quiet component fixed this PR; load-only pool-death residual stays open on the bead — not represented in the typed carrier below (see Solution section: needs a coordinator-created Beads link to type as partial)

Ref polylogue-uxrim, polylogue-bwo2l, polylogue-vqt48, polylogue-ndgbm, polylogue-7qw4

🤖 Generated with Claude Code

https://claude.ai/code/session_01HWcPJJJvuF25CqVwTFgSQC

polylogue-ndgbm's quiet component: QueryCardinalitySession.wire_records()
emitted only function_call/function_call_output response_items, so
codex.is_supported_session_stream() (has_message never set) refused
every payload before ingest and the module-fixture errored at setup.
Add a planted user/assistant message pair per session (mirrors the
"message" response_item shape landed for polylogue-bwo2l/6mpy) so the
stream is admitted; action-identity assertions are unaffected since
they only count tool rows.

Removing the two xfail markers this unblocks surfaced two further
issues once the tests could actually run to completion, both fixed in
the same commit: the naive-duplicate-join mutation test's hand-rolled
`actions` view predates the production view's `result_state` CASE
projection (polylogue-cuxz.5) and crashed with `no such column` instead
of producing the comparable-but-wrong row count the test asserts on;
and the real `--yes --all` delete-apply route has no non-daemon path,
so the survivor now stands in for the daemon's three-step delete the
same way test_verb_cardinality.py's TestDeleteCardinalityLargeNonMocked
already does. `_copy_archive` also re-binds the durable bootstrap
marker after cloning (mirrors tests/infra/workload_artifacts.py's
clone_seeded_archive), since a naive copytree leaves a marker whose
durable_identity_digest is bound to the original path and the
first write-mode open at the new path was rejected as a durable
identity mismatch.

Ref polylogue-ndgbm

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HWcPJJJvuF25CqVwTFgSQC
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

@coderabbitai

coderabbitai Bot commented Aug 19, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 244dfc96-3dc3-4e50-beca-2b71ebbe12a2


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@Sinity
Sinity merged commit 62b35e7 into master Aug 19, 2026
3 checks passed
@Sinity
Sinity deleted the feature/test/wsb-mechanical-known-red-sweep branch August 19, 2026 01:11
Sinity added a commit that referenced this pull request Aug 19, 2026
## Summary
`cleanup_managed_tmpfs_path` now removes read-only artifact trees: plain
rmtree first, then a chmod-owner-write walk + retry if anything
survived.

## Problem
Seeded-archive artifacts chmod their directories non-writable. When a
test
builds a cache under the tmpfs basetemp (`query_cardinality_archive`
does),
`shutil.rmtree(ignore_errors=True)` silently leaves the tree behind, the
supervisor reports `tmpfs_cleanup_complete: false`, and `devtools
verify`
withholds `release_baseline_allowed` on an otherwise-green receipt. This
blocked the #4006 merge twice on 2026-08-19 (runs 20260819T003921Z,
20260819T010648Z; 16 leaked /dev/shm dirs confirmed) and became
SYSTEMATIC
once #4006 unblocked the query-cardinality fixture — every full-mode
receipt
now builds the read-only cache. Ref polylogue-b9yw7 (root cause recorded
there); the eager stale-dir sweep half of the operator's never-leak
mandate
stays with the A4 harness lane.

## Solution
Two-pass removal in `cleanup_managed_tmpfs_path` (ownership checks
unchanged): rmtree, then `_restore_owner_write` (chmod u+w over
root+rglob)
and rmtree again only if residue survived. No behavior change for the
already-clean path.

## Verification
`devtools test tests/unit/devtools/test_pytest_supervisor.py -k cleanup`
→
2 passed. Red twin demonstrated: with the fix stashed, the new
`test_cleanup_managed_tmpfs_path_removes_read_only_artifact_trees` fails
(read-only subtree survives); with the fix, removed. `devtools verify
--quick` → success (mypy clean after replacing the onexc handler with
the
two-pass shape — the pinned stubs reject `onexc`).

## Bead disposition
Self-contained; Ref polylogue-b9yw7 (narrows it; closure judgment stays
with
the A4 lane's fuller investigation).
<!-- polylogue-pr-scope:v2
{
  "assigned_beads": [],
  "dispositions": [],
  "mutated_beads": [],
"scope_digest":
"79a7984a9ec80a157c96dc8d28561159c642c15de3793837eff751fa7eac34a1",
  "scope_kind": "self_contained",
  "version": 2
}
-->

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
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.

1 participant