JevScope Project Format
September 18, 2026 ยท View on GitHub
File suffix:
*.jevscope.json
Version 1
{
"schemaVersion": 1,
"name": "RPG Battle Director",
"description": "Example decision policy",
"provider": {
"type": "typesafe",
"model": "jev-latest"
},
"questions": {
"nextAction": {
"type": "choice",
"instructions": "Choose the most appropriate immediate action.",
"criteria": {
"attack": "Engage the current enemy.",
"retreat": "Create distance and avoid immediate combat.",
"heal": "Use available healing.",
"wait": "Do not commit to another action yet."
}
},
"danger": {
"type": "score",
"instructions": "Rate current combat danger.",
"criteria": [
"Safe",
"Manageable",
"Dangerous",
"Critical"
]
},
"shouldUseSpecial": {
"type": "noul",
"instructions": "Should the character use the special ability now?",
"criteria": {
"true": "Benefits justify consuming the ability.",
"false": "Preserve the ability."
}
}
},
"policy": {
"choiceConfidence": {
"auto": 0.85,
"review": 0.60
},
"scoreConfidence": {
"auto": 0.85,
"review": 0.60
},
"noul": {
"yes": 0.80,
"no": 0.20
}
}
}
Important semantics
State / entry values
TypeSafe System One accepts a top-level state/instruction/criterion entry as text, a JSON object, a JSON array, or null. Nested JSON values may contain numbers and booleans. JevScope v0.1 validates this boundary rather than forwarding arbitrary JavaScript values.
Choice
Provider output contains:
- selected
choice confidence- probabilities keyed by label
Score
Provider output contains:
- expected
score(may be between rubric integers) confidence- rubric legend
- probabilities keyed by score
Do not round the expected score before displaying it.
Noul
Provider output contains a noul number from 0 to 1 representing the probability of YES.
JevScope may derive a local policy label:
p >= yes threshold => YES/AUTO
p <= no threshold => NO/AUTO
otherwise => REVIEW
The derived label is JevScope policy output, not the raw Jev answer.
JSONL batch format
Each line:
{"id":"case-001","state":{"hp":100,"enemyCount":1,"ammo":10}}
Optional expectations:
{
"id":"case-002",
"state":{"hp":12,"enemyCount":5,"ammo":1},
"expect":{
"nextAction":{"choiceOneOf":["retreat","heal"],"minConfidence":0.55},
"danger":{"scoreMin":2.3},
"shouldUseSpecial":{"noulMin":0.50}
}
}
Schema evolution rules
- bump
schemaVersionfor semantic changes - reject unknown future versions rather than guessing
- migrations must be explicit and reversible where possible
- credentials are forbidden fields