Repository navigation
Propose Bug origins for closed bugs during Scoring - #1276
Merged
Merged
Conversation
Record #1009's live checks with the real logins
The Inbox row's state word is now computed once, beside the grouping: a Needs you kind, then Stopping for a live Command given a Stop, Ready and Landing for those groups, otherwise the Command's own state. The Console row's data-state and the status text line both use it, so every Theme's Landing and Ready tag colours and the Stopping stripe apply. status --json adds stopping beside landing. Landing keeps Working's live-activity marker and a Stopping row keeps Working's tag colours.
Link the GitHub Issue URL from Stages and Command details
Review follow-ups: InboxItem::state_word names the row's word apart from the Command's own state, live_record takes its issue number, and the manual says only Command record rows carry the word in status text.
Fix Stages rows to follow Ticket run progression
A Pickup run takes the lowest-numbered Ready issue by default. Set pickup.order to highest-first in the User config, or pass lowest-first or highest-first on the command, to choose which end of the issue numbers it takes from. Two schedules working through the same queue from opposite ends collide less often; the origin reservation still protects either choice. Closes #1109
Jacob agreed to all nine recommendations, noting that the Inbox now works more like a mail inbox: Needs you and Ready for review keep a row until it is dealt with, and age clears only what GitHub can't speak for (Q2.5). ADR 0023 records that the Console reads GitHub once a minute and why; ADR 0022 was taken on main meanwhile. ADR 0016 points to it. The glossary's Dismissal, Inbox, Needs you and Activity log entries now say what brings a dismissed row back, that a dismissal can be taken back, and how GitHub settles a row. Round 3 asks what happens when GitHub can't be read, how the reads give way to the factory's quota, how long a row is read for, where a row that leaves late goes, whether GitHub moves live rows, where the Console offers Dismiss, settings, what a waiting row shows of GitHub, dismissing several rows, the "(title unavailable)" rows, and how #919 is published.
Give Inbox rows in Landing, Ready for review and Stopping their state
Command details now has a Copy CLI button beside its thirdshift show command. When the clipboard is refused, the command is selected so it can be copied with the keyboard.
A live Command refreshes Command details on each change, which cleared the by-hand selection a refused clipboard leaves. The refresh now keeps the copy status and selection. The copy handler keys on data-copy-cli.
Jacob agreed to all eleven recommendations, and will publish the Spec and its Tickets with to-spec and to-tickets (Q3.11). ADR 0023 now says what the Inbox does when GitHub can't be read, how the Console leaves the last tenth of the quota to the factory, how long a row is read for, that GitHub moves only ended rows, that Resolved counts from when a row stopped waiting, and that none of it is a setting. The glossary's Inbox entry says Resolved's new clock. Round 4 asks whether to merge main into this branch, take its Ticket run wording, and land the docs before the Spec, and whether a row that ages out still skips Resolved.
…g out still skips Resolved Jacob agreed to both recommendations. A row that ages out isn't one anybody dealt with, so it still goes straight to History (Q4.2); the glossary's Inbox entry and ADR 0023 say so. Q4.1 merges main into this branch next, takes its Ticket run wording, and opens a docs-only pull request before the Spec is written.
The CI fmt check flagged unformatted lines in the new pickup order code. This is a formatting-only change with no behavior change.
# Conflicts: # GLOSSARY.md
A dispatched run is now the Spec run or Ticket run an Architect run or Security run dispatched, and a Pickup run is skipped while another Pass, or the run it dispatched, is still running on its repository.
Record #919's grilling: Dismissal, and the Inbox reading GitHub (ADR 0023)
Let Stages fill the window's full width
Add live Experiment pages to the Console
Count same-second Claim hand-backs in either label order
Approve proposed Eval tasks from the CLI and Console
Preserve both the Trial-input preflight documentation and the Console Experiment page documentation on the homepage.
Keep the Trial-input preflight and Spec-review sandbox documentation alongside the incoming CLI and Console Eval-task approval documentation. Validation: cargo check, cargo fmt --all -- --check, 44 site tests, three Console Experiment browser tests, and all 171 tests in evals, experiments, trial and console passed (three skipped). The affected-tests selector stopped after 400 Rust passes on release::an_interrupted_release_resumes_the_same_experiment, matching the intermittent failure documented in upstream PR #1273. Its isolated cargo test and nextest reruns both passed, and it passed again in the 171-test targeted run. The selector took 432.74s including compilation; the targeted run took 190.67s.
Complete Spec-review Trial inputs before Experiment builds
Preserve Experiments alongside main's trace recording, Inbox evaluation, resource admission and Console views. Keep older Arms readable and route Experiment release messages through the shared timestamp helper.
Spec: Experiments, which measure a change before it reaches production
A Bug-origin session can replace proposal.json with a symlink. Scoring read that path on the host after the sandbox exited, so the link could import a host file into the saved proposal or block on a fifo while the machine-wide Scoring lock was held. The model Grader read scores.json the same way. Both reads now accept only a regular file with one name and a bounded size.
Combine production Grader checkpoints and carry-over with Bug-origin proposals. Preserve newer process supervision, native quota observation, Session traces and bounded session-output reads. Retain the incoming sandbox secret isolation, explicitly publish private Grader packet paths, and scope the Scoring fake-launcher override so Experiment and Trial checks still exercise real sandboxes. Regenerate prompts and documentation and retain a combined origin/Grader resume regression. Validation: formatting and clippy pass; all 50 site checks and all Rust test targets pass across the affected-test run and completion run. The release-resume and worker-overlap Experiment tests each passed exact reruns after intermittent failures during parallel runs.
# Conflicts: # README.md # docs/code-navigation.md # docs/guide.md # site/architecture/index.html # site/docs/index.html # site/how-it-works/index.html # site/index.html # src/main.rs # src/sandbox.rs # src/scoring.rs
This was referenced Oct 24, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes #1028
Includes dependency merge
d64ec50frommainfor #977's Eval sandbox and #1008's plan-limit detection. Bug-origin sessions and model Graders now share private-session setup, caps, recording and native quota observation.Evidence
Dependency merge (
d8c405e): reconciled Your Scores and calibration #1027's human Scores and calibration with Bug-origin proposals, retaining both checkpoint fields and sandbox launch interfaces.cargo check,cargo fmt --checkandcargo clippy --all-targets -- -D warningspass.RUST_TEST_THREADS=8 /usr/bin/time -p scripts/affected-tests origin/issue-978passes: 2,859 Rust tests, 62 ignored fixture/platform tests, 50 browser checks and 3 release-generator tests; 1267.14 s wall time, including compilation. CI is green for exact headd8c405e.Before:
named_history_commit_maps_through_github_to_the_other_hosts_runfailed because Scoring retained no proposal.After:
cargo test --test bug_originspasses 10 tests, including real Git history, local/remote Run attribution, no-commit evidence, Security-fix exclusion, pagination, 1,001-bug backfill, legacy checkpoints and live limit stops. One subprocess-only fixture entry point is ignored.Before: the reviewer's exact cutoff test returned 0 bugs instead of 1; the exact native Codex test incorrectly completed Scoring and advanced its window.
After: both retained regressions pass. The native test ran with real bwrap, without skipping (1 passed, 0 ignored, 1.86 s):
Existing Scoring tests: 19 passed, one fixture entry point ignored. Existing model-Grader tests: 12 passed. Prompt tests: 12 passed. The paused fake GitHub search now releases its state lock, preserving the live Stop/locking test after the dependency merge.
Final: CI run 40133979982 passed for exact head
17f1158, including the full Rust suite, formatting, clippy, Python tooling, Console and site checks. All PR checks are green. Local formatting, clippy and all 16 Python tooling tests also passed.Local selector evidence:
/usr/bin/time -p scripts/affected-tests issue-978took 764.51 s, including compilation and 50 passing browser checks, then caught the existing help-size regression (66 lines versus 65).17f1158compacts the layout; its exact existing test passes.RUST_TEST_THREADS=8 /usr/bin/time -p scripts/affected-tests issue-978ran 942.52 s, including compilation and 50 passing browser checks, and remained green through Security-review integration. It was stopped only after the exact-head full CI suite passed, reusing that result underdocs/testing.mdrather than duplicating the remaining checks.Pickup verification: model mapping is in sync at source
3cd68bb; normal check passes (4 tests, 1 explicit literal assertion ignored). The literal property and both safeguard-removal checks exit 101 as expected. The documented pre-Claim duplicate-dispatch counterexample remains; the green narrower check does not prove the literal property. The skill records this without changing the model or property.Test seams
thirdshift score/thirdshift scores --json, real Git and fake GitHub/Harness executables; shared sandbox and systemd launchers at their existing executable seams.Unaddressed findings
Standards
None. The duplicated private-session lifecycle was consolidated in
src/session/private.rs.Spec
None. Both demonstrated behavioral defects were fixed and their exact regressions retained.
Security
None. A symlink or other non-regular session file is rejected before Scoring or the model Grader stores it (
95d66bb).Security review outcome
No unaddressed introduced findings.
Review coverage
Independent Standards and Spec reviews used
issue-978(8905eb4) as the fixed point, with one coverage follow-up each. Reports, including final files-read lists, are retained beside the Session at.thirdshift-review-2q6q8J/standards.mdandspec.md. Large imported Console/Experiment changes retain coverage gaps. The final verification-skill sync and compact-help layout fix were not sent for another review; both paths are disclosed below.Every changed path with a review gap or generated exclusion is named below. Gap includes unread or partly inspected changed hunks; covered means the axis reports no remaining gap. Generated is intentionally excluded from full reading: Standards inspected sources/generator and meaningful rendering checks, with
UPDATE_PROMPTS=1 cargo test --bin thirdshift prompts_pagepassing 12 tests; handwritten prompt-page content and the Bug-origin card were inspected. Spec claimed no generated exclusions. Sources:src/prompt.rs,src/prompts_page.rs, Harness arguments and embeddedskills/; normal prompt and docs-generation checks also passed.Changed files with review gaps or exclusions
.agents/skills/verify-pickup/SKILL.mdCargo.lockGLOSSARY.mdREADME.mdconsole/README.mdconsole/reproductions/span-tree-review.cjsconsole/reproductions/waterfall-fractional.pyconsole/reproductions/waterfall-stage.pyconsole/tests/experiments.test.cjsconsole/tests/fixtures/experiments.cjsconsole/tests/inbox.test.cjsconsole/tests/logs.test.cjsconsole/tests/resources.test.cjsconsole/tests/set-password.test.cjsconsole/tests/spans.test.cjsconsole/tests/time.test.cjsconsole/tests/waterfall.test.cjsdocs/adr/0023-the-inbox-reads-github-to-learn-the-day-shift-acted.mddocs/eval-tasks.mddocs/grill-with-docs/1252-1253-bar-and-rechecks.mddocs/grill-with-docs/919-dismiss-and-github-state.mddocs/grill-with-docs/done/1251-spec-review-trial-inputs.mddocs/guide.mddocs/research/eval-sandboxes.mddocs/trial.mdprompts/architecture-review.mdprompts/ci-fix-repair-inherited.mdprompts/ci-fix-repair.mdprompts/code-review.mdprompts/conflict-repair.mdprompts/continuation-pr.mdprompts/continuation.mdprompts/foreign-conflict-repair.mdprompts/fresh.mdprompts/grader.mdprompts/resume.mdprompts/review-repair.mdprompts/security-audit.mdscripts/generate-release.pyscripts/release-experiment.pyscripts/release.shscripts/test_generate_release.pysite/architecture/index.htmlsite/docs/index.htmlsite/how-it-works/index.htmlsite/index.htmlsite/prompts/index.htmlsite/share-card.pngsite/tests/docs.test.cjssite/tests/pages.test.cjssrc/asks.rssrc/base_fix.rssrc/child_run.rssrc/child_run/execution_tests.rssrc/ci.rssrc/config.rssrc/console.rssrc/console/accounts/tests.rssrc/console/assets/console.csssrc/console/assets/console.jssrc/console/assets/experiments.csssrc/console/assets/experiments.jssrc/console/assets/look.jssrc/console/assets/spans.csssrc/console/assets/spans.jssrc/console/assets/stages.jssrc/console/auth/password.rssrc/console/changes.rssrc/console/dismiss.rssrc/console/experiments.htmlsrc/console/experiments.rssrc/console/experiments/render.rssrc/console/github.rssrc/console/inbox.htmlsrc/console/live.rssrc/console/logs.rssrc/console/peek.rssrc/console/resources.htmlsrc/console/resources.rssrc/console/row.htmlsrc/console/subscription.rssrc/console/subscription/tests.rssrc/console/time.htmlsrc/console/watching.rssrc/console/waterfall.htmlsrc/console/waterfall.rssrc/delivery.rssrc/evals.rssrc/evals/approval.rssrc/evals/arms.rssrc/evals/experiment.rssrc/evals/experiment/evidence.rssrc/evals/experiment/grading.rssrc/evals/experiment/integrity.rssrc/evals/experiment/limits.rssrc/evals/experiment/model_grader.rssrc/evals/experiment/options.rssrc/evals/experiment/rechecks.rssrc/evals/experiment/release.rssrc/evals/experiment/store.rssrc/evals/experiment/trace.rssrc/evals/experiment/usage.rssrc/evals/experiment/workers.rssrc/evals/format.rssrc/evals/import.rssrc/evals/repository.rssrc/evals/suite.rssrc/github/advisories.rssrc/github/advisories/description.rssrc/github/advisories_tests.rssrc/github/quota.rssrc/harness/codex/patches.rssrc/harness/interpretation_tests.rssrc/harness/muse.rssrc/launch.rssrc/logs/command_record.rssrc/logs/convert.rssrc/logs/convert/readings.rssrc/logs/dismiss.rssrc/logs/export.rssrc/logs/github.rssrc/logs/owner.rssrc/logs/reading/cache.rssrc/logs/reading/captured_activity.rssrc/logs/reading/catalog.rssrc/logs/reading/health.rssrc/logs/reading/history.rssrc/logs/reading/inbox.rssrc/logs/reading/inventory.rssrc/logs/reading/inventory_tests.rssrc/logs/reading/reader.rssrc/logs/reading/reader_tests.rssrc/logs/reading/tests.rssrc/logs/session.rssrc/logs/spans.rssrc/logs/spans/session.rssrc/logs/status.rssrc/logs/status/inbox.rssrc/logs/status/inspect.rssrc/logs/status/time.rssrc/logs/status/watching.rssrc/logs/status/waterfall.rssrc/logs/status/waterfall/matching.rssrc/logs/status/waterfall/trace.rssrc/logs/trace.rssrc/logs/trace/ancestry.rssrc/logs/trace/ancestry/tests.rssrc/main.rssrc/notification.rssrc/pass.rssrc/pickup.rssrc/process/tests.rssrc/proxy.rssrc/ready.rssrc/resend_key.rssrc/run_ending.rssrc/sandbox.rssrc/security.rssrc/security/close.rssrc/security/reproduction.rssrc/security/review.rssrc/session.rssrc/session/execution_tests.rssrc/session/kind.rssrc/session/recording/tests.rssrc/session/trace.rssrc/session/trace/calls.rssrc/session/trace/calls/tests.rssrc/session/trace/tests.rssrc/setup.rssrc/setup/questions.rssrc/test_support.rssrc/trial.rssrc/verdict.rssrc/verdict/prediction.rssrc/verdict/tests.rssrc/worktree/acquisition_tests.rssrc/worktree/preservation_tests.rssrc/worktree/review_recovery_tests.rstests/architect_run.rstests/base_fix.rstests/ci.rstests/codex_sessions.rstests/command_logs.rstests/console.rstests/console/accounts.rstests/console/dismiss.rstests/console/experiments.rstests/console/github.rstests/console/idle.rstests/console/inbox.rstests/console/password_codes.rstests/console/resources.rstests/console/session-expiry.pytests/console/spans.rstests/console/watching.rstests/console/waterfall.rstests/convert_logs.rstests/dismiss.rstests/email_test.rstests/eval_arms.rstests/evals.rstests/experiments.rstests/experiments/model_graders.rstests/experiments/rechecks.rstests/experiments/release.rstests/experiments/sandbox.rstests/export_trace.rstests/failed_run.rstests/fixtures/console-claude.jsonltests/fixtures/console-codex.jsonltests/fresh_run.rstests/mergeable.rstests/opencode_sessions.rstests/pickup_run.rstests/progress_lines.rstests/release.rstests/release/experiments.rstests/resources.rstests/run_health.rstests/run_notification.rstests/scoring.rstests/security_review.rstests/security_run.rstests/session_traces.rstests/setup.rstests/show_logs.rstests/spec_run.rstests/status.rstests/support/mod.rstests/support/session_trace.rstests/trial.rstests/user_config.rsMerge Danger
Door: two-way
Private proposals can be regenerated and do not alter Run metrics. No destructive migration.
Blast Radius: factory
The feature changes Scoring and shared private Grader sessions. The dependency merge also brings
main's Console, Experiment, resource and log changes into the Spec branch; review gaps are disclosed above.Built with codex · gpt-6.1-sol · xhigh