Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
194 commits
Select commit Hold shift + click to select a range
eb1fd6c
Add Trace the Ace mastery-event experiment
heathsanchez Aug 15, 2026
180a313
Add Trace the Ace Actions workflow
heathsanchez Aug 15, 2026
fef174a
Add Trace the Ace supervision audit
heathsanchez Aug 15, 2026
7ddb944
Run Trace the Ace supervision audit in Actions
heathsanchez Aug 15, 2026
1331a1a
Add V73 same-session contrastive mastery model
heathsanchez Aug 15, 2026
527eb81
Run V73 contrastive mastery experiment in Actions
heathsanchez Aug 15, 2026
e1ee587
Add V74 hierarchical semantic objective prior
heathsanchez Aug 15, 2026
e994980
Run V74 semantic objective prior in Actions
heathsanchez Aug 15, 2026
7ad0a0d
Prioritize unseen log loss and transcript canonicalization
heathsanchez Aug 15, 2026
6ad09d5
Add V75 canonical student-state trajectories
heathsanchez Aug 15, 2026
c2f6640
Run V75 canonical trajectory experiment in Actions
heathsanchez Aug 15, 2026
c63e5d3
Add V76 unseen-logloss validation protocol
heathsanchez Aug 15, 2026
27890a9
Use public Google Drive dataset in Trace the Ace Actions
heathsanchez Aug 15, 2026
799957b
Fix V74 pandas 3 read-only array regression [run-full]
heathsanchez Aug 15, 2026
91956f2
Enable one-shot full Trace the Ace run [run-full]
heathsanchez Aug 15, 2026
dd72068
Fix V75 short mathematical answer evidence [run-full]
heathsanchez Aug 15, 2026
97d2446
Fix gdown 6 dataset fetch [run-full]
heathsanchez Aug 15, 2026
bee759b
Discover Trace the Ace inputs by schema [run-full]
heathsanchez Aug 15, 2026
08296d4
Record full-data V74 OOF result
heathsanchez Aug 15, 2026
933ff19
Promote measured V74 prior into unseen-logloss plan
heathsanchez Aug 15, 2026
da0e185
Retune V74 for robust unseen log loss
heathsanchez Aug 15, 2026
13b360f
Record V74 robust hyperparameter stress grid
heathsanchez Aug 15, 2026
b964583
Fix V71 short mathematical answer evidence
heathsanchez Aug 15, 2026
aedf0a7
Add V77 leakage-safe incremental mastery stack
heathsanchez Aug 15, 2026
b32344c
Wire V76/V77 and private metadata transport into Actions
heathsanchez Aug 15, 2026
014d206
Trace Ace: use public Drive metadata bundle [run-full]
heathsanchez Aug 15, 2026
690fe54
trace ace: freeze official runtime promotion protocol
heathsanchez Aug 15, 2026
e82e87c
trace ace: add runtime promotion validation harness
heathsanchez Aug 15, 2026
e88172e
trace ace: gate runtime validation harness in CI
heathsanchez Aug 15, 2026
2449b7d
trace ace: add V75 runtime asset exporter
heathsanchez Aug 15, 2026
5517c8e
trace ace: add official-runtime V75 inference entrypoint
heathsanchez Aug 15, 2026
3735014
trace ace: launch V75 official runtime build [runtime-build]
heathsanchez Aug 15, 2026
d0bdbc3
trace ace: run V75 parity and independence gates [parity-test]
heathsanchez Aug 15, 2026
a68b708
trace ace: add V78 semantic episode and ensemble experiment
heathsanchez Aug 15, 2026
ac5d164
trace ace: launch V78 seismic semantic experiment [run-seismic]
heathsanchez Aug 15, 2026
252c6d5
trace ace: trigger V78 seismic run [run-seismic]
heathsanchez Aug 15, 2026
3ba707c
trace ace: add V79 objective retrieval and learning-gain experiment
heathsanchez Aug 15, 2026
499cafc
trace ace: launch V79 retrieval-gain experiment [run-v79]
heathsanchez Aug 15, 2026
5472d91
trace ace: launch V80 BGE-large retrieval teacher [run-v80]
heathsanchez Aug 15, 2026
c16f20d
trace ace: add V81 target-segment phase automaton
heathsanchez Aug 15, 2026
3376c45
trace ace: launch V81 target-segment phase experiment [run-v81]
heathsanchez Aug 15, 2026
faf9261
trace ace: add V82 supervised ModernBERT multi-resolution experiment
heathsanchez Aug 15, 2026
45dd77f
trace ace: launch V82 supervised ModernBERT objective-cold probe [run…
heathsanchez Aug 15, 2026
37d8ef1
trace ace: add V83 supervised TalkMove-BERT probe
heathsanchez Aug 15, 2026
81b2122
trace ace: launch V83 TalkMove-BERT supervised probe [run-v83]
heathsanchez Aug 15, 2026
2f8283e
trace ace: add V84 student-evidence ablation
heathsanchez Aug 15, 2026
8bf09b1
trace ace: launch V84 student-evidence ablation [run-v84]
heathsanchez Aug 15, 2026
c92ac94
trace ace: add RGRS experiment ledger and precommit evidence-state se…
heathsanchez Aug 15, 2026
7039107
trace ace: add V85 EvidenceEvent knowledge-state separator
heathsanchez Aug 15, 2026
14dc78d
trace ace: launch V85 RGRS EvidenceEvent separator [run-v85]
heathsanchez Aug 15, 2026
4a6e0ef
trace ace: fix V83 TalkMove head mismatch [run-v83]
heathsanchez Aug 15, 2026
c1592ab
trace ace: fix V85 gdown invocation [run-v85]
heathsanchez Aug 15, 2026
8b1f45c
trace ace: add V86 knowledge-state dynamics separator
heathsanchez Aug 15, 2026
fa22366
trace ace: launch V86 sequential knowledge-state separator [run-v86]
heathsanchez Aug 15, 2026
af584de
trace ace: add V87 RGRS cross-fitted composition test
heathsanchez Aug 15, 2026
b61302d
trace ace: launch V87 RGRS composition test [run-v87]
heathsanchez Aug 15, 2026
5e03c72
trace ace: add V88 cross-fitted EvidenceEvent composition
heathsanchez Aug 15, 2026
5a713fb
trace ace: launch V88 cross-fitted EvidenceEvent composition [run-v88]
heathsanchez Aug 15, 2026
e4d6ece
trace ace: retrigger V88 registration [run-v88]
heathsanchez Aug 15, 2026
38a8623
trace ace: add V89 relative ability composition separator [run-v89]
heathsanchez Aug 15, 2026
4be85e3
trace ace: launch V89 relative ability test [run-v89]
heathsanchez Aug 15, 2026
f7b1ce7
trace ace: add V90 regime-gated composition separator [run-v90]
heathsanchez Aug 15, 2026
ea518b4
trace ace: launch V90 regime-gated composition test [run-v90]
heathsanchez Aug 15, 2026
0d8084a
trace ace: add V91 disagreement-frontier applicability separator
heathsanchez Aug 15, 2026
4701368
trace ace: launch V91 disagreement-frontier separator [run-v91]
heathsanchez Aug 15, 2026
bfc7639
trace ace: add V92 latent-state decomposition
heathsanchez Aug 15, 2026
741f8d5
trace ace: launch V92 latent-state decomposition
heathsanchez Aug 15, 2026
e2152c6
trace ace: add V93 shift-robust validation harness
heathsanchez Aug 15, 2026
7893d34
trace ace: launch V93 shift-robust validation
heathsanchez Aug 15, 2026
7b4b389
trace ace: add V94 related-control separator
heathsanchez Aug 16, 2026
f05a11b
trace ace: launch V94 related-control separator
heathsanchez Aug 16, 2026
a122ab4
trace ace: add V95 objective-support activation separator
heathsanchez Aug 16, 2026
90441f4
trace ace: add V96 effective-support separator
heathsanchez Aug 16, 2026
565fbac
trace ace: add V97 support gate
heathsanchez Aug 16, 2026
cc0bae3
trace ace: add V97 runtime asset builder
heathsanchez Aug 16, 2026
7049288
trace ace: add V97 official runtime
heathsanchez Aug 16, 2026
5ce5d9b
trace ace: launch V97 submission sprint
heathsanchez Aug 16, 2026
b90d2a3
trace ace: add V98 finishing sweep
heathsanchez Aug 16, 2026
38236b3
trace ace: launch V98 finishing sweep
heathsanchez Aug 16, 2026
dfae014
trace ace: add V99 nested expert gate
heathsanchez Aug 16, 2026
f249def
trace ace: launch V99 nested expert gate
heathsanchez Aug 16, 2026
9b4edbe
trace ace: add V100 nested calibrated stacker
heathsanchez Aug 16, 2026
2be2882
trace ace: launch V100 nested calibrated stacker
heathsanchez Aug 16, 2026
df2cc3e
trace ace: add V101 objective-level applicability router
heathsanchez Aug 16, 2026
55e8955
trace ace: launch V101 objective-level router
heathsanchez Aug 16, 2026
b9eb653
trace ace: add V102 applicability resolution audit
heathsanchez Aug 16, 2026
08cb24d
trace ace: launch V102 applicability resolution audit
heathsanchez Aug 16, 2026
1d95e70
trace ace: fix V102 deterministic family grouping
heathsanchez Aug 16, 2026
2bd1375
trace ace: add V103 session-level applicability router
heathsanchez Aug 16, 2026
1f00569
trace ace: launch V103 session-level router
heathsanchez Aug 16, 2026
3afa96c
trace ace: add V104 single session separator
heathsanchez Aug 16, 2026
9c033cf
trace ace: launch V104 single session separator
heathsanchez Aug 16, 2026
1e1a3ab
trace ace: add V105 prior-state composition reset
heathsanchez Aug 17, 2026
1324d2e
trace ace: launch V105 prior-state composition
heathsanchez Aug 17, 2026
0e85a19
trace ace: add V106 fixed prior-state law confirmation
heathsanchez Aug 17, 2026
da668e0
trace ace: launch V106 fixed prior-state confirmation
heathsanchez Aug 17, 2026
65387e6
trace ace: add V107 support-conditioned prior
heathsanchez Aug 17, 2026
63d993c
trace ace: launch V107 support-conditioned prior
heathsanchez Aug 17, 2026
c0977a1
trace ace: skip empty V107 hash folds
heathsanchez Aug 17, 2026
c9b73d2
trace ace: launch V108/V109 structural gain tests
heathsanchez Aug 17, 2026
b6d164f
trace ace: launch V110 residual collider state discovery
heathsanchez Aug 18, 2026
3f7f75d
trace ace: trigger V110 collider state discovery
heathsanchez Aug 18, 2026
f1a3544
trace ace: start V110 after workflow registration
heathsanchez Aug 18, 2026
6ffc059
Register V110 workflow for dispatch
heathsanchez Aug 18, 2026
1d036cf
Trigger V110 via low-level ref update
heathsanchez Aug 18, 2026
706c524
Trigger V110 via low-level tree/ref
heathsanchez Aug 18, 2026
eceed79
Add PR-visible trigger for V110 Actions verification
heathsanchez Aug 18, 2026
8b99cb9
trace-ace: add fast residual representation screen
heathsanchez Aug 18, 2026
456f2c4
trace-ace: run V111 fast residual screen
heathsanchez Aug 18, 2026
2634a33
Make V111 independently verifiable on runner PRs
heathsanchez Aug 18, 2026
fbc21cc
Trigger isolated V111 fast screen
heathsanchez Aug 18, 2026
717721d
Synchronize isolated V111 runner
heathsanchez Aug 18, 2026
438d251
Add V112 fast raw-observable collision screen
heathsanchez Aug 18, 2026
467f675
Run V112 fast raw-observable screen
heathsanchez Aug 18, 2026
2d1125f
Repurpose fast runner for V112 raw-observable screen
heathsanchez Aug 18, 2026
1e057ab
Route isolated fast runner to V112 screen
heathsanchez Aug 18, 2026
dd24094
Fix V112 circular import with local deterministic hash
heathsanchez Aug 18, 2026
32fa840
Add frozen V113 applicability and regime fast pass
heathsanchez Aug 18, 2026
5f5a629
Add V113 fast applicability workflow
heathsanchez Aug 18, 2026
757bbd6
Add V114 representation applicability intervention
heathsanchez Aug 18, 2026
9365ca0
Run V114 representation applicability intervention
heathsanchez Aug 18, 2026
2470c4f
Add V115 collision-resolution audit
heathsanchez Aug 18, 2026
fdf646f
Run V115 collision-resolution audit
heathsanchez Aug 18, 2026
bf12182
Add V116 row-alignment alias audit
heathsanchez Aug 18, 2026
e29796f
Run V116 row-alignment alias audit
heathsanchez Aug 18, 2026
6bcf814
Fix V116 sparse row hashing
heathsanchez Aug 18, 2026
2fae4e5
Add V117 oracle information audit
heathsanchez Aug 18, 2026
6d7a571
Run V117 oracle information audit
heathsanchez Aug 18, 2026
c6b4804
Add V115 Trace the Ace reality audit
heathsanchez Aug 18, 2026
cef9042
Fix V115 preflight import
heathsanchez Aug 18, 2026
fdc990f
Add V115 reality audit workflow
heathsanchez Aug 18, 2026
f403df3
Add fast pure V74 reality audit
heathsanchez Aug 18, 2026
2afdb57
Add fast V115b pure V74 workflow
heathsanchez Aug 18, 2026
74fc329
Trigger V115b pure V74 audit
heathsanchez Aug 18, 2026
baaa58a
No-op trigger V115b
heathsanchez Aug 18, 2026
a6cf6c4
Add frozen V74 runtime prediction core
heathsanchez Aug 18, 2026
89eab88
Add pure V74 official runtime entrypoint
heathsanchez Aug 18, 2026
5ad54ac
Add frozen V74 runtime asset builder and parity gate
heathsanchez Aug 18, 2026
6567b54
Add V74 runtime parity and packaging workflow
heathsanchez Aug 18, 2026
1649a02
Add V118 hidden test geometry probe
heathsanchez Aug 18, 2026
e1a5749
Add V118 hidden test geometry workflow
heathsanchez Aug 18, 2026
9a5cdd3
Add V119 public-anchor geometry search
heathsanchez Aug 18, 2026
3290721
Add V119 public-anchor geometry workflow
heathsanchez Aug 18, 2026
01065b7
Trigger V119 public-anchor geometry
heathsanchez Aug 18, 2026
cf0c7cc
Fix V119 transcript bundle to verified frozen source
heathsanchez Aug 18, 2026
f2ede08
Use fresh frozen transcript copy for V119 transport
heathsanchez Aug 18, 2026
5801e5d
Add V120 objective identity audit
heathsanchez Aug 18, 2026
aba72df
Run V120 objective identity audit
heathsanchez Aug 18, 2026
9c6c174
Route V120 through PR runner
heathsanchez Aug 18, 2026
a7ecc67
Add V121 pretrained semantic residual test
heathsanchez Aug 18, 2026
8ee4507
Run V121 pretrained semantic residual test
heathsanchez Aug 18, 2026
539755a
Add V122 metadata-only ID morphology regime audit
heathsanchez Aug 18, 2026
a9a5b7a
Add V122 ID morphology audit workflow
heathsanchez Aug 18, 2026
a5c57ff
Enable PR trigger for V122 audit
heathsanchez Aug 18, 2026
9946718
Carry V122 metadata audit in proven V120 workflow
heathsanchez Aug 18, 2026
128c70b
Record V122 ID morphology negative law
heathsanchez Aug 18, 2026
c389342
infra: run frozen V121 from seeded transcript cache
heathsanchez Aug 20, 2026
56ca191
infra: microbatch frozen V121 embeddings to fit runner memory
heathsanchez Aug 20, 2026
b7c181a
infra: isolate V121 memory-safe rerun
heathsanchez Aug 20, 2026
b26d58d
infra: finish frozen V121 within hosted runner
heathsanchez Aug 20, 2026
16407d4
infra: stage frozen V121 across hosted runners
heathsanchez Aug 20, 2026
1c292f8
infra: split frozen V121 across hosted runners
heathsanchez Aug 20, 2026
3263beb
experiment: freeze V125 nested calibration residual
heathsanchez Aug 20, 2026
b24f2a4
infra: shard frozen V121 embedding transport
heathsanchez Aug 20, 2026
e62133e
infra: shard frozen V121 embedding jobs
heathsanchez Aug 20, 2026
c299c3f
infra: cancel obsolete V121 transports
heathsanchez Aug 20, 2026
c4da5dd
infra: split frozen V121 into eight embedding shards
heathsanchez Aug 20, 2026
f34b01f
infra: serialize V121 embedding shards
heathsanchez Aug 20, 2026
7d6759b
infra: fit frozen V121 shards within runner lifetime
heathsanchez Aug 20, 2026
d398685
infra: isolate frozen V121 16-shard execution
heathsanchez Aug 20, 2026
4e85c48
infra: parallelize frozen V121 short shards
heathsanchez Aug 20, 2026
5b3cc70
infra: run frozen V121 from prepared artifact
heathsanchez Aug 20, 2026
997d405
infra: bootstrap local frozen V121 embedding
heathsanchez Aug 20, 2026
4f08ddc
infra: export exact frozen V121 Jina model cache
heathsanchez Aug 20, 2026
4d2da14
infra: add batch1 frozen V121 shard transport
heathsanchez Aug 20, 2026
57a25a3
infra: execute frozen V121 in 128 batch1 shards
heathsanchez Aug 20, 2026
91b232f
infra: recover frozen V121 tail shards only
heathsanchez Aug 20, 2026
cffde88
infra: run V121 recovery directly on branch push
heathsanchez Aug 20, 2026
bc0d33a
infra: evaluate complete frozen V121 shard set only
heathsanchez Aug 21, 2026
716af31
experiment: freeze V129 tutor uptake residual
heathsanchez Aug 21, 2026
afe2f0d
workflow: run frozen V129 tutor uptake residual
heathsanchez Aug 21, 2026
7201854
experiment: add V132 nested applicability gate
heathsanchez Aug 21, 2026
6cdf350
workflow: run frozen V132 nested applicability gate
heathsanchez Aug 21, 2026
79d3b21
Add V133 verified mathematical evidence residual
heathsanchez Aug 21, 2026
7101334
Add V133 verified math evidence workflow
heathsanchez Aug 21, 2026
a3bb2a3
Fix V133 infrastructure dependency
heathsanchez Aug 21, 2026
29c88cb
Add V134 verifier-feedback contradiction residual
heathsanchez Aug 21, 2026
c1792ec
Add V134 verifier-feedback contradiction workflow
heathsanchez Aug 21, 2026
7a29b33
Add V135 nested supported-objective stack
heathsanchez Aug 21, 2026
d8540d6
Add V135 nested supported stack workflow
heathsanchez Aug 21, 2026
8f32f5b
Add full-data V135 verification
heathsanchez Aug 21, 2026
0b6bea5
Add full-data V135 verification workflow
heathsanchez Aug 21, 2026
f19e3c2
experiment: freeze V145 V135 plus target phase evidence family
heathsanchez Aug 23, 2026
ae4799d
trace-ace: freeze V152 transition-law discovery
heathsanchez Aug 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
152 changes: 152 additions & 0 deletions .github/workflows/trace-ace-mastery.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
name: Trace the Ace mastery experiment

on:
workflow_dispatch:
inputs:
run_full:
description: "Run full experiment using public Drive bundles"
required: false
default: false
type: boolean
limit:
description: "Optional row limit (0 = all rows)"
required: false
default: "0"
type: string
push:
branches:
- agent/trace-ace-mastery-events
paths:
- "competitions/trace_the_ace/**"
- ".github/workflows/trace-ace-mastery.yml"

jobs:
self-test:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: pip
- name: Install experiment dependencies
run: python -m pip install --disable-pip-version-check numpy pandas scipy scikit-learn gdown
- name: Run mastery extractor self-test
run: python competitions/trace_the_ace/v71_mastery_events.py --self-test
- name: Run supervision audit self-test
run: python competitions/trace_the_ace/v72_supervision_audit.py --self-test
- name: Run contrastive mastery self-test
run: python competitions/trace_the_ace/v73_contrastive_mastery.py --self-test
- name: Run semantic objective prior self-test
run: python competitions/trace_the_ace/v74_semantic_objective_prior.py --self-test
- name: Run canonical trajectory self-test
run: python competitions/trace_the_ace/v75_canonical_trajectory.py --self-test
- name: Run unseen validation self-test
run: python competitions/trace_the_ace/v76_unseen_validation.py --self-test
- name: Run incremental mastery stack self-test
run: python competitions/trace_the_ace/v77_incremental_mastery_stack.py --self-test
- name: Run official-runtime validation harness self-test
run: python competitions/trace_the_ace/runtime_validate.py self-test

full-experiment:
if: ${{ (github.event_name == 'workflow_dispatch' && inputs.run_full) || (github.event_name == 'push' && contains(github.event.head_commit.message, '[run-full]')) }}
needs: self-test
runs-on: ubuntu-latest
timeout-minutes: 360
env:
TRACE_ACE_TRANSCRIPTS_DRIVE_FILE_ID: 1nOjremWhpZ_QKSLvZfGcNkS_C3kMMBUI
TRACE_ACE_METADATA_DRIVE_FILE_ID: 1EpqoamY0vFI2qE57R6wdqU5HwuoVk3Zz
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: pip
- name: Install experiment dependencies
run: python -m pip install --disable-pip-version-check numpy pandas scipy scikit-learn gdown
- name: Download public transcript archive
shell: bash
run: |
set -euo pipefail
mkdir -p /tmp/trace_ace/transcripts
python - <<'PY'
import os, gdown
file_id = os.environ['TRACE_ACE_TRANSCRIPTS_DRIVE_FILE_ID']
out = '/tmp/trace_ace/transcripts_download'
path = gdown.download(id=file_id, output=out, quiet=False)
if not path:
raise SystemExit('Google Drive transcript download failed')
PY
unzip -q /tmp/trace_ace/transcripts_download -d /tmp/trace_ace/transcripts
rm -f /tmp/trace_ace/transcripts_download
- name: Download public feature/label bundle
shell: bash
run: |
set -euo pipefail
mkdir -p /tmp/trace_ace/meta
python - <<'PY'
import os, gdown
file_id = os.environ['TRACE_ACE_METADATA_DRIVE_FILE_ID']
out = '/tmp/trace_ace/meta.zip'
path = gdown.download(id=file_id, output=out, quiet=False)
if not path:
raise SystemExit('Google Drive metadata download failed; confirm Anyone with the link can view')
PY
unzip -q /tmp/trace_ace/meta.zip -d /tmp/trace_ace/meta
rm -f /tmp/trace_ace/meta.zip
- name: Locate inputs by schema and run experiments
shell: bash
run: |
set -euo pipefail
python - <<'PY'
import csv, shlex
from pathlib import Path
roots = [Path('/tmp/trace_ace/meta'), Path('/tmp/trace_ace/transcripts')]
features = labels = transcript_dir = None
for root in roots:
for path in root.rglob('*.csv'):
try:
with path.open('r', encoding='utf-8-sig', errors='ignore', newline='') as f:
header = next(csv.reader(f))
except Exception:
continue
cols = set(header)
if features is None and {'response_id','session_id','learning_objective'}.issubset(cols):
features = path; print('FEATURE HEADER', header)
if labels is None and 'response_id' in cols and ('is_correct' in cols or 'correct' in cols):
labels = path; print('LABEL HEADER', header)
if transcript_dir is None and {'session_id','utterance_id','role','content','timestamp'}.issubset(cols):
transcript_dir = path.parent; print('TRANSCRIPT HEADER', header)
if features and labels and transcript_dir: break
if features and labels and transcript_dir: break
if not (features and labels and transcript_dir):
raise SystemExit('Could not identify all Trace the Ace inputs by schema')
with open('/tmp/trace_ace/paths.env','w') as f:
f.write('FEATURES=' + shlex.quote(str(features)) + '\n')
f.write('LABELS=' + shlex.quote(str(labels)) + '\n')
f.write('TRANSCRIPTS=' + shlex.quote(str(transcript_dir)) + '\n')
PY
source /tmp/trace_ace/paths.env
LIMIT="${{ inputs.limit }}"; LIMIT="${LIMIT:-0}"
EXTRA=(); if [ "$LIMIT" != "0" ]; then EXTRA+=(--limit "$LIMIT"); fi
python competitions/trace_the_ace/v71_mastery_events.py --features "$FEATURES" --labels "$LABELS" --transcripts "$TRANSCRIPTS" --out v71_mastery_results.json "${EXTRA[@]}"
python competitions/trace_the_ace/v72_supervision_audit.py --features "$FEATURES" --labels "$LABELS" --transcripts "$TRANSCRIPTS" --out v72_supervision_audit.json "${EXTRA[@]}"
python competitions/trace_the_ace/v73_contrastive_mastery.py --features "$FEATURES" --labels "$LABELS" --transcripts "$TRANSCRIPTS" --out v73_contrastive_mastery.json "${EXTRA[@]}"
python competitions/trace_the_ace/v74_semantic_objective_prior.py --features "$FEATURES" --labels "$LABELS" --out v74_semantic_objective_prior.json "${EXTRA[@]}"
python competitions/trace_the_ace/v75_canonical_trajectory.py --features "$FEATURES" --labels "$LABELS" --transcripts "$TRANSCRIPTS" --out v75_canonical_trajectory.json "${EXTRA[@]}"
python competitions/trace_the_ace/v76_unseen_validation.py --features "$FEATURES" --labels "$LABELS" --out-protocol v76_validation_protocol.csv --out-summary v76_validation_summary.json
python competitions/trace_the_ace/v77_incremental_mastery_stack.py --features "$FEATURES" --labels "$LABELS" --transcripts "$TRANSCRIPTS" --out v77_incremental_mastery_stack.json "${EXTRA[@]}"
- name: Upload aggregate results only
uses: actions/upload-artifact@v4
with:
name: trace-ace-aggregate-results
path: |
v71_mastery_results.json
v72_supervision_audit.json
v73_contrastive_mastery.json
v74_semantic_objective_prior.json
v75_canonical_trajectory.json
v76_validation_summary.json
v77_incremental_mastery_stack.json
retention-days: 14
139 changes: 139 additions & 0 deletions .github/workflows/trace-ace-runtime.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
name: Trace the Ace V75 official runtime

on:
workflow_dispatch:
push:
branches:
- agent/trace-ace-mastery-events
paths:
- "competitions/trace_the_ace/runtime_v75/**"
- "competitions/trace_the_ace/train_v75_runtime_assets.py"
- "competitions/trace_the_ace/v71_mastery_events.py"
- "competitions/trace_the_ace/v75_canonical_trajectory.py"
- "competitions/trace_the_ace/runtime_validate.py"
- ".github/workflows/trace-ace-runtime.yml"

jobs:
build-and-test:
if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.head_commit.message, '[runtime-build]') }}
runs-on: ubuntu-latest
timeout-minutes: 360
env:
TRACE_ACE_TRANSCRIPTS_DRIVE_FILE_ID: 1nOjremWhpZ_QKSLvZfGcNkS_C3kMMBUI
TRACE_ACE_METADATA_DRIVE_FILE_ID: 1EpqoamY0vFI2qE57R6wdqU5HwuoVk3Zz
GITHUB_ACTIONS_NO_TTY: "true"
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: pip
- uses: astral-sh/setup-uv@v6
- uses: extractions/setup-just@v2
- name: Install training dependencies
run: python -m pip install --disable-pip-version-check numpy pandas scipy scikit-learn gdown

- name: Download training inputs
shell: bash
run: |
set -euo pipefail
mkdir -p /tmp/trace_ace/transcripts /tmp/trace_ace/meta
python - <<'PY'
import os, gdown
pairs = [
('TRACE_ACE_TRANSCRIPTS_DRIVE_FILE_ID','/tmp/trace_ace/transcripts.zip'),
('TRACE_ACE_METADATA_DRIVE_FILE_ID','/tmp/trace_ace/meta.zip'),
]
for env, out in pairs:
p = gdown.download(id=os.environ[env], output=out, quiet=False)
if not p:
raise SystemExit(f'download failed: {env}')
PY
unzip -q /tmp/trace_ace/transcripts.zip -d /tmp/trace_ace/transcripts
unzip -q /tmp/trace_ace/meta.zip -d /tmp/trace_ace/meta
rm -f /tmp/trace_ace/*.zip

- name: Resolve schemas
shell: bash
run: |
set -euo pipefail
python - <<'PY'
import csv, shlex
from pathlib import Path
roots=[Path('/tmp/trace_ace/meta'),Path('/tmp/trace_ace/transcripts')]
features=labels=transcripts=None
for root in roots:
for p in root.rglob('*.csv'):
try:
with p.open('r',encoding='utf-8-sig',errors='ignore',newline='') as f: h=next(csv.reader(f))
except Exception: continue
c=set(h)
if features is None and {'response_id','session_id','learning_objective'}.issubset(c): features=p; print('FEATURE HEADER',h)
if labels is None and 'response_id' in c and ('is_correct' in c or 'correct' in c): labels=p; print('LABEL HEADER',h)
if transcripts is None and {'session_id','utterance_id','role','content','timestamp'}.issubset(c): transcripts=p.parent; print('TRANSCRIPT HEADER',h)
if not all((features,labels,transcripts)): raise SystemExit('failed schema resolution')
with open('/tmp/trace_ace/paths.env','w') as f:
f.write('FEATURES='+shlex.quote(str(features))+'\n')
f.write('LABELS='+shlex.quote(str(labels))+'\n')
f.write('TRANSCRIPTS='+shlex.quote(str(transcripts))+'\n')
PY

- name: Train promoted V75 all-views assets on all training rows
shell: bash
run: |
set -euo pipefail
source /tmp/trace_ace/paths.env
python competitions/trace_the_ace/train_v75_runtime_assets.py \
--features "$FEATURES" --labels "$LABELS" --transcripts "$TRANSCRIPTS" \
--out-dir /tmp/v75_assets

- name: Assemble official submission_src
shell: bash
run: |
set -euo pipefail
git clone --depth 1 https://github.com/drivendataorg/tutoring-outcomes-runtime.git /tmp/runtime
rm -rf /tmp/runtime/submission_src/*
cp competitions/trace_the_ace/runtime_v75/main.py /tmp/runtime/submission_src/main.py
cp competitions/trace_the_ace/v71_mastery_events.py /tmp/runtime/submission_src/v71_mastery_events.py
cp competitions/trace_the_ace/v75_canonical_trajectory.py /tmp/runtime/submission_src/v75_canonical_trajectory.py
mkdir -p /tmp/runtime/submission_src/assets
cp /tmp/v75_assets/v75_runtime_assets.npz /tmp/runtime/submission_src/assets/
cp /tmp/v75_assets/manifest.json /tmp/runtime/submission_src/assets/
find /tmp/runtime/submission_src -maxdepth 2 -type f -printf '%P %s bytes\n'

- name: Pack and check with official runtime
working-directory: /tmp/runtime
run: |
just pack-submission
just check-submission

- name: Pull official runtime image
working-directory: /tmp/runtime
run: just pull

- name: Test submission offline in official container
working-directory: /tmp/runtime
env:
BLOCK_INTERNET: "true"
GITHUB_ACTIONS_NO_TTY: "true"
SUBMISSION_IMAGE: tutoringoutcomeschallengeprodacr.azurecr.io/tutoring-outcomes-runtime:gpu-latest
run: just test-submission

- name: Validate generated output contract
shell: bash
run: |
set -euo pipefail
python competitions/trace_the_ace/runtime_validate.py output \
--format /tmp/runtime/data-demo/submission_format.csv \
--predictions /tmp/runtime/submission/submission.csv

- name: Upload candidate and evidence
uses: actions/upload-artifact@v4
with:
name: trace-ace-v75-official-runtime-candidate
retention-days: 14
path: |
/tmp/runtime/submission/submission.zip
/tmp/runtime/submission/submission.csv
/tmp/runtime/submission/log.txt
/tmp/v75_assets/manifest.json
53 changes: 53 additions & 0 deletions .github/workflows/trace-ace-v100-nested-stacker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
name: Trace the Ace V100 nested calibrated stacker
on:
workflow_dispatch:
push:
branches: [agent/trace-ace-mastery-events]
paths:
- 'competitions/trace_the_ace/v100_nested_stacker.py'
- '.github/workflows/trace-ace-v100-nested-stacker.yml'
jobs:
stacker:
runs-on: ubuntu-latest
timeout-minutes: 360
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
cache: pip
- name: Install dependencies
run: python -m pip install --disable-pip-version-check numpy pandas scipy scikit-learn gdown
- name: Download frozen training data
run: |
set -euo pipefail
gdown 1nOjremWhpZ_QKSLvZfGcNkS_C3kMMBUI -O transcripts.zip
gdown 1EpqoamY0vFI2qE57R6wdqU5HwuoVk3Zz -O metadata.zip
mkdir -p data/transcripts data/meta
unzip -q transcripts.zip -d data/transcripts
unzip -q metadata.zip -d data/meta
- name: Resolve schemas
shell: bash
run: |
set -euo pipefail
FEATURES=$(find data/meta -type f -name 'train_features*.csv' -print -quit)
LABELS=$(find data/meta -type f -name 'train_labels*.csv' -print -quit)
FIRST=$(find data/transcripts -type f -name '*.csv' -print -quit)
TRANSCRIPTS=$(dirname "$FIRST")
echo "FEATURES=$FEATURES" >> "$GITHUB_ENV"
echo "LABELS=$LABELS" >> "$GITHUB_ENV"
echo "TRANSCRIPTS=$TRANSCRIPTS" >> "$GITHUB_ENV"
- name: Run V100 nested stacker
run: |
cd competitions/trace_the_ace
python v100_nested_stacker.py --features "../../$FEATURES" --labels "../../$LABELS" --transcripts "../../$TRANSCRIPTS" --out ../../v100_nested_stacker.json
- name: Show decision
if: always()
run: cat v100_nested_stacker.json || true
- name: Upload V100 evidence
if: always()
uses: actions/upload-artifact@v4
with:
name: trace-ace-v100-nested-stacker
path: v100_nested_stacker.json
retention-days: 14
Loading
Loading