Repository navigation
Ekbasis-Skopos-27B: release evaluation, training code, generators and docs - #62
Merged
Merged
Conversation
v49f (Ekbasis-27B's release adapter, 900 more steps), the first Skopos (the exact interpolation halfway back, merged into Eikos-27B), R4 (a new rank-64 LoRA on it, 1,200 steps) and the merge that is the release; the INT4/FP8 recipe and the MLX command. The trainers and scripts are the copies that ran, with only the publication changes the README lists line by line (where decision_core.py is found, default model ids, R4's training file path), and their sha256 against the copies that ran. stage_files_skopos.py and run_lineage_skopos.sh were written for publication. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…et of the Skopos lineage, as run World simulators, the git sandboxes, F's and FX's executed factories (shell, git, SQLite, PostgreSQL, Python, side effects, the CWM and ShIO conversions), v49f's data preparation and audits, and R4's data and the evaluation sets added for Skopos. Byte-identical to the copies that ran (provenance.json: sha256, and the comparison with the research machine's backed-up copies where they exist); exclusions and a security note (they execute what they generate: run them in a disposable container) in the README. Excluded from the sdist like training/. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…d, with their sealed hashes PREREG_SKOPOS_CMP, PREREG_R4 (with R1/R2, whose recipe it reuses), PREREG_R4_RELEASE_READ, CONFIRM_FTEST, PREREG_NEUTRAL (+ the frontier addendum it reuses), PREREG_IMAGE and the release addendum (T3c, confident errors, calibration per build, MLX on a Mac). PREREG_sha256.txt lists every seal from our seal log, with the scripts and data sealed alongside; each hash was checked against these files. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…on, with the scripts that produced them The summaries the documents read (top level), the per-item predictions in the folders the runs wrote them to (runs/: the selection reads, the release read of bf16/INT4/FP8/MLX, the fresh confirmation, T3c, confident errors, the calibration scores of each build, the neutral suite's ids and labels, the image check) and the scripts, as run (scripts/, provenance.json; two lines differ: a machine address replaced). scripts/verify_summaries.py recomputes the summaries from the per-item files with the scripts that produced them (15 of 15 equal to 1e-9). Results of the addendum still running (MLX calibration, the Mac test, A6) are added when they land. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ults_skopos/ How R4 was chosen, the release read (8 of 9 criteria; ftest_family's loss not confirmed on 5,385 fresh items), T3c, git v3, never-trained worlds, the larger guard set, the builds and their gates, confident errors, calibration per build, the neutral suite, images, overlap, and the deviations. No number is typed: the script reads every one from results_skopos/ (and Ekbasis-27B's results/). In draft mode results still to come are marked pending; --final exits 1, listing them, until every cited file exists. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…model Marked blocks written by scripts/apply_skopos_docs.py from results_skopos/ (re-runnable): the recommendation with its measured differences and its known limit, the quick start on the new weights (Ekbasis-27B the same way), the builds table (sizes read from the model repositories), where its training code and generators are, and an [Unreleased] changelog entry. Ekbasis-27B's sections and its card's content are unchanged; its card points to the new model. No change to the client. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…nder the names the runs read stage_files_skopos.py now copies v49f's ftrain_mixG3 and its eight TRAIN_EXTRA files and concatenates R4's ftrain_r2 from ekbasis-skopos-data's raw/ (each file as the trainer read it, in its order), and run_lineage_skopos.sh passes the runs' own TRAIN and TRAIN_EXTRA. The README says what a rerun of v49f reads instead of the 7,423 replay rows that are not redistributed. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…a), with their seals The pre-registrations of the candidates that were not released, unchanged, and their hashes (V50's pilot from its own seal log); the latest seal of PREREG_ADDENDUM.md (A5-A6 appended). training/skopos: the first Skopos is described as an unreleased intermediate checkpoint, archived privately and reproducible with that folder. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…t released, with its rule and outcome candidates/README.md: candidate, question, pre-registered rule, outcome and decision for V50's pilot and dose (and their real-git test), R1, R2, R3, the neutral and frontier tests, R2 against the first Skopos, R4 and its release read; each candidate's own write-up and summary, unmodified, and its per-item predictions in runs/ (run, run_dose, base, m5_*, run_r1, run_r3, neutral_r1/r3, r1_facval, diag_r1) with the scripts that ran (v50p/, R1, R3, frontier). Also r4_vs_ekbasis27b_trainer.json (R4 against Ekbasis-27B, descriptive) as a column of RELEASE_EVAL_SKOPOS.md's selection table, the confident-errors items' encoding (booleans in ekbasis-data's raw file) where those results are documented, and the first Skopos described as an unreleased intermediate checkpoint. verify_summaries.py: 17 of 17 equal. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…osen, the R4 merge and MLX commands - results_skopos/overlap_audit/: the audit of every evaluation set against every training row of the lineage (overlap.json), every published number recomputed without the flagged items (recomputed.json) and its two scripts; RELEASE_EVAL_SKOPOS.md renders both (the release read's criteria, the selection verdicts, the image check and the quantization gates keep their outcomes; the confident-errors regression is in never-trained families, where nothing is flagged). - results_skopos/candidates/first_skopos_v49/: PLAN_v49 and PLAN_v49b with their hash files, the run definitions, the data report and the V49b selection; two rows in the candidates table. - training/skopos/quantize/build_mlx_and_merge.sh: the R4 merge and MLX build commands, typed in the session that ran them and saved verbatim; the README's provenance updated. - RELEASE_EVAL_SKOPOS.md: a latency section for addendum A5 (pending until its files land). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
v49f's 31 FX rows withheld by the dataset's privacy scan, and R4's ftrain_r2 rebuilt byte-identical by stage_files_skopos.py (sha256 checked by the dataset's build). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…lds, MLX outside the release until its Mac test - results_skopos: calibration of the MLX build, latency of both INT4 builds (A5) and the served-equals-trainer check saved per item (A6); the redone overlap audit refreshed. - runs/neutral_items.jsonl keeps only the rows ekbasis-skopos-data publishes (its privacy scan flags some AgentWorldBench trajectory ids; flagged rows are withheld, never edited), with each row's line in the predictions; no published file carries the withheld ids. verify_summaries.py takes the labels from the predictions and recomputes neutral.json only with the full suite (--awb, rebuilt by build_awb_neutral.py): 18 of 18 with it. - RELEASE_EVAL_SKOPOS.md: nothing pending; without a passing Mac test the MLX build is not part of the release (one sentence), not a missing input. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…dataset's current withheld rows The overlap audit refreshed with its clean twins (each summary recomputed without the flagged items) and two more renderings: Skopos against Ekbasis-27B on the sets that lose items, and accuracy on flagged items against the rest. runs/neutral_items.jsonl follows the dataset's rebuilt withheld list (11 rows). The document now builds in final mode with nothing pending. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ng them Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… wording rules, the dataset's 10 withheld rows - overlap_audit/: the final overlap.json (with its "recomputed" conclusions) and recomputed.json; the clean twins. - results_skopos/scripts: latency_suite.py (A5), equiv_r4_save.py (A6) and their run lines (run_addendum_a5a6.sh); runs/latency/mac_items.json, the 200 fixed items of A5 and A4. - runs/neutral_items.jsonl: exactly the dataset's 445 rows (10 withheld), ids and labels only; a rebuild is checked with the dataset's row_id (a prompt hash would have tripped the same privacy rule on one more row). - Wording: git3/guard "held-out" command types are held out of the git sandbox's training rows (Skopos' factory rows contain git rebase and git restore --source); the calibration test is not called held-out; R1 -> R2 -> R4 were selected on fac_val, git_long and git_long_val (in-distribution), the independent evidence being ftest_fresh and the neutral turns. verify_summaries.py: 18 of 18. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…port - prereg_skopos/PREREG_CERTIFIED_CARRYOVER.md (unchanged) with its two seals and its sealed MANIFEST.sha256. - results_skopos/certified_carryover/: the sealed code and data (the large JSONL files gzipped, decompressing to the manifest's bytes; confirm_code/ is already public in results/client_0.1.4 and 0.1.5) and the INT4 run's per-scenario results; certified_carryover_skopos_int4.json. The bf16 run (secondary) is staged when it has run. - RELEASE_EVAL_SKOPOS.md: a "Certified mode with Skopos" section (C2, C2+ and C1 hold on Skopos INT4, with Ekbasis-27B and its MLX build on the same scenarios as references). - results_skopos/overlap_audit/REPORT_D8.md, the audit's report. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
certified_carryover_skopos_bf16.json and its per-scenario files staged; RELEASE_EVAL_SKOPOS.md reports the bf16 build's line (C2, C2+ and C1 hold) and the verified share both raw and weighted to confirm-3's mix. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…and family-rate stream The section's MLX row was mislabeled: the analysis' "mlx_t2_common_scenarios.model_a02" block is Skopos on T2's scenarios, not the MLX build. scripts/certified_reference_rows.py (written for publication; it imports analyze_carryover.py's functions unchanged) writes certified_carryover_reference_rows.json: Skopos INT4 and bf16 on all 1,400 scenarios and on T2's 1,081 (family rate streamed over their own rows), Ekbasis-27B bf16 on both sets (confirm-3's whole fresh stream), and the MLX build on T2's scenarios. The two rows on T2's scenarios for Ekbasis-27B equal what docs/VERIFY.md publishes (MLX 1 of 666; bf16 5 of 686). RELEASE_EVAL_SKOPOS.md shows each row with its definition; verify_summaries.py checks the Skopos lines against the run summaries (19 of 19). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…eside every reference row Each row's scenario set (all 1,400 or T2's 1,081) and family-rate stream (warm start from WS-P's development history, then online over its own rows or over confirm-3's whole fresh stream); the published references with their definitions, read from their files: confirm-3's 36 errors among 9,259 accepted (results/client_0.1.5) and T2's MLX 1 of 666 (0.209% weighted, bound 0.71%) and Ekbasis-27B bf16 5 of 686 (0.604%) on T2's scenarios (certified_carryover/published_t2_summary.json, WS-MAC T2's file). The analysis code recomputes both T2 rows from T2's answers exactly; the document states it from a comparison of the two files. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…skopos-data, first_skopos_selection) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The published recipe installed packages inside a container started with --network none and did not provide the Ekbasis client 0.1.1 that gitfam.py imports. The recipe now builds the image with the network and runs without it, and lists what the families need: root inside the container (setpriv to nobody), /dev/shm space (fx_run.py's 8 GB guard), the client at commit b6682c2, the distribution's python3, the PostgreSQL 16 cluster fx_pg.py connects to, and the two scripts that need the network. Notes what a rerun does not reproduce (commit hashes in gitbox*.py, option order in fx_side.py) and that fx_side.py needs fx_apps.py for mm_side_effects too. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ide them The tables of the first Skopos comparison, confident errors, calibration and images printed all-items values where the model cards print the values without the items the overlap audit flags (decision D8), so one quantity appeared with two values. Each table now prints the overlap-free value (results_skopos/overlap_audit/clean/*_clean.json) as the primary one, with the all-items value in a column "All items, before the D8 exclusion", and a note under the table. Rows with no flagged item say so. The confirmatory question and the registered prediction of the confident-errors test are given both ways. Also reserves a "Pre-launch evaluation" section, pending until results_skopos/prelaunch/ has results (the build then refuses to finish until the section reports them). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…RENCES.md The client-docs patch for this release, on the same branch as the model's evaluation and code: - README: the "New" note, the quick start serving Ekbasis-Skopos-27B (the previous version is served the same way), and the builds table with where each build runs and its quantization gate. apply_skopos_docs.py now writes these blocks with the patch's wording and every number read from results_skopos/ (the guard counts, the fresh-item difference, confident errors in never-trained families, the certified-mode check, sizes, gate agreement); "where it runs" is read from Ekbasis-27B's builds table on the same page. The held-out command types are "held out of the git sandbox's training rows", as in the evaluation report. The CHANGELOG entry uses the same sentences. - docs/VERIFY.md: the certified mode's carry-over check on Skopos INT4 and bf16 (numbers checked against results_skopos/certified_carryover_skopos_*.json). - docs/REFERENCES.md: the external datasets used in training (ShIO-bash-26.1, SWE-rebench V2 CodeWorldModeling) and for evaluation only (AgentWorldBench). The release date is a placeholder until RELEASE_DATE is set when apply_skopos_docs.py runs; tools/release_github.sh refuses to publish while it remains. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The addendum gained A7 (confident errors with every option's probability: the calibrated field in never-trained worlds, and INT4 against Ekbasis-27B's INT4), sealed at 2026-10-16T02:39:09Z before any A7 request, then its header time fixed (02:39:14Z). The copy here is byte-identical to that seal; PREREG_sha256.txt lists the new hash with the earlier seals. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…sealed Published unmodified with its seal (2026-10-15T23:36:26Z; Part A sealed before any of its requests), as the other frozen pre-registrations are; its hash is in PREREG_sha256.txt. RELEASE_EVAL_SKOPOS.md's pre-launch section will report its results. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…CHANGELOG and VERIFY - The failed criterion: the pre-registered release read failed ftest_family; the confirmation was registered after that result (before any fresh item existed) and read by the trainer's readout. Said so in the report, the README and the CHANGELOG. - The guard against Ekbasis-27B, paired (guard_paired.json, guard_paired.py as run): only the drop in false alarms on the held-out command types is beyond chance; Skopos flags as many work-losing commands; the held-out command types are in Skopos' factory rows. - Confident errors: all 15,008 items are the registered primary, the 9,627 without the flagged items a sensitivity analysis (the family-median condition then rests on 2 trained families); ECE per group, registered in A2 and missing until now, added (ce_r4_ece.json, ce_ece_by_group.py as run): worse in never-trained families. - git v3 per question type against Ekbasis-27B with paired intervals (git3_by_type_paired.py, written for publication; equal to the pre-launch evaluation's P2 table): no interval below zero, two reach zero. - The first Skopos' λ = 0.5 and why (v49f failed the old-worlds rule); the never-trained families' use in selection; "retrains approximately"; T3c not fresh; the audit's scope; AgentWorld with thinking off and the card's wording; the conditions of the builds' fresh-item comparison and of the INT4 calibration comparison (not pre-registered, different serving stacks); the certified mode's paired reference and node sizes (also in docs/VERIFY.md). - Deviations 10-14: header times later than their seals, a self-attested seal log, the release read sealed after the trainer's readouts, ECE added after the review, the INT4 calibration comparison not pre-registered. - CHANGELOG: the hosted API's switch date (placeholder) under the 14-day model-change policy. - verify_summaries.py recomputes the three new summaries (22 of 22). - The overlap audit as last run, with the API scorecard's items (none flagged). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…e training README As the review asked (#12): the published code and data retrain it approximately; training/skopos/README.md lists what will differ in a rerun. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…EADME says what it found - results_skopos/overlap_audit/: the audit's final outputs (overlap.json sha256 7dfb1657…, recomputed.json) with the six scorecard suites as scorecard.py fetches them at 941968e, the intent items and the chain prompts (none flagged), and build_scorecard_items.py, which rebuilt those items for the audit. certified_carryover/data/overlap_excluded.json is the exclusion step rerun on that output: still 0 of 2,781 questions flagged, only the audit's hash changed. - scorecard/README.md: none of the suites' items is in the training data of Ekbasis-27B or Ekbasis-Skopos-27B by the D8 audit; for Skopos, the held-out command types are held out of the git sandbox's rows only. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
test_hook_server_down_and_slow_search gave the whole hook 1 s (EKBASIS_HOOK_DEADLINE) and expected the original
check, which runs git, to finish in it. Under CPU load it did not: of 7 full runs, the one beside 6 busy processes
failed ("the check did not finish within 0.795 s"; 5 plain runs and one with 4 xdist workers passed), as had an
earlier slow run; the hook rightly asked as "could not foresee", failing the assertion. With the original check
slowed by 1 s the old values fail every time and the new ones pass: the deadline is now 5 s, and every search request
sleeps 30 s, so the search still runs out of time. The client is unchanged.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…he bf16 row, dates in every document - RELEASE_EVAL_SKOPOS.md: each stage's checkpoint rule was the best step on fval_git3 (which includes Track and Tally items); in both stages that was the last step; Ekbasis-27B's last two stages named fval_git3 too, each with one checkpoint (training/run_lineage.sh). The neutral turns: no Ekbasis stage trained on them; the Qwen base's pretraining is not covered. The image items: new items from trained world families (only the modality is untrained); the published drawings were regenerated. The builds table's bf16 row: trainer vs trainer. - apply_skopos_docs.py: with RELEASE_DATE and SWITCH_DATE set, both placeholders are replaced in every document that carries them (README, CHANGELOG, MODEL_CARD, docs/, scorecard/README.md), never in pre-registrations or results. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…tery's files write_release_eval_skopos.py reads results_skopos/prelaunch/compare/P<n>.json (one per item of PRELAUNCH_EVAL.md Part A, as the battery wrote them) and prelaunch/DEVIATIONS_RUN.md: a summary table (status, release blockers, items flagged worse by 2 or more), then each item's measures with its reference, deviation, run conditions and the rule's outcome, and the context files. A draft shows an item without a file as running or not run (and a partial file as partial); --final refuses while any item's file is missing. The items done so far are staged; the committed RELEASE_EVAL_SKOPOS.md stays the last final build until every item has landed. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…iles The section reads results_skopos/prelaunch/references.tsv (every reference file the comparisons read, with its sha256) and names the items that compare against Ekbasis-27B reference files that are not published, as in Ekbasis-27B's release; P10's per-scenario truth and predictions are not published either (they name files and commands of private working copies). --final requires references.tsv. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… build, code and outputs so far - results_skopos/prelaunch/RELEASE_DECISION.md: the owner's decision, unmodified: release on 2026-10-16 with the P8 blocker declared. The report's pre-launch section states it (the pre-registered rule fired; the exact test does not reject, p = 0.125; Ekbasis-27B re-run on the same machine reproduced its published answers, 240/240); README and CHANGELOG carry one sentence and a link to the record. - write_release_eval_skopos.py: the battery's compare/PENDING.json says which file stands for what. A release build (--final --release) needs every file that must be final before the release (the items that can block under the sealed rule, P1, P2, P4, P8, P9, P12, and the count-only ones) and lists, from PENDING.json, what is appended after the release; a full --final build needs those too. Items not run as published are stated. - The battery so far: compare files (P2, P8 updated, P8_same_machine, PENDING.json), its code as it ran (prelaunch/code/, including common/serve.sh as run until 2026-10-16 next to the fixed one; the Mac's home folder replaced in four files, recorded in provenance.json), P8's same-machine control (out/P8/ekbasis_bf16_early), and references.tsv (every Ekbasis-27B reference with its sha256; 23 not published, as in Ekbasis-27B's release). P10's per-scenario truth and predictions, the private base copies and the plan's notes are not staged. RELEASE_EVAL_SKOPOS.md stays the last full build until P4, P9, P12's intent replay and P10 on INT4 land. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…pended after the release As ws-eval confirmed, released compare files stay unchanged (P5_partial.json, P6_partial.json) and the pairings land as new files (P5.json, P6.json): a partial file listed in PENDING.json is rendered even once its item's full file exists. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… every item that can block Built with --final --release: every compare file that must be final before the release is here (P1, P2, P4, P8, P9, P12's intent replay, which can block under the sealed rule; P3, P5 and P6 as released, P7, P10 on bf16 and INT4). No new blocker: P8's paraphrased wording remains the only one, declared (RELEASE_DECISION.md). What is appended after the release is listed from the battery's PENDING.json (P5 speed pairing, P6 item pairing, the P1 and P8 identity re-runs, P12's same-machine control and preflight substitute, P11, P9's re-run if it happens); P12's preflight on 141 plans was not run as published. P7, P10 and P12 compare against Ekbasis-27B references that are not published, as in Ekbasis-27B's release. Staged with them: the battery's outputs from the synced RTX tree (prelaunch_out_partial; not P10's, not the copies of the public client package), P4, P9, P12_intent (+ context) and P10_int4 compare files, PENDING.json as updated. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…s re-runs left for after the release The battery's outputs are now staged from prelaunch_out/ (the fresh full copy); the files are identical to those staged before from the synced copy. P8/ekbasis_bf16, phase B's official identity re-run of Ekbasis-27B, which is still running and appended after the release, is no longer staged; P8's same-machine control used for the decision stays (out/P8/ekbasis_bf16_early). RELEASE_EVAL_SKOPOS.md (release build) is unchanged. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <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.
Ekbasis-Skopos-27B is the next version of Ekbasis-27B: Ekbasis-27B trained further on executed shell, git, SQLite,
PostgreSQL and Python scenarios, with the same prompt, readout, API and client. This pull request adds its release
evaluation, the code and generators that produced its training data, its pre-registrations, and the docs that introduce
it. The client package (
ekbasis/) is not changed. The weights are on Hugging Face(Ekbasis-Skopos-27B, FP8 and INT4 builds), the training and
evaluation rows in ekbasis-skopos-data.
What is added
RELEASE_EVAL_SKOPOS.md: the release evaluation, written byscripts/write_release_eval_skopos.pyfromresults_skopos/(no number is typed in it).results_skopos/: every summary, every per-item prediction, the scripts that computed them as they ran, andscripts/verify_summaries.py, which recomputes the summaries from the per-item files; the overlap audit(
overlap_audit/), the candidates that were not released (candidates/), and the certified-mode carry-over check(
certified_carryover/).prereg_skopos/: the pre-registrations, with their sha256 inprereg_skopos/PREREG_sha256.txt.results_skopos/prelaunch/: the pre-launch evaluation (prereg_skopos/PRELAUNCH_EVAL.md): one comparison per item,the battery's code as it ran and its outputs, every reference file with its sha256 (
references.tsv), how it ran(
DEVIATIONS_RUN.md), and the owner's release decision (RELEASE_DECISION.md).training/skopos/: the two training stages, the interpolation, merges and quantization as run, the lineage script,and
stage_files_skopos.py, which rebuilds every stage's training file from ekbasis-skopos-data, with the exceptionsits README lists; a rerun retrains the models approximately (the README's "What will differ in a rerun").
generators/: the 78 programs that computed the answers of every training row and evaluation set of the lineage, asthey ran (
generators/provenance.json);MANIFEST.inkeeps them out of the source distribution.README.md,CHANGELOG.md,MODEL_CARD.md,docs/VERIFY.md,docs/REFERENCES.md,scorecard/README.md: the newmodel introduced, with numbers written from
results_skopos/byscripts/apply_skopos_docs.py; Ekbasis-27B'ssections are unchanged.
tests/test_safer.py: a timing margin in one test.test_hook_server_down_and_slow_searchgave the hook 1 s andfailed under CPU load when the original check (which runs git) needed longer, the hook then asking as "could not
foresee", as designed; it now gives 5 s, with every slowed search request outlasting it. No other test changed.
Results (against Ekbasis-27B on the same items)
hold. The one that fails is
ftest_family's 629 answers the actions change, −1.59 points (the limit is −1). Aconfirmation registered after that result (before any fresh item existed), by trainer readout
(CONFIRM_FTEST.md), did not confirm the loss: on 3,014 fresh answers of the same
families, +1.63 points [+0.70, +2.52].
types 26 of 799 against 49 (p = 5.6 × 10⁻⁶); work-losing commands flagged as often (776 against 767 of 799, p = 0.15;
known types 837 against 828, p = 0.12); false alarms on the known types 27 against 37 of 863, within chance (p =
0.076). "Held-out" means held out of the git sandbox's training rows: Skopos' factory rows contain
git rebase <branch>andgit restore --source=<ref> <file>, so for Skopos these command types are not unseen.13, "will it fail?" right 17 of 17 (Ekbasis-27B 3 of 3, 1 of 13, 16 of 17).
100 answers [+0.28, +1.23], and its ECE there is higher, +0.009 [+0.003, +0.015] (computed after the independent
review; registered in the addendum but missing from the first report).
audit flags). R1 → R2 → R4 were selected on
fac_val,git_longandgit_long_val, drawn from the same generatorsas their training rows; the more independent evidence is the fresh never-trained items above (families never in
training rows, though used on validation data to choose the first Skopos' interpolation) and the real agent turns of
AgentWorldBench (AUROC of P(fail) 0.843 against 0.833 on 455 turns).
the state as an image (without the 5 items the overlap audit flags; preserved on all items too).
checks and is not part of this release until it passes its test on Apple hardware.
ekbasis.verify, thresholds unchanged), pre-registered carry-over check: INT4 7 errors among 927accepted answers (95% upper bound 1.41%), bf16 6 among 935 (1.26%); Ekbasis-27B on the same scenarios 5 among 886.
stages, v49f and R4 (not Eikos-27B's own data or the Qwen base's pretraining), and every published number recomputed
without the flagged items; no conclusion changes (
results_skopos/overlap_audit/). Each table of the report on a setwith flagged items says which numbers are on all items and which without them; for the confident-errors test, all
items are the registered primary.
A pre-launch release blocker is declared (release decision): on
paraphrased short checks Skopos is right on 113 of 120 against Ekbasis-27B's 117 (−3.3 points, paired 95% CI [−6.7,
−0.8]), so the pre-registered rule of the pre-launch evaluation fired; the exact test on the 4 discordant items does not
reject (p = 0.125), and Ekbasis-27B re-run on the same machine reproduced its published answers (240/240).
Every result is reported, favourable or not; the deviations from the pre-registrations are listed at the end of
RELEASE_EVAL_SKOPOS.md.How to check
generators/README.mdgives a container recipe for running the generators, which execute the commands they generate.🤖 Generated with Claude Code