@@ -8,6 +8,20 @@ benchmark claims, or scoring rules.
88## Rules
99
1010- Don't cheat. Don't leak the diagnosis or desired fix in eval prompts.
11+ - Run quality review first, and if it is below 100%, stop and fix all quality issues before any new
12+ hosted eval rerun. Then execute targeted evals for every changed scenario, and only progressively
13+ broaden suites after targeted runs are clean. Preserve the daily budget by stopping at each stage
14+ unless failures require another targeted rerun; only then proceed to broader hosted checks. If a
15+ broad run shows any with-context below 100%, stop that run and return to targeted reruns for failed
16+ scenarios only.
17+ - Use the pre-submit gate before your first hosted command:
18+
19+ ``` bash
20+ scripts/pre_submit_gate.sh --plan-only
21+ ```
22+
23+ Then execute only the printed targeted stages. The gate now enforces that each stage reaches
24+ 100% with-context before allowing expansion to the next stage.
1125- Keep natural activation prompts neutral. Explicit invocation prompts may name ` $java-streams ` , but
1226 should not leak the desired fix beyond invoking the skill.
1327- The main eval should focus on realistic failure modes where this skill should change the answer:
@@ -114,9 +128,12 @@ benchmark claims, or scoring rules.
114128 legitimate coverage just to improve lift.
115129- Track raw score, percentage-point lift, raw score ratio, missed-point reduction, and the
116130 ` stream_quality ` subtotal when updating benchmark claims.
117- - Use ` scripts/run_eval_suite.sh ` for hosted evals. It runs from a temporary plugin copy so
118- with-context variants can see the skill bundle, and it enforces the suite variant policy. Use
119- Sonnet 4.6 unless intentionally comparing another model.
131+ - Use ` scripts/run_eval_suite.sh ` for hosted evals. It runs from a temporary plugin copy, passes
132+ ` --skill java-streams ` so with-context runs actually exercise this skill, passes ` --force ` so
133+ post-fix checks cannot reuse stale hosted solutions, and enforces the suite variant policy. Use the
134+ Tessl default solver unless intentionally comparing another model. If the account has
135+ model-selection entitlement, Sonnet 4.6 or a better frontier model is recommended for a more
136+ representative real-world check.
120137
121138 ``` bash
122139 scripts/run_eval_suite.sh main
@@ -127,20 +144,30 @@ benchmark claims, or scoring rules.
127144- Direct equivalent for this repository's main eval runs:
128145
129146 ``` bash
130- tessl eval run --agent claude:claude-sonnet-4-6 --variant without-context --variant with-context .
147+ tessl eval run --skill java-streams --force .
131148 ```
132- The workflow-pinned Tessl CLI version accepts this plugin eval workflow from the repository root.
133- Public docs may still show tile-oriented examples; for this repository, use the pinned CLI and
134- ` scripts/run_eval_suite.sh ` as the source of truth.
149+ The Tessl CLI runs the baseline control by default when plugin context is present. Use
150+ ` --skip-baseline ` only for context-only regression runs. Public docs may still show tile-oriented
151+ examples; for this repository, use the pinned CLI and ` scripts/run_eval_suite.sh ` as the source of
152+ truth.
153+ Tessl's public changelog notes that model and agent selection are plan-entitlement-gated:
154+ < https://docs.tessl.io/changelog > . Tessl also documents why the default eval solver is not pinned
155+ to Sonnet 4.6 for ordinary skill-development checks:
156+ < https://tessl.io/blog/why-were-changing-our-default-eval-model/ > . Check
157+ ` tessl eval run --list-agents ` for the current default because Tessl can change it over time.
135158- Run variants by suite purpose:
136- - ` evals/ ` main: always run both ` without-context ` and ` with-context ` , because it supports public
159+ - ` evals/ ` main: always run both baseline control and ` with-context ` , because it supports public
137160 lift reporting.
138- - ` evals-reference/ ` : always run both ` without-context ` and ` with-context ` , because it is used to
161+ - ` evals-reference/ ` : always run both baseline control and ` with-context ` , because it is used to
139162 find meaningful lift and promotion candidates.
140163 - ` evals-regression/ ` : run ` with-context ` only by default, because it is safety coverage rather
141164 than lift discovery. Run ` without-context ` for regression only when intentionally checking
142165 whether a scenario should move back to reference.
143166- Keep hosted eval usage minimal while preserving confidence and Tessl daily rate-limit budget:
167+ - Freeze runtime skill text before hosted spending whenever possible. The expensive failure mode is
168+ not the final all-suite requirement itself; it is rerunning required evidence after later edits to
169+ ` skills/java-streams/SKILL.md ` or bundled runtime references change the skill fingerprint. Do the
170+ local scenario/criteria crosswalk and obvious skill wording fixes before starting hosted runs.
144171 - A pure suite move does not require a hosted rerun when ` task.md ` , ` criteria.json ` , and
145172 ` capability.txt ` content are unchanged except for suite-placement metadata or numbering notes.
146173 Run local validators and update suite totals/numbering instead. If the move also changes task
@@ -155,19 +182,43 @@ benchmark claims, or scoring rules.
155182 the blocker and exact remaining targeted runs in the PR; benchmark and release-readiness claims
156183 remain blocked until those runs pass.
157184 - For runtime skill text or runtime reference changes, start with the affected scenario
158- directories most likely to move, using the suite variant rule above.
185+ directories most likely to move, using the suite variant rule above. Use the pre-submit gate's
186+ impact-analysis suggestions for runtime-only changes when no maintainer-specified focus is
187+ obvious, and keep historical risk probes in the early targeted pass.
188+ - After quality is 100 and targeted probes are clean, switch to balanced broad chunks for the
189+ remaining required evidence. Do not keep broadening one scenario at a time unless a fresh broad
190+ failure is likely and conserving eval-solutions is more important than elapsed time.
159191 - If any affected with-context result is below 100%, keep rerunning only those targeted scenarios
160192 after fixes until they are clean.
161- - Then run ` evals/ ` for the main score.
193+ - Then run the remaining ` evals/ ` scenarios for the main score, excluding scenarios already proven
194+ clean after the last skill bundle change.
162195 - Run relevant ` evals-reference/ ` scenarios with both variants when deciding promotion or checking
163196 nearby behavior.
164197 - Before final release/open-source-ready claims after a runtime skill change, run every reference
165- scenario with both variants and every regression scenario with context only. Do this after the
166- targeted failures are clean and the main suite has run.
198+ scenario with both variants and every regression scenario with context only. This evidence may be
199+ split across targeted and broad runs, and already-proven scenarios should be excluded from later
200+ broadening as long as they passed after the last change to the skill bundle.
167201 - Run ` evals-regression/ ` with context only as a final safety check before release or after broad
168202 changes, not on every tuning loop.
169203 - If a broad run exposes isolated failures, fix those exact scenarios and rerun them targeted
170- before spending rate-limit budget on another broad suite run.
204+ before spending rate-limit budget on another broad suite run. Preserve successful scenario-level
205+ evidence from the same final skill state instead of rerunning it only because another scenario in
206+ the suite failed.
207+ - Never rerun a hosted eval merely because it looks stuck, slow, pending, or temporarily missing
208+ scoring. Tessl scoring can lag after scenario execution. Keep polling the existing run with
209+ ` tessl eval view <run-id> --json ` and wait for completion or a hard service failure; only rerun
210+ after a completed scored failure and a relevant fix, or after Tessl reports a non-recoverable run
211+ failure.
212+ - Never poll hosted evals with an unbounded loop or a bare ` tessl eval run ` . Poll the specific
213+ existing run ID with bounded attempts, visible output, and a stop condition; if unexpected
214+ background eval work appears, inspect process ancestry and Codex session logs before explaining
215+ where it came from.
216+ - For budgeting sanity, run the full suite stages incrementally and confirm each stage with
217+ 100% with-context before the next one:
218+ budget-aware remaining suites from ` scripts/pre_submit_gate.sh ` , or a maintainer-approved
219+ explicit order via ` --broad-order ` .
220+ - If the change is runtime-wide and no scenario edit exists, prefer a scoped focus run first (via
221+ ` --focus <scope>:<scenario> ` ) before any broad suite rerun.
171222
172223## Current Suite Composition
173224
@@ -193,7 +244,7 @@ Update this section whenever active eval membership or scoring changes.
193244 evidence showed the without-context result was already high while with-context was clean. It
194245 remains useful natural Java 17 collector coverage, but it is weak main-lift evidence.
195246- Hard-stop scan audits: regression explicit workflow-use only.
196- - Reference suite: 5 scenarios, 460 total checklist points. Deleted reference number 12 and
247+ - Reference suite: 6 scenarios, 560 total checklist points. Deleted reference number 12 and
197248 regression-moved scenarios are not counted.
198249- Regression suite: 19 scenarios, 1820 total checklist points.
199250- Hosted benchmark evidence is pending rerun for the current active suite. Do not publish exact
@@ -212,3 +263,4 @@ the criteria JSON check listed there.
212263
213264- [ Workflow] ( workflow.md )
214265- [ Skill Behavior] ( skill-behavior.md )
266+ - [ Pre-Submit Gate] ( pre-submit-gate.md )
0 commit comments