Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "simard"
version = "0.36.0"
version = "0.37.0"
edition = "2024"
default-run = "simard"

Expand Down
353 changes: 353 additions & 0 deletions ooda/scorecard.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,353 @@
{
"domain": "rust",
"baseline": {
"domain": "rust",
"variant": "baseline",
"scenarios_total": 5,
"scenarios_passed": 0,
"pass_rate": 0.0,
"per_subskill": [
{
"subskill": "ownership",
"passed": 0,
"total": 1,
"pass_rate": 0.0
},
{
"subskill": "borrow-checker",
"passed": 0,
"total": 1,
"pass_rate": 0.0
},
{
"subskill": "lifetimes",
"passed": 0,
"total": 1,
"pass_rate": 0.0
},
{
"subskill": "error-handling",
"passed": 0,
"total": 1,
"pass_rate": 0.0
},
{
"subskill": "error-types",
"passed": 0,
"total": 1,
"pass_rate": 0.0
}
],
"level": "novice",
"facts_in_memory": 0,
"procedures_in_memory": 0,
"results": [
{
"scenario_id": "rust-ownership-fix-use-after-move",
"subskill": "ownership",
"passed": false,
"facts_recalled": 0,
"procedures_recalled": 0,
"query_recall_hits": 0,
"expected_concepts_present": false,
"expected_procedure_present": false,
"detail": "sub-skill 'ownership': expected_concepts_present=false (need [\"move-semantics\", \"ownership-transfer-on-call\"]), expected_procedure_present=false ('rust-expert:fix-use-after-move'), query surfaced 0 sub-skill fact(s); grader: cargo build (must compile; E0382 resolved)"
},
{
"scenario_id": "rust-borrowck-resolve-aliasing",
"subskill": "borrow-checker",
"passed": false,
"facts_recalled": 0,
"procedures_recalled": 0,
"query_recall_hits": 0,
"expected_concepts_present": false,
"expected_procedure_present": false,
"detail": "sub-skill 'borrow-checker': expected_concepts_present=false (need [\"aliasing-xor-mutability\", \"non-lexical-lifetimes\"]), expected_procedure_present=false ('rust-expert:resolve-borrow-conflict'), query surfaced 0 sub-skill fact(s); grader: cargo build (must compile; E0502 resolved)"
},
{
"scenario_id": "rust-lifetimes-annotate-struct",
"subskill": "lifetimes",
"passed": false,
"facts_recalled": 0,
"procedures_recalled": 0,
"query_recall_hits": 0,
"expected_concepts_present": false,
"expected_procedure_present": false,
"detail": "sub-skill 'lifetimes': expected_concepts_present=false (need [\"lifetime-elision-rules\", \"struct-holding-reference\"]), expected_procedure_present=false ('rust-expert:annotate-lifetimes'), query surfaced 0 sub-skill fact(s); grader: cargo build (must compile; E0106 resolved)"
},
{
"scenario_id": "rust-error-propagate-with-question-mark",
"subskill": "error-handling",
"passed": false,
"facts_recalled": 0,
"procedures_recalled": 0,
"query_recall_hits": 0,
"expected_concepts_present": false,
"expected_procedure_present": false,
"detail": "sub-skill 'error-handling': expected_concepts_present=false (need [\"question-mark-operator\", \"avoid-unwrap-in-libraries\"]), expected_procedure_present=false ('rust-expert:propagate-with-question-mark'), query surfaced 0 sub-skill fact(s); grader: cargo test (parses ok input, returns Err on bad input; no panic)"
},
{
"scenario_id": "rust-error-types-define-thiserror",
"subskill": "error-types",
"passed": false,
"facts_recalled": 0,
"procedures_recalled": 0,
"query_recall_hits": 0,
"expected_concepts_present": false,
"expected_procedure_present": false,
"detail": "sub-skill 'error-types': expected_concepts_present=false (need [\"thiserror-for-libraries\", \"anyhow-for-applications\"]), expected_procedure_present=false ('rust-expert:define-thiserror-enum'), query surfaced 0 sub-skill fact(s); grader: cargo build + cargo test (typed error, ? conversions work)"
}
],
"notes": [
"Deterministic single-seed run; grading is a pure function of memory contents, so repeated runs reproduce this scorecard exactly.",
"Scope (first experiment): the level reflects whether the competency required to solve each scenario is present and recallable from memory (knowledge acquisition + right-moment recall), NOT autonomous code generation. No cargo build/test is run against a candidate solution in this cycle; the scenario graders describe the verification the next cycle will drive an LLM engineer against.",
"Baseline is an empty-memory control (no rust-expert pack ingested), representing Simard's pre-acquisition starting point for these sub-skills."
]
},
"with_pack": {
"domain": "rust",
"variant": "rust-expert-pack",
"scenarios_total": 5,
"scenarios_passed": 5,
"pass_rate": 1.0,
"per_subskill": [
{
"subskill": "ownership",
"passed": 1,
"total": 1,
"pass_rate": 1.0
},
{
"subskill": "borrow-checker",
"passed": 1,
"total": 1,
"pass_rate": 1.0
},
{
"subskill": "lifetimes",
"passed": 1,
"total": 1,
"pass_rate": 1.0
},
{
"subskill": "error-handling",
"passed": 1,
"total": 1,
"pass_rate": 1.0
},
{
"subskill": "error-types",
"passed": 1,
"total": 1,
"pass_rate": 1.0
}
],
"level": "expert",
"facts_in_memory": 13,
"procedures_in_memory": 5,
"results": [
{
"scenario_id": "rust-ownership-fix-use-after-move",
"subskill": "ownership",
"passed": true,
"facts_recalled": 3,
"procedures_recalled": 1,
"query_recall_hits": 3,
"expected_concepts_present": true,
"expected_procedure_present": true,
"detail": "sub-skill 'ownership': expected_concepts_present=true (need [\"move-semantics\", \"ownership-transfer-on-call\"]), expected_procedure_present=true ('rust-expert:fix-use-after-move'), query surfaced 3 sub-skill fact(s); grader: cargo build (must compile; E0382 resolved)"
},
{
"scenario_id": "rust-borrowck-resolve-aliasing",
"subskill": "borrow-checker",
"passed": true,
"facts_recalled": 4,
"procedures_recalled": 1,
"query_recall_hits": 4,
"expected_concepts_present": true,
"expected_procedure_present": true,
"detail": "sub-skill 'borrow-checker': expected_concepts_present=true (need [\"aliasing-xor-mutability\", \"non-lexical-lifetimes\"]), expected_procedure_present=true ('rust-expert:resolve-borrow-conflict'), query surfaced 4 sub-skill fact(s); grader: cargo build (must compile; E0502 resolved)"
},
{
"scenario_id": "rust-lifetimes-annotate-struct",
"subskill": "lifetimes",
"passed": true,
"facts_recalled": 3,
"procedures_recalled": 1,
"query_recall_hits": 3,
"expected_concepts_present": true,
"expected_procedure_present": true,
"detail": "sub-skill 'lifetimes': expected_concepts_present=true (need [\"lifetime-elision-rules\", \"struct-holding-reference\"]), expected_procedure_present=true ('rust-expert:annotate-lifetimes'), query surfaced 3 sub-skill fact(s); grader: cargo build (must compile; E0106 resolved)"
},
{
"scenario_id": "rust-error-propagate-with-question-mark",
"subskill": "error-handling",
"passed": true,
"facts_recalled": 3,
"procedures_recalled": 1,
"query_recall_hits": 3,
"expected_concepts_present": true,
"expected_procedure_present": true,
"detail": "sub-skill 'error-handling': expected_concepts_present=true (need [\"question-mark-operator\", \"avoid-unwrap-in-libraries\"]), expected_procedure_present=true ('rust-expert:propagate-with-question-mark'), query surfaced 3 sub-skill fact(s); grader: cargo test (parses ok input, returns Err on bad input; no panic)"
},
{
"scenario_id": "rust-error-types-define-thiserror",
"subskill": "error-types",
"passed": true,
"facts_recalled": 2,
"procedures_recalled": 1,
"query_recall_hits": 2,
"expected_concepts_present": true,
"expected_procedure_present": true,
"detail": "sub-skill 'error-types': expected_concepts_present=true (need [\"thiserror-for-libraries\", \"anyhow-for-applications\"]), expected_procedure_present=true ('rust-expert:define-thiserror-enum'), query surfaced 2 sub-skill fact(s); grader: cargo build + cargo test (typed error, ? conversions work)"
}
],
"notes": [
"Deterministic single-seed run; grading is a pure function of memory contents, so repeated runs reproduce this scorecard exactly.",
"Scope (first experiment): the level reflects whether the competency required to solve each scenario is present and recallable from memory (knowledge acquisition + right-moment recall), NOT autonomous code generation. No cargo build/test is run against a candidate solution in this cycle; the scenario graders describe the verification the next cycle will drive an LLM engineer against.",
"Ingested 13 facts + 5 procedures from pack 'rust-expert'."
]
},
"degraded": {
"domain": "rust",
"variant": "degraded",
"scenarios_total": 5,
"scenarios_passed": 1,
"pass_rate": 0.2,
"per_subskill": [
{
"subskill": "ownership",
"passed": 1,
"total": 1,
"pass_rate": 1.0
},
{
"subskill": "borrow-checker",
"passed": 0,
"total": 1,
"pass_rate": 0.0
},
{
"subskill": "lifetimes",
"passed": 0,
"total": 1,
"pass_rate": 0.0
},
{
"subskill": "error-handling",
"passed": 0,
"total": 1,
"pass_rate": 0.0
},
{
"subskill": "error-types",
"passed": 0,
"total": 1,
"pass_rate": 0.0
}
],
"level": "novice",
"facts_in_memory": 3,
"procedures_in_memory": 1,
"results": [
{
"scenario_id": "rust-ownership-fix-use-after-move",
"subskill": "ownership",
"passed": true,
"facts_recalled": 3,
"procedures_recalled": 1,
"query_recall_hits": 3,
"expected_concepts_present": true,
"expected_procedure_present": true,
"detail": "sub-skill 'ownership': expected_concepts_present=true (need [\"move-semantics\", \"ownership-transfer-on-call\"]), expected_procedure_present=true ('rust-expert:fix-use-after-move'), query surfaced 3 sub-skill fact(s); grader: cargo build (must compile; E0382 resolved)"
},
{
"scenario_id": "rust-borrowck-resolve-aliasing",
"subskill": "borrow-checker",
"passed": false,
"facts_recalled": 1,
"procedures_recalled": 0,
"query_recall_hits": 1,
"expected_concepts_present": false,
"expected_procedure_present": false,
"detail": "sub-skill 'borrow-checker': expected_concepts_present=false (need [\"aliasing-xor-mutability\", \"non-lexical-lifetimes\"]), expected_procedure_present=false ('rust-expert:resolve-borrow-conflict'), query surfaced 1 sub-skill fact(s); grader: cargo build (must compile; E0502 resolved)"
},
{
"scenario_id": "rust-lifetimes-annotate-struct",
"subskill": "lifetimes",
"passed": false,
"facts_recalled": 0,
"procedures_recalled": 0,
"query_recall_hits": 0,
"expected_concepts_present": false,
"expected_procedure_present": false,
"detail": "sub-skill 'lifetimes': expected_concepts_present=false (need [\"lifetime-elision-rules\", \"struct-holding-reference\"]), expected_procedure_present=false ('rust-expert:annotate-lifetimes'), query surfaced 0 sub-skill fact(s); grader: cargo build (must compile; E0106 resolved)"
},
{
"scenario_id": "rust-error-propagate-with-question-mark",
"subskill": "error-handling",
"passed": false,
"facts_recalled": 0,
"procedures_recalled": 0,
"query_recall_hits": 0,
"expected_concepts_present": false,
"expected_procedure_present": false,
"detail": "sub-skill 'error-handling': expected_concepts_present=false (need [\"question-mark-operator\", \"avoid-unwrap-in-libraries\"]), expected_procedure_present=false ('rust-expert:propagate-with-question-mark'), query surfaced 0 sub-skill fact(s); grader: cargo test (parses ok input, returns Err on bad input; no panic)"
},
{
"scenario_id": "rust-error-types-define-thiserror",
"subskill": "error-types",
"passed": false,
"facts_recalled": 0,
"procedures_recalled": 0,
"query_recall_hits": 0,
"expected_concepts_present": false,
"expected_procedure_present": false,
"detail": "sub-skill 'error-types': expected_concepts_present=false (need [\"thiserror-for-libraries\", \"anyhow-for-applications\"]), expected_procedure_present=false ('rust-expert:define-thiserror-enum'), query surfaced 0 sub-skill fact(s); grader: cargo build + cargo test (typed error, ? conversions work)"
}
],
"notes": [
"Deterministic single-seed run; grading is a pure function of memory contents, so repeated runs reproduce this scorecard exactly.",
"Scope (first experiment): the level reflects whether the competency required to solve each scenario is present and recallable from memory (knowledge acquisition + right-moment recall), NOT autonomous code generation. No cargo build/test is run against a candidate solution in this cycle; the scenario graders describe the verification the next cycle will drive an LLM engineer against.",
"Deliberately-degraded state: only the 'ownership' sub-skill ingested (issue #1241 calibration guard)."
]
},
"pack_ingest": {
"pack_name": "rust-expert",
"facts_ingested": 13,
"facts_failed": 0,
"procedures_ingested": 5,
"procedures_failed": 0,
"fact_ids": [
"sem_d8f501091adf",
"sem_60f117e7afbf",
"sem_f6a51798ee11",
"sem_826431ac5c9d",
"sem_b1a2bf11a205",
"sem_011e1ca4cf97",
"sem_ac4b21e2b60e",
"sem_fc44ad84f2ed",
"sem_2a6993ad57c0",
"sem_06485e38dab5",
"sem_4e377cfa24a8",
"sem_3786c40a20f9",
"sem_351e6d32dedd"
],
"procedure_ids": [
"proc_bdc23fbb43dc",
"proc_0c8d374b5d7e",
"proc_0940d16b41ba",
"proc_8f8c2c119133",
"proc_d1766dad6710"
]
},
"calibration": {
"healthy_pass_rate": 1.0,
"degraded_pass_rate": 0.2,
"gap": 0.8,
"healthy_min": 0.9,
"degraded_max": 0.5,
"min_gap": 0.4,
"passed": true
}
}

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: no trailing newline (serde_json::to_vec_pretty in src/bin/simard_rust_gym.rs doesn't append one). A pre-commit end-of-file-fixer would rewrite this file — pre-commit is currently pending in CI. Also: this is a generated artifact (gym default output is target/simard-rust-gym/); if it is intended as a checked-in calibration baseline, consider a short note documenting how/when to regenerate it.

9 changes: 8 additions & 1 deletion tests/adaptive_scaling.rs
Original file line number Diff line number Diff line change
Expand Up @@ -312,9 +312,16 @@ fn scaler_current_max_can_override_config() {
})
.collect();

// Use scaler's current_max as the config limit.
// Use scaler's current_max as the config limit. Set `scaler: None`
// explicitly instead of `..OodaConfig::default()`: `OodaConfig::default()`
// reads process env (`SIMARD_SCALING`), so on a host with
// `SIMARD_SCALING=auto` the inherited default scaler (ceiling 24) would
// override the explicit `max_concurrent_actions` under test and `decide`
// would use `scaler.adjust()` rather than the config cap. Building it with
// `scaler: None` keeps the test hermetic (issue #2732).
let config = OodaConfig {
max_concurrent_actions: scaler.current_max(),
scaler: None,

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Correct and consistent with the established pattern in src/ooda_loop/decide.rs:180,217,591. Explicit scaler: None overrides the env-derived default from OodaConfig::default() (types.rs:368 reads SIMARD_SCALING), keeping this test hermetic on SIMARD_SCALING=auto hosts. Good fix + clear rationale comment referencing #2732.

..OodaConfig::default()
};

Expand Down
Loading