Skip to content

[P1] [SPX-AI-006] Execute and analyze the existing 18-trial paired coding-agent pilot #105

Closed as not planned

Description

@wsdt

SPX-AI-006 — Execute and analyze the existing 18-trial paired coding-agent pilot

Priority: P1 | Workstream: evaluation | Import action: New implementation issue
Planning baseline: wavect/semaprax@ae25c6a49dc09ec4613c7a6f52a27daa69dcd3f3 (11 September 2026).
Implementation prerequisites: SPX-AI-005
Important: prerequisites mean the required implementation/evidence is accepted, not merely that its GitHub issue exists.

Outcome

Produce the first actual comparative observations: three tasks × two available Semaprax lanes × three repetitions. Report failures as data and rank the practical blockers. This is an execution/evaluation issue, not a request to build another framework.

Current evidence and distinction from existing work

The current manifest declares repetitions=3 and the available graph-operational and source-first lanes. The current contract still says comparative model trials have no observations. A green framework gate does not imply the trials ran.

Read these owners first

Directory pointers are navigation roots. Resolve current files with rg --files; proposed new files must follow the current module ownership. The referenced snapshot may be older than the implementing branch.

Bounded scope and non-goals

Use the frozen existing tasks, rubric and isolation. One approved model configuration is enough for this first pilot. Do not wait for Agent v2 live integration, change task scope, delete failed runs, or infer superiority from eighteen small trials. Paid execution requires an operator-authorized budget; lacking it leaves execution blocked, not completed.

Implementation steps

  1. Freeze the exact repository revision, task hashes, model identifier, decoding configuration, tokenizer accounting method, runner revision and host. Confirm no other process is mutating the trial fixture or target directory.
  2. Generate and archive the complete available matrix. Determine a reproducible counterbalanced trial order outside the task contents so cache/temporal effects do not consistently favor one lane.
  3. Run all eighteen requested tuples with the same model and resource policy. Retain every failed/aborted attempt. Never silently substitute a different model after a provider error.
  4. Run independent acceptance, stale-preservation and ownership-sensitive checks on each candidate. Follow the existing blinded review protocol for active review time; record interventions separately.
  5. Derive and audit every observation. If one observation lacks mandatory measurements, report it as ineligible and explain the missing field rather than filling it with zero.
  6. Use the existing report command for complete available-lane aggregation. Produce paired per-task results for acceptance, usage, tool calls, context, recovery, validation and review. Show raw denominators and failed-run costs.
  7. Classify observed failures into language/profile limitations, incorrect model proposals, poor discovery, stale recovery, runtime defects, measurement/infrastructure problems and human intervention. Map each finding to an existing issue or a small follow-up with its reproduction.
  8. Publish only a descriptive pilot conclusion. Clearly separate framework correctness, compiler conformance and model productivity; do not claim general statistical significance or Zero parity.

Required tests and failure cases

  • Every expected tuple is accounted for exactly once; missing, duplicate and extra tuples fail validation.
  • Acceptance decisions are reproduced independently from archived candidate/evidence bytes.
  • Token and time reports have authentic counters/timers, not lexical-unit estimates.
  • Source-first and graph-operational runs use identical task/fixture/model configuration and isolated state.
  • The summary retains failed and aborted trials and states the limits of a three-task pilot.

Starting commands

Run these from the implementing checkout. A command containing /absolute/path/... requires an explicit local output path. Use the current --help for option details and verify that test filters select actual tests. These are starting points, not a claim that this pack executed the compiler.

python3 scripts/agent-task-comparison.py audit --help
python3 scripts/agent-task-comparison.py report --help

Definition of done

  • Eighteen real-model trial records exist, or the unresolved execution blocker is explicitly open.
  • All eligible observations pass the existing audit and the complete matrix can be reported.
  • The prioritized failure taxonomy cites trial artifacts and drives implementation choices.

Guardrails for the implementing agent

  • Read the current AGENTS.md, affected RFC/specification, completion rows and architecture owners before implementation. This pack is pinned planning input, not permission to ignore newer code or decisions.
  • Use a private worktree and a private CARGO_TARGET_DIR inside it. Do not use git stash, overwrite sibling worktrees, or share compiler/test scratch output. Add tests to the existing owning harness, not a new compiler-linking top-level test binary unless repository rules require it.
  • Preserve source/graph/schema compatibility where contracted, left-to-right evaluation, lazy operands, ownership transfer, canonical cleanup order and sticky failure. Do not weaken tests, diagnostics, range checks or authority checks to get green.
  • A proposed new shape/API below is a design target, not a claim that syntax or a command already exists. Run --help and discover exact test selectors. Zero selected tests, unavailable tools and skipped required rows are not execution evidence.
  • Keep model output as untrusted data; compiler facts and evidence never mint capabilities. Human support/publication decisions, paid model calls and real registry/Git writes require their own explicit authority.
  • Reuse implemented Agent v2, migrations, iterators, closures, semantic candidates, persistent HIR cache and hosted PG grammar/metadata work. If the requested slice already landed, verify its gate and close only the residual gap rather than building a competitor implementation inside this repo.

Evidence to attach before closing

For the implementation handoff, include: exact starting and finishing commit; changed files and their owning invariants; the pre-fix failure or negative-control result; exact commands, exit status and nonzero selected test counts; target/toolchain/provider identity; artifact/log locations; and remaining limitations. Run the repository's complete required quality profile (scripts/quality.sh full on supported Unix, or the documented platform equivalent) before merge. A local focused pass is not hosted evidence and a green framework is not a completed model experiment. For architecture/ABI/ownership changes, obtain independent semantic review before promotion. Do not mark an execution issue complete using authored tests or documentation alone.

Activity

  1. wsdt commented on Sep 13, 2026

    @wsdt
    MemberAuthor

    Pushed the dependency-priority implementation batch in 06bec1c29adc0cc9c28671ba64bb2e7975a3381f (starting 85014337). The existing pilot now drives both lanes through a confined local MCP argv tool, with no model shell/native source tools. Source reads expose a preimage digest; writes refuse stale preimages. The frozen stale patch is applied after the recorded identifying inspection. Bounded process/output/log handling retains failure records, exact candidate source bytes/diffs, external MCP frames, provider exports, independent acceptance and monotonic validation duration. Owned-task review packages are retained.

    The existing runner also emits the exact authenticated 18-tuple matrix in a counterbalanced order: rotating task positions, alternating first lanes, honest 5/4 first-lane counts across nine pairs. No task or rubric bytes changed.

    Local evidence: one schedule inventory/balance regression passed; the owning source+graph confined run/export/archive stub test passed (one test); actual OpenCode local MCP discovery connected for both lanes. No model observations are claimed by those checks. Root has frozen the new schedule and started the first free Muse tuple; no completed real trial is claimed yet.

    Still open: eighteen real tuples and complete eligible observation/audit/report coverage. Capture is explicitly ineligible while exact presented context, stale recovery, intervention and blinded-review measurements are absent. Internal gateway counts are not mislabeled external tool traffic. No full/hosted gates repeated, per operator direction.

  2. wsdt commented on Sep 13, 2026

    @wsdt
    MemberAuthor

    Two real free Muse setup attempts are preserved: pilot-06bec1c2-01 had no tools because the runner passed the gateway log path instead of executable; pilot-96f90af1-01 reached MCP but failed confined /dev/null access. Fixes landed through b8e7ccc, including actual confined gateway-command regression. A no-model preflight successfully ran the frozen compiler through MCP; new cohort pilot-b8e7ccca started. All setup failures remain ineligible, with authentic usage and failure artifacts. Missing presentation/review/stale metrics remain unavailable, never zero.

    Working cohort first tuple made61 MCP calls,32 rejected, with unchanged candidate and failed acceptance. The model could inspect compiler semantics; discovery/proposal failures are retained as data. OpenCode export truncated at65536 bytes; supplemental stream derivation in c2b25986 retains all token components (including cached input/reasoning), reports421767 input and11758 output for23 unique finished steps. This is a configured-model CLI report, not independent provider authentication. Remaining17 tuples are running serially under the frozen policy to conserve resources.

  3. wsdt commented on Sep 13, 2026

    @wsdt
    MemberAuthor

    All 18 frozen real-model tuples are now retained exactly once, with independent candidate replay. Report and hash-bound index pushed in e0482399: docs/AGENT-TASK-PILOT-2026-09-13.md and benchmarks/agent-task-comparison-v1/pilot-2026-09-13.json.

    Results: 0/18 full task acceptance; 4 process completions, 14 timeouts; 1,180 MCP calls including 757 failed calls. Every failure/abort and the two separate setup attempts remain archived. All 18 are ineligible: exact model-context presentation bytes, blinded active review time, complete typed stale/recovery metrics and intervention ledger are missing. No zeros or productivity/Zero-parity claims substituted for missing data. Completed-step token reports include cache/reasoning; unreported in-flight usage remains unknown.

    Prioritized reproduced blockers: harness command/write-path discovery; incorrect persistent-ID edits in source owned trial2; no demonstrated stale recovery; truncated OpenCode exports and missing eligibility measurements. Raw local artifacts live under benchmarks/agent-task-comparison-v1/evidence/pilot-b8e7ccca-01 through -18; committed index binds original record hashes. Source replay retains exact frozen compiler/hash and never rewrites records.

    After the cohort ended, 8da8ef38 fixed lane-specific --help and explicit .pilot/ artifact guidance. No-model two-lane help regression passed; two export-counter regressions passed. No rerun or completed eligible aggregation is claimed. #105 stays OPEN for missing measurement/review and a separately frozen follow-up. No full or hosted gates ran per operator instruction.

  4. wsdt commented on Sep 17, 2026

    @wsdt
    MemberAuthor

    Progress — ad4a863e — not closing

    A destructive bug found on the way, fixed first

    install_gateway RENAMES its compiler argument to semaprax-real and writes the recorded wrapper over that exact path. Two tests in scripts/test-opencode-agent-task-pilot.py handed it the live sys.executable. Running the pilot test suite therefore renamed the host's real Python 3.14 interpreter and replaced it with the wrapper, whose #!/usr/bin/env python3 shebang then resolved back to itself — so every python3 invocation on that machine died with env: python3: Argument list too long (exit 126).

    It happened twice on the development machine, to two separate installs (2026-09-13 and 2026-09-17). Fixed at both levels: the callers now pass provision_semaprax()'s disposable copy, and install_gateway itself now refuses any compiler outside the state directory rather than trusting its callers. provision_semaprax always returns <state>/bin/semaprax, so no legitimate caller is affected.

    Eligibility is now computed, not hardcoded

    ineligibility_reason() returned a fixed string and replay.py hardcoded eligible_observation: False, so no trial could ever have been eligible on any evidence. The four measurements this cohort was missing are now genuinely measured, in a new scripts/opencode_agent_task_pilot/eligibility.py:

    Measurement Definition
    Presentation bytes frozen prompt UTF-8 bytes + every archived MCP tools/call response byte, summed with repeats, counted off the pilot's own transport — never estimated from tokens
    Blinded active review time operator-recorded slot (record-review CLI, exclusive-create review.json) binding reviewer id, blinding attestation and the exact candidate.diff SHA-256; active_ms bounded by the elapsed interval
    Typed stale/recovery closed enum over the gateway's real drift trigger × next-touch return code, cross-checked against the manifest's declared drift
    Intervention ledger append-only interventions.jsonl, closed kind enum, monotonic sequence, created empty at trial start so zero interventions is auditable rather than indistinguishable from unmeasured

    compute_eligibility replaces both hardcodes: eligible only when all four are observed; anything missing or malformed is fail-closed with the specific reason named; it never raises and never fabricates a value.

    Evidence: /usr/bin/python3 scripts/test-opencode-agent-task-pilot.py → 51 tests, 46 passed, all 33 new tests among them. The 5 failures are pre-existing SubprocessBoundaryTests/TupleTransportTests cases and every one fails with env: python3: Argument list too long — they exercise the wrapper's shebang against the corrupted interpreter described above. They are expected to pass once it is restored; that is not claimed as verified.

    Residual scope

    Nothing was backfilled. benchmarks/ was not touched, no measurement was inferred or defaulted to zero, and no model trial was re-run or paid for. The 2026-09-13 cohort therefore remains ineligible on its real evidence — review.json and interventions.jsonl never existed for those 18 trials.

    Before a new authorized cohort run: (1) restore the corrupted interpreters from their semaprax-real siblings; (2) wire an actual blinded-reviewer workflow around the new record-review CLI, which today is only a recorded-input slot with no reviewer UI; (3) decide an operator convention for logging interventions mid-run — the intervene CLI exists but nothing calls it automatically.

  5. wsdt commented on Sep 18, 2026

    @wsdt
    MemberAuthor

    Closure audit @ e9ab9242 — NOT CLOSEABLE, environment-blocked.

    The 18-tuple cohort ran, but 0/18 were eligible. Closing requires a new paid/credentialed cohort plus a reviewer workflow — neither available in an agent session. This is a budget-and-people task, not an engineering one.

  6. wsdt commented on Sep 20, 2026

    @wsdt
    MemberAuthor

    Pushed d120aae to main. The no-spend pilot instrumentation now counts stale recovery only for an exact, canonical pilot-write-source of src/core.spx; reads and other-path writes cannot create a false recovery, malformed writes fail closed, and rejected_stale_write requires the gateway exact stale-precondition return code and stderr. Focused eligibility suite: 38 passed; stale subset: 12 passed; py_compile and diff checks passed. No historical evidence was backfilled and no paid/model calls ran. #105 remains open because a new authorized cohort and reviewer workflow are still required.

  7. wsdt commented on Sep 20, 2026

    @wsdt
    MemberAuthor

    Progress pushed to main in be8e0d6 (Refs #105). The no-spend intervention ledger now uses exclusive no-follow creation and holds a POSIX advisory lock across bounded read, validation, sequence allocation, and append, preventing concurrent operators from emitting duplicate sequence IDs. Ledger parsing is shared between reader and writer. Hostile lock-contention and preexisting-symlink regressions were added. Local evidence: full pilot script tests 71 passed; focused InterventionLedgerTests 10 passed; py_compile, ledger smoke, and diff check passed. One focused adversarial review found no remaining defect in this tranche. This does not close #105: a fresh authorized real-model cohort and blinded human review remain required.

  8. wsdt commented on Sep 20, 2026

    @wsdt
    MemberAuthor

    A second no-spend instrumentation tranche is on main in 0f35dde (Refs #105). Fresh trials now write canonical, exclusive/no-follow presentation.json evidence binding frozen prompt bytes/digest, raw mcp-wire bytes/digest, and exact tool-response totals. Eligibility and replay re-derive it from primary evidence and fail closed for missing, noncanonical, linked, substituted-prompt, or substituted-wire records; legacy evidence is not backfilled. Runner failure tuples are retained with the presentation error. Local evidence: 72/72 pilot Python tests, 10/10 focused context/eligibility tests, py_compile, and diff check. One adversarial pass removed an unsafe cleanup unlink so partial evidence remains fail-closed. No model calls. Not closing: authorized cohort execution and blinded review remain.

  9. wsdt commented on Sep 20, 2026

    @wsdt
    MemberAuthor

    A third no-spend instrumentation tranche is on main in 5240caf (Refs #105). Eligible active-review timing now uses start-review/finish-review: an exclusive label-free packet and immutable canonical session bind the candidate while host-clock start/end derive duration. Eligibility requires timed_packet_bound; legacy record-review remains compatible but noneligible. Stale packets/sessions, manual duration, tampering, duplicate and partial artifacts fail closed. Focused tests 29/29 and full pilot Python suite 75/75 passed; py_compile/diff checks passed. One adversarial review fixed the partial re-start artifact hazard. No model calls. Remaining closure still requires an authorized cohort and real blinded review.

  10. wsdt commented on Sep 20, 2026

    @wsdt
    MemberAuthor

    The final identified no-spend eligibility instrumentation gap is pushed in 1cca807 (Refs #105). A canonical successful pilot-drift receipt now binds trigger and before/after SHA-256 values; eligibility verifies source-read drift against the recorded raw preimage and only credits success/rejection writes when expected digests and exact gateway stdout/stderr agree. A primary gateway end-to-end regression and hostile receipt/write cases passed: 20 focused tests plus py_compile/diff checks. One adversarial review found no remaining instrumentation defect. #105 now remains open for the authorized cohort execution and blinded human review only; no model calls were made.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions