@smartmemory/compose 0.1.29-beta → 0.1.30-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/contracts/goal-result.json +128 -0
- package/contracts/judge-result.json +152 -0
- package/contracts/review-result.json +2 -2
- package/dist/assets/App-CB0U2nlm.js +768 -0
- package/dist/assets/arc-Ib57etRP.js +1 -0
- package/dist/assets/architectureDiagram-3BPJPVTR-3N4ul7Lp.js +36 -0
- package/dist/assets/blockDiagram-GPEHLZMM-iPkpmFIG.js +132 -0
- package/dist/assets/{c4Diagram-AHTNJAMY-Bo5yMBT9.js → c4Diagram-AAUBKEIU-BCKTL1Dk.js} +3 -3
- package/dist/assets/channel-Bd09RsPV.js +1 -0
- package/dist/assets/chunk-2J33WTMH-Daqe8HpE.js +1 -0
- package/dist/assets/{chunk-4BX2VUAB-BETV09jq.js → chunk-4BX2VUAB-BjnNKI2i.js} +1 -1
- package/dist/assets/chunk-55IACEB6-DRsniyrS.js +1 -0
- package/dist/assets/chunk-727SXJPM-BiShnVey.js +206 -0
- package/dist/assets/chunk-AQP2D5EJ-Dd9CkPhT.js +231 -0
- package/dist/assets/{chunk-FMBD7UC4-Dz2qczuu.js → chunk-FMBD7UC4-CrED-oPn.js} +1 -1
- package/dist/assets/chunk-ND2GUHAM-dk4lChMO.js +1 -0
- package/dist/assets/{chunk-QZHKN3VN-DPhBd22Q.js → chunk-QZHKN3VN-a1SBIOVJ.js} +1 -1
- package/dist/assets/classDiagram-4FO5ZUOK-D_vAH5lP.js +1 -0
- package/dist/assets/classDiagram-v2-Q7XG4LA2-D_vAH5lP.js +1 -0
- package/dist/assets/cose-bilkent-S5V4N54A-CXtbzn7R.js +1 -0
- package/dist/assets/dagre-BM42HDAG-By5-LlQC.js +4 -0
- package/dist/assets/{defaultLocale-DX6XiGOO.js → defaultLocale-CrowFXzY.js} +1 -1
- package/dist/assets/diagram-2AECGRRQ-BWFSnxuX.js +43 -0
- package/dist/assets/diagram-5GNKFQAL-DtyjjvQp.js +10 -0
- package/dist/assets/diagram-KO2AKTUF-D2Y15IJ0.js +3 -0
- package/dist/assets/diagram-LMA3HP47-CE-THjCD.js +24 -0
- package/dist/assets/diagram-OG6HWLK6-Blju-noD.js +24 -0
- package/dist/assets/{erDiagram-SMLLAGMA-DUT_laNT.js → erDiagram-TEJ5UH35-DI6ayS27.js} +1 -1
- package/dist/assets/{flowDiagram-DWJPFMVM-J9uyMWkp.js → flowDiagram-I6XJVG4X-BQf0uOzY.js} +4 -4
- package/dist/assets/ganttDiagram-6RSMTGT7-_upG_Ajl.js +292 -0
- package/dist/assets/gitGraphDiagram-PVQCEYII-5sVMQhO3.js +106 -0
- package/dist/assets/graph-BEmEBUp_.js +1 -0
- package/dist/assets/{graph-CfEl_ohV.js → graph-DPbJeZyN.js} +2 -2
- package/dist/assets/{index-D5Mh04yh.js → index-DLF-s4tP.js} +3 -3
- package/dist/assets/infoDiagram-5YYISTIA-4Hpw9ky_.js +2 -0
- package/dist/assets/{ishikawaDiagram-UXIWVN3A-BC7DwQNb.js → ishikawaDiagram-YF4QCWOH-CuHQNWRf.js} +5 -5
- package/dist/assets/{journeyDiagram-VCZTEJTY-BOCgv7m4.js → journeyDiagram-JHISSGLW-PFwOct4G.js} +1 -1
- package/dist/assets/{kanban-definition-6JOO6SKY-Fu0eFxr1.js → kanban-definition-UN3LZRKU-M70jtg2M.js} +7 -7
- package/dist/assets/katex-CQk2-UhE.js +257 -0
- package/dist/assets/layout-Bw0msyOw.js +1 -0
- package/dist/assets/linear-BkYLp90p.js +1 -0
- package/dist/assets/{mindmap-definition-QFDTVHPH-BPwx_SxA.js → mindmap-definition-RKZ34NQL-1KQv07E1.js} +10 -10
- package/dist/assets/{mobile-BOyZ87uL.js → mobile-CsuriFuT.js} +3 -3
- package/dist/assets/pieDiagram-4H26LBE5-B8lh9yMA.js +30 -0
- package/dist/assets/quadrantDiagram-W4KKPZXB-DUPV_-qJ.js +7 -0
- package/dist/assets/{requirementDiagram-MS252O5E-XlROD_VH.js → requirementDiagram-4Y6WPE33-ChYWhFld.js} +3 -3
- package/dist/assets/sankeyDiagram-5OEKKPKP-HsjvNkHR.js +40 -0
- package/dist/assets/sequenceDiagram-3UESZ5HK-CR5iTMTw.js +162 -0
- package/dist/assets/stateDiagram-AJRCARHV-BwMjQVHC.js +1 -0
- package/dist/assets/stateDiagram-v2-BHNVJYJU-X1hOVHVI.js +1 -0
- package/dist/assets/{timeline-definition-GMOUNBTQ-gdlx6TEB.js → timeline-definition-PNZ67QCA-BI88FufN.js} +3 -3
- package/dist/assets/vennDiagram-CIIHVFJN-BKg5ydB8.js +34 -0
- package/dist/assets/wardley-L42UT6IY-CtYx0E7z.js +173 -0
- package/dist/assets/wardleyDiagram-YWT4CUSO-CAColVNQ.js +78 -0
- package/dist/assets/{xychartDiagram-5P7HB3ND-CLgTTXkj.js → xychartDiagram-2RQKCTM6-CJqak-xY.js} +4 -4
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/dist/assets/App-DyRUFvbx.js +0 -768
- package/dist/assets/_baseUniq-6fxo8lI4.js +0 -1
- package/dist/assets/arc-ElMd2B94.js +0 -1
- package/dist/assets/architectureDiagram-Q4EWVU46-CYkxf4MU.js +0 -36
- package/dist/assets/blockDiagram-DXYQGD6D-BEbnyY6z.js +0 -132
- package/dist/assets/channel-BZuHuJYj.js +0 -1
- package/dist/assets/chunk-4TB4RGXK-Dbuohq0Y.js +0 -206
- package/dist/assets/chunk-55IACEB6-CDVuU3Ew.js +0 -1
- package/dist/assets/chunk-EDXVE4YY-DjkbltSG.js +0 -1
- package/dist/assets/chunk-OYMX7WX6-XJH4cbpv.js +0 -231
- package/dist/assets/chunk-YZCP3GAM-C-DPngtC.js +0 -1
- package/dist/assets/classDiagram-6PBFFD2Q-DTItsUL2.js +0 -1
- package/dist/assets/classDiagram-v2-HSJHXN6E-DTItsUL2.js +0 -1
- package/dist/assets/clone-BM9Hd7mq.js +0 -1
- package/dist/assets/cose-bilkent-S5V4N54A-CN-sdzRq.js +0 -1
- package/dist/assets/dagre-KV5264BT-HcBmaeC1.js +0 -4
- package/dist/assets/diagram-5BDNPKRD-DeMZN1_c.js +0 -10
- package/dist/assets/diagram-G4DWMVQ6-DAVSapDS.js +0 -24
- package/dist/assets/diagram-MMDJMWI5-WiLMNWTz.js +0 -43
- package/dist/assets/diagram-TYMM5635-CjfaWKT0.js +0 -24
- package/dist/assets/ganttDiagram-T4ZO3ILL-Cee_YjtS.js +0 -292
- package/dist/assets/gitGraphDiagram-UUTBAWPF-B1jNNoiW.js +0 -106
- package/dist/assets/graph-DV5DY72d.js +0 -1
- package/dist/assets/infoDiagram-42DDH7IO-m1jIMAlx.js +0 -2
- package/dist/assets/katex-DkKDou_j.js +0 -257
- package/dist/assets/layout-C-R3-tDf.js +0 -1
- package/dist/assets/linear-NOMW_E2I.js +0 -1
- package/dist/assets/min-B7SuZW29.js +0 -1
- package/dist/assets/pieDiagram-DEJITSTG-DdBjaXTu.js +0 -30
- package/dist/assets/quadrantDiagram-34T5L4WZ-D_K_ZMnx.js +0 -7
- package/dist/assets/sankeyDiagram-XADWPNL6-Sl0FllYQ.js +0 -10
- package/dist/assets/sequenceDiagram-FGHM5R23-D22asQ-_.js +0 -157
- package/dist/assets/stateDiagram-FHFEXIEX-BnCepkBg.js +0 -1
- package/dist/assets/stateDiagram-v2-QKLJ7IA2-DD_YjrTQ.js +0 -1
- package/dist/assets/vennDiagram-DHZGUBPP-wy4YzhrG.js +0 -34
- package/dist/assets/wardley-RL74JXVD-D0T_uQ79.js +0 -162
- package/dist/assets/wardleyDiagram-NUSXRM2D-Ds2dLjs8.js +0 -20
package/README.md
CHANGED
|
@@ -95,6 +95,7 @@ Topic-scoped reference:
|
|
|
95
95
|
- [docs/configuration.md](docs/configuration.md) — `.compose/*.json`, pipeline specs, `.mcp.json`, `ROADMAP.md`, environment variables.
|
|
96
96
|
- [docs/mcp.md](docs/mcp.md) — MCP server tool list (vision, lifecycle, gates, iteration loops).
|
|
97
97
|
- [docs/examples.md](docs/examples.md) — worked workflows and the full `compose pipeline` editing reference.
|
|
98
|
+
- [docs/command-flows.md](docs/command-flows.md) — mermaid flow diagrams for every CLI verb (`build`, `fix`, `gsd`, `new`, `import`, `feature`, `roadmap`, `triage`, `qa-scope`, `pipeline`, `init`/`setup`/`update`/`doctor`).
|
|
98
99
|
|
|
99
100
|
### Specs and design
|
|
100
101
|
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "goal-result.json",
|
|
4
|
+
"_source": "docs/features/STRAT-GOAL/design.md",
|
|
5
|
+
"_roadmap": "STRAT-GOAL",
|
|
6
|
+
"title": "GoalResult",
|
|
7
|
+
"description": "Output of stratum_goal — superset of JudgeResult (judge-result.json). Adds goal-orchestrator top-level fields: goal_id, goal_version, mode, status, turns_run, worker_runs, round, predicate_outcomes, and the optional would_have_decided. Invariant inherited: clean == met.",
|
|
8
|
+
"allOf": [
|
|
9
|
+
{ "$ref": "judge-result.json" },
|
|
10
|
+
{
|
|
11
|
+
"type": "object",
|
|
12
|
+
"required": [
|
|
13
|
+
"goal_id",
|
|
14
|
+
"goal_version",
|
|
15
|
+
"mode",
|
|
16
|
+
"status",
|
|
17
|
+
"turns_run",
|
|
18
|
+
"worker_runs",
|
|
19
|
+
"round",
|
|
20
|
+
"predicate_outcomes"
|
|
21
|
+
],
|
|
22
|
+
"properties": {
|
|
23
|
+
"goal_id": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"description": "Caller-supplied stable goal identifier. Immutable after first call."
|
|
26
|
+
},
|
|
27
|
+
"goal_version": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"const": "1.0",
|
|
30
|
+
"description": "Schema version for forward compatibility."
|
|
31
|
+
},
|
|
32
|
+
"mode": {
|
|
33
|
+
"enum": ["shadow", "advisory", "autonomous"],
|
|
34
|
+
"description": "Orchestration mode for this goal."
|
|
35
|
+
},
|
|
36
|
+
"status": {
|
|
37
|
+
"enum": [
|
|
38
|
+
"met",
|
|
39
|
+
"not_met",
|
|
40
|
+
"awaiting_decision",
|
|
41
|
+
"budget_exhausted",
|
|
42
|
+
"killed",
|
|
43
|
+
"in_progress"
|
|
44
|
+
],
|
|
45
|
+
"description": "Current goal status. Derived from FlowState on every read — not a sticky sentinel. 'awaiting_decision' means a met claim is pending human review (advisory / non-whitelisted autonomous class). 'budget_exhausted' means max_turns reached before all predicates met. 'in_progress' is emitted only by stratum_goal_status for an in-flight goal that has not yet reached a terminal step or awaiting_decision — it is never produced by the orchestrator's GoalResult."
|
|
46
|
+
},
|
|
47
|
+
"turns_run": {
|
|
48
|
+
"type": "integer",
|
|
49
|
+
"minimum": 0,
|
|
50
|
+
"description": "Total number of judge-evaluated turns (worker-dispatch failures that never reached the judge are not counted)."
|
|
51
|
+
},
|
|
52
|
+
"worker_runs": {
|
|
53
|
+
"type": "array",
|
|
54
|
+
"description": "Per-turn worker dispatch record. Length may exceed turns_run when worker failures occurred before a judge call.",
|
|
55
|
+
"items": {
|
|
56
|
+
"type": "object",
|
|
57
|
+
"required": ["turn", "agent_correlation_id", "duration_ms"],
|
|
58
|
+
"properties": {
|
|
59
|
+
"turn": { "type": "integer", "minimum": 1 },
|
|
60
|
+
"agent_correlation_id": { "type": "string" },
|
|
61
|
+
"duration_ms": { "type": "integer", "minimum": 0 }
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"round": {
|
|
66
|
+
"type": "integer",
|
|
67
|
+
"minimum": 0,
|
|
68
|
+
"description": "Current synthetic-flow round index. Used to address the goal_decision gate step as (goal_id, 'goal_decision')."
|
|
69
|
+
},
|
|
70
|
+
"predicate_outcomes": {
|
|
71
|
+
"type": "array",
|
|
72
|
+
"description": "Per-predicate outcome after autonomy partition. One entry per predicate in the goal's predicate list. MAY be empty for zero-turn results (e.g. budget exhausted before any judge call).",
|
|
73
|
+
"items": {
|
|
74
|
+
"type": "object",
|
|
75
|
+
"required": [
|
|
76
|
+
"id",
|
|
77
|
+
"type",
|
|
78
|
+
"verdict",
|
|
79
|
+
"confidence",
|
|
80
|
+
"applied_gate",
|
|
81
|
+
"judge_verdict",
|
|
82
|
+
"bound_autonomously",
|
|
83
|
+
"awaiting_human"
|
|
84
|
+
],
|
|
85
|
+
"properties": {
|
|
86
|
+
"id": { "type": "string" },
|
|
87
|
+
"type": {
|
|
88
|
+
"enum": ["deterministic", "verified", "judged"],
|
|
89
|
+
"description": "Predicate type — determines autonomy eligibility."
|
|
90
|
+
},
|
|
91
|
+
"verdict": {
|
|
92
|
+
"enum": ["met", "not_met", "ambiguous"],
|
|
93
|
+
"description": "Post-normalization verdict — same as JudgeResult.predicates[].verdict."
|
|
94
|
+
},
|
|
95
|
+
"confidence": {
|
|
96
|
+
"type": "integer",
|
|
97
|
+
"minimum": 1,
|
|
98
|
+
"maximum": 10
|
|
99
|
+
},
|
|
100
|
+
"applied_gate": {
|
|
101
|
+
"type": "integer",
|
|
102
|
+
"minimum": 1,
|
|
103
|
+
"maximum": 10
|
|
104
|
+
},
|
|
105
|
+
"judge_verdict": {
|
|
106
|
+
"enum": ["met", "not_met", "ambiguous"],
|
|
107
|
+
"description": "Raw kernel verdict before autonomy partition (same as verdict in v1; separate field reserved for v2 mixed-mode where autonomy can override)."
|
|
108
|
+
},
|
|
109
|
+
"bound_autonomously": {
|
|
110
|
+
"type": "boolean",
|
|
111
|
+
"description": "True iff this predicate class was on the autonomy allow-list AND the verdict was met. Only ever true in autonomous mode."
|
|
112
|
+
},
|
|
113
|
+
"awaiting_human": {
|
|
114
|
+
"type": "boolean",
|
|
115
|
+
"description": "True iff verdict was met but this predicate class is NOT on the autonomy allow-list (advisory mode, or autonomous mode with non-whitelisted class). The goal pauses for human review."
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
"additionalProperties": false
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
"would_have_decided": {
|
|
122
|
+
"enum": ["met", "not_met", "ambiguous"],
|
|
123
|
+
"description": "Shadow-mode only. Reflects what the loop would have decided if it were binding. Derived from the last turn's overall verdict. Present iff mode == 'shadow' AND at least one judge-evaluated turn ran. Omitted in the zero-turn edge case (e.g. all worker failures consumed budget)."
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
]
|
|
128
|
+
}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "judge-result.json",
|
|
4
|
+
"_source": "docs/features/STRAT-JUDGE/design.md",
|
|
5
|
+
"_roadmap": "STRAT-JUDGE",
|
|
6
|
+
"title": "JudgeResult",
|
|
7
|
+
"description": "Output of stratum_judge — strict superset of CrossModelReviewResult. Adds judge-specific top-level fields (met, stakes, predicates, tier_disagreements, budget_consumed, judge_kernel_meta); inherits findings/clean/consensus/claude_only/codex_only/meta/summary unchanged. Invariant: clean == met. Findings are emitted only for not_met or ambiguous predicates; met predicates contribute zero findings.",
|
|
8
|
+
"allOf": [
|
|
9
|
+
{ "$ref": "cross-model-review-result.json" },
|
|
10
|
+
{
|
|
11
|
+
"type": "object",
|
|
12
|
+
"required": [
|
|
13
|
+
"judge_version",
|
|
14
|
+
"met",
|
|
15
|
+
"stakes",
|
|
16
|
+
"predicates",
|
|
17
|
+
"budget_consumed",
|
|
18
|
+
"judge_kernel_meta"
|
|
19
|
+
],
|
|
20
|
+
"properties": {
|
|
21
|
+
"judge_version": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"const": "1.0",
|
|
24
|
+
"description": "Schema version for forward compatibility."
|
|
25
|
+
},
|
|
26
|
+
"met": {
|
|
27
|
+
"type": "boolean",
|
|
28
|
+
"description": "Top-level goal verdict. Defined as all(p.verdict == 'met' for p in predicates) after per-predicate normalization. Identical to inherited `clean` by invariant."
|
|
29
|
+
},
|
|
30
|
+
"stakes": {
|
|
31
|
+
"enum": ["cheap", "default", "paranoid"],
|
|
32
|
+
"description": "Depth class set by caller. v1: cheap (T1 only), default (T1+T2). paranoid raises StakesNotAvailableError until v2."
|
|
33
|
+
},
|
|
34
|
+
"predicates": {
|
|
35
|
+
"type": "array",
|
|
36
|
+
"description": "Per-predicate verdicts. MAY be empty for zero-turn results (e.g. budget exhausted before any judge call). Non-empty results are validated at the kernel boundary (EmptyPredicateListError) to prevent vacuous-pass gate bypass.",
|
|
37
|
+
"items": {
|
|
38
|
+
"type": "object",
|
|
39
|
+
"required": [
|
|
40
|
+
"id",
|
|
41
|
+
"type",
|
|
42
|
+
"statement",
|
|
43
|
+
"verdict",
|
|
44
|
+
"confidence",
|
|
45
|
+
"applied_gate",
|
|
46
|
+
"evidence",
|
|
47
|
+
"tier_history"
|
|
48
|
+
],
|
|
49
|
+
"properties": {
|
|
50
|
+
"id": { "type": "string" },
|
|
51
|
+
"type": {
|
|
52
|
+
"enum": ["deterministic", "verified", "judged"],
|
|
53
|
+
"description": "Predicate type sets the tier ceiling. deterministic = T1 only. verified = T2. judged = T3 in v2, downgraded to T2 in v1."
|
|
54
|
+
},
|
|
55
|
+
"statement": { "type": "string" },
|
|
56
|
+
"verdict": {
|
|
57
|
+
"enum": ["met", "not_met", "ambiguous"],
|
|
58
|
+
"description": "Post-normalization verdict. A raw 'met' with confidence < applied_gate is downgraded to 'ambiguous' before this is written."
|
|
59
|
+
},
|
|
60
|
+
"confidence": { "type": "integer", "minimum": 1, "maximum": 10 },
|
|
61
|
+
"applied_gate": {
|
|
62
|
+
"type": "integer",
|
|
63
|
+
"minimum": 1,
|
|
64
|
+
"maximum": 10,
|
|
65
|
+
"description": "Per-predicate confidence threshold. Defaults to 7 (mirrors review-finding convention)."
|
|
66
|
+
},
|
|
67
|
+
"evidence": {
|
|
68
|
+
"type": "array",
|
|
69
|
+
"items": {
|
|
70
|
+
"type": "object",
|
|
71
|
+
"required": ["source", "quote", "tier"],
|
|
72
|
+
"properties": {
|
|
73
|
+
"source": {
|
|
74
|
+
"type": "string",
|
|
75
|
+
"pattern": "^(artifacts|modified)/[^:]+:[0-9]+$",
|
|
76
|
+
"description": "Canonical citation format <bucket>/<path>:<line>. bucket must be 'artifacts' or 'modified'. Validated at the kernel boundary; path must resolve under the current turn's staging tree."
|
|
77
|
+
},
|
|
78
|
+
"quote": { "type": "string" },
|
|
79
|
+
"tier": { "enum": ["T1", "T1.5", "T2", "T3", "T4"] }
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
"tier_history": {
|
|
84
|
+
"type": "array",
|
|
85
|
+
"items": {
|
|
86
|
+
"type": "object",
|
|
87
|
+
"required": ["tier", "verdict", "confidence", "reason"],
|
|
88
|
+
"properties": {
|
|
89
|
+
"tier": { "enum": ["T1", "T1.5", "T2", "T3", "T4"] },
|
|
90
|
+
"verdict": { "enum": ["met", "not_met", "ambiguous", "n/a"] },
|
|
91
|
+
"confidence": {
|
|
92
|
+
"type": ["integer", "null"],
|
|
93
|
+
"minimum": 1,
|
|
94
|
+
"maximum": 10,
|
|
95
|
+
"description": "Null for T1 'n/a' verdicts (no LLM tier ran)."
|
|
96
|
+
},
|
|
97
|
+
"reason": { "type": "string" }
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
"tier_disagreements": {
|
|
105
|
+
"type": "array",
|
|
106
|
+
"description": "Cross-tier disagreements within a single judge call. Empty in v1 (single-tier-per-predicate after T1). Reserved for v2+ T2/T3 quorum resolution.",
|
|
107
|
+
"items": {
|
|
108
|
+
"type": "object",
|
|
109
|
+
"required": ["predicate", "tiers", "resolution"],
|
|
110
|
+
"properties": {
|
|
111
|
+
"predicate": { "type": "string" },
|
|
112
|
+
"tiers": { "type": "array", "items": { "type": "string" } },
|
|
113
|
+
"resolution": { "type": "string" }
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
"budget_consumed": {
|
|
118
|
+
"type": "object",
|
|
119
|
+
"required": ["turns", "dollars", "wall_clock_s"],
|
|
120
|
+
"properties": {
|
|
121
|
+
"turns": { "type": "integer", "minimum": 0 },
|
|
122
|
+
"dollars": {
|
|
123
|
+
"type": "number",
|
|
124
|
+
"minimum": 0,
|
|
125
|
+
"description": "Recorded but NOT enforced in v1 (no token-cost accounting yet)."
|
|
126
|
+
},
|
|
127
|
+
"wall_clock_s": { "type": "number", "minimum": 0 }
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
"judge_kernel_meta": {
|
|
131
|
+
"type": "object",
|
|
132
|
+
"required": ["decomposer_mode"],
|
|
133
|
+
"properties": {
|
|
134
|
+
"decomposer_mode": {
|
|
135
|
+
"enum": ["user", "auto", "hybrid", "ask"],
|
|
136
|
+
"description": "v1 ships 'user' only; auto/hybrid/ask are v2."
|
|
137
|
+
},
|
|
138
|
+
"smartmemory_priors_consulted": {
|
|
139
|
+
"type": "integer",
|
|
140
|
+
"minimum": 0,
|
|
141
|
+
"description": "Always 0 in v1 (SmartMemory wiring is v2)."
|
|
142
|
+
},
|
|
143
|
+
"degraded_judged": {
|
|
144
|
+
"type": "boolean",
|
|
145
|
+
"description": "True when a 'judged' predicate was downgraded to T2 because T3 is unavailable in v1."
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
]
|
|
152
|
+
}
|
|
@@ -68,8 +68,8 @@
|
|
|
68
68
|
"required": ["agent_type", "model_id"],
|
|
69
69
|
"properties": {
|
|
70
70
|
"agent_type": {
|
|
71
|
-
"enum": ["claude", "codex"],
|
|
72
|
-
"description": "Which model type produced this result."
|
|
71
|
+
"enum": ["claude", "codex", "judge"],
|
|
72
|
+
"description": "Which model type produced this result. 'judge' is used by stratum_judge for T1-only paths (no LLM dispatched); when T2 fires, agent_type reflects the actual model invoked."
|
|
73
73
|
},
|
|
74
74
|
"model_id": {
|
|
75
75
|
"type": ["string", "null"],
|