Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
949e246
feat(caviar): add --transition-vocab activity|full to both EC runners
niveousdragon Aug 6, 2026
47683bd
docs(caviar): make every EC repro command name its transition vocabulary
niveousdragon Aug 6, 2026
1f5865d
docs(caviar): record the replay verification of the shipped e9/e10 rows
niveousdragon Aug 6, 2026
26bfd12
docs(caviar): fix section G's gate-rise causal attribution
niveousdragon Aug 6, 2026
3681ed2
docs(caviar): ship the missing D.1 item-1 artifact
niveousdragon Aug 6, 2026
a21de75
feat(caviar): ship section F's dump-vs-XML audit as a tool + artifact
niveousdragon Aug 6, 2026
2209611
feat(caviar): ship section G's wk-fold and coverage-census artifact
niveousdragon Aug 6, 2026
01532c7
feat(caviar): measure moving under its canonical close_34 threshold
niveousdragon Aug 6, 2026
88314ad
docs(caviar): label E.1's vocabulary a second iteration, not pre-regi…
niveousdragon Aug 6, 2026
2a673bc
docs(caviar): correct moving fold count to 9 of 10 per shipped artifact
niveousdragon Aug 7, 2026
46ef36f
docs(caviar): drop residual 'stricter gates' framing Section G retracted
niveousdragon Aug 7, 2026
811a90f
docs(caviar): scope vocabulary-recording claim to current runners
niveousdragon Aug 7, 2026
5341cce
docs(caviar): state which Section-G artifacts actually carry close_th…
niveousdragon Aug 7, 2026
9f12969
docs(caviar): scope Section G replay attestation to the runs it covered
niveousdragon Aug 7, 2026
80b3a23
docs(caviar): label e5 EC artifacts historical, not runner-reproducible
niveousdragon Aug 7, 2026
e2cf4d5
docs(caviar): list new artifacts in hardware table, add tool repro co…
niveousdragon Aug 7, 2026
7f5b467
fix(caviar): record close_threshold in the meeting-census artifact
niveousdragon Aug 7, 2026
512764b
fix(caviar): record the neural init search's actual pool in CV fold r…
niveousdragon Aug 7, 2026
31c498f
fix(caviar): refuse --transition-vocab activity in neural EC mode
niveousdragon Aug 7, 2026
5d578c7
fix(caviar): make the dump-vs-XML audit runnable without torch
niveousdragon Aug 7, 2026
90e7057
feat(caviar): add --close-threshold, the threshold-25 replay entry point
niveousdragon Aug 7, 2026
839dddf
fix(caviar): refuse time bases the audit arithmetic cannot represent
niveousdragon Aug 7, 2026
904601c
test(caviar): prove the audit miss-detector fires on an orphaned meeting
niveousdragon Aug 7, 2026
8e18f46
ci: run the CAVIAR example suites on CPU
niveousdragon Aug 7, 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
31 changes: 31 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,37 @@ jobs:
- name: Validate Python provenance stubs and documentation
run: python -m pytest -q python/tests/test_relation_provenance_contract.py

# The CAVIAR example suites on CPU (review follow-up: previously no
# workflow ran any of them). CPU torch makes the audit/census/corpus
# suites run for real instead of module-skipping; the dataset-gated
# tests inside them self-skip (no corpus data ships in the repo), and
# the GPU-only suites stay local per the hardware table in
# docs/experiments/caviar/README.md.
caviar-examples:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6

- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
with:
python-version: "3.11"

- name: Install pytest and CPU torch
run: |
python -m pip install --upgrade pip pytest
python -m pip install torch --index-url https://download.pytorch.org/whl/cpu

- name: Run CAVIAR example suites
env:
PYTHONPATH: crates/pyxlog/python
run: >-
python -m pytest -q
python/tests/test_theory_loop.py
python/tests/test_caviar_xml_corpus.py
python/tests/test_audit_dump_vs_xml.py
python/tests/test_xml_meeting_census.py
python/tests/test_audit_tool_torch_free.py

fmt:
runs-on: ubuntu-latest
steps:
Expand Down
340 changes: 273 additions & 67 deletions docs/experiments/caviar/README.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,236 @@
{
"pkl": "C:/Users/User/flt-workspace/projects/xlog/runs/r_djwq4hnn0dqoi4e2/caviar_data_continuous/caviar-data/caviar-train.json",
"test_json": "C:/Users/User/flt-workspace/projects/xlog/runs/r_djwq4hnn0dqoi4e2/caviar_data_continuous/caviar-data/caviar-test.json",
"data": "continuous",
"fold": null,
"mode": "relational",
"protocol": "ec",
"close_threshold": 25.0,
"k": 4,
"seed": 7,
"hidden": 16,
"max_clauses": 4,
"min_new_covered": 2,
"max_body_literals": 3,
"holdout_score": "f1",
"transition_vocab": "activity",
"ec_fit_mode": "fixed",
"min_fit": null,
"null_permutations": 1000,
"null_quantile": 0.95,
"null_perm_seed": 7,
"tie_tolerance": null,
"num_pt": {
"train": 24312,
"test": 8048
},
"n_pos": {
"train": 1344,
"test": 489
},
"wall_clock_s": {
"convert": 0.6520058000460267,
"theory_loop_init": 0.38313480000942945,
"theory_loop_term": 0.12887379992753267,
"mode_total": 0.5593090999173,
"total": 1.2967943999683484
},
"candidate_vocabulary": {
"relational": [
"any_became_active",
"any_became_inactive",
"any_became_walking",
"any_stopped_walking",
"both_active",
"both_inactive",
"both_walking",
"close",
"far",
"mixed_active_walking"
],
"neural": [],
"excluded": [
"coords_missing"
]
},
"steps_requested": null,
"steps_effective": null,
"steps_clamped": false,
"ec": {
"n_init": {
"train": 10,
"test": 3
},
"n_term": {
"train": 11,
"test": 1
},
"n_init_dontcare_train": 1334,
"n_term_dontcare_train": 22957,
"init_theory": {
"clauses": [],
"iterations": [
{
"rule": null,
"reason": "select_once abstained",
"margin": 0.0,
"n_residual_pos_before": 10,
"n_newly_covered": 0
}
],
"stop_reason": "select_once abstained"
},
"term_theory": {
"clauses": [],
"iterations": [
{
"rule": null,
"reason": "select_once abstained",
"margin": 0.0,
"n_residual_pos_before": 11,
"n_newly_covered": 0
}
],
"stop_reason": "select_once abstained"
},
"init_scoring": {
"theory_prf1": {
"train": {
"precision": 0.0,
"recall": 0.0,
"f1": 0.0,
"tp": 0,
"fp": 0,
"fn": 10,
"tn": 24302,
"degenerate": true
},
"test": {
"precision": 0.0,
"recall": 0.0,
"f1": 0.0,
"tp": 0,
"fp": 0,
"fn": 3,
"tn": 8045,
"degenerate": true
}
},
"marginal_contribution": []
},
"term_scoring": {
"theory_prf1": {
"train": {
"precision": 0.0,
"recall": 0.0,
"f1": 0.0,
"tp": 0,
"fp": 0,
"fn": 11,
"tn": 24301,
"degenerate": true
},
"test": {
"precision": 0.0,
"recall": 0.0,
"f1": 0.0,
"tp": 0,
"fp": 0,
"fn": 1,
"tn": 8047,
"degenerate": true
}
},
"marginal_contribution": []
},
"frame_f1": {
"precision": 0.0,
"recall": 0.0,
"f1": 0.0,
"tp": 0,
"fp": 0,
"fn": 489,
"tn": 7559,
"degenerate": true
},
"relational_search_pool": {
"init": {
"bodies_by_size": {
"2": 30,
"3": 29
},
"skipped_empty_cover": {
"2": 15,
"3": 91
}
},
"term": {
"bodies_by_size": {
"2": 30,
"3": 29
},
"skipped_empty_cover": {
"2": 15,
"3": 91
}
}
},
"init_scores_last_iteration_top5": [
[
"both_active&close",
0.23809523809523808
],
[
"any_became_active&both_active&close",
0.1
],
[
"any_became_active&both_active",
0.08333333333333333
],
[
"any_became_active&any_stopped_walking&mixed_active_walking",
0.07142857142857144
],
[
"any_became_active&close",
0.07142857142857144
]
],
"term_scores_last_iteration_top5": [
[
"any_became_inactive&any_became_walking",
0.1
],
[
"any_became_inactive&any_became_walking&far",
0.1
],
[
"any_became_inactive&far",
0.1
],
[
"any_became_walking&far",
0.1
],
[
"both_walking&close",
0.1
]
],
"init_selection_reasons": [
"no body passed the fit gate (min_fit=0.75): a body that cannot fit held-out data is not a rule"
],
"term_selection_reasons": [
"no body passed the fit gate (min_fit=0.75): a body that cannot fit held-out data is not a rule"
],
"ec_fit_mode": "fixed",
"init_min_fit": 0.75,
"term_min_fit": 0.75,
"init_null_summary": null,
"term_null_summary": null
},
"direct_context": null,
"detector_probe": null
}
Loading
Loading