instar 1.3.79 → 1.3.80

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "instar",
3
- "version": "1.3.79",
3
+ "version": "1.3.80",
4
4
  "description": "Coherence infrastructure for self-evolving AI agents — on the Claude Code or Codex subscription you already have.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "./builtin-manifest.schema.json",
3
3
  "schemaVersion": 1,
4
- "generatedAt": "2026-05-29T08:53:20.270Z",
5
- "instarVersion": "1.3.79",
4
+ "generatedAt": "2026-05-29T09:40:56.624Z",
5
+ "instarVersion": "1.3.80",
6
6
  "entryCount": 193,
7
7
  "entries": {
8
8
  "hook:session-start": {
@@ -409,7 +409,7 @@
409
409
  "type": "route-group",
410
410
  "domain": "monitoring",
411
411
  "sourcePath": "src/server/routes.ts",
412
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
412
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
413
413
  "since": "2025-01-01"
414
414
  },
415
415
  "route-group:agents": {
@@ -417,7 +417,7 @@
417
417
  "type": "route-group",
418
418
  "domain": "sessions",
419
419
  "sourcePath": "src/server/routes.ts",
420
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
420
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
421
421
  "since": "2025-01-01"
422
422
  },
423
423
  "route-group:backups": {
@@ -425,7 +425,7 @@
425
425
  "type": "route-group",
426
426
  "domain": "operations",
427
427
  "sourcePath": "src/server/routes.ts",
428
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
428
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
429
429
  "since": "2025-01-01"
430
430
  },
431
431
  "route-group:git": {
@@ -433,7 +433,7 @@
433
433
  "type": "route-group",
434
434
  "domain": "coordination",
435
435
  "sourcePath": "src/server/routes.ts",
436
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
436
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
437
437
  "since": "2025-01-01"
438
438
  },
439
439
  "route-group:memory": {
@@ -441,7 +441,7 @@
441
441
  "type": "route-group",
442
442
  "domain": "memory",
443
443
  "sourcePath": "src/server/routes.ts",
444
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
444
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
445
445
  "since": "2025-01-01"
446
446
  },
447
447
  "route-group:semantic": {
@@ -449,7 +449,7 @@
449
449
  "type": "route-group",
450
450
  "domain": "memory",
451
451
  "sourcePath": "src/server/routes.ts",
452
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
452
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
453
453
  "since": "2025-01-01"
454
454
  },
455
455
  "route-group:status": {
@@ -457,7 +457,7 @@
457
457
  "type": "route-group",
458
458
  "domain": "monitoring",
459
459
  "sourcePath": "src/server/routes.ts",
460
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
460
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
461
461
  "since": "2025-01-01"
462
462
  },
463
463
  "route-group:capabilities": {
@@ -465,7 +465,7 @@
465
465
  "type": "route-group",
466
466
  "domain": "mapping",
467
467
  "sourcePath": "src/server/routes.ts",
468
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
468
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
469
469
  "since": "2025-01-01"
470
470
  },
471
471
  "route-group:project-map": {
@@ -473,7 +473,7 @@
473
473
  "type": "route-group",
474
474
  "domain": "mapping",
475
475
  "sourcePath": "src/server/routes.ts",
476
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
476
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
477
477
  "since": "2025-01-01"
478
478
  },
479
479
  "route-group:coherence": {
@@ -481,7 +481,7 @@
481
481
  "type": "route-group",
482
482
  "domain": "coherence",
483
483
  "sourcePath": "src/server/routes.ts",
484
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
484
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
485
485
  "since": "2025-01-01"
486
486
  },
487
487
  "route-group:topic-bindings": {
@@ -489,7 +489,7 @@
489
489
  "type": "route-group",
490
490
  "domain": "sessions",
491
491
  "sourcePath": "src/server/routes.ts",
492
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
492
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
493
493
  "since": "2025-01-01"
494
494
  },
495
495
  "route-group:context": {
@@ -497,7 +497,7 @@
497
497
  "type": "route-group",
498
498
  "domain": "context",
499
499
  "sourcePath": "src/server/routes.ts",
500
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
500
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
501
501
  "since": "2025-01-01"
502
502
  },
503
503
  "route-group:scope-coherence": {
@@ -505,7 +505,7 @@
505
505
  "type": "route-group",
506
506
  "domain": "coherence",
507
507
  "sourcePath": "src/server/routes.ts",
508
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
508
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
509
509
  "since": "2025-01-01"
510
510
  },
511
511
  "route-group:canonical-state": {
@@ -513,7 +513,7 @@
513
513
  "type": "route-group",
514
514
  "domain": "state",
515
515
  "sourcePath": "src/server/routes.ts",
516
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
516
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
517
517
  "since": "2025-01-01"
518
518
  },
519
519
  "route-group:ci": {
@@ -521,7 +521,7 @@
521
521
  "type": "route-group",
522
522
  "domain": "monitoring",
523
523
  "sourcePath": "src/server/routes.ts",
524
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
524
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
525
525
  "since": "2025-01-01"
526
526
  },
527
527
  "route-group:sessions": {
@@ -529,7 +529,7 @@
529
529
  "type": "route-group",
530
530
  "domain": "sessions",
531
531
  "sourcePath": "src/server/routes.ts",
532
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
532
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
533
533
  "since": "2025-01-01"
534
534
  },
535
535
  "route-group:jobs": {
@@ -537,7 +537,7 @@
537
537
  "type": "route-group",
538
538
  "domain": "scheduling",
539
539
  "sourcePath": "src/server/routes.ts",
540
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
540
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
541
541
  "since": "2025-01-01"
542
542
  },
543
543
  "route-group:skip-ledger": {
@@ -545,7 +545,7 @@
545
545
  "type": "route-group",
546
546
  "domain": "scheduling",
547
547
  "sourcePath": "src/server/routes.ts",
548
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
548
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
549
549
  "since": "2025-01-01"
550
550
  },
551
551
  "route-group:telegram": {
@@ -553,7 +553,7 @@
553
553
  "type": "route-group",
554
554
  "domain": "communication",
555
555
  "sourcePath": "src/server/routes.ts",
556
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
556
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
557
557
  "since": "2025-01-01"
558
558
  },
559
559
  "route-group:attention": {
@@ -561,7 +561,7 @@
561
561
  "type": "route-group",
562
562
  "domain": "communication",
563
563
  "sourcePath": "src/server/routes.ts",
564
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
564
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
565
565
  "since": "2025-01-01"
566
566
  },
567
567
  "route-group:relationships": {
@@ -569,7 +569,7 @@
569
569
  "type": "route-group",
570
570
  "domain": "relationships",
571
571
  "sourcePath": "src/server/routes.ts",
572
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
572
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
573
573
  "since": "2025-01-01"
574
574
  },
575
575
  "route-group:feedback": {
@@ -577,7 +577,7 @@
577
577
  "type": "route-group",
578
578
  "domain": "feedback",
579
579
  "sourcePath": "src/server/routes.ts",
580
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
580
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
581
581
  "since": "2025-01-01"
582
582
  },
583
583
  "route-group:updates": {
@@ -585,7 +585,7 @@
585
585
  "type": "route-group",
586
586
  "domain": "updates",
587
587
  "sourcePath": "src/server/routes.ts",
588
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
588
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
589
589
  "since": "2025-01-01"
590
590
  },
591
591
  "route-group:dispatches": {
@@ -593,7 +593,7 @@
593
593
  "type": "route-group",
594
594
  "domain": "dispatches",
595
595
  "sourcePath": "src/server/routes.ts",
596
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
596
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
597
597
  "since": "2025-01-01"
598
598
  },
599
599
  "route-group:quota": {
@@ -601,7 +601,7 @@
601
601
  "type": "route-group",
602
602
  "domain": "monitoring",
603
603
  "sourcePath": "src/server/routes.ts",
604
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
604
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
605
605
  "since": "2025-01-01"
606
606
  },
607
607
  "route-group:publishing": {
@@ -609,7 +609,7 @@
609
609
  "type": "route-group",
610
610
  "domain": "publishing",
611
611
  "sourcePath": "src/server/routes.ts",
612
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
612
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
613
613
  "since": "2025-01-01"
614
614
  },
615
615
  "route-group:private-views": {
@@ -617,7 +617,7 @@
617
617
  "type": "route-group",
618
618
  "domain": "publishing",
619
619
  "sourcePath": "src/server/routes.ts",
620
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
620
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
621
621
  "since": "2025-01-01"
622
622
  },
623
623
  "route-group:tunnel": {
@@ -625,7 +625,7 @@
625
625
  "type": "route-group",
626
626
  "domain": "networking",
627
627
  "sourcePath": "src/server/routes.ts",
628
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
628
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
629
629
  "since": "2025-01-01"
630
630
  },
631
631
  "route-group:events": {
@@ -633,7 +633,7 @@
633
633
  "type": "route-group",
634
634
  "domain": "networking",
635
635
  "sourcePath": "src/server/routes.ts",
636
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
636
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
637
637
  "since": "2025-01-01"
638
638
  },
639
639
  "route-group:evolution": {
@@ -641,7 +641,7 @@
641
641
  "type": "route-group",
642
642
  "domain": "evolution",
643
643
  "sourcePath": "src/server/routes.ts",
644
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
644
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
645
645
  "since": "2025-01-01"
646
646
  },
647
647
  "route-group:watchdog": {
@@ -649,7 +649,7 @@
649
649
  "type": "route-group",
650
650
  "domain": "monitoring",
651
651
  "sourcePath": "src/server/routes.ts",
652
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
652
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
653
653
  "since": "2025-01-01"
654
654
  },
655
655
  "route-group:topic-memory": {
@@ -657,7 +657,7 @@
657
657
  "type": "route-group",
658
658
  "domain": "memory",
659
659
  "sourcePath": "src/server/routes.ts",
660
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
660
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
661
661
  "since": "2025-01-01"
662
662
  },
663
663
  "route-group:state-sync": {
@@ -665,7 +665,7 @@
665
665
  "type": "route-group",
666
666
  "domain": "coordination",
667
667
  "sourcePath": "src/server/routes.ts",
668
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
668
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
669
669
  "since": "2025-01-01"
670
670
  },
671
671
  "route-group:intent": {
@@ -673,7 +673,7 @@
673
673
  "type": "route-group",
674
674
  "domain": "intent",
675
675
  "sourcePath": "src/server/routes.ts",
676
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
676
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
677
677
  "since": "2025-01-01"
678
678
  },
679
679
  "route-group:triage": {
@@ -681,7 +681,7 @@
681
681
  "type": "route-group",
682
682
  "domain": "safety",
683
683
  "sourcePath": "src/server/routes.ts",
684
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
684
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
685
685
  "since": "2025-01-01"
686
686
  },
687
687
  "route-group:operations": {
@@ -689,7 +689,7 @@
689
689
  "type": "route-group",
690
690
  "domain": "safety",
691
691
  "sourcePath": "src/server/routes.ts",
692
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
692
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
693
693
  "since": "2025-01-01"
694
694
  },
695
695
  "route-group:sentinel": {
@@ -697,7 +697,7 @@
697
697
  "type": "route-group",
698
698
  "domain": "safety",
699
699
  "sourcePath": "src/server/routes.ts",
700
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
700
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
701
701
  "since": "2025-01-01"
702
702
  },
703
703
  "route-group:trust": {
@@ -705,7 +705,7 @@
705
705
  "type": "route-group",
706
706
  "domain": "safety",
707
707
  "sourcePath": "src/server/routes.ts",
708
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
708
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
709
709
  "since": "2025-01-01"
710
710
  },
711
711
  "route-group:monitoring": {
@@ -713,7 +713,7 @@
713
713
  "type": "route-group",
714
714
  "domain": "monitoring",
715
715
  "sourcePath": "src/server/routes.ts",
716
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
716
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
717
717
  "since": "2025-01-01"
718
718
  },
719
719
  "route-group:commitments": {
@@ -721,7 +721,7 @@
721
721
  "type": "route-group",
722
722
  "domain": "commitments",
723
723
  "sourcePath": "src/server/routes.ts",
724
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
724
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
725
725
  "since": "2025-01-01"
726
726
  },
727
727
  "route-group:episodes": {
@@ -729,7 +729,7 @@
729
729
  "type": "route-group",
730
730
  "domain": "memory",
731
731
  "sourcePath": "src/server/routes.ts",
732
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
732
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
733
733
  "since": "2025-01-01"
734
734
  },
735
735
  "route-group:messages": {
@@ -737,7 +737,7 @@
737
737
  "type": "route-group",
738
738
  "domain": "coordination",
739
739
  "sourcePath": "src/server/routes.ts",
740
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
740
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
741
741
  "since": "2025-01-01"
742
742
  },
743
743
  "route-group:system-reviews": {
@@ -745,7 +745,7 @@
745
745
  "type": "route-group",
746
746
  "domain": "monitoring",
747
747
  "sourcePath": "src/server/routes.ts",
748
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
748
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
749
749
  "since": "2025-01-01"
750
750
  },
751
751
  "route-group:machine-mesh": {
@@ -761,7 +761,7 @@
761
761
  "type": "route-group",
762
762
  "domain": "security",
763
763
  "sourcePath": "src/server/routes.ts",
764
- "contentHash": "c61fc73ca69a17414aadfd5c095f7846d0dbaef9f7a2d2d7e67ca1dc5488881f",
764
+ "contentHash": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
765
765
  "since": "2025-01-01"
766
766
  },
767
767
  "cli:init": {
@@ -1457,7 +1457,7 @@
1457
1457
  "type": "subsystem",
1458
1458
  "domain": "server",
1459
1459
  "sourcePath": "src/server/AgentServer.ts",
1460
- "contentHash": "11dfce264118d9e24484060fcad8d26d36272045beb088fbeb0accb3b404cb90",
1460
+ "contentHash": "5841418da3e9385c441f0158bc5375025dc0f39bf9ae0b4f14c2bdb7d526bf1b",
1461
1461
  "since": "2025-01-01"
1462
1462
  },
1463
1463
  "subsystem:session-manager": {
@@ -1473,7 +1473,7 @@
1473
1473
  "type": "subsystem",
1474
1474
  "domain": "updates",
1475
1475
  "sourcePath": "src/core/AutoUpdater.ts",
1476
- "contentHash": "54bf74ad97fa1b0a32cbada911454a023abab6717ec34ff3762516255ea2b306",
1476
+ "contentHash": "bf97e19c12e7ce6ce21c69b49bdd94edebc155e5be2f16e38933a0067f41b3f5",
1477
1477
  "since": "2025-01-01"
1478
1478
  },
1479
1479
  "subsystem:auto-dispatcher": {
@@ -0,0 +1,35 @@
1
+ # Instar Upgrade Guide — NEXT
2
+
3
+ <!-- bump: patch -->
4
+
5
+ ## What Changed
6
+
7
+ Two changes that merged after v1.3.79 and are released together here.
8
+
9
+ **1. AutoUpdater: recurring jobs no longer block restart activation, and the deferral is now visible (#514).**
10
+
11
+ The AutoUpdater pulls a new version into the shadow-install on its normal cadence (~30-min check + 5-min coalesce), but ACTIVATING it requires a server restart, and the restart gate would defer indefinitely while any "healthy" session existed — including recurring background jobs that perpetually re-appear as active. The result: an always-busy agent kept running the old version with the fix sitting unused on disk. This narrows the blocker set: a background job session (one with a `jobSlug`) no longer blocks restart when `SessionManager.hasActiveProcesses(tmuxSession)` — the existing process-tree ground truth — reports no non-baseline work. Mid-execution jobs still block (they finish first), and if the safety check is unavailable the job still blocks (conservative). Interactive user sessions are deliberately unchanged — whether an update may interrupt a live user session is a separate policy decision and is NOT relaxed here. The restart-deferral state (target version, first-deferred time, reason, current blockers, next retry) is now persisted and surfaced on authenticated `/health` and `/updates/status`, so "installed but not active" is no longer invisible.
12
+
13
+ **2. Mentor Stage-A surface now includes the mentor's own prior prompts (#515), completing the active-task-driving feature (#513).**
14
+
15
+ v1.3.79 gave the Framework-Onboarding Mentor an onboarding agenda and a real Stage-A surface, but that surface only contained the mentee's replies — not the mentor's own prior prompts (their content wasn't logged anywhere). So the mentor inferred "what have I already assigned?" only from replies. Now, when the mentor successfully delivers a prompt, its content is appended to `mentor-sent.jsonl`, and the Stage-A surface builder interleaves the mentor's prompts and the mentee's replies chronologically into a real two-sided "Mentor: … / Mentee: …" exchange. The mentor now sees the full conversation and rotates its agenda correctly. Still ships dark (the mentor is off by default and the agenda is empty by default).
16
+
17
+ ## What to Tell Your User
18
+
19
+ Two under-the-hood improvements, no action needed. First: when your agent has a fix waiting to install, recurring background jobs no longer keep it from applying that fix on its next safe restart, and you can now see on the health page when an agent has an update installed but not yet active (and why). Interactive sessions are untouched — an update still won't interrupt a live conversation. Second: the optional onboarding mentor (off by default) now sees both sides of its conversation with a new agent, so if you ever turn it on it keeps better track of what it has already walked the agent through. Nothing changes unless you enable the mentor.
20
+
21
+ ## Summary of New Capabilities
22
+
23
+ | Capability | How to Use |
24
+ |-----------|-----------|
25
+ | Restart-deferral visibility | Automatic. `GET /health` and `GET /updates/status` now include a `restartDeferral` object (target version, first-deferred time, reason, blockers, next retry) when an installed update is waiting on a restart. |
26
+ | Recurring jobs don't block restart | Automatic. A background job session no longer blocks update-restart activation when its process tree is idle; mid-execution jobs and interactive sessions still block. |
27
+ | Mentor full two-sided surface | Automatic when the mentor is enabled. The mentor logs its own prompts to `mentor-sent.jsonl` and interleaves them with mentee replies in the Stage-A surface, so agenda rotation reflects the real exchange. |
28
+
29
+ ## Evidence
30
+
31
+ - #514: `tests/unit/UpdateGate.test.ts` + `AutoUpdater.test.ts` cover safe-idle-job de-counting, mid-execution/interactive conservatism, and persisted+surfaced deferral state; `tests/unit/server.test.ts` covers the `/health` + `/updates/status` output.
32
+ - #515: `tests/unit/MentorStageA.test.ts` covers `parseMentorSent` (defensive parsing) and the chronological interleave of mentor prompts + mentee replies into the surface, with backward-compatible `buildConversationSurface` signature.
33
+ - Both shipped through the full instar-dev gate; live fleet recovery of the prior token-ledger fixes (1.3.77/1.3.78) was observed on monroe/indra (/tokens 503→200 after restart onto the released fix).
34
+
35
+ Specs: `docs/specs/auto-updater-restart-activation-visibility.md` (#514), `docs/specs/mentor-stagea-full-exchange-surface.md` (#515), `docs/specs/FRAMEWORK-ONBOARDING-MENTOR-SPEC.md` (the 2026-05-29 active-task-driving amendment).
@@ -0,0 +1,93 @@
1
+ # Side-Effects Review — AutoUpdater restart activation visibility
2
+
3
+ **Version / slug:** `auto-updater-restart-activation-visibility`
4
+ **Date:** `2026-05-29`
5
+ **Author:** `instar-codey`
6
+ **Second-pass reviewer:** `Justin review requested in PR`
7
+
8
+ ## Summary of the change
9
+
10
+ This change narrows AutoUpdater restart blockers and makes activation waits observable. `src/core/UpdateGate.ts` now ignores a running job session only when it has a `jobSlug`, a tmux session name, and `SessionManager.hasActiveProcesses(tmuxSession)` says no real non-baseline process is running. `src/core/AutoUpdater.ts` persists a restart-wait object with target version, first wait time, reason, blockers, next retry, and updated time. `src/server/routes.ts` surfaces that object on authenticated `/health` and `/updates/status`. Tests cover safe idle jobs, active jobs, interactive session conservatism, AutoUpdater state persistence, and health output.
11
+
12
+ ## Decision-point inventory
13
+
14
+ - `UpdateGate.canRestart` — modify — decides whether an update-driven server restart can proceed now or must wait.
15
+ - `AutoUpdater.gatedRestart` — modify — records and clears restart-wait state around the existing restart decision.
16
+ - `GET /health` and `GET /updates/status` — modify — surface restart-wait state; no blocking authority.
17
+
18
+ ---
19
+
20
+ ## 1. Over-block
21
+
22
+ The main remaining over-block is intentional: interactive sessions still block when the monitor reports them healthy, even if a process-tree check would say no active child work. Justin explicitly held the bounded restart policy for interactive sessions, so this PR does not relax that path. Background job sessions also still block when `hasActiveProcesses` is unavailable or fails, because the safe-idle proof is missing.
23
+
24
+ ---
25
+
26
+ ## 2. Under-block
27
+
28
+ A background job could be incorrectly treated as idle if `hasActiveProcesses` misses a real work process. That risk already exists anywhere the process-tree ground truth is used, but this PR limits reliance to sessions that are explicitly job-spawned and still fails closed when the method is unavailable. A job that is about to start work but has not spawned a non-baseline child yet may be restarted; that is acceptable for the requested "idle/between-runs" class and no different from restarting before a scheduled job fires.
29
+
30
+ ---
31
+
32
+ ## 3. Level-of-abstraction fit
33
+
34
+ The restart decision belongs in `UpdateGate`, which is already the authority for update-driven restart gating. This change does not add a parallel gate. It feeds the existing authority a stronger low-level signal: the already-established process-tree active-work check. AutoUpdater owns persistence and user/operator visibility, so persisting `restartDeferral` there is the right layer.
35
+
36
+ ---
37
+
38
+ ## 4. Signal vs authority compliance
39
+
40
+ **Required reference:** [docs/signal-vs-authority.md](../../docs/signal-vs-authority.md)
41
+
42
+ - [x] No — this change produces a signal consumed by an existing smart gate.
43
+ - [ ] No — this change has no block/allow surface.
44
+ - [ ] Yes — but the logic is a smart gate with full conversational context (LLM-backed with recent history or equivalent).
45
+ - [ ] Yes, with brittle logic — STOP. Reshape the design. Brittle detectors must not own block authority.
46
+
47
+ `hasActiveProcesses` is a detector-like primitive, but it does not become a standalone blocker or allower. Its output is consumed by the existing restart authority in `UpdateGate`, and only for job sessions where the distinction between idle and executing is mechanically meaningful.
48
+
49
+ ---
50
+
51
+ ## 5. Interactions
52
+
53
+ - **Shadowing:** The safe-idle job check runs before session-health classification, but only for `jobSlug` sessions with process-tree proof. It does not shadow interactive session health.
54
+ - **Double-fire:** Persisting `restartDeferral` writes the same AutoUpdater state file already used for updater state. It does not write restart-requested signals and cannot trigger a restart by itself.
55
+ - **Races:** The persisted restart-wait object is best-effort observability. If a retry fires while status is being read, readers may see the previous `nextRetryAt` until the next state save; this is acceptable and self-correcting.
56
+ - **Feedback loops:** The old "already applied" loop guard remains. The log/notification language now distinguishes intentional restart waits from generic activation lag, reducing false manual-restart diagnoses.
57
+
58
+ ---
59
+
60
+ ## 6. External surfaces
61
+
62
+ Authenticated `/health`, `/updates/status`, and `/updates/auto` now expose additive `restartDeferral` fields. Existing callers that ignore unknown fields continue to work. The state file gains an additive `restartDeferral` object; older versions ignore it. Other agents benefit after update activation because idle background jobs stop holding restarts forever, but active user sessions remain protected.
63
+
64
+ ---
65
+
66
+ ## 7. Rollback cost
67
+
68
+ Rollback is a hot-fix release that reverts the code and tests. No database migration or state repair is needed. The only persistent addition is JSON in `state/auto-updater.json`; leaving it behind is harmless because older code ignores unknown fields.
69
+
70
+ ---
71
+
72
+ ## Conclusion
73
+
74
+ The change is narrow and matches the approved scope: safe background-job de-counting plus restart-wait observability. The design explicitly avoids the held interactive-session policy and keeps restart authority centralized in `UpdateGate`. Clear to ship for PR review.
75
+
76
+ ---
77
+
78
+ ## Second-pass review (if required)
79
+
80
+ **Reviewer:** Justin review requested in PR
81
+ **Independent read of the artifact: pending external review**
82
+
83
+ This touches restart gating, so the PR is intentionally opened for Justin review before merge. I did not implement the held interactive-session restart policy.
84
+
85
+ ---
86
+
87
+ ## Evidence pointers
88
+
89
+ - `npm test -- --run tests/unit/UpdateGate.test.ts tests/unit/AutoUpdater.test.ts tests/unit/server.test.ts`
90
+ - `npm run lint`
91
+ - `npm run build`
92
+ - `npm run check:upgrade-guide`
93
+ - `node scripts/instar-dev-precommit.js`
@@ -0,0 +1,90 @@
1
+ # Side-Effects Review — Mentor Stage-A full exchange surface
2
+
3
+ **Version / slug:** `mentor-stagea-full-exchange-surface`
4
+ **Date:** `2026-05-29`
5
+ **Author:** `instar-codey`
6
+ **Second-pass reviewer:** `Justin review requested in PR`
7
+
8
+ ## Summary of the change
9
+
10
+ This change completes the mentor Stage-A conversation surface by logging mentor-sent prompt content after successful delivery and interleaving those turns with mentee replies. `src/monitoring/MentorStageA.ts` adds `MentorSentLine`, `parseMentorSent`, and timestamp interleaving in the pure `buildConversationSurface` function. `src/server/AgentServer.ts` appends successful mentor sends to `mentor-sent.jsonl`, reads that log for `getSurface`, and continues reading mentee replies from `mentor-replies.jsonl`. `tests/unit/MentorStageA.test.ts` covers the new parser and the interleave boundary.
11
+
12
+ ## Decision-point inventory
13
+
14
+ - `MentorStageA.buildConversationSurface` — modify — determines what user-visible conversation Stage A sees.
15
+ - `AgentServer.deliverToMentee` — modify — writes mentor-sent prompt content only after delivery succeeds.
16
+ - `AgentServer.getSurface` wiring — modify — feeds parsed mentor-sent turns plus parsed mentee-reply turns into the pure surface builder.
17
+
18
+ ---
19
+
20
+ ## 1. Over-block
21
+
22
+ No block/allow surface — over-block not applicable. The parsers drop malformed or empty log rows, but that only removes unusable history from Stage-A context; it does not reject user input, messages, or actions.
23
+
24
+ ---
25
+
26
+ ## 2. Under-block
27
+
28
+ The main remaining miss is a send that succeeds but crashes before the append finishes. In that case the next surface may still lack the mentor-side prompt. The append is intentionally best-effort and non-fatal so delivery is not turned into a filesystem-dependent operation. Rows without timestamps or text are skipped rather than guessed.
29
+
30
+ ---
31
+
32
+ ## 3. Level-of-abstraction fit
33
+
34
+ The pure parser and interleave logic belong in `MentorStageA.ts`, which already owns the Stage-A boundary and has focused unit tests. File I/O belongs in `AgentServer`, which already reads the reply log and owns delivery. The change uses the existing a2a transport and outstanding prompt tracker rather than adding a second delivery path.
35
+
36
+ ---
37
+
38
+ ## 4. Signal vs authority compliance
39
+
40
+ **Required reference:** [docs/signal-vs-authority.md](../../docs/signal-vs-authority.md)
41
+
42
+ - [ ] No — this change produces a signal consumed by an existing smart gate.
43
+ - [x] No — this change has no block/allow surface.
44
+ - [ ] Yes — but the logic is a smart gate with full conversational context (LLM-backed with recent history or equivalent).
45
+ - [ ] Yes, with brittle logic — STOP. Reshape the design. Brittle detectors must not own block authority.
46
+
47
+ This change expands the data surface visible to Stage A with mentor-owned, user-visible conversation text. It does not add a new blocker, filter, or authority.
48
+
49
+ ---
50
+
51
+ ## 5. Interactions
52
+
53
+ - **Shadowing:** The sent-log parser does not replace the reply parser. Both feed the same pure surface builder.
54
+ - **Double-fire:** The sent log is independent from the metadata-only a2a sent ledger. It is intentionally content-bearing because the existing ledger cannot provide prompt text.
55
+ - **Races:** Delivery can succeed while appending the sent row fails. The next surface loses that mentor-side turn, but no transport or reply tracking is broken.
56
+ - **Feedback loops:** Logging occurs only after `deliverA2aMessage` returns true. Failed sends do not create fake conversation history.
57
+
58
+ ---
59
+
60
+ ## 6. External surfaces
61
+
62
+ The new external surface is a local state JSONL file containing mentor prompt content. It stays under the agent state directory and is not published or sent elsewhere by this change. Stage-A prompt content changes because it can now include both sides of the mentor exchange. The a2a wire format, Telegram behavior, scheduling policy, and reply capture remain unchanged.
63
+
64
+ ---
65
+
66
+ ## 7. Rollback cost
67
+
68
+ Rollback is a hot-fix release that reverts the MentorStageA, AgentServer, and test changes. The JSONL file can remain on disk; older versions ignore it. No database migration or agent state repair is required.
69
+
70
+ ---
71
+
72
+ ## Conclusion
73
+
74
+ The change closes the half-history limitation without weakening the two-hats boundary. Stage A still receives only user-visible conversation and the mentor's own agenda, but now that visible conversation includes both mentor prompts and mentee replies. Clear to ship for PR review.
75
+
76
+ ---
77
+
78
+ ## Second-pass review (if required)
79
+
80
+ **Reviewer:** Justin review requested in PR
81
+ **Independent read of the artifact: pending external review**
82
+
83
+ This changes a mentor information-flow surface, so the PR is intentionally opened for Justin review before merge.
84
+
85
+ ---
86
+
87
+ ## Evidence pointers
88
+
89
+ - `npm test -- --run tests/unit/MentorStageA.test.ts`
90
+ - `npm run lint`