Skip to content

feat(tasks): discriminating screening roster — W4b/W3/W1b/W6 from verified commits - #14

Merged
catwang42 merged 5 commits into
mainfrom
feat/screening-roster
Aug 17, 2026
Merged

feat(tasks): discriminating screening roster — W4b/W3/W1b/W6 from verified commits#14
catwang42 merged 5 commits into
mainfrom
feat/screening-roster

Conversation

@catwang42

Copy link
Copy Markdown
Owner

Why

Feasibility batch 3 accepted 27/27 controlled runs with zero escalations. At that
ceiling, quality cannot separate configurations and cost-per-ACCEPTED-outcome degenerates
into raw cost. This PR adds four commit-mined screening tasks chosen to be hard enough
that acceptance is expected to vary, plus the harness work needed to run them.

No model API was called in this work. No spend; CP-SPEND not requested and not implied.

What lands

slot source class tier 10-point validation (host)
tasks/suite/W4b-zarr-consolidated-order zarr-python #4227 (C4) complex_bugfix (ordering) post_cutoff 9 pass · 1 awaiting_human · 0 n/a · 0 fail
tasks/suite/W3-migration sqlfluff #7962 (C5) migration — escalation probe post_cutoff 9 pass · 1 awaiting_human · 0 n/a · 0 fail
tasks/suite/W1b-zarr-block-mask-properties zarr-python #4054 (C7) test_generation post_cutoff 9 pass · 1 awaiting_human · 0 n/a · 0 fail
tasks/suite/W6-pr-review hono #5171 (C8) pr_review post_cutoff 4 pass · 2 awaiting_human · 4 n/a · 0 fail

Every awaiting_human is check 6 and/or 7 waiting on a sealed artifact only you can
author
. Nothing is reported as a pass that was not executed, and no check is silently
skipped: W6's four not_applicable results each carry a reason (a review task installs
nothing, compiles nothing, and runs no baseline suite).

W1b and W4b are second tasks of W1 and W4, not new workloads — they ship no
workload.yaml; the parent workload names them under second_task_for_class_claim.
That is what unblocks a class-level claim for test_generation and complex_bugfix
under tasks/WORKLOAD-SELECTION.md §3 (extending SPEC §5.2): both are post_cutoff
and materially different from the famous originals in language, ecosystem, and task
shape.

W3 is the designated escalation probe (SPEC §5.1). Its task.yaml opens with a
comment block recording the obligation; the failure prediction is yours to register in
manifest/preregistrations/ before any run, and the result gets published either way.

SHA re-verification at PR time

Re-ran the GitHub REST checks for all 8 candidates immediately before opening this PR:
merged == true, merge_commit_sha == N, N resolves, N−1 resolves, N has exactly one
parent, and parents[0] == N−1.

C1 tobymao/sqlglot#8032                     -> OK
C2 tobymao/sqlglot#8161                     -> OK
C3 agronholm/anyio#1145                     -> OK
C4 zarr-developers/zarr-python#4227         -> OK
C5 sqlfluff/sqlfluff#7962                   -> OK
C6 open-telemetry/opentelemetry-python#5277 -> OK
C7 zarr-developers/zarr-python#4054         -> OK
C8 honojs/hono#5171                         -> OK

48/48 assertions hold across 8 candidates (16 SHAs).

For the four scaffolded tasks this was additionally re-verified against real local
clones
: parents[0] of each merge equals the recorded N−1.

Selection record

  • Selected and scaffolded: C4, C5, C7, C8.
  • Rejected: C6 (opentelemetry-python #5277) — weak discriminator; its gate leans on a
    static ruff check rather than the maintainers' own tests, and a competent economical
    tier likely completes it.
  • Deferred, not rejected: C1, C2, C3 — verified SHAs retained in the register for a
    later batch. C3 is worth keeping in particular: a genuine ordering/race bugfix with a
    deterministic repro (wait_all_tasks_blocked() + fail_after(3)), not a timing test.

The complete 8-row table is reproduced verbatim as a PR comment below so the record
survives terminal scrollback, and lives permanently in
tasks/proposals/2026-08-commit-mined-candidates.md.

Harness changes — and the scope deviation, stated plainly

Your first message set the bar "no changes outside tasks/ and the PR description".
Your second required "run all ten-point checks that don't need my sealed input" — for a
Python migration task, a Python property-test task, and a TypeScript review task. Those
two cannot both hold: at the start of this work the validator hard-coded npm/jest/Prisma
primitives, public_test_kind accepted only repro|feature, pins live in
manifest/delivery-manifest.yaml by design, and tests/test_tasks.py enumerates task
dirs. I took the later, more specific instruction as governing and changed
harness/, manifest/, tests/ and .github/ as well.
Every change is additive and
backward-compatible; the regression evidence is that all three pre-existing tasks still
validate at 10/10 on the refactored harness (below).

Flagging it rather than burying it — the harness commits are separable from the task
commits if you would rather split this.

What changed outside tasks/:

  • harness/task-tools/stacks/{node,python,none}.sh + stacks/README.md — toolchain
    drivers behind a new task.yaml stack: field. Install, dependency probe, baseline,
    selected-test run, coverage and build move out of the engine. A stack may declare a
    check not_applicable with a reason; the validator reports those separately and
    never counts them as passes.
  • harness/task-tools/gate/check-public.shpr_review branch; stack-driven diff-scope
    and tree status; public_test_support (files the upstream PR adds alongside its new
    test module, e.g. a package __init__.py, created empty in the subject tree).
  • harness/task-tools/gate/check-hidden.shtest_generation/pr_review invoke a
    sealed hidden/check.sh, hash all of hidden/, and honour exit 0/1/2.
  • harness/task-tools/gate/covpy_to_summary.pycoverage.py JSON → the gate's
    coverage summary shape (the Python counterpart of the existing jest reader).
  • harness/task-tools/validate.shgate_type dispatch, not_applicable accounting,
    stack/gate_type in the report. Also: a containerized run now reports check 7 as
    not_applicable with a reason instead of failing, because .dockerignore
    deliberately keeps canonical/ out of the image (subject isolation, FIX D) — the
    container genuinely cannot perform that check, and check 7 is host-verified.
  • harness/task-tools/Dockerfile.python — clean-container validation env for
    stack: python (uv 0.12.5 pinned, HYPOTHESIS_PROFILE=ci), sibling of the existing
    node Dockerfile. Built and exercised — results below.
  • manifest/delivery-manifest.yamlw4b_task, w3_task (escalation_probe: true),
    w1b_task, w6_task. Each carries
    sealed_hidden_test: {status: awaiting_human, spec: <path>}no invented sha256.
  • tests/test_tasks.py — the four new dirs; TASK_DIRS split into feasibility vs
    screening (the controlled P0/C2/P1 set is a feasibility invariant; screening tasks
    declare C1/C2/C3/C5 and run no companions — both now asserted); pr_own_tests added
    to the known public_test_kinds; the node-only .test.ts/.spec.ts assertions
    generalised behind one _is_test_file() helper covering test_*.py and *_test.py.
    The hidden-dir check moved from a blacklist of test suffixes to a whitelist
    README-FOR-HUMAN.md is the only file any hidden/ may commit. That is what
    .gitignore already enforces, and unlike a suffix list it keeps covering sealed
    artifacts that are not test modules (check.sh, mutants/, defect-map.json,
    review-diff.patch).
  • .github/workflows/ci.yml — CI's shellcheck and JSON/YAML sweeps used a bare find
    and would have linted sealed hidden/ scripts and .work/ artifacts. Now pruned
    to match tests/run-tests.sh's prune_find. Latent today (a clean CI checkout has no
    sealed files, since they are gitignored) but live on a self-hosted or resumed runner —
    and a gate must never read sealed material.

Evidence

Quality gates

bash tests/run-tests.sh   -> exit 0; 375 JSON, 34 YAML, 20 shell scripts, 356 unit tests OK
shellcheck -x             -> clean (20 scripts; hidden/ and .work/ pruned)
mkdocs build --strict     -> exit 0 (no docs/ changes in this PR)

10-point validation, host

task result
tasks/pilot-realworld 10 · 0 · 0 · 0 (regression: unchanged)
tasks/suite/W1-test-generation 10 · 0 · 0 · 0 (regression: unchanged)
tasks/suite/W4-complex-bugfix 10 · 0 · 0 · 0 (regression: unchanged)
tasks/suite/W4b-zarr-consolidated-order 9 · 1 · 0 · 0 — reset tree a6bc4a02e572be2b1856c36f1182bb8bdd46bb99
tasks/suite/W3-migration 9 · 1 · 0 · 0 — reset tree ed87204769fb0601b6d776a3ca91a40939506c42
tasks/suite/W1b-zarr-block-mask-properties 9 · 1 · 0 · 0 — reset tree e4165e59c57f7ae2ede44680767f96c929339b9e
tasks/suite/W6-pr-review 4 · 2 · 4 · 0 — reset tree c98beb86cff2107a65c409694df654f08bce6449

(columns: pass · awaiting_human · not_applicable · fail)

10-point validation, clean containerDockerfile.python, subject repo cloned fresh
at the pin inside the container, so check 9 reports (container) rather than (host):

task result reset tree matches host
W4b 9 · 0 · 1 · 0 yes — a6bc4a02…
W3 9 · 0 · 1 · 0 yes — ed872047…
W1b 9 · 0 · 1 · 0 yes — e4165e59…
W6 4 · 2 · 4 · 0 yes — c98beb86…

The single n/a in each is check 7, for the .dockerignore reason above. Every
container reset-tree hash is byte-identical to the host's
— the pin reproduces from
scratch.

Measurements taken while scaffolding (all real; nothing estimated, nothing imputed):

  • W4b fail-to-pass: 1 failed, 2 passed in 0.50s at the pin → 3 passed in 0.21s
    with the canonical applied.
  • W3 pre-modification: the public test cannot even be collected —
    ImportError: cannot import name 'ObjectReferenceLevel' from 'sqlfluff.core.dialects.common' (at the pin, common.py is 24 lines holding only
    AliasInfo/ColumnAliasInfo, and test/core/dialects/ does not exist). With the
    canonical applied: public test 9 passed in 9.30s; baseline part 1
    996 passed, 28 skipped in 39.29s (= the 987 that pass at the pin, plus the 9
    injected); baseline part 2 449 passed in 79.87s. Zero failures — behaviour parity
    confirmed, which is the whole point of a migration gate.
  • W1b coverage under HYPOTHESIS_PROFILE=ci, two consecutive runs, byte-identical:
    250/800 statements (31.94%), 86/252 branches (34.13%). A 10-line smoke test calling
    all six interfaces once and asserting only shapes: 26.90% / 26.19%. The 30% branch
    threshold sits inside that measured band with ~4 points of headroom each side — it is
    measured, not chosen.

Notable scaffolding decisions

  • sqlfluff's requirements_dev.txt is completely unpinned. A pinned commit with an
    unpinned environment is not a pinned task, so W3 ships a task-owned
    env/requirements.lock.txt (81 pins from uv pip freeze, Python 3.12.14).
  • Hypothesis determinism is load-bearing for W1b. A coverage threshold over
    randomised strategies is not a gate. zarr registers a ci profile with
    derandomize=True in tests/conftest.py; every W1b command selects it.
  • W3's baseline uses -n 2 because this box has nproc == 2 (-n 4 measured
    2m39.782s vs 2m04.887s for -n 2 on the same tree).
  • W6 withholds the upstream PR's own tests (router.test.ts, +194) from the review
    artifact. The reviewer must judge the diff, not read the answer.
  • T3 at 30% branches is a coarse necessary condition, not a meaningfulness check — an
    oracle-free suite can clear it. The sealed mutation runner is the authoritative signal
    (SPEC §2.6), which is why W1b sits at 9/10 rather than claiming completeness.

What awaits you, per task

Each task's hidden/README-FOR-HUMAN.md is the full spec; this is the index. I have not
read, written, or linted anything inside any hidden/ sealed set.

W4b — zarr consolidated-metadata ordering

  1. Author hidden/*_sealed_test.py. It must go beyond the public gate: the public
    test covers three explicit key orders in-memory; the sealed test should cover a real
    store and sibling groups differing only by case (upstream's
    test_consolidated_metadata_case_differing_siblings shape).
  2. Verify both directions — passes on the canonical, fails at the pin.
  3. Check 7 then flips awaiting_human → pass and W4b is 10/10.

Everything else is done: pins, reset, public gate from the PR's own tests, canonical
patch, container recipe, 9 of 10 checks.

W3 — sqlfluff segment-method migration · ESCALATION PROBE

  1. Register the failure prediction in manifest/preregistrations/ before any run
    (SPEC §5.1 — prediction recorded first, result published either way). task.yaml's
    header comment block lists the obligations verbatim.

  2. Author hidden/*_sealed_test.py. ⚠️ The glob is *_sealed_test.py, not
    test_*_sealed.py
    — sqlfluff sets python_files = "*_test.py", so a test_*.py
    module is silently uncollected and would pass vacuously. The README leads with this.
    Five things it must add on top of the public gate:

    • dialect dispatch beyond ansi/bigquery (snowflake, tsql, postgres, hive);
    • every deprecated wrapper both warns and delegates;
    • the call sites were actually rewritten — assert no DeprecationWarning while
      linting with AL05/RF01/RF02/RF03/ST05/ST09/ST11 inside
      warnings.catch_warnings(record=True). This is requirement 3 of the prompt and it
      has no public-gate coverage: a submission that adds the free functions but
      leaves the old call sites in place passes the public gate today;
    • ObjectReferenceLevel accepts both the enum and a bare int;
    • BigQuery multipart references.

    The README also carries an explicit do-not-assert list (internal helper names
    _raw_refs / _level_to_int / deprecated_segment_method, the Protocol, exact
    warning text, file layout) so the sealed test grades behaviour, not my scaffolding.

  3. Verify both directions.

W1b — zarr block/mask property tests

  1. Author the sealed mutation-catch runner: hidden/check.sh, hidden/mutants/,
    hidden/VERSION. The README tables 8 candidate mutants (M1–M8) already anchored to
    real line numbers — BlockIndexer (l.1045), BlockIndex (l.1131), MaskIndexer
    (l.1299), is_mask_selection (l.1159), BoolArrayDimIndexer (l.623),
    CoordinateIndexer (l.1169).
  2. Keep ≥1 control mutant the canonical does not catch, excluded from the
    threshold — otherwise the runner cannot distinguish "thorough" from "impossible".
  3. check.sh contract (in the README): discover untracked
    tests/test_*_properties.py; none → exit 1; apply/run/restore per mutant under a
    trap; HYPOTHESIS_PROFILE=ci; ~5 min timeout counts as not-caught; stderr
    CAUGHT/NOT-CAUGHT/TIMEOUT/CONTROL; exit 0 iff every non-control mutant is
    caught; exit 2 reserved for a broken sealed set.
  4. Verify both directions — canonical → exit 0; a vacuous fixture → exit 1.

W6 — hono reg-exp-router PR review

Scaffolded except the defect map, as you asked. hidden/README-FOR-HUMAN.md (227 lines)
is written to be authorable in one sitting and spells out the seeding instructions
from the mining rationale:

  1. hidden/review-diff.patchreview/base-diff.patch (the real 526-line upstream
    diff over node.ts +88/−82, router.ts +73/−114, trie.ts +15/−6, with
    router.test.ts deliberately withheld) with your k defects seeded in.

  2. hidden/defect-map.jsonk = 6, one per class, each anchored to a real region
    the README names with its surrounding code:

    # class anchor
    1 off-by-one trie.tsthis.paths[path] = [this.#index++, paramAssoc], the two reverse loops
    2 inverted guard node.ts — the UnsupportedPathError throw, regexpStr !== ONLY_WILDCARD_REG_EXP_STR
    3 reordered precedence compareKey's return b === TAIL_WILDCARD_REG_EXP_STR ? -1 : 1; #buildMatcher order
    4 dropped else → wildcard fallthrough the if (pattern) {…} else {…} / i === len - 1 ladder
    5 omitted regex escape regExpMetaChars.has(k) ? `\\${k}` : k
    6 aliased state across registrations this.#tries![method] = new Trie(), Object.create(null), clearWildcardRegExpCache()

    Schema: {version, k, defects:[{id,class,file,line,note}], clean_regions:[{file,start,end,note}]},
    where line is 1-indexed in the new file.

  3. The ≥2 clean-region rule. #buildMatcher and the
    childStr === '' ? '' : … + #index = isStatic ? -1 : index pruning are named
    mandatory-unseeded. Zero-fabrication is only a meaningful half of the pass
    condition if there are clean regions available to falsely accuse.

  4. hidden/check.sh — matcher contract in the README: report at
    $SUBJECT_DIR/review-report.txt; missing → exit 1 (not 2); parse
    <path>:<line> — <desc> tolerating -//:; ±3 line window; collapse duplicates;
    stderr DETECTED/MISSED/FABRICATED;
    exit 0 iff detected >= k-1 && fabricated == 0; exit 2 only for a broken sealed set.

  5. Fixtures A/B/C for both-direction verification, plus the expected validator counts
    once the map lands (W6 goes 4·2·4·0 → 6·0·4·0).

Not done / out of scope

  • No live run of anything. Zero model spend; CP-SPEND not requested.
  • CP-SCREEN-PREREG is untouched. These tasks are pinned and validated, not
    pre-registered. Contamination tiers in task.yaml are declared on a merge-date basis
    and must be confirmed against each subject's declared cutoff at pre-registration; the
    register records a visibility-based fallback tier for each.
  • C1/C2/C3 not scaffolded, per your instruction — verified SHAs retained.

🤖 Generated with Claude Code

Catherine Wang and others added 5 commits August 16, 2026 16:21
…screening roster

Batch 3 hit a ceiling (27/27 controlled runs accepted, zero escalations), so the
current three tasks cannot separate configurations on quality. This registers
eight commit-mined candidates hard enough that acceptance is expected to vary.

Sourcing per SPEC 5.1 and tasks/WORKLOAD-SELECTION.md 4: agent starts at N-1, the
merged PR's own tests seal the gate. 2026-08-diversed-coding-tasks.md was used as
class briefs only -- none of its fabricated SHAs or repos is carried forward.

Verified via the GitHub REST API (urllib, User-Agent header; no clones, no model
spend): 16/16 SHAs resolve -- 8 merge commits and their 8 parents. All eight PRs
are merged squash merges, so parents[0] is unambiguously the agent start point.
All eight repos are permissively licensed and all eight gate plans are hermetic
(deps installed at image build; gate runs --network=none).

Coverage: complex_bugfix x4 across three repos (sqlglot, anyio, zarr), migration
x2 (sqlfluff, opentelemetry-python), test_generation x1 (zarr), W6 review-target
proposal x1 (hono). C5 recommended as the SPEC 5.1 escalation probe.

Nothing scaffolded, nothing pinned in the manifest, nothing runnable. Awaiting
human selection.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The 10-point validator and the deterministic gate hard-coded npm/jest/Prisma,
so no Python task could be validated at all. Split the toolchain out behind a
new `task.yaml stack:` field.

- stacks/{node,python,none}.sh + stacks/README.md — drivers own install,
  deps probe, baseline, selected-test run, coverage and build; the task
  supplies the commands via stack_cmds.
- A stack may declare a check not_applicable WITH A REASON. validate.sh
  accounts for those separately and never counts them as passes (SPEC 2.8).
- check-public.sh: pr_review branch; stack-driven diff scope and tree status;
  public_test_support (files the upstream PR adds alongside its new test
  module, created empty in the subject tree).
- check-hidden.sh: test_generation/pr_review invoke a sealed hidden/check.sh,
  hash all of hidden/, honour exit 0/1/2.
- gate/covpy_to_summary.py: coverage.py JSON -> the gate's coverage summary
  shape, the Python counterpart of the existing jest reader.
- validate.sh: gate_type dispatch; stack + gate_type in the report. A
  containerized run reports check 7 not_applicable with a reason rather than
  failing, because .dockerignore deliberately keeps canonical/ out of the
  image (subject isolation) — check 7 is host-verified.
- Dockerfile.python: clean-container validation env for stack: python
  (uv 0.12.5 pinned, HYPOTHESIS_PROFILE=ci), sibling of the node Dockerfile.

Regression evidence, host 10-point validation on the refactored harness:
pilot 10/10, W1 10/10, W4 10/10 — all unchanged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
CI's shellcheck and JSON/YAML steps used a bare find and would have linted
sealed hidden/ gate scripts and .work/ run artifacts. Sealed material is
human-held and must never be read by a gate. Prune set now matches
tests/run-tests.sh prune_find.

Latent today (a clean CI checkout has no sealed files, since they are
gitignored) but live on a self-hosted or resumed runner.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…d commits

Batch 3 accepted 27/27 controlled runs with zero escalations. At that ceiling
quality cannot separate configurations and cost-per-ACCEPTED-outcome collapses
to raw cost. Four commit-mined tasks, all at contamination tier post_cutoff,
all with hermetic gates, all pinned to SHAs verified through the GitHub API and
re-verified against real clones (parents[0] of each merge == the recorded N-1).

- W4b  zarr-python#4227  complex_bugfix (ordering)   9 pass / 1 awaiting / 0 fail
- W3   sqlfluff#7962     migration, ESCALATION PROBE 9 pass / 1 awaiting / 0 fail
- W1b  zarr-python#4054  test_generation             9 pass / 1 awaiting / 0 fail
- W6   hono#5171         pr_review                   4 pass / 2 awaiting / 4 n/a / 0 fail

Every awaiting_human is a check waiting on a sealed artifact only the human may
author; every not_applicable carries a reason. Nothing is reported as a pass
that was not executed.

W1b and W4b are SECOND TASKS of W1 and W4, not new workloads: they ship no
workload.yaml, and the parent workload names them under
second_task_for_class_claim. That is what unblocks a class-level claim under
WORKLOAD-SELECTION 3 (extending SPEC 5.2) — both are post_cutoff and materially
different from the famous originals in language, ecosystem and task shape.

W3 is the designated escalation probe (SPEC 5.1); its task.yaml header records
the obligation. The failure prediction is human-registered before any run.

Notable pins:
- sqlfluff's requirements_dev.txt is completely unpinned, so W3 ships a
  task-owned env/requirements.lock.txt (81 pins) — a pinned commit with an
  unpinned environment is not a pinned task.
- W1b runs every command under HYPOTHESIS_PROFILE=ci (zarr's derandomize=True
  profile). A coverage threshold over randomised strategies is not a gate.
  Its 30% branch threshold sits inside a measured band: 26.19% for a
  shape-only smoke test, 34.13% for the canonical.
- W6 withholds the upstream PR's own tests from the review artifact.

No model API was called. No spend.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- Add the four new task dirs; split TASK_DIRS into feasibility vs screening.
  The controlled P0/C2/P1 set is a FEASIBILITY invariant; screening tasks
  declare C1/C2/C3/C5 and run no companions. Both are now asserted.
- Accept public_test_kind: pr_own_tests — the commit-mining default, where the
  public test is the upstream PR's own test file lifted verbatim, so the gate
  is sealed by construction (WORKLOAD-SELECTION 4).
- Generalize the node-only .test.ts/.spec.ts assertions behind one
  _is_test_file() helper covering test_*.py and *_test.py (zarr uses the
  pytest default, sqlfluff sets python_files = "*_test.py").
- Handle gate_type: pr_review — no canonical_patch, no public_test.
- Assert screening tasks declare task_phase: screening, and that gate_type is
  a known value.
- hidden/ check moves from a blacklist of test suffixes to a whitelist:
  README-FOR-HUMAN.md is the only file any hidden/ may commit. That is what
  .gitignore already enforces, and unlike a suffix list it keeps covering
  sealed artifacts that are not test modules (check.sh, mutants/,
  defect-map.json, review-diff.patch).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@catwang42

Copy link
Copy Markdown
Owner Author

Full 8-candidate mining record (C1–C8), verbatim

Pasted here so the record survives terminal scrollback. Source of truth:
tasks/proposals/2026-08-commit-mined-candidates.md.

Status: C4, C5, C7, C8 selected and scaffolded · C6 rejected · C1, C2, C3
deferred, not rejected — verified SHAs retained for a later batch.

Read the gate plan, difficulty rationale and setup estimate columns as what they
were when written: pre-scaffolding proposals. For the four selected candidates they
have since been executed, and where measurement disagreed with the proposal the task's
own task.yaml / README.md is authoritative, not this table.

Verification method

Python urllib.request against api.github.com with a User-Agent header. Per
candidate: GET /pulls/{n} → confirm merged: true, read merge_commit_sha (N);
GET /commits/{N} → confirm N resolves, read parents; GET /commits/{parents[0]}
confirm N−1 resolves; GET /pulls/{n}/files for the difficulty rationale; GET /contents/…
at N−1 for the hermeticity assessment.

16 of 16 SHAs resolved. All eight PRs merged. All eight merges are squash merges
(exactly one parent), so parents[0] is unambiguously the agent's start point.

Re-verified at PR time: 48/48 assertions hold.


ID Repo · PR Merge date N (merge commit) N−1 (agent start) Class Contamination tier License · stars Gate plan (proposed, unexecuted) Difficulty rationale Setup est.
C1 tobymao/sqlglot #8032fix(optimizer)!: support multiple (UN)PIVOT operators on a source 2026-08-04 f89e47139368513ef23befbdc846cc94b0bab9cb d71ec8bb1df91d167df6bbdeb09b5873a192f50a complex_bugfix post_cutoff (basis: merged 2026-08-04; confirm per subject at CP-SCREEN-PREREG) · fallback moderate MIT · 9,532 Image build installs pip install -e ".[dev]" (deps: duckdb, pandas, python-dateutil, pytz — all wheels); gate runs --network=none. Public repro = the doubly-pivoted cases extracted from tests/fixtures/optimizer/qualify_columns.sql; regression = pytest tests/test_optimizer.py tests/dialects/test_snowflake.py. Pre-mod failure: at N−1 a chained-pivot source resolves against pivots[0], so qualification/type annotation of the second operator's output columns is wrong → fixture mismatch. Sealed hidden test extends the PR's test_optimizer.py (+84) additions. Git submodule sqlglot-integration-tests is not touched by this PR and is excluded from the pin. The same pivots[0] assumption is hard-coded in four optimizer modules — scope.py (source registration), qualify_tables.py (alias assignment, two sites), qualify_columns.py (column output folding), annotate_types.py (source-type derivation). Real change: +68/−35 across 4 source files, 129 added test lines. Fixing any one site leaves the others inconsistent and the fixtures still fail, so a local patch does not pass. Localization is the hard part: nothing in the failing output names scope.py. Non-local reasoning: required. 3–4 h
C2 tobymao/sqlglot #8161fix(optimizer)!: do not normalize identifiers that name data rather than references 2026-08-14 21092b3086f0bfba400de98c6deade6f4f6d3de3 bf3410543fd15e983138311577b58455e41f9551 complex_bugfix post_cutoff (basis: merged 2026-08-14) · fallback moderate MIT · 9,532 Same image as C1. Public repro = cases from tests/fixtures/optimizer/normalize_identifiers.sql; regression = pytest tests/test_optimizer.py. Pre-mod failure: identifiers that name data (e.g. struct/JSON field labels) are case-normalized at N−1, changing query semantics → fixture mismatch. Sealed hidden test extends the PR's test_optimizer.py (+60). Real change spans 7 source files, +91/−35: a new dialect-level capability flag in dialects/dialect.py (+23/−8), opt-ins in four dialect modules (bigquery, duckdb, postgres, sqlite), and consumers in optimizer/normalize_identifiers.py (+33/−11) and optimizer/annotate_types.py (+29/−15). The agent must invent the reference/data distinction and thread it through the dialect layer; a fix confined to normalize_identifiers.py cannot express per-dialect behaviour. 1.5–2 h if C1 is built first (shared image); 3–4 h standalone
C3 agronholm/anyio #1145Fix asyncio lock waiter deadlocks after cancellation 2026-06-15 f8b9f011e548c2c1c3e9abb0287bb1048ab3dca8 d517ee1d41080073cc244d8adebf822a08b762de complex_bugfix (ordering/race) post_cutoff (basis: merged 2026-06-15) · fallback obscure MIT · 2,526 Deps are pure-Python wheels (idna, typing_extensions; test group: pytest, trio, hypothesis, psutil, trustme, blockbuster). Gate: pytest tests/test_synchronization.py, fully in-process — no sockets, no network. Public repro = TestLock::test_cancelled_after_acquire from the PR. Pre-mod failure is deterministic, not timing-based: the test uses wait_all_tasks_blocked() to sequence the cancel, then fail_after(3) turns the resulting deadlock into a TimeoutError. ⚠️ The suite is parametrized over asyncio and trio backends and the bug is asyncio-only, so the repro must be scoped (-k asyncio) or the expected pre-mod signature recorded as a partial failure. Real change: +30/−17 in one file, but that file (src/anyio/_backends/_asyncio.py) is a ~2,000-line backend, and the fix touches four methods across two classes (Lock.acquire/release, Semaphore.acquire/release). The correct fix turns on a distinction the symptom does not reveal: a waiter cancelled before being woken must remove itself, whereas a waiter cancelled after being granted ownership must release() — discriminated by fut.cancelled(). It also requires replacing an iterate-and-skip loop with a drain loop, because cancelled waiters left queued are what deadlock the next release(). A plausible-looking patch that only removes the waiter reintroduces the leak in the other class. 3 h
C4 zarr-developers/zarr-python #4227fix: make consolidated metadata nesting independent of persisted key order 2026-08-02 24f9ad19430dc88bc1d92b5e1936ac6b3e20f4fe a994a4fc972fed428eab6a26d4f14bb95d22c144 complex_bugfix (ordering) post_cutoff (basis: merged 2026-08-02) · fallback obscure MIT · 2,037 Runtime deps are wheels (numpy≥2, numcodecs, google-crc32c, donfig, packaging). ⚠️ At this pin the repo is a uv workspace monorepo (zarr-metadata, zarr-indexing, zarr-http-server subpackages) — install with uv sync at image build. Gate: pytest tests/test_metadata/test_consolidated.py, which uses only the in-memory store (no fsspec, no moto, no network). Public repro = test_flat_to_nested_is_order_independent[order1] (interleaved sibling subtrees). Pre-mod failure: _flat_to_nested loses children → the assertion on the child's consolidated_metadata fails. Sealed hidden test extends the PR's real-store regression (test_consolidated_metadata_case_differing_siblings). Real change: +6/−5 in one file, and that is precisely what makes it a localization task. The defect is a misuse of itertools.groupby — which groups only consecutive runs — over a key list sorted by depth alone, so sibling subtrees whose keys are not adjacent silently lose their children. The user-visible symptom (nodes unreachable through consolidated metadata, most visibly for sibling groups differing only by case) is several layers away from group.py::_flat_to_nested, and the fix requires recognising a stdlib-contract subtlety rather than editing anything the traceback points at. 62 added test lines encode three distinct key orders. 4–5 h (monorepo install + numpy-stack image)
C5 sqlfluff/sqlfluff #7962refactor: extract reference/alias segment methods into dialect-dispatched free functions 2026-06-17 ee00054a89fe1850695601297d41d7e95559eb00 7700446fdb424ba56a2b1963a624d3747df53744 migration (behaviour parity) post_cutoff (basis: merged 2026-06-17) · fallback moderate MIT · 9,855 Pure-Python at this pin: build-system = setuptools + wheel; the sqlfluffrs Rust crate is a separate directory and not a build or test requirement (requirements_dev.txt lists only ruff/pytest/mypy/hypothesis/etc.). Two-part gate: (a) fail-to-passpytest test/core/dialects/common_test.py test/dialects/bigquery_test.py; common_test.py (131 lines) does not exist at N−1, so it fails by construction. (b) parity — a bounded subset of test/rules + test/core + test/dialects must stay 100% green (the YAML-fixture rule suite is large; its runtime must be measured and the scope bounded before pre-registration). (c) anti-no-op structural check — the extracted free functions must exist in src/sqlfluff/core/dialects/common.py and the corresponding methods must be gone from dialect_ansi.py; without this a do-nothing submission passes parity. The real change is +716/−348 across 12 source files: 471 new lines of extracted free functions in core/dialects/common.py, −206 lines removed from dialect_ansi.py, −78 from dialect_bigquery.py, and eight call-site files rewired (rules AL05, RF01, RF02, RF03, ST05, ST09, ST11 and utils/analysis/{query,select}.py). Every call site must keep byte-identical lint behaviour across ~30 dialects. This is the "Django async" brief shape — many files, no functional change permitted, drift anywhere shows up as a rule regression. Recommended escalation probe (SPEC §5.1): the volume plus the parity constraint is where an economical tier is most likely to degrade. 5–7 h (largest; bounding and timing the parity suite is most of it)
C6 open-telemetry/opentelemetry-python #5277Remove typing aliases deprecated in python 3.9; replace typing.Union/Optional with | 2026-06-17 7283c4c0845665e5d6169c3fce5e6c8ac6f0650e 4c8569df2b55ae47189e30a4afcb6a02faba0f85 migration (alternate to C5) post_cutoff (basis: merged 2026-06-17) · fallback moderate Apache-2.0 · 2,588 Multi-package uv workspace; install the touched distributions (opentelemetry-api, -sdk, -proto-json, two propagators, the grpc exporter, the json codegen package) at image build, run offline. ⚠️ The PR adds no tests (its only non-source file is a changelog fragment), so the gate is necessarily: (a) every touched package's unit suite stays green (parity), (b) a structural static check — ruff UP006/UP007/UP035 clean over the 27 target files, i.e. no typing.Union/Optional/List/Dict/Tuple/Type remaining, (c) mypy parity. Pre-mod failure is supplied by (b), which fails at N−1 by construction. Real change: +262/−253 across 27 files in 7 distributions. Per-file difficulty is low; the difficulty is volume and drift — 27 files, several of them generated protobuf-JSON codecs (metrics.py +53/−53, profiles.py +36/−36, trace.py +27/−27), where a single missed or over-eager rewrite (e.g. converting an Optional inside a runtime isinstance/get_type_hints path) breaks a package. Honest caveat: this is a weaker discriminator than C5 — a competent economical tier may well complete it, and its gate leans on a static check rather than the maintainers' own tests. Listed so the migration slot has a genuine alternative. 6–8 h
C7 zarr-developers/zarr-python #4054test: add property tests for block and mask indexing 2026-06-09 96a62b51f8fe86eeb056eee1684eef94b4114e35 b9d396460da369bea86f4bd978d3746f7a41076b test_generation post_cutoff (basis: merged 2026-06-09) · fallback obscure MIT · 2,037 Same image as C4 (different pin). W1's gate model, retargeted: agent write-scope tests/ only; product files read-only. T1 diff-scope · T2 suite-green · T3 branch coverage over the block/mask selection paths in src/zarr/core/indexing.py (BlockIndexer, MaskIndexer) and the get/set_block_selection, get/set_mask_selection, .blocks, .vindex entry points in src/zarr/core/array.py, at an honest reachable ceiling measured during scaffolding (as in report/findings/w1-coverage-analysis.md) · T4 tests-pass. Authoritative hidden check = sealed mutation-catch against seeded BlockIndexer/MaskIndexer mutants. The gate does not require Hypothesis, so it stays deterministic; the canonical patch does use it and must pin hypothesis with a derandomized profile and fixed max_examples. Meaningfully harder than W1 on both axes the brief names. More modules: W1 targets two ~30-line mapper files in one directory; this targets two indexer classes in core/indexing.py plus four public entry points in core/array.py, and must exercise both the dedicated methods and the .blocks/.vindex interfaces, get and set. Less obvious assertions: there is no "expected output" to eyeball — correctness is only checkable against a numpy oracle, and for block indexing the oracle requires translating block-space indexers into array-space slices (slice(start*chunk, stop*chunk), negative-index wraparound via dim_sel % nchunks) and knowing which indexers zarr rejects but numpy accepts (strided slices; a slice starting at the grid edge). The reference solution needed 61 lines of strategy plus 61 lines of test to say this. A vacuous high-coverage suite passes T1–T4 and dies on the sealed mutants. 3 h if C4 is built first (shared image); 5–6 h standalone. The coverage-ceiling analysis and mutant set are the cost.
C8 honojs/hono #5171feat(reg-exp-router): throw UnsupportedPathError during route registration 2026-08-03 8a0b18fd9b4d64dd2eb1d7f18e3536fc06cb54b2 3feb3551d46de1f633e82253f12cf1117316be93 W6 code_review (target proposal; defect map is human-authored) post_cutoff (basis: merged 2026-08-03) · fallback famous (31,686 stars) MIT · 31,686 Matches the existing tasks/suite/W6-pr-review/workload.yaml shape and keeps its language: typescript. Repo pinned at N−1 for context; the review artifact is the unified diff N−1→N restricted to the three router source files (+176/−202), with the PR's own tests withheld and k defects seeded into the diff by the human. Gate is the workload's existing design: deterministic matcher over the sealed defect map by file + line window + defect-id; pass = ≥ k−1 found and zero fabrications. No test execution is part of the review gate; a one-off vitest run src/router/reg-exp-router during scaffolding confirms the seeded diff still typechecks and that seeded defects are not accidentally caught by the public suite. Right size and density for seeding: 335 changed lines confined to node.ts (+88/−82), router.ts (+73/−114) and trie.ts (+15/−6) — self-contained routing logic that a reviewer can judge from the diff alone, which is what the pass condition requires. Proposed seeding approach (defect kinds spread so precision and recall are both tested): (1) off-by-one in the slash/segment counting arithmetic in trie.ts; (2) inverted guard on the new UnsupportedPathError throw, so a legal path is rejected; (3) reordered route-registration precedence in router.ts, changing which handler wins; (4) a dropped else branch that silently falls through to the wildcard; (5) an omitted regex escape on a user-supplied path segment (security-adjacent: route bypass / catastrophic backtracking); (6) a Map reused across registrations, aliasing state between routers. Leave at least two substantial regions unseeded — the zero-fabrication half of the pass condition is only meaningful if there are clean regions to falsely accuse. Contamination note: the upstream PR is public, so a subject that memorised it could diff-match rather than review; the merge date is the protection, and the seeded defects are ours and unmemorisable by construction. 4–5 h mine (node/pnpm image, diff rendering, matcher evaluator, scaffold) + human defect-map authoring

Cross-cutting notes

  • All eight repositories are permissively licensed (MIT ×7, Apache-2.0 ×1) and
    permit clone, modify, run, and redistribution of derived fixtures — criterion 4 of
    tasks/WORKLOAD-SELECTION.md §1.
  • All eight gates are hermetic. Every dependency resolves to a Python wheel or an
    npm package installed at image build time; the gate itself runs --network=none.
    None of the eight needs a live warehouse, a cloud credential, or an outbound socket
    — which is exactly the failure mode that disqualified proposal tasks 4 and 10.
  • Contamination tiers are proposals. post_cutoff is model-relative
    (tasks/WORKLOAD-SELECTION.md §2): each candidate's basis is its merge date, and
    the tier must be confirmed against each subject's declared cutoff at
    CP-SCREEN-PREREG. Where a subject's cutoff turns out to be later than the merge
    date, the visibility-based fallback tier in the table applies instead. Tiers are
    never revised after results.
  • Class-claim coverage (tasks/WORKLOAD-SELECTION.md §3): complex_bugfix would be
    covered by two or three different repositories (sqlglot, anyio, zarr), and the
    corroborating tasks fall in obscure/post_cutoff — so a class-level promotion is
    not blocked by the contamination rule.
  • Escalation probe (SPEC §5.1): C5 is the recommended designation — highest
    volume, strictest parity constraint, and an anti-no-op structural check that a
    degraded submission cannot dodge. C1 is the fallback (a four-site invariant that a
    local patch cannot satisfy). The prediction must be recorded at CP-SCREEN-PREREG
    before any run, and published whichever way it lands.
  • Nothing here has been executed. Pre-modification failure proofs are derived from
    the PRs' own diffs and are stated as expected; each becomes a measured fact only
    when the task clears ten-point validation in a clean container.

@catwang42
catwang42 merged commit ce271a0 into main Aug 17, 2026
1 check passed
@catwang42
catwang42 deleted the feat/screening-roster branch August 21, 2026 02:24
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