Skip to content

Commit 501eb8d

Browse files
committed
feat: production-ready inference governance — CLI, real agents, DI, learning loop
- Add 'npx strray-ai inference:run' CLI command (--force, --no-verify, --json) - Fix vote inversion bug: use resolved.decision instead of confidence threshold - Inject AgentInvoker via constructor for testability (no vi.mock child_process) - Add SessionCaptureProcessor (post-processor, priority 99, features.json gated) - Add history-based confidence adjustment from past 10 governance cycles - Improve proposal titles: action-oriented with session counts - Gate inference CLI and session capture behind features.json inference.enabled - Add skipDeployVerify option for InferenceCycleOptions - Real governance verified: code-reviewer + architect vote via opencode run - 148/148 test files, 2,718/2,18 tests pass, 0 failures
1 parent 5963ce1 commit 501eb8d

87 files changed

Lines changed: 12092 additions & 681 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.opencode/activity-report.json

Lines changed: 30 additions & 234 deletions
Original file line numberDiff line numberDiff line change
@@ -2,301 +2,97 @@
22
"sessions": [],
33
"activities": [
44
{
5-
"timestamp": "2026-04-29T15:05:12.423Z",
6-
"id": "act-1777475112423-iw5yap",
5+
"timestamp": "2026-04-30T15:33:57.497Z",
6+
"id": "act-1777563237497-qjb2ws",
77
"category": "session",
88
"level": "info",
99
"action": "session-ended",
1010
"message": "Activity logging session ended",
11-
"sessionId": "session-1777475111159-h6a0zx",
11+
"sessionId": "session-1777563235732-v397m6",
1212
"details": {
13-
"duration": 1264
13+
"duration": 1765
1414
}
1515
},
1616
{
17-
"timestamp": "2026-04-29T15:05:12.693Z",
18-
"id": "act-1777475112693-96kolp",
17+
"timestamp": "2026-04-30T16:28:17.804Z",
18+
"id": "act-1777566497804-858i2x",
1919
"category": "session",
2020
"level": "info",
2121
"action": "session-ended",
2222
"message": "Activity logging session ended",
23-
"sessionId": "session-1777475112124-f9mi9r",
23+
"sessionId": "session-1777566497159-0yece1",
2424
"details": {
25-
"duration": 569
25+
"duration": 645
2626
}
2727
},
2828
{
29-
"timestamp": "2026-04-29T15:06:05.764Z",
30-
"id": "act-1777475165764-lxcg8n",
29+
"timestamp": "2026-04-30T16:33:34.699Z",
30+
"id": "act-1777566814699-djeli3",
3131
"category": "session",
3232
"level": "info",
3333
"action": "session-ended",
3434
"message": "Activity logging session ended",
35-
"sessionId": "session-1777475164245-ry7l10",
35+
"sessionId": "session-1777566814136-o5pqip",
3636
"details": {
37-
"duration": 1519
37+
"duration": 563
3838
}
3939
},
4040
{
41-
"timestamp": "2026-04-29T15:08:03.352Z",
42-
"id": "act-1777475283352-jnooog",
41+
"timestamp": "2026-04-30T16:38:00.137Z",
42+
"id": "act-1777567080137-438xpw",
4343
"category": "session",
4444
"level": "info",
4545
"action": "session-ended",
4646
"message": "Activity logging session ended",
47-
"sessionId": "session-1777475282796-6pb348",
48-
"details": {
49-
"duration": 556
50-
}
51-
},
52-
{
53-
"timestamp": "2026-04-29T15:09:38.834Z",
54-
"id": "act-1777475378834-xms4x2",
55-
"category": "session",
56-
"level": "info",
57-
"action": "session-ended",
58-
"message": "Activity logging session ended",
59-
"sessionId": "session-1777475378263-y0ogia",
60-
"details": {
61-
"duration": 571
62-
}
63-
},
64-
{
65-
"timestamp": "2026-04-29T15:10:17.249Z",
66-
"id": "act-1777475417249-q3877s",
67-
"category": "session",
68-
"level": "info",
69-
"action": "session-ended",
70-
"message": "Activity logging session ended",
71-
"sessionId": "session-1777475415914-kz8hds",
72-
"details": {
73-
"duration": 1335
74-
}
75-
},
76-
{
77-
"timestamp": "2026-04-29T15:12:16.766Z",
78-
"id": "act-1777475536766-znvnxd",
79-
"category": "session",
80-
"level": "info",
81-
"action": "session-ended",
82-
"message": "Activity logging session ended",
83-
"sessionId": "session-1777475536205-gwni1d",
84-
"details": {
85-
"duration": 561
86-
}
87-
},
88-
{
89-
"timestamp": "2026-04-29T18:26:26.851Z",
90-
"id": "act-1777487186851-xoz0gd",
91-
"category": "session",
92-
"level": "info",
93-
"action": "session-ended",
94-
"message": "Activity logging session ended",
95-
"sessionId": "session-1777487185491-mjphgk",
96-
"details": {
97-
"duration": 1360
98-
}
99-
},
100-
{
101-
"timestamp": "2026-04-29T18:32:05.958Z",
102-
"id": "act-1777487525958-aqr9x3",
103-
"category": "session",
104-
"level": "info",
105-
"action": "session-ended",
106-
"message": "Activity logging session ended",
107-
"sessionId": "session-1777487524642-56r8ap",
108-
"details": {
109-
"duration": 1316
110-
}
111-
},
112-
{
113-
"timestamp": "2026-04-29T18:37:39.245Z",
114-
"id": "act-1777487859245-5bmx56",
115-
"category": "session",
116-
"level": "info",
117-
"action": "session-ended",
118-
"message": "Activity logging session ended",
119-
"sessionId": "session-1777487857937-oqogwf",
120-
"details": {
121-
"duration": 1308
122-
}
123-
},
124-
{
125-
"timestamp": "2026-04-29T18:37:51.458Z",
126-
"id": "act-1777487871458-64n8bf",
127-
"category": "session",
128-
"level": "info",
129-
"action": "session-ended",
130-
"message": "Activity logging session ended",
131-
"sessionId": "session-1777487870896-famv6y",
47+
"sessionId": "session-1777567079575-qb3f0k",
13248
"details": {
13349
"duration": 562
13450
}
13551
},
13652
{
137-
"timestamp": "2026-04-29T18:38:34.498Z",
138-
"id": "act-1777487914498-t46tf4",
139-
"category": "session",
140-
"level": "info",
141-
"action": "session-ended",
142-
"message": "Activity logging session ended",
143-
"sessionId": "session-1777487913190-kbmhvi",
144-
"details": {
145-
"duration": 1308
146-
}
147-
},
148-
{
149-
"timestamp": "2026-04-29T19:54:52.146Z",
150-
"id": "act-1777492492146-y2h1p0",
151-
"category": "session",
152-
"level": "info",
153-
"action": "session-ended",
154-
"message": "Activity logging session ended",
155-
"sessionId": "session-1777492491575-y0eal0",
156-
"details": {
157-
"duration": 571
158-
}
159-
},
160-
{
161-
"timestamp": "2026-04-29T19:55:04.357Z",
162-
"id": "act-1777492504357-naec55",
163-
"category": "session",
164-
"level": "info",
165-
"action": "session-ended",
166-
"message": "Activity logging session ended",
167-
"sessionId": "session-1777492503095-3g3y10",
168-
"details": {
169-
"duration": 1262
170-
}
171-
},
172-
{
173-
"timestamp": "2026-04-29T19:55:04.460Z",
174-
"id": "act-1777492504460-3t48a0",
175-
"category": "session",
176-
"level": "info",
177-
"action": "session-ended",
178-
"message": "Activity logging session ended",
179-
"sessionId": "session-1777492503864-87d9vr",
180-
"details": {
181-
"duration": 596
182-
}
183-
},
184-
{
185-
"timestamp": "2026-04-29T19:57:48.968Z",
186-
"id": "act-1777492668968-sbzq7i",
187-
"category": "session",
188-
"level": "info",
189-
"action": "session-ended",
190-
"message": "Activity logging session ended",
191-
"sessionId": "session-1777492668427-s1euko",
192-
"details": {
193-
"duration": 541
194-
}
195-
},
196-
{
197-
"timestamp": "2026-04-29T19:57:49.078Z",
198-
"id": "act-1777492669078-zmc0rw",
199-
"category": "session",
200-
"level": "info",
201-
"action": "session-ended",
202-
"message": "Activity logging session ended",
203-
"sessionId": "session-1777492667742-n4wspr",
204-
"details": {
205-
"duration": 1336
206-
}
207-
},
208-
{
209-
"timestamp": "2026-04-29T19:59:14.975Z",
210-
"id": "act-1777492754975-nvg7qx",
211-
"category": "session",
212-
"level": "info",
213-
"action": "session-ended",
214-
"message": "Activity logging session ended",
215-
"sessionId": "session-1777492754426-kugbml",
216-
"details": {
217-
"duration": 549
218-
}
219-
},
220-
{
221-
"timestamp": "2026-04-29T20:03:37.417Z",
222-
"id": "act-1777493017417-lb6b32",
223-
"category": "session",
224-
"level": "info",
225-
"action": "session-ended",
226-
"message": "Activity logging session ended",
227-
"sessionId": "session-1777493016863-582b8z",
228-
"details": {
229-
"duration": 554
230-
}
231-
},
232-
{
233-
"timestamp": "2026-04-29T20:03:37.473Z",
234-
"id": "act-1777493017473-1cveyw",
235-
"category": "session",
236-
"level": "info",
237-
"action": "session-ended",
238-
"message": "Activity logging session ended",
239-
"sessionId": "session-1777493016128-rrzm4e",
240-
"details": {
241-
"duration": 1345
242-
}
243-
},
244-
{
245-
"timestamp": "2026-04-29T20:03:57.366Z",
246-
"id": "act-1777493037366-2shwye",
247-
"category": "session",
248-
"level": "info",
249-
"action": "session-ended",
250-
"message": "Activity logging session ended",
251-
"sessionId": "session-1777493036742-bysdql",
252-
"details": {
253-
"duration": 624
254-
}
255-
},
256-
{
257-
"timestamp": "2026-04-29T20:06:11.921Z",
258-
"id": "act-1777493171921-a19v80",
53+
"timestamp": "2026-04-30T16:57:55.917Z",
54+
"id": "act-1777568275917-1xkipi",
25955
"category": "session",
26056
"level": "info",
26157
"action": "session-ended",
26258
"message": "Activity logging session ended",
263-
"sessionId": "session-1777493170685-st5tpf",
59+
"sessionId": "session-1777568274176-jh5ebk",
26460
"details": {
265-
"duration": 1236
61+
"duration": 1741
26662
}
26763
},
26864
{
269-
"timestamp": "2026-04-29T20:06:24.328Z",
270-
"id": "act-1777493184328-ezvyod",
65+
"timestamp": "2026-04-30T16:58:00.056Z",
66+
"id": "act-1777568280056-rx4rby",
27167
"category": "session",
27268
"level": "info",
27369
"action": "session-ended",
27470
"message": "Activity logging session ended",
275-
"sessionId": "session-1777493183048-e4wv3i",
71+
"sessionId": "session-1777568279455-aro3fh",
27672
"details": {
277-
"duration": 1280
73+
"duration": 601
27874
}
27975
},
28076
{
281-
"timestamp": "2026-04-29T20:07:31.567Z",
282-
"id": "act-1777493251567-npafme",
77+
"timestamp": "2026-04-30T16:59:13.458Z",
78+
"id": "act-1777568353458-tuolqi",
28379
"category": "session",
28480
"level": "info",
28581
"action": "session-ended",
28682
"message": "Activity logging session ended",
287-
"sessionId": "session-1777493250961-01sm0s",
83+
"sessionId": "session-1777568352816-hwquty",
28884
"details": {
289-
"duration": 606
85+
"duration": 642
29086
}
29187
}
29288
],
29389
"stats": {
294-
"total": 24,
90+
"total": 7,
29591
"byCategory": {
296-
"session": 24
92+
"session": 7
29793
},
29894
"byLevel": {
299-
"info": 24
95+
"info": 7
30096
}
30197
}
30298
}

.strray/inference/latest-workflow.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"timestamp": "2026-04-30T11:15:12.926Z",
2+
"timestamp": "2026-04-30T17:01:29.683Z",
33
"dataLocations": {
44
"reflections": [
55
"/Users/blaze/dev/stringray/docs/reflections/100-PERCENT-TEST-SUCCESS-2026-03-13.md",

.strray/inference/workflow-status.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@
33
"phase": "data_gathering",
44
"nextAgent": "researcher",
55
"message": "Invoke @researcher to begin data gathering phase",
6-
"workflowId": "inference-1777547712928"
6+
"workflowId": "inference-1777568489687"
77
}

.strray/state/state.json

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
"voting:history": [
3+
{
4+
"id": "vote_1777568577721_b192cb31",
5+
"sessionId": "inference-governance-1777568577721",
6+
"topic": "Fix recurring bug pattern (7x across 5 sessions)",
7+
"voteCount": 2,
8+
"strategy": "majority_vote",
9+
"decision": "approve",
10+
"confidence": 1,
11+
"participantCount": 2,
12+
"timestamp": 1777568577721,
13+
"resolvedAt": 1777568607696
14+
},
15+
{
16+
"id": "vote_1777568607696_c29e5d57",
17+
"sessionId": "inference-governance-1777568577721",
18+
"topic": "Remove accumulated dead code (2x across 2 sessions)",
19+
"voteCount": 2,
20+
"strategy": "consensus",
21+
"decision": "approve",
22+
"confidence": 0.5831111111111112,
23+
"participantCount": 2,
24+
"timestamp": 1777568607696,
25+
"resolvedAt": 1777568635576
26+
}
27+
]
28+
}

0 commit comments

Comments
 (0)