instar 1.3.347 → 1.3.349
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/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +118 -4
- package/dist/commands/server.js.map +1 -1
- package/dist/core/CoherenceJournal.d.ts +13 -0
- package/dist/core/CoherenceJournal.d.ts.map +1 -1
- package/dist/core/CoherenceJournal.js +16 -0
- package/dist/core/CoherenceJournal.js.map +1 -1
- package/dist/core/MeshRpc.d.ts +17 -0
- package/dist/core/MeshRpc.d.ts.map +1 -1
- package/dist/core/MeshRpc.js +5 -1
- package/dist/core/MeshRpc.js.map +1 -1
- package/dist/core/PeerPresencePuller.d.ts +45 -0
- package/dist/core/PeerPresencePuller.d.ts.map +1 -1
- package/dist/core/PeerPresencePuller.js +59 -0
- package/dist/core/PeerPresencePuller.js.map +1 -1
- package/dist/redteam/ScenarioPack.d.ts +22 -5
- package/dist/redteam/ScenarioPack.d.ts.map +1 -1
- package/dist/redteam/ScenarioPack.js +19 -7
- package/dist/redteam/ScenarioPack.js.map +1 -1
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +28 -0
- package/dist/server/routes.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +46 -46
- package/upgrades/1.3.348.md +57 -0
- package/upgrades/1.3.349.md +37 -0
- package/upgrades/coherence-journal-meshwire.eli16.md +9 -0
- package/upgrades/projects-advance-ghprview-866.eli16.md +11 -0
- package/upgrades/side-effects/coherence-journal-meshwire.md +49 -0
- package/upgrades/side-effects/projects-advance-ghprview-866.md +44 -0
- package/upgrades/side-effects/resolver-verdict-honesty.md +45 -0
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./builtin-manifest.schema.json",
|
|
3
3
|
"schemaVersion": 1,
|
|
4
|
-
"generatedAt": "2026-06-
|
|
5
|
-
"instarVersion": "1.3.
|
|
4
|
+
"generatedAt": "2026-06-06T06:49:15.721Z",
|
|
5
|
+
"instarVersion": "1.3.349",
|
|
6
6
|
"entryCount": 199,
|
|
7
7
|
"entries": {
|
|
8
8
|
"hook:session-start": {
|
|
@@ -418,7 +418,7 @@
|
|
|
418
418
|
"type": "route-group",
|
|
419
419
|
"domain": "monitoring",
|
|
420
420
|
"sourcePath": "src/server/routes.ts",
|
|
421
|
-
"contentHash": "
|
|
421
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
422
422
|
"since": "2025-01-01"
|
|
423
423
|
},
|
|
424
424
|
"route-group:agents": {
|
|
@@ -426,7 +426,7 @@
|
|
|
426
426
|
"type": "route-group",
|
|
427
427
|
"domain": "sessions",
|
|
428
428
|
"sourcePath": "src/server/routes.ts",
|
|
429
|
-
"contentHash": "
|
|
429
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
430
430
|
"since": "2025-01-01"
|
|
431
431
|
},
|
|
432
432
|
"route-group:backups": {
|
|
@@ -434,7 +434,7 @@
|
|
|
434
434
|
"type": "route-group",
|
|
435
435
|
"domain": "operations",
|
|
436
436
|
"sourcePath": "src/server/routes.ts",
|
|
437
|
-
"contentHash": "
|
|
437
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
438
438
|
"since": "2025-01-01"
|
|
439
439
|
},
|
|
440
440
|
"route-group:git": {
|
|
@@ -442,7 +442,7 @@
|
|
|
442
442
|
"type": "route-group",
|
|
443
443
|
"domain": "coordination",
|
|
444
444
|
"sourcePath": "src/server/routes.ts",
|
|
445
|
-
"contentHash": "
|
|
445
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
446
446
|
"since": "2025-01-01"
|
|
447
447
|
},
|
|
448
448
|
"route-group:memory": {
|
|
@@ -450,7 +450,7 @@
|
|
|
450
450
|
"type": "route-group",
|
|
451
451
|
"domain": "memory",
|
|
452
452
|
"sourcePath": "src/server/routes.ts",
|
|
453
|
-
"contentHash": "
|
|
453
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
454
454
|
"since": "2025-01-01"
|
|
455
455
|
},
|
|
456
456
|
"route-group:semantic": {
|
|
@@ -458,7 +458,7 @@
|
|
|
458
458
|
"type": "route-group",
|
|
459
459
|
"domain": "memory",
|
|
460
460
|
"sourcePath": "src/server/routes.ts",
|
|
461
|
-
"contentHash": "
|
|
461
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
462
462
|
"since": "2025-01-01"
|
|
463
463
|
},
|
|
464
464
|
"route-group:status": {
|
|
@@ -466,7 +466,7 @@
|
|
|
466
466
|
"type": "route-group",
|
|
467
467
|
"domain": "monitoring",
|
|
468
468
|
"sourcePath": "src/server/routes.ts",
|
|
469
|
-
"contentHash": "
|
|
469
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
470
470
|
"since": "2025-01-01"
|
|
471
471
|
},
|
|
472
472
|
"route-group:capabilities": {
|
|
@@ -474,7 +474,7 @@
|
|
|
474
474
|
"type": "route-group",
|
|
475
475
|
"domain": "mapping",
|
|
476
476
|
"sourcePath": "src/server/routes.ts",
|
|
477
|
-
"contentHash": "
|
|
477
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
478
478
|
"since": "2025-01-01"
|
|
479
479
|
},
|
|
480
480
|
"route-group:project-map": {
|
|
@@ -482,7 +482,7 @@
|
|
|
482
482
|
"type": "route-group",
|
|
483
483
|
"domain": "mapping",
|
|
484
484
|
"sourcePath": "src/server/routes.ts",
|
|
485
|
-
"contentHash": "
|
|
485
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
486
486
|
"since": "2025-01-01"
|
|
487
487
|
},
|
|
488
488
|
"route-group:coherence": {
|
|
@@ -490,7 +490,7 @@
|
|
|
490
490
|
"type": "route-group",
|
|
491
491
|
"domain": "coherence",
|
|
492
492
|
"sourcePath": "src/server/routes.ts",
|
|
493
|
-
"contentHash": "
|
|
493
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
494
494
|
"since": "2025-01-01"
|
|
495
495
|
},
|
|
496
496
|
"route-group:topic-bindings": {
|
|
@@ -498,7 +498,7 @@
|
|
|
498
498
|
"type": "route-group",
|
|
499
499
|
"domain": "sessions",
|
|
500
500
|
"sourcePath": "src/server/routes.ts",
|
|
501
|
-
"contentHash": "
|
|
501
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
502
502
|
"since": "2025-01-01"
|
|
503
503
|
},
|
|
504
504
|
"route-group:context": {
|
|
@@ -506,7 +506,7 @@
|
|
|
506
506
|
"type": "route-group",
|
|
507
507
|
"domain": "context",
|
|
508
508
|
"sourcePath": "src/server/routes.ts",
|
|
509
|
-
"contentHash": "
|
|
509
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
510
510
|
"since": "2025-01-01"
|
|
511
511
|
},
|
|
512
512
|
"route-group:scope-coherence": {
|
|
@@ -514,7 +514,7 @@
|
|
|
514
514
|
"type": "route-group",
|
|
515
515
|
"domain": "coherence",
|
|
516
516
|
"sourcePath": "src/server/routes.ts",
|
|
517
|
-
"contentHash": "
|
|
517
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
518
518
|
"since": "2025-01-01"
|
|
519
519
|
},
|
|
520
520
|
"route-group:canonical-state": {
|
|
@@ -522,7 +522,7 @@
|
|
|
522
522
|
"type": "route-group",
|
|
523
523
|
"domain": "state",
|
|
524
524
|
"sourcePath": "src/server/routes.ts",
|
|
525
|
-
"contentHash": "
|
|
525
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
526
526
|
"since": "2025-01-01"
|
|
527
527
|
},
|
|
528
528
|
"route-group:ci": {
|
|
@@ -530,7 +530,7 @@
|
|
|
530
530
|
"type": "route-group",
|
|
531
531
|
"domain": "monitoring",
|
|
532
532
|
"sourcePath": "src/server/routes.ts",
|
|
533
|
-
"contentHash": "
|
|
533
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
534
534
|
"since": "2025-01-01"
|
|
535
535
|
},
|
|
536
536
|
"route-group:sessions": {
|
|
@@ -538,7 +538,7 @@
|
|
|
538
538
|
"type": "route-group",
|
|
539
539
|
"domain": "sessions",
|
|
540
540
|
"sourcePath": "src/server/routes.ts",
|
|
541
|
-
"contentHash": "
|
|
541
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
542
542
|
"since": "2025-01-01"
|
|
543
543
|
},
|
|
544
544
|
"route-group:jobs": {
|
|
@@ -546,7 +546,7 @@
|
|
|
546
546
|
"type": "route-group",
|
|
547
547
|
"domain": "scheduling",
|
|
548
548
|
"sourcePath": "src/server/routes.ts",
|
|
549
|
-
"contentHash": "
|
|
549
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
550
550
|
"since": "2025-01-01"
|
|
551
551
|
},
|
|
552
552
|
"route-group:skip-ledger": {
|
|
@@ -554,7 +554,7 @@
|
|
|
554
554
|
"type": "route-group",
|
|
555
555
|
"domain": "scheduling",
|
|
556
556
|
"sourcePath": "src/server/routes.ts",
|
|
557
|
-
"contentHash": "
|
|
557
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
558
558
|
"since": "2025-01-01"
|
|
559
559
|
},
|
|
560
560
|
"route-group:telegram": {
|
|
@@ -562,7 +562,7 @@
|
|
|
562
562
|
"type": "route-group",
|
|
563
563
|
"domain": "communication",
|
|
564
564
|
"sourcePath": "src/server/routes.ts",
|
|
565
|
-
"contentHash": "
|
|
565
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
566
566
|
"since": "2025-01-01"
|
|
567
567
|
},
|
|
568
568
|
"route-group:attention": {
|
|
@@ -570,7 +570,7 @@
|
|
|
570
570
|
"type": "route-group",
|
|
571
571
|
"domain": "communication",
|
|
572
572
|
"sourcePath": "src/server/routes.ts",
|
|
573
|
-
"contentHash": "
|
|
573
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
574
574
|
"since": "2025-01-01"
|
|
575
575
|
},
|
|
576
576
|
"route-group:relationships": {
|
|
@@ -578,7 +578,7 @@
|
|
|
578
578
|
"type": "route-group",
|
|
579
579
|
"domain": "relationships",
|
|
580
580
|
"sourcePath": "src/server/routes.ts",
|
|
581
|
-
"contentHash": "
|
|
581
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
582
582
|
"since": "2025-01-01"
|
|
583
583
|
},
|
|
584
584
|
"route-group:feedback": {
|
|
@@ -586,7 +586,7 @@
|
|
|
586
586
|
"type": "route-group",
|
|
587
587
|
"domain": "feedback",
|
|
588
588
|
"sourcePath": "src/server/routes.ts",
|
|
589
|
-
"contentHash": "
|
|
589
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
590
590
|
"since": "2025-01-01"
|
|
591
591
|
},
|
|
592
592
|
"route-group:updates": {
|
|
@@ -594,7 +594,7 @@
|
|
|
594
594
|
"type": "route-group",
|
|
595
595
|
"domain": "updates",
|
|
596
596
|
"sourcePath": "src/server/routes.ts",
|
|
597
|
-
"contentHash": "
|
|
597
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
598
598
|
"since": "2025-01-01"
|
|
599
599
|
},
|
|
600
600
|
"route-group:dispatches": {
|
|
@@ -602,7 +602,7 @@
|
|
|
602
602
|
"type": "route-group",
|
|
603
603
|
"domain": "dispatches",
|
|
604
604
|
"sourcePath": "src/server/routes.ts",
|
|
605
|
-
"contentHash": "
|
|
605
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
606
606
|
"since": "2025-01-01"
|
|
607
607
|
},
|
|
608
608
|
"route-group:quota": {
|
|
@@ -610,7 +610,7 @@
|
|
|
610
610
|
"type": "route-group",
|
|
611
611
|
"domain": "monitoring",
|
|
612
612
|
"sourcePath": "src/server/routes.ts",
|
|
613
|
-
"contentHash": "
|
|
613
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
614
614
|
"since": "2025-01-01"
|
|
615
615
|
},
|
|
616
616
|
"route-group:publishing": {
|
|
@@ -618,7 +618,7 @@
|
|
|
618
618
|
"type": "route-group",
|
|
619
619
|
"domain": "publishing",
|
|
620
620
|
"sourcePath": "src/server/routes.ts",
|
|
621
|
-
"contentHash": "
|
|
621
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
622
622
|
"since": "2025-01-01"
|
|
623
623
|
},
|
|
624
624
|
"route-group:private-views": {
|
|
@@ -626,7 +626,7 @@
|
|
|
626
626
|
"type": "route-group",
|
|
627
627
|
"domain": "publishing",
|
|
628
628
|
"sourcePath": "src/server/routes.ts",
|
|
629
|
-
"contentHash": "
|
|
629
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
630
630
|
"since": "2025-01-01"
|
|
631
631
|
},
|
|
632
632
|
"route-group:tunnel": {
|
|
@@ -634,7 +634,7 @@
|
|
|
634
634
|
"type": "route-group",
|
|
635
635
|
"domain": "networking",
|
|
636
636
|
"sourcePath": "src/server/routes.ts",
|
|
637
|
-
"contentHash": "
|
|
637
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
638
638
|
"since": "2025-01-01"
|
|
639
639
|
},
|
|
640
640
|
"route-group:events": {
|
|
@@ -642,7 +642,7 @@
|
|
|
642
642
|
"type": "route-group",
|
|
643
643
|
"domain": "networking",
|
|
644
644
|
"sourcePath": "src/server/routes.ts",
|
|
645
|
-
"contentHash": "
|
|
645
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
646
646
|
"since": "2025-01-01"
|
|
647
647
|
},
|
|
648
648
|
"route-group:evolution": {
|
|
@@ -650,7 +650,7 @@
|
|
|
650
650
|
"type": "route-group",
|
|
651
651
|
"domain": "evolution",
|
|
652
652
|
"sourcePath": "src/server/routes.ts",
|
|
653
|
-
"contentHash": "
|
|
653
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
654
654
|
"since": "2025-01-01"
|
|
655
655
|
},
|
|
656
656
|
"route-group:watchdog": {
|
|
@@ -658,7 +658,7 @@
|
|
|
658
658
|
"type": "route-group",
|
|
659
659
|
"domain": "monitoring",
|
|
660
660
|
"sourcePath": "src/server/routes.ts",
|
|
661
|
-
"contentHash": "
|
|
661
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
662
662
|
"since": "2025-01-01"
|
|
663
663
|
},
|
|
664
664
|
"route-group:topic-memory": {
|
|
@@ -666,7 +666,7 @@
|
|
|
666
666
|
"type": "route-group",
|
|
667
667
|
"domain": "memory",
|
|
668
668
|
"sourcePath": "src/server/routes.ts",
|
|
669
|
-
"contentHash": "
|
|
669
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
670
670
|
"since": "2025-01-01"
|
|
671
671
|
},
|
|
672
672
|
"route-group:state-sync": {
|
|
@@ -674,7 +674,7 @@
|
|
|
674
674
|
"type": "route-group",
|
|
675
675
|
"domain": "coordination",
|
|
676
676
|
"sourcePath": "src/server/routes.ts",
|
|
677
|
-
"contentHash": "
|
|
677
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
678
678
|
"since": "2025-01-01"
|
|
679
679
|
},
|
|
680
680
|
"route-group:intent": {
|
|
@@ -682,7 +682,7 @@
|
|
|
682
682
|
"type": "route-group",
|
|
683
683
|
"domain": "intent",
|
|
684
684
|
"sourcePath": "src/server/routes.ts",
|
|
685
|
-
"contentHash": "
|
|
685
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
686
686
|
"since": "2025-01-01"
|
|
687
687
|
},
|
|
688
688
|
"route-group:triage": {
|
|
@@ -690,7 +690,7 @@
|
|
|
690
690
|
"type": "route-group",
|
|
691
691
|
"domain": "safety",
|
|
692
692
|
"sourcePath": "src/server/routes.ts",
|
|
693
|
-
"contentHash": "
|
|
693
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
694
694
|
"since": "2025-01-01"
|
|
695
695
|
},
|
|
696
696
|
"route-group:operations": {
|
|
@@ -698,7 +698,7 @@
|
|
|
698
698
|
"type": "route-group",
|
|
699
699
|
"domain": "safety",
|
|
700
700
|
"sourcePath": "src/server/routes.ts",
|
|
701
|
-
"contentHash": "
|
|
701
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
702
702
|
"since": "2025-01-01"
|
|
703
703
|
},
|
|
704
704
|
"route-group:sentinel": {
|
|
@@ -706,7 +706,7 @@
|
|
|
706
706
|
"type": "route-group",
|
|
707
707
|
"domain": "safety",
|
|
708
708
|
"sourcePath": "src/server/routes.ts",
|
|
709
|
-
"contentHash": "
|
|
709
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
710
710
|
"since": "2025-01-01"
|
|
711
711
|
},
|
|
712
712
|
"route-group:trust": {
|
|
@@ -714,7 +714,7 @@
|
|
|
714
714
|
"type": "route-group",
|
|
715
715
|
"domain": "safety",
|
|
716
716
|
"sourcePath": "src/server/routes.ts",
|
|
717
|
-
"contentHash": "
|
|
717
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
718
718
|
"since": "2025-01-01"
|
|
719
719
|
},
|
|
720
720
|
"route-group:monitoring": {
|
|
@@ -722,7 +722,7 @@
|
|
|
722
722
|
"type": "route-group",
|
|
723
723
|
"domain": "monitoring",
|
|
724
724
|
"sourcePath": "src/server/routes.ts",
|
|
725
|
-
"contentHash": "
|
|
725
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
726
726
|
"since": "2025-01-01"
|
|
727
727
|
},
|
|
728
728
|
"route-group:commitments": {
|
|
@@ -730,7 +730,7 @@
|
|
|
730
730
|
"type": "route-group",
|
|
731
731
|
"domain": "commitments",
|
|
732
732
|
"sourcePath": "src/server/routes.ts",
|
|
733
|
-
"contentHash": "
|
|
733
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
734
734
|
"since": "2025-01-01"
|
|
735
735
|
},
|
|
736
736
|
"route-group:episodes": {
|
|
@@ -738,7 +738,7 @@
|
|
|
738
738
|
"type": "route-group",
|
|
739
739
|
"domain": "memory",
|
|
740
740
|
"sourcePath": "src/server/routes.ts",
|
|
741
|
-
"contentHash": "
|
|
741
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
742
742
|
"since": "2025-01-01"
|
|
743
743
|
},
|
|
744
744
|
"route-group:messages": {
|
|
@@ -746,7 +746,7 @@
|
|
|
746
746
|
"type": "route-group",
|
|
747
747
|
"domain": "coordination",
|
|
748
748
|
"sourcePath": "src/server/routes.ts",
|
|
749
|
-
"contentHash": "
|
|
749
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
750
750
|
"since": "2025-01-01"
|
|
751
751
|
},
|
|
752
752
|
"route-group:system-reviews": {
|
|
@@ -754,7 +754,7 @@
|
|
|
754
754
|
"type": "route-group",
|
|
755
755
|
"domain": "monitoring",
|
|
756
756
|
"sourcePath": "src/server/routes.ts",
|
|
757
|
-
"contentHash": "
|
|
757
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
758
758
|
"since": "2025-01-01"
|
|
759
759
|
},
|
|
760
760
|
"route-group:machine-mesh": {
|
|
@@ -770,7 +770,7 @@
|
|
|
770
770
|
"type": "route-group",
|
|
771
771
|
"domain": "security",
|
|
772
772
|
"sourcePath": "src/server/routes.ts",
|
|
773
|
-
"contentHash": "
|
|
773
|
+
"contentHash": "d2905deee33cdc5d932612a152d26c87b57cfe33baf8482c5353ca91dee588a5",
|
|
774
774
|
"since": "2025-01-01"
|
|
775
775
|
},
|
|
776
776
|
"cli:init": {
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- assembled-by: assemble-next-md -->
|
|
4
|
+
<!-- bump: minor -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
**Coherence Journal mesh transport (P1 closing step)** — the `journal-sync`
|
|
9
|
+
MeshCommand + receive handler + own-stream advert on the `session-status`
|
|
10
|
+
response + `PeerPresencePuller` delta-drive that runs the merged
|
|
11
|
+
`JournalSyncApplier` over the existing 30s machine check-in
|
|
12
|
+
(COHERENCE-JOURNAL-SPEC §3.4 rule 5). Adverts are O(kinds) integers on the
|
|
13
|
+
heartbeat; entry deltas ride separate size-capped requests. Ships DARK
|
|
14
|
+
everywhere (gated on explicit `multiMachine.coherenceJournal.replication.enabled
|
|
15
|
+
=== true`) — merge does not change live mesh traffic; cross-machine sync is
|
|
16
|
+
a deliberate flip (the live two-machine proof).
|
|
17
|
+
|
|
18
|
+
The MTP red-team harness resolver (`src/redteam/ScenarioPack.ts`) now states its
|
|
19
|
+
governance verdicts honestly. Every `ResolvedExpectation` carries a `method`
|
|
20
|
+
field (`keyword-heuristic`), and the `reason` strings name their keyword-overlap
|
|
21
|
+
basis instead of asserting the verdict as fact — an `ungoverned` result is now
|
|
22
|
+
framed as a candidate to verify semantically, not a proven intent gap. The
|
|
23
|
+
matching logic is unchanged; only the verdict's self-description.
|
|
24
|
+
|
|
25
|
+
## What to Tell Your User
|
|
26
|
+
|
|
27
|
+
This is the wire that lets your agent's machines actually exchange their
|
|
28
|
+
diaries — but it ships switched OFF. Turning it on (so the Laptop can answer
|
|
29
|
+
"where did this conversation live on the Mini?") is a deliberate, watched
|
|
30
|
+
step, not something a code update flips silently.
|
|
31
|
+
|
|
32
|
+
Nothing user-facing changes. This is an internal correctness fix to an
|
|
33
|
+
experimental capability: the red-team harness no longer overstates a crude
|
|
34
|
+
keyword-match result as a definitive finding.
|
|
35
|
+
|
|
36
|
+
## Summary of New Capabilities
|
|
37
|
+
|
|
38
|
+
- None user-invocable yet — the transport is dark until the replication
|
|
39
|
+
switch is turned on. Internal: `journal-sync` mesh verb + advert-driven
|
|
40
|
+
delta replication.
|
|
41
|
+
|
|
42
|
+
- `ResolvedExpectation.method` field for provenance of every governance verdict.
|
|
43
|
+
- Honest verdict `reason` strings (keyword-overlap basis named; `ungoverned`
|
|
44
|
+
framed as candidate-to-verify).
|
|
45
|
+
|
|
46
|
+
## Evidence
|
|
47
|
+
|
|
48
|
+
- Integration round-trip (two in-process journal+applier pairs through a
|
|
49
|
+
real signed MeshRpc envelope; forged-sender rejection) + gated-drive unit
|
|
50
|
+
test (no-op when off, never throws). tsc + full lint chain clean.
|
|
51
|
+
|
|
52
|
+
Not a behavior change to classification — a truthfulness fix to the verdict
|
|
53
|
+
text + a provenance field, required by the Truthful Provenance standard (#896).
|
|
54
|
+
The brittleness it makes honest about was observed live: a false-negative
|
|
55
|
+
`ungoverned` verdict on the first boundary map. Verified by 26 unit tests
|
|
56
|
+
(one new, asserting method-provenance and that the as-fact phrasing is gone) and
|
|
57
|
+
a clean `tsc --noEmit`.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- assembled-by: assemble-next-md -->
|
|
4
|
+
<!-- bump: patch -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
Fixes #866: `POST /projects/:id/advance` building→merged always failed
|
|
9
|
+
`GH_PR_VIEW_UNAVAILABLE` because `StageTransitionValidator` has no internal
|
|
10
|
+
default for `ghPrView`/`gitMergeBaseIsAncestor` and the route never injected
|
|
11
|
+
them — so no project item could ever reach `merged` through the live API.
|
|
12
|
+
The route now injects both as read-only helpers (`gh pr view` and
|
|
13
|
+
`merge-base --is-ancestor` via SafeGitExecutor.readSync) against the
|
|
14
|
+
project's target repo. A wiring-integrity test asserts the helper-absent
|
|
15
|
+
error can never recur.
|
|
16
|
+
|
|
17
|
+
## What to Tell Your User
|
|
18
|
+
|
|
19
|
+
If you drive a multi-spec initiative through the projects pipeline, its
|
|
20
|
+
items can now actually reach the "merged" stage — the system verifies the
|
|
21
|
+
work's pull request really merged (merge state, commit reachable on the
|
|
22
|
+
main branch, CI green) instead of always erroring out. Project status
|
|
23
|
+
finally tracks reality through the whole pipeline.
|
|
24
|
+
|
|
25
|
+
## Summary of New Capabilities
|
|
26
|
+
|
|
27
|
+
- `POST /projects/:id/advance` with `targetStage: "merged"` now works end to
|
|
28
|
+
end (was structurally impossible): it verifies the PR via `gh pr view` and
|
|
29
|
+
confirms the merge commit is reachable on `origin/main` before recording
|
|
30
|
+
the item as merged.
|
|
31
|
+
|
|
32
|
+
## Evidence
|
|
33
|
+
|
|
34
|
+
- tests/integration/projects-api.test.ts: building→merged now returns
|
|
35
|
+
GH_PR_VIEW_FAILED (not UNAVAILABLE), deterministic regardless of whether
|
|
36
|
+
gh is installed/authed. Full projects-api (45) + StageTransitionValidator
|
|
37
|
+
(26) green; tsc + destructive lint clean.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# The diaries actually sync now (P1 closing step — mesh transport)
|
|
2
|
+
|
|
3
|
+
P1.1 made each machine keep its diaries, P1.2 made them readable, P1.3 built the engine that safely receives a peer's diary. This is the wire that connects them: machines now actually hand each other their diaries over the secure line they already use.
|
|
4
|
+
|
|
5
|
+
It's deliberately tiny and cheap. The existing once-every-30-seconds "are you alive?" check between machines now carries one extra scrap of information: a peer's "I'm at line N in each of my diaries." When a machine notices a peer is further along than the copy it holds, it asks for just the missing lines — over a separate, size-capped request, so the fast heartbeat itself never gets heavy. The receiving side runs every defense from P1.3 (a machine can only hand over its OWN diary; every line validated; restores caught; nothing trusted until durably saved).
|
|
6
|
+
|
|
7
|
+
**The safety choice that matters:** this ships DARK even on me. Merging it does NOT turn on cross-machine syncing. The transport and the drive are gated behind an explicit "replication on" switch that defaults off everywhere — so landing this code changes nothing about live mesh traffic. Turning it on between the Laptop and the Mini is a separate, deliberate, watched step (the live proof you pre-approved). This is on purpose: the mesh is load-bearing for everything, and "merge a PR" should never silently rewire it.
|
|
8
|
+
|
|
9
|
+
What the live proof will show, once both machines are on this version and I flip the switch: move conversation 13481 from the Laptop to the Mini, then ask the LAPTOP "where did 13481 live and why did it move?" — and it answers correctly from the Mini's synced diary. That's the whole initiative's promise, demonstrated end to end. After the proof, the switch can become the spec's default (live-on-dev); until then it stays off so nothing surprises us.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Projects can finally reach the "merged" stage (#866)
|
|
2
|
+
|
|
3
|
+
The /projects system tracks a multi-spec initiative through stages: outline → spec → approved → building → merged. The last hop, "building → merged," verifies the work's PR actually merged by asking GitHub about it. The problem: the code that does that verification needs a small helper handed to it ("here's how to ask GitHub about a PR"), and the API route that drives the transition never handed it over. So EVERY attempt to move a project item to "merged" failed with "GitHub-PR-view helper not provided" — meaning no project, on any install, could ever record a step as merged through the live API. The project registry silently lagged reality forever.
|
|
4
|
+
|
|
5
|
+
This is the textbook wiring-integrity failure the project's own testing standard warns about: the verification logic was unit-tested (with a fake helper passed in), so it looked covered — but in production the real helper was never wired, so the feature was dead. I hit it firsthand tonight trying to mark the multi-machine-coherence P0 round "merged" after its PR landed.
|
|
6
|
+
|
|
7
|
+
The fix injects two small READ-ONLY helpers at the route: one runs `gh pr view <n>` to check the PR's merge state, the other runs `git merge-base --is-ancestor` to confirm the commit is really on the branch — both against the project's own target repo. Nothing destructive; just reads.
|
|
8
|
+
|
|
9
|
+
The test is the meaningful part: it proves the helper is now actually wired by asserting that a building→merged attempt can NEVER again return "helper not provided" — any real failure (no such PR, gh not installed) now surfaces as "PR-view failed" instead. The only way to get the old error back is to un-wire the helper, which the test would catch. That's the wiring-integrity check the missing piece needed all along.
|
|
10
|
+
|
|
11
|
+
_Follow-up: the read-only merge-base catch carries an `@silent-fallback-ok` note — a non-zero `--is-ancestor` exit IS the negative answer (not an ancestor), not a degradation._
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Side-Effects Review — Coherence Journal mesh transport (P1 closing step)
|
|
2
|
+
|
|
3
|
+
**Version / slug:** `coherence-journal-meshwire`
|
|
4
|
+
**Date:** `2026-06-05`
|
|
5
|
+
**Author:** `echo`
|
|
6
|
+
**Second-pass reviewer:** `not required as a PR-time pass — design converged (§3.4 rule 5); this is the transport that drives the already-merged, already-reviewed JournalSyncApplier`
|
|
7
|
+
|
|
8
|
+
## Summary of the change
|
|
9
|
+
|
|
10
|
+
Wires the `journal-sync` mesh transport (COHERENCE-JOURNAL-SPEC §3.4 rule 5) that drives the merged `JournalSyncApplier`: a `journal-sync` MeshCommand (read/observe RBAC class), an always-registered receive handler (serve own-stream batch / apply inbound), the own-stream advert piggybacked on the `session-status` response, and the `PeerPresencePuller` delta-drive (request + apply when a peer is ahead). The SEND/drive path is gated on `multiMachine.coherenceJournal.replication.enabled === true` (explicit true only) — ships DARK on every agent including echo; merge does not alter live mesh traffic.
|
|
11
|
+
|
|
12
|
+
## Decision-point inventory
|
|
13
|
+
- `journal-sync` RBAC classification — ADD — read/observe class (any registered peer), same as capacity-report/session-status. No new authority: it serves/accepts replica DATA, never an actuation.
|
|
14
|
+
- Replication activation — gated on explicit `replication.enabled===true`; absent in ConfigDefaults → false everywhere. The proof flips it deliberately.
|
|
15
|
+
|
|
16
|
+
## 1. Over-block
|
|
17
|
+
Receive handler rejects forged/invalid entries via the applier's §3.4 gates (already reviewed) — counted, never silent. No new over-block surface on the live path (drive is dark).
|
|
18
|
+
|
|
19
|
+
## 2. Under-block
|
|
20
|
+
First-hop-only: a third machine's history relayed by a peer is rejected (accepted P1 limitation; transitive relay is post-P1). The receive handler being always-on is safe because the applier validates every entry and no peer SENDS unless its own replication flag is on.
|
|
21
|
+
|
|
22
|
+
## 3. Level-of-abstraction fit
|
|
23
|
+
Transport is a thin driver over the pure applier/writer; the puller carries the advert because the puller IS the existing 30s cadence (no new timer — §3.4 rule 5's grounded correction). Right seam.
|
|
24
|
+
|
|
25
|
+
## 4. Signal vs authority compliance
|
|
26
|
+
**Required reference:** [docs/signal-vs-authority.md](../../docs/signal-vs-authority.md)
|
|
27
|
+
- [x] No — the transport moves signal data (replica streams). The §3.9 actuation-ban lint (merged) keeps consumers signal-only.
|
|
28
|
+
|
|
29
|
+
## 5. Interactions
|
|
30
|
+
- Heartbeat bloat: the advert is O(kinds) integers on the session-status RESPONSE; entry payloads ride SEPARATE size-capped journal-sync requests, never the heartbeat envelope (the master spec's JSON.stringify-on-hot-path root cause is avoided).
|
|
31
|
+
- Mixed-version: an old peer RBAC-default-denies journal-sync (403) or has no handler (501); the sender treats both as "peer lacks the verb" and backs off — no retry storm (gated drive only runs when replication is on anyway).
|
|
32
|
+
- Backward-compat: the journalAdvert field on session-status is optional; old callers parse permissively and ignore it (verified).
|
|
33
|
+
- guardWrite seam: replica appends go through state.guardJournalWrite (standby-safe, prefix-allowlisted) — same as the writer.
|
|
34
|
+
|
|
35
|
+
## 6. External surfaces
|
|
36
|
+
- New mesh verb on the wire ONLY when replication.enabled===true on the sender. On merge: dark everywhere → zero new mesh traffic. The receive handler accepts journal-sync if a peer ever sends, but no peer sends while dark.
|
|
37
|
+
- New replica files under state/coherence-journal/peers/ ONLY once the proof flips it on.
|
|
38
|
+
|
|
39
|
+
## 7. Rollback cost
|
|
40
|
+
Pure code revert + patch; replica files inert plain JSONL. The dark default means rollback before the proof is a no-op in practice.
|
|
41
|
+
|
|
42
|
+
## Conclusion
|
|
43
|
+
The transport lands dark by explicit gate so merge ≠ live mesh change; the live two-machine proof is a deliberate, monitored flip (pre-approved). The §3.4-rule-5 grounded transport (advert on the real 30s pull, deltas separate + capped) is implemented as specified. After a successful proof, the gate can move to the spec's live-on-dev default in a follow-up. Clear to ship dark.
|
|
44
|
+
|
|
45
|
+
## Second-pass review (if required)
|
|
46
|
+
**Reviewer:** convergence panel (§3.4 design-time) + the live two-machine proof as the closing functional verification.
|
|
47
|
+
|
|
48
|
+
## Evidence pointers
|
|
49
|
+
- tests/integration/journal-sync-roundtrip.test.ts (two in-process pairs through a real signed envelope; forged-sender rejection), tests/unit/PeerPresencePuller-journal.test.ts (gated drive; no-op when off; never throws).
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Side-Effects Review — projects advance ghPrView wiring (#866)
|
|
2
|
+
|
|
3
|
+
**Version / slug:** `projects-advance-ghprview-866`
|
|
4
|
+
**Date:** `2026-06-06`
|
|
5
|
+
**Author:** `echo`
|
|
6
|
+
**Second-pass reviewer:** `not required — small read-only wiring fix + a wiring-integrity test`
|
|
7
|
+
|
|
8
|
+
## Summary of the change
|
|
9
|
+
|
|
10
|
+
`POST /projects/:id/advance` building→merged always failed `GH_PR_VIEW_UNAVAILABLE`: `StageTransitionValidator` requires `ctx.ghPrView` (and `ctx.gitMergeBaseIsAncestor`) for that edge but provides NO internal default (unlike `readSpecFrontmatter`, which `loadFrontmatter` defaults), and the route built `validationCtx` without them. Fix: inject both as READ-ONLY helpers (`gh pr view --json state,mergeCommit,statusCheckRollup` and `git merge-base --is-ancestor`) against `project.targetRepoPath`. No item could ever reach `merged` through the live API before this — found closing out multimachine-coherence P0.
|
|
11
|
+
|
|
12
|
+
## Decision-point inventory
|
|
13
|
+
- `building → merged` gate — was UNREACHABLE (always errored before the real check) → now REACHES the real GitHub merge-state check. The gate's logic is unchanged; only its required helpers are now provided.
|
|
14
|
+
|
|
15
|
+
## 1. Over-block
|
|
16
|
+
Before: 100% over-block (every merged transition rejected regardless of truth). After: the gate rejects only when the PR isn't genuinely merged. Strict improvement.
|
|
17
|
+
|
|
18
|
+
## 2. Under-block
|
|
19
|
+
The helper trusts `gh`/`git` output for the project's target repo (operator-controlled). A compromised target repo could misreport — but that repo is the operator's own; no new external trust surface.
|
|
20
|
+
|
|
21
|
+
## 3. Level-of-abstraction fit
|
|
22
|
+
Helpers injected at the route (where targetRepoPath + child-process access live), consumed by the pure validator — the same seam the validator's tests already use with mocks. Right layer.
|
|
23
|
+
|
|
24
|
+
## 4. Signal vs authority compliance
|
|
25
|
+
**Required reference:** [docs/signal-vs-authority.md](../../docs/signal-vs-authority.md)
|
|
26
|
+
- [x] No — the gate is a smart validator (real GitHub state); the change only supplies its inputs. No brittle detector gains authority.
|
|
27
|
+
|
|
28
|
+
## 5. Interactions
|
|
29
|
+
- The helpers are read-only (`gh pr view`, `git merge-base --is-ancestor`) — no mutation, no SafeGitExecutor needed (that funnel is for destructive ops).
|
|
30
|
+
- A missing/unauthed `gh` throws inside the helper → validator maps to `GH_PR_VIEW_FAILED` (a clean rejection), never a crash.
|
|
31
|
+
|
|
32
|
+
## 6. External surfaces
|
|
33
|
+
- Spawns `gh`/`git` against the project's target repo when a merged transition is attempted. No new persistent state, no messaging, no fleet surface. Other advance edges (outline→spec, approved→building, →skipped) unchanged.
|
|
34
|
+
|
|
35
|
+
## 7. Rollback cost
|
|
36
|
+
Pure code revert + patch. No state.
|
|
37
|
+
|
|
38
|
+
## Conclusion
|
|
39
|
+
Closes #866: the projects pipeline can record merged steps for the first time. The wiring-integrity test asserts the helper-absent error can never recur. Clear to ship.
|
|
40
|
+
|
|
41
|
+
## Evidence pointers
|
|
42
|
+
- `tests/integration/projects-api.test.ts` — new building→merged test asserts `code !== GH_PR_VIEW_UNAVAILABLE` (→ `GH_PR_VIEW_FAILED`), deterministic regardless of gh presence; full file 45 tests + StageTransitionValidator 26 green; tsc clean.
|
|
43
|
+
|
|
44
|
+
_Follow-up: the merge-base catch carries an `@silent-fallback-ok` note (non-zero `--is-ancestor` exit = the negative answer, not a degradation) — holds the no-silent-fallbacks budget._
|