Repository navigation
specs(crons): real tests for 13 cron cards, 999-multibots-telegraf and railway (Closes #8157) - #8158
Merged
Merged
Conversation
…d railway (Closes #8157) Each card held no test block and passed vacuously (0 runtime asserts) under both the reference and t27b. The tests hold each card to the schema of specs/crons/README.md, byte by byte: - ID is <host>/<repo>/<slug>: HOST (one of the five), then REPO, then one path segment; - ON_FAILURE and CONTROL come from their vocabularies; an empty RUNS carries its reason in RUNS_NOTE; - a SCHEDULE is a five-field cron expression; - a timer's SERVICE is <file>:<line> and its slug ends in -L<line>; - a GitHub Actions card's SERVICE is .github/workflows/<slug>.yml; - a Railway dashboard schedule is "" with a SCHEDULE_NOTE. railway-jobsearch-cron breaks the first rule (see #7911); its test checks only the shape of ID. t27c test-report: 3 or 4 tests per card, 0 vacuous. t27b test --check: all pass, 37 to 79 runtime asserts. Sealed (seal --save, then --verify). docs/reports/t27b_expectations.json: `bless` of scripts/tri_loop/t27b.py over lab run 3fe4e68 with this branch's t27b verdicts for the 13 specs, composed onto master's ledger with only these rows: pass_vacuous -> pass. Closes #8157 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 9, 2026
Merged
gHashTag
enabled auto-merge (squash)
October 9, 2026 11:44
This was referenced Oct 9, 2026
Merged
Contributor
This was referenced Oct 9, 2026
Contributor
PR DashboardGenerated at: 2026-10-09 13:02:09 UTC
Summary
Seal Status
|
This was referenced Oct 9, 2026
gHashTag
added a commit
that referenced
this pull request
Oct 9, 2026
…loses #8220) (#8221) Each card held no test block and passed vacuously (0 runtime asserts) under both the reference and t27b. The tests hold each card to the schema of specs/crons/README.md, chosen by its HOST: - ID is <host>/<repo>/<slug>; ON_FAILURE and CONTROL come from their vocabularies; an empty RUNS carries its reason in RUNS_NOTE; - a SCHEDULE is a five-field cron expression; - a GitHub Actions card's SERVICE is .github/workflows/<slug>.yml; - a launch agent is code-only, its SERVICE is the Label ai.t27.<x>, its ID is launchd/<repo>/<x> and INTERVAL_MS is whole seconds; - a crontab line has SERVICE crontab and runs in Asia/Bangkok, code-only. With #8158, every cron card of specs/crons now carries a test. t27c test-report: 3 or 4 tests per card, 0 vacuous. t27b test --check: all pass, 44 to 99 runtime asserts. Sealed (seal --save, then --verify). docs/reports/t27b_expectations.json: `bless` of scripts/tri_loop/t27b.py over lab run 857ae9f with this branch's t27b verdicts for the 13 specs, composed onto master's ledger with only these rows: pass_vacuous -> pass. Closes #8220 Co-authored-by: Claude <claude@anthropic.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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.
Closes #8157. Part of #6063 (t27b coverage), which is item C10 of #6488.
What changes
13 cron cards of
specs/cronshad no test block: the 12 cards of999-multibots-telegrafandrailway-jobsearch-cron. They passed vacuously (0 runtime asserts) under the reference and under t27b, and broke L4 TESTABILITY. Each now carries tests that hold it to the schema ofspecs/crons/README.md. Which tests a card gets depends on itsHOST, because the fields differ: a timer hasINTERVAL_MSand noSCHEDULE.id_is_host_repo_and_slugHOSTis one of the five hosts.IDopens withHOST,/,REPO,/, then a slug that is one path segment, not emptyvocabularies_and_the_control_linkKINDiscron;ON_FAILUREisissue,logorunknown;CONTROLis one of the four handles; an emptyRUNS(the control link) carries its reason inRUNS_NOTEschedule_is_a_five_field_cron_expression* / , -a_timer_names_its_file_and_lineSERVICEis<file>:<line>, and the slug ends in-L<line>for that line: the line the card's header says the schedule was read fromthe_workflow_file_is_the_slug999-multibots-telegraf-ciSERVICEis.github/workflows/<slug>.ymla_dashboard_schedule_says_where_it_israilway-jobsearch-cronSCHEDULEis""when only a dashboard holds it,SCHEDULE_NOTEsays so, andCONTROLisrailway-dashboardrailway-jobsearch-cronhasID = "railway-cron/999/jobsearch-cron"butREPO = "railway". That breaks the README's<host>/<repo>/<slug>(see #7911). Its first test therefore checks only the shape ofID(<host>/<a>/<b>). No test restates a constant; each relates fields, or a field to the grammar it must follow, and walks strings with avarindex, so its asserts are runtime asserts.Specs changed (all
specs/crons/<name>.t27):999-multibots-telegraf-agent-autopilot-L1118999-multibots-telegraf-bot-owner-billing-L474999-multibots-telegraf-check-stuck-trainings999-multibots-telegraf-ci999-multibots-telegraf-client-telemetry-daily999-multibots-telegraf-club-invoice-abandoned-watch999-multibots-telegraf-crm-proactive-sweep999-multibots-telegraf-crmProactive-L375999-multibots-telegraf-daily-sales-advisor999-multibots-telegraf-generate-jobs-L164999-multibots-telegraf-robokassa-unclaimed-watch999-multibots-telegraf-ton-pending-watchrailway-jobsearch-cront27c test-report <spec>on the t27c lab (zig 0.16.0): every test passes, 0 vacuous.t27b test <spec> --checkon the t27b lab (aarch64 under qemu).t27c seal --save, then--verify: all hashes MATCH. The 13 seal files are new.Mutants
Hand mutants of the constants, each a plausible slip, run under
t27c test-report:IDwith the host part drifted, the repo part drifted, or the slug split by a/;HOST,ON_FAILUREorCONTROLoutside its vocabulary;RUNS_NOTEemptied whileRUNSis empty;KINDchanged;SCHEDULEthat gains or loses a field, carries a letter, or has a double space;SERVICEline drifts, whose slug line drifts, or whoseSERVICEloses its line;.yaml, or is outside.github/workflows;CONTROLiscode-only.On the 13 cards: 153 applied, 153 killed, none survived. Over all 26 cron cards of this lane: 339 of 339.
Skipped
None in this directory: the other 13 cron cards without tests get the same treatment in the next PR.
Superseded, not duplicated: see #6901 and #6721, open PRs of an earlier attempt that add tests to 8 of these 13 cards. Their tests restate each constant (
assert NAME == "agent-autopilot-L1118",assert HOST == "timer"). This lane rules out restated constants, and their integer asserts are comptime, so they execute no runtime assert. This PR does not reuse them.Ledger
docs/reports/t27b_expectations.json: the 13 rows move frompass_vacuoustopass; nothing else changes. The rows come fromblessinscripts/tri_loop/t27b.py(whattri t27b ratchet --blessruns) over lab run 3fe4e68, with this branch's t27b verdicts for the 13 specs, composed onto master's ledger with only these rows. Derived: pass 1075 -> 1088, pass_vacuous 122 -> 109.Gates
On the t27c lab, from master's
gen/c/policy/own_language.c, withlefthook.yml's one-line C main:check_all()overorigin/master:tools/policy/foreign-exceptions.txt,--andgit diff --name-status origin/master...HEAD: exit 0.check_budget()overgit diff --numstat --no-renames origin/master...HEAD: exit 0. No foreign line is added.t27b lab: signed receipts (#7686)
Head 857ae9f (this branch), requested with a fresh 32-byte challenge, against base a97cb9e, its merge-base. Both are signed runs of the deployed lab.
/work/t27c-master corpus-receipt compare BASE HEAD --challenge-head <mine>, from/work/t27on the t27b lab (theinput/output/verdict changedlines left out):Exit 3, IMPROVED_ONLY. The PR head 0986def is 857ae9f with master merged in from master's side; it changes no spec beyond master's.
13 specs move from
pass_vacuoustopass; none regresses.Generated with Claude Code