Skip to content

Ekbasis-Skopos-27B: release evaluation, training code, generators and docs - #62

Merged
caiovicentino merged 37 commits into
mainfrom
skopos-release
Oct 16, 2026
Merged

caiovicentino merged 37 commits into
mainfrom
skopos-release

Conversation

@caiovicentino

Copy link
Copy Markdown
Member

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 by scripts/write_release_eval_skopos.py from
    results_skopos/ (no number is typed in it).
  • results_skopos/: every summary, every per-item prediction, the scripts that computed them as they ran, and
    scripts/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 in prereg_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 exceptions
    its 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, as
    they ran (generators/provenance.json); MANIFEST.in keeps them out of the source distribution.
  • README.md, CHANGELOG.md, MODEL_CARD.md, docs/VERIFY.md, docs/REFERENCES.md, scorecard/README.md: the new
    model introduced, with numbers written from results_skopos/ by scripts/apply_skopos_docs.py; Ekbasis-27B's
    sections are unchanged.
  • tests/test_safer.py: a timing margin in one test. test_hook_server_down_and_slow_search gave the hook 1 s and
    failed 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)

  • Release read (PREREG_R4_RELEASE_READ.md), bf16, served: 8 of 9 criteria
    hold. The one that fails is ftest_family's 629 answers the actions change, −1.59 points (the limit is −1). A
    confirmation 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].
  • The git guard, larger set, served, paired with Ekbasis-27B (exact McNemar): false alarms on the held-out command
    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> and git restore --source=<ref> <file>, so for Skopos these command types are not unseen.
  • Real-repository scenarios of Ekbasis-27B's release (T3c; not fresh): work-losing flagged 3 of 3, false alarms 1 of
    13, "will it fail?" right 17 of 17 (Ekbasis-27B 3 of 3, 1 of 13, 16 of 17).
  • Confident errors: in world families it never saw, more of its wrong answers come with confidence ≥ 0.9, +0.75 per
    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).
  • In-distribution sets: executed factory scenarios 93.9% against 88.1% (3,878 items, without the 105 the overlap
    audit flags). R1 → R2 → R4 were selected on fac_val, git_long and git_long_val, drawn from the same generators
    as 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).
  • Images (text-only training): preserved by the registered reading, +1.01 points [−2.03, +4.05] on 395 items with
    the state as an image (without the 5 items the overlap audit flags; preserved on all items too).
  • Builds: FP8 (30.4 GB) and INT4 (18.6 GB) pass Ekbasis-27B's quantization gate. The MLX build misses 3 of its
    checks and is not part of this release until it passes its test on Apple hardware.
  • Certified mode (ekbasis.verify, thresholds unchanged), pre-registered carry-over check: INT4 7 errors among 927
    accepted answers (95% upper bound 1.41%), bf16 6 among 935 (1.26%); Ekbasis-27B on the same scenarios 5 among 886.
  • Overlap with the training data: every evaluation set was audited against every training row of the Ekbasis-27B
    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 set
    with 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

python3 scripts/write_release_eval_skopos.py --final   # rebuilds RELEASE_EVAL_SKOPOS.md from results_skopos/; no diff
python3 results_skopos/scripts/verify_summaries.py <ekbasis-skopos-data raw/> --awb <AgentWorldBench suite rebuilt>
python3 training/skopos/stage_files_skopos.py <out dir>   # every stage's training file from ekbasis-skopos-data

generators/README.md gives a container recipe for running the generators, which execute the commands they generate.

🤖 Generated with Claude Code

Caio Vicentino and others added 30 commits October 15, 2026 20:38
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>
Caio Vicentino and others added 7 commits October 16, 2026 08:17
…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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant