progmune-runtime 2.0.2 → 2.1.0

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.
Files changed (107) hide show
  1. package/.mcp.json +11 -0
  2. package/.progmune_allowlist +50 -0
  3. package/.test_report/test_report.md +87 -0
  4. package/Dockerfile +2 -10
  5. package/FAQ.md +167 -0
  6. package/demo-project/auth.ts +55 -0
  7. package/demo-project/tsconfig.json +8 -0
  8. package/dist/ab-stats.js +11 -0
  9. package/dist/acl-breakdown.js +13 -0
  10. package/dist/all-sessions.js +11 -0
  11. package/dist/antibody-stats.js +11 -0
  12. package/dist/audit.js +218 -0
  13. package/dist/benchmark-count.js +7 -0
  14. package/dist/benchmark-full.js +17 -0
  15. package/dist/benchmark-pass-rate.js +54 -0
  16. package/dist/benchmark-report.js +67 -0
  17. package/dist/benchmark-save.js +62 -0
  18. package/dist/benchmark-status.js +15 -0
  19. package/dist/branch-ledger.js +365 -0
  20. package/dist/branch-tree-count.js +14 -0
  21. package/dist/check.js +506 -0
  22. package/dist/common-fixpath.js +12 -0
  23. package/dist/constraint-types.js +12 -0
  24. package/dist/deterministic-replay.js +277 -0
  25. package/dist/emitter.js +112 -12
  26. package/dist/exec-metrics.js +11 -0
  27. package/dist/execute.js +242 -0
  28. package/dist/extract-ir.js +550 -5
  29. package/dist/failure-collector.js +143 -0
  30. package/dist/failure-corpus.js +481 -35
  31. package/dist/failure-report.js +11 -0
  32. package/dist/failures.js +11 -0
  33. package/dist/fast-path-hits.js +13 -0
  34. package/dist/feedback.js +6 -3
  35. package/dist/file-lock.js +82 -0
  36. package/dist/find-session.js +10 -0
  37. package/dist/fingerprint-list.js +15 -0
  38. package/dist/gen-history-log.js +13 -0
  39. package/dist/generate.js +2 -1
  40. package/dist/generate_500.js +4 -2
  41. package/dist/genome.js +11 -0
  42. package/dist/heatmap-data.js +11 -0
  43. package/dist/heatmap.js +11 -0
  44. package/dist/immune-reporter.js +137 -0
  45. package/dist/learned.js +11 -0
  46. package/dist/ledger-registry.js +241 -0
  47. package/dist/llm.js +43 -2
  48. package/dist/load-benchmarks.js +47 -0
  49. package/dist/main.js +2 -1
  50. package/dist/mcp-server.mjs +446 -34
  51. package/dist/memory-layer.js +51 -13
  52. package/dist/metrics.js +11 -0
  53. package/dist/obs-web.js +561 -0
  54. package/dist/p0_ssg_demo.js +255 -40
  55. package/dist/planner.js +933 -65
  56. package/dist/protocol-registry.js +105 -0
  57. package/dist/recent-session.js +12 -0
  58. package/dist/repair-proposal.js +353 -0
  59. package/dist/report.js +32 -0
  60. package/dist/runtime-invariants.js +161 -0
  61. package/dist/runtime-types.js +117 -0
  62. package/dist/search-planner.js +38 -9
  63. package/dist/semantic-snapshot.js +155 -0
  64. package/dist/semantic-trace.js +1497 -0
  65. package/dist/semantic-validator.js +3 -2
  66. package/dist/semantic_guard_test.js +2 -1
  67. package/dist/sessions.js +11 -0
  68. package/dist/ssg-validator.js +658 -20
  69. package/dist/svl-distribution.js +11 -0
  70. package/dist/terminal-status.js +11 -0
  71. package/dist/test_failure_corpus.js +3 -1
  72. package/dist/token-savings.js +11 -0
  73. package/dist/total-repairs.js +12 -0
  74. package/dist/unresolved-count.js +12 -0
  75. package/dist/valid-fingerprints.js +13 -0
  76. package/dist/validator.js +116 -60
  77. package/dist/verify-fps.js +11 -0
  78. package/dist/verify-ledgers.js +11 -0
  79. package/docs/whitepaper-style.css +77 -0
  80. package/docs/whitepaper-v2.1.md +609 -0
  81. package/docs/whitepaper-v2.2.md +1064 -0
  82. package/docs/whitepaper-v2.2.pdf +0 -0
  83. package/fly.toml +1 -1
  84. package/package.json +13 -4
  85. package/protocols.json +136 -0
  86. package/public/dashboard.html +119 -0
  87. package/readme.md +829 -0
  88. package/server/hub.js +84 -12
  89. package/test/replay-golden/sess_1780063202050_mgeld.json +9 -0
  90. package/test/replay-golden/sess_1780064032560_gocld.json +354 -0
  91. package/test/replay-golden/sess_1780064413331_s2709.json +606 -0
  92. package/test/replay-golden/sess_1780064792710_y3avo.json +614 -0
  93. package/test/replay-golden.ts +84 -0
  94. package/test_benchmark.js +165 -0
  95. package/test_comprehensive.mjs +638 -0
  96. package/test_concurrency.js +129 -0
  97. package/test_ir_robustness.js +85 -0
  98. package/test_semantic_contracts.js +269 -0
  99. package/test_ssg_stress.js +156 -0
  100. package/test_svl3.js +58 -0
  101. package/tsconfig.json +1 -1
  102. package/.env.example +0 -3
  103. package/.progmune_memory/fingerprints.json +0 -7
  104. package/.progmune_memory/opt_in.json +0 -4
  105. package/README.md +0 -118
  106. package/dist/mcp-server.js +0 -55
  107. package/immune_hub_data/2026-05-14.json +0 -50
@@ -0,0 +1,606 @@
1
+ {
2
+ "sessionId": "sess_1780064413331_s2709",
3
+ "intent": "extract IR then validate",
4
+ "attempts": [
5
+ {
6
+ "id": "att_1780064417139_a2tyo",
7
+ "sessionId": "sess_1780064413331_s2709",
8
+ "attemptNumber": 1,
9
+ "inputIntent": "extract IR then validate",
10
+ "plannerSeed": "fca35c14",
11
+ "constraintSnapshotId": "snap_1780064413341_82709ff22603",
12
+ "generatedActions": [
13
+ {
14
+ "kind": "assign",
15
+ "target": "project_root",
16
+ "value": "/path/to/project"
17
+ },
18
+ {
19
+ "kind": "call",
20
+ "function": "ir_data",
21
+ "args": [
22
+ "project_root"
23
+ ],
24
+ "assignTo": "extractIR"
25
+ },
26
+ {
27
+ "kind": "call",
28
+ "function": "validation_result",
29
+ "args": [
30
+ "ir_data"
31
+ ],
32
+ "assignTo": "validateActionSequence"
33
+ },
34
+ {
35
+ "kind": "return",
36
+ "value": "validation_result"
37
+ }
38
+ ],
39
+ "transitions": [],
40
+ "violations": [
41
+ {
42
+ "svl": 1,
43
+ "violatedConstraint": "symbol_existence",
44
+ "actionIndex": 0,
45
+ "missingStates": [
46
+ "ir_data"
47
+ ],
48
+ "description": "函数 'ir_data' 不存在; 函数 'validation_result' 不存在"
49
+ }
50
+ ],
51
+ "outcome": "constraint_violation",
52
+ "timestamp": 1780064417139,
53
+ "llmCallCount": 0,
54
+ "durationMs": 0
55
+ },
56
+ {
57
+ "id": "att_1780064420679_sb22s",
58
+ "sessionId": "sess_1780064413331_s2709",
59
+ "attemptNumber": 2,
60
+ "inputIntent": "extract IR then validate",
61
+ "plannerSeed": "ea3207f1",
62
+ "constraintSnapshotId": "snap_1780064413341_82709ff22603",
63
+ "generatedActions": [
64
+ {
65
+ "kind": "call",
66
+ "function": "loadIR",
67
+ "args": [
68
+ {
69
+ "name": "p0",
70
+ "type": "any",
71
+ "value": []
72
+ }
73
+ ]
74
+ },
75
+ {
76
+ "kind": "assign",
77
+ "target": "ir_data",
78
+ "value": "loadIR_result"
79
+ },
80
+ {
81
+ "kind": "call",
82
+ "function": "validateActionSequence",
83
+ "args": [
84
+ {
85
+ "name": "actions",
86
+ "type": "Action[]",
87
+ "value": [
88
+ "ir_data"
89
+ ]
90
+ }
91
+ ]
92
+ },
93
+ {
94
+ "kind": "assign",
95
+ "target": "validation_result",
96
+ "value": "validateActionSequence_result"
97
+ },
98
+ {
99
+ "kind": "return",
100
+ "value": "validation_result"
101
+ }
102
+ ],
103
+ "transitions": [],
104
+ "violations": [
105
+ {
106
+ "svl": 2,
107
+ "violatedConstraint": "type_mismatch",
108
+ "actionIndex": 0,
109
+ "description": "参数数量不匹配: 期望 0, 实际 1"
110
+ }
111
+ ],
112
+ "outcome": "constraint_violation",
113
+ "timestamp": 1780064420679,
114
+ "llmCallCount": 0,
115
+ "durationMs": 0
116
+ },
117
+ {
118
+ "id": "att_1780064425837_wuinb",
119
+ "sessionId": "sess_1780064413331_s2709",
120
+ "attemptNumber": 3,
121
+ "inputIntent": "extract IR then validate",
122
+ "plannerSeed": "85f42c5e",
123
+ "constraintSnapshotId": "snap_1780064413341_82709ff22603",
124
+ "generatedActions": [
125
+ {
126
+ "kind": "call",
127
+ "function": "extractIRPython",
128
+ "args": [
129
+ {
130
+ "name": "projectRoot",
131
+ "type": "string",
132
+ "value": "{{projectRoot}}"
133
+ }
134
+ ],
135
+ "assignTo": "extractIRPython_result"
136
+ },
137
+ {
138
+ "kind": "call",
139
+ "function": "extractDirectCalls",
140
+ "args": [
141
+ {
142
+ "name": "func",
143
+ "type": "FunctionDeclaration | ArrowFunction",
144
+ "value": "{{func}}"
145
+ }
146
+ ],
147
+ "assignTo": "extractDirectCalls_result"
148
+ },
149
+ {
150
+ "kind": "call",
151
+ "function": "extractIR",
152
+ "args": [
153
+ {
154
+ "name": "projectRoot",
155
+ "type": "string",
156
+ "value": "{{projectRoot}}"
157
+ }
158
+ ],
159
+ "assignTo": "extractIR_result"
160
+ },
161
+ {
162
+ "kind": "call",
163
+ "function": "extractFingerprints",
164
+ "args": [
165
+ {
166
+ "name": "cursor",
167
+ "type": "{ lastTimestamp: string | null }",
168
+ "value": "{{cursor}}"
169
+ }
170
+ ],
171
+ "assignTo": "extractFingerprints_result"
172
+ },
173
+ {
174
+ "kind": "call",
175
+ "function": "extractKeywords",
176
+ "args": [
177
+ {
178
+ "name": "intent",
179
+ "type": "string",
180
+ "value": "{{intent}}"
181
+ }
182
+ ],
183
+ "assignTo": "extractKeywords_result"
184
+ },
185
+ {
186
+ "kind": "call",
187
+ "function": "ensureDir",
188
+ "args": [
189
+ {
190
+ "name": "dir",
191
+ "type": "string",
192
+ "value": "{{dir}}"
193
+ }
194
+ ],
195
+ "assignTo": "ensureDir_result"
196
+ },
197
+ {
198
+ "kind": "call",
199
+ "function": "ensureLockDir",
200
+ "args": [],
201
+ "assignTo": "ensureLockDir_result"
202
+ },
203
+ {
204
+ "kind": "call",
205
+ "function": "loadProtocolsFromIR",
206
+ "args": [
207
+ {
208
+ "name": "ir",
209
+ "type": "any[]",
210
+ "value": "{{ir}}"
211
+ }
212
+ ],
213
+ "assignTo": "loadProtocolsFromIR_result"
214
+ },
215
+ {
216
+ "kind": "call",
217
+ "function": "attemptSSGRepair",
218
+ "args": [
219
+ {
220
+ "name": "actions",
221
+ "type": "Action[]",
222
+ "value": "{{actions}}"
223
+ },
224
+ {
225
+ "name": "rejection",
226
+ "type": "SSGRejection",
227
+ "value": "{{rejection}}"
228
+ },
229
+ {
230
+ "name": "ir",
231
+ "type": "any[]",
232
+ "value": "{{ir}}"
233
+ },
234
+ {
235
+ "name": "protocols",
236
+ "type": "FunctionProtocol[]",
237
+ "value": "{{protocols}}"
238
+ },
239
+ {
240
+ "name": "namespaceInitialStates",
241
+ "type": "Map<string, string>",
242
+ "value": "{{namespaceInitialStates}}"
243
+ }
244
+ ],
245
+ "assignTo": "attemptSSGRepair_result"
246
+ },
247
+ {
248
+ "kind": "call",
249
+ "function": "loadIR",
250
+ "args": [],
251
+ "assignTo": "loadIR_result"
252
+ },
253
+ {
254
+ "kind": "call",
255
+ "function": "mkdirSync",
256
+ "args": [
257
+ {
258
+ "name": "path",
259
+ "type": "string",
260
+ "value": "{{path}}"
261
+ },
262
+ {
263
+ "name": "options",
264
+ "type": "object",
265
+ "value": "{{options}}"
266
+ }
267
+ ]
268
+ },
269
+ {
270
+ "kind": "call",
271
+ "function": "readdirSync",
272
+ "args": [
273
+ {
274
+ "name": "path",
275
+ "type": "string",
276
+ "value": "{{path}}"
277
+ }
278
+ ],
279
+ "assignTo": "readdirSync_result"
280
+ },
281
+ {
282
+ "kind": "call",
283
+ "function": "rmdirSync",
284
+ "args": [],
285
+ "assignTo": "rmdirSync_result"
286
+ },
287
+ {
288
+ "kind": "call",
289
+ "function": "require",
290
+ "args": [],
291
+ "assignTo": "require_result"
292
+ },
293
+ {
294
+ "kind": "call",
295
+ "function": "dirname",
296
+ "args": [
297
+ {
298
+ "name": "path",
299
+ "type": "string",
300
+ "value": "{{path}}"
301
+ }
302
+ ],
303
+ "assignTo": "dirname_result"
304
+ },
305
+ {
306
+ "kind": "call",
307
+ "function": "validateProtocolWithTransitions",
308
+ "args": [
309
+ {
310
+ "name": "actions",
311
+ "type": "Action[]",
312
+ "value": "{{actions}}"
313
+ },
314
+ {
315
+ "name": "protocols",
316
+ "type": "FunctionProtocol[]",
317
+ "value": "{{protocols}}"
318
+ },
319
+ {
320
+ "name": "namespaceInitialStates",
321
+ "type": "Map<string, string>",
322
+ "value": "{{namespaceInitialStates}}"
323
+ }
324
+ ],
325
+ "assignTo": "validateProtocolWithTransitions_result"
326
+ },
327
+ {
328
+ "kind": "call",
329
+ "function": "validateAction",
330
+ "args": [
331
+ {
332
+ "name": "action",
333
+ "type": "Action",
334
+ "value": "{{action}}"
335
+ }
336
+ ],
337
+ "assignTo": "validateAction_result"
338
+ },
339
+ {
340
+ "kind": "call",
341
+ "function": "validateActionSequence",
342
+ "args": [
343
+ {
344
+ "name": "actions",
345
+ "type": "Action[]",
346
+ "value": "{{actions}}"
347
+ }
348
+ ],
349
+ "assignTo": "validateActionSequence_result"
350
+ }
351
+ ],
352
+ "transitions": [],
353
+ "violations": [],
354
+ "outcome": "success",
355
+ "timestamp": 1780064425837,
356
+ "llmCallCount": 0,
357
+ "durationMs": 0
358
+ }
359
+ ],
360
+ "resolved": true,
361
+ "startedAt": 1780064413331,
362
+ "successfulAttempt": {
363
+ "id": "att_1780064425837_wuinb",
364
+ "sessionId": "sess_1780064413331_s2709",
365
+ "attemptNumber": 3,
366
+ "inputIntent": "extract IR then validate",
367
+ "plannerSeed": "85f42c5e",
368
+ "constraintSnapshotId": "snap_1780064413341_82709ff22603",
369
+ "generatedActions": [
370
+ {
371
+ "kind": "call",
372
+ "function": "extractIRPython",
373
+ "args": [
374
+ {
375
+ "name": "projectRoot",
376
+ "type": "string",
377
+ "value": "{{projectRoot}}"
378
+ }
379
+ ],
380
+ "assignTo": "extractIRPython_result"
381
+ },
382
+ {
383
+ "kind": "call",
384
+ "function": "extractDirectCalls",
385
+ "args": [
386
+ {
387
+ "name": "func",
388
+ "type": "FunctionDeclaration | ArrowFunction",
389
+ "value": "{{func}}"
390
+ }
391
+ ],
392
+ "assignTo": "extractDirectCalls_result"
393
+ },
394
+ {
395
+ "kind": "call",
396
+ "function": "extractIR",
397
+ "args": [
398
+ {
399
+ "name": "projectRoot",
400
+ "type": "string",
401
+ "value": "{{projectRoot}}"
402
+ }
403
+ ],
404
+ "assignTo": "extractIR_result"
405
+ },
406
+ {
407
+ "kind": "call",
408
+ "function": "extractFingerprints",
409
+ "args": [
410
+ {
411
+ "name": "cursor",
412
+ "type": "{ lastTimestamp: string | null }",
413
+ "value": "{{cursor}}"
414
+ }
415
+ ],
416
+ "assignTo": "extractFingerprints_result"
417
+ },
418
+ {
419
+ "kind": "call",
420
+ "function": "extractKeywords",
421
+ "args": [
422
+ {
423
+ "name": "intent",
424
+ "type": "string",
425
+ "value": "{{intent}}"
426
+ }
427
+ ],
428
+ "assignTo": "extractKeywords_result"
429
+ },
430
+ {
431
+ "kind": "call",
432
+ "function": "ensureDir",
433
+ "args": [
434
+ {
435
+ "name": "dir",
436
+ "type": "string",
437
+ "value": "{{dir}}"
438
+ }
439
+ ],
440
+ "assignTo": "ensureDir_result"
441
+ },
442
+ {
443
+ "kind": "call",
444
+ "function": "ensureLockDir",
445
+ "args": [],
446
+ "assignTo": "ensureLockDir_result"
447
+ },
448
+ {
449
+ "kind": "call",
450
+ "function": "loadProtocolsFromIR",
451
+ "args": [
452
+ {
453
+ "name": "ir",
454
+ "type": "any[]",
455
+ "value": "{{ir}}"
456
+ }
457
+ ],
458
+ "assignTo": "loadProtocolsFromIR_result"
459
+ },
460
+ {
461
+ "kind": "call",
462
+ "function": "attemptSSGRepair",
463
+ "args": [
464
+ {
465
+ "name": "actions",
466
+ "type": "Action[]",
467
+ "value": "{{actions}}"
468
+ },
469
+ {
470
+ "name": "rejection",
471
+ "type": "SSGRejection",
472
+ "value": "{{rejection}}"
473
+ },
474
+ {
475
+ "name": "ir",
476
+ "type": "any[]",
477
+ "value": "{{ir}}"
478
+ },
479
+ {
480
+ "name": "protocols",
481
+ "type": "FunctionProtocol[]",
482
+ "value": "{{protocols}}"
483
+ },
484
+ {
485
+ "name": "namespaceInitialStates",
486
+ "type": "Map<string, string>",
487
+ "value": "{{namespaceInitialStates}}"
488
+ }
489
+ ],
490
+ "assignTo": "attemptSSGRepair_result"
491
+ },
492
+ {
493
+ "kind": "call",
494
+ "function": "loadIR",
495
+ "args": [],
496
+ "assignTo": "loadIR_result"
497
+ },
498
+ {
499
+ "kind": "call",
500
+ "function": "mkdirSync",
501
+ "args": [
502
+ {
503
+ "name": "path",
504
+ "type": "string",
505
+ "value": "{{path}}"
506
+ },
507
+ {
508
+ "name": "options",
509
+ "type": "object",
510
+ "value": "{{options}}"
511
+ }
512
+ ]
513
+ },
514
+ {
515
+ "kind": "call",
516
+ "function": "readdirSync",
517
+ "args": [
518
+ {
519
+ "name": "path",
520
+ "type": "string",
521
+ "value": "{{path}}"
522
+ }
523
+ ],
524
+ "assignTo": "readdirSync_result"
525
+ },
526
+ {
527
+ "kind": "call",
528
+ "function": "rmdirSync",
529
+ "args": [],
530
+ "assignTo": "rmdirSync_result"
531
+ },
532
+ {
533
+ "kind": "call",
534
+ "function": "require",
535
+ "args": [],
536
+ "assignTo": "require_result"
537
+ },
538
+ {
539
+ "kind": "call",
540
+ "function": "dirname",
541
+ "args": [
542
+ {
543
+ "name": "path",
544
+ "type": "string",
545
+ "value": "{{path}}"
546
+ }
547
+ ],
548
+ "assignTo": "dirname_result"
549
+ },
550
+ {
551
+ "kind": "call",
552
+ "function": "validateProtocolWithTransitions",
553
+ "args": [
554
+ {
555
+ "name": "actions",
556
+ "type": "Action[]",
557
+ "value": "{{actions}}"
558
+ },
559
+ {
560
+ "name": "protocols",
561
+ "type": "FunctionProtocol[]",
562
+ "value": "{{protocols}}"
563
+ },
564
+ {
565
+ "name": "namespaceInitialStates",
566
+ "type": "Map<string, string>",
567
+ "value": "{{namespaceInitialStates}}"
568
+ }
569
+ ],
570
+ "assignTo": "validateProtocolWithTransitions_result"
571
+ },
572
+ {
573
+ "kind": "call",
574
+ "function": "validateAction",
575
+ "args": [
576
+ {
577
+ "name": "action",
578
+ "type": "Action",
579
+ "value": "{{action}}"
580
+ }
581
+ ],
582
+ "assignTo": "validateAction_result"
583
+ },
584
+ {
585
+ "kind": "call",
586
+ "function": "validateActionSequence",
587
+ "args": [
588
+ {
589
+ "name": "actions",
590
+ "type": "Action[]",
591
+ "value": "{{actions}}"
592
+ }
593
+ ],
594
+ "assignTo": "validateActionSequence_result"
595
+ }
596
+ ],
597
+ "transitions": [],
598
+ "violations": [],
599
+ "outcome": "success",
600
+ "timestamp": 1780064425837,
601
+ "llmCallCount": 0,
602
+ "durationMs": 0
603
+ },
604
+ "snapshotId": "snap_1780064413341_82709ff22603",
605
+ "endedAt": 1780064425837
606
+ }