Fix memories output schema requirements (#11748)

Summary
- make the phase1 memories schema require `rollout_slug` while still
allowing it to be `null`
- update the corresponding test to check the required fields and
nullable type list

Testing
- Not run (not requested)
This commit is contained in:
jif-oai
2026-02-13 16:17:21 +00:00
committed by GitHub
parent 561fc14045
commit c0749c349f
2 changed files with 21 additions and 4 deletions

View File

@@ -118,10 +118,10 @@ pub fn output_schema() -> Value {
"type": "object",
"properties": {
"rollout_summary": { "type": "string" },
"rollout_slug": { "type": "string" },
"rollout_slug": { "type": ["string", "null"] },
"raw_memory": { "type": "string" }
},
"required": ["rollout_summary", "raw_memory"],
"required": ["rollout_summary", "rollout_slug", "raw_memory"],
"additionalProperties": false
})
}

View File

@@ -22,7 +22,7 @@ fn memory_root_uses_shared_global_path() {
}
#[test]
fn stage_one_output_schema_keeps_rollout_slug_optional() {
fn stage_one_output_schema_requires_rollout_slug_and_keeps_it_nullable() {
let schema = crate::memories::phase1::output_schema();
let properties = schema
.get("properties")
@@ -43,7 +43,24 @@ fn stage_one_output_schema_keeps_rollout_slug_optional() {
properties.contains_key("rollout_slug"),
"schema should declare rollout_slug"
);
assert_eq!(required_keys, vec!["raw_memory", "rollout_summary"]);
let rollout_slug_type = properties
.get("rollout_slug")
.and_then(Value::as_object)
.and_then(|schema| schema.get("type"))
.and_then(Value::as_array)
.expect("rollout_slug type array");
let mut rollout_slug_types = rollout_slug_type
.iter()
.map(|entry| entry.as_str().expect("type entry string"))
.collect::<Vec<_>>();
rollout_slug_types.sort_unstable();
assert_eq!(
required_keys,
vec!["raw_memory", "rollout_slug", "rollout_summary"]
);
assert_eq!(rollout_slug_types, vec!["null", "string"]);
}
#[tokio::test]