instar 1.3.1648 → 1.3.1649
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 +20 -0
- package/dist/commands/server.js.map +1 -1
- package/dist/core/SessionManager.d.ts +6 -121
- package/dist/core/SessionManager.d.ts.map +1 -1
- package/dist/core/SessionManager.js +40 -7
- package/dist/core/SessionManager.js.map +1 -1
- package/dist/core/sessionCapacityRefusedError.d.ts +8 -0
- package/dist/core/sessionCapacityRefusedError.d.ts.map +1 -0
- package/dist/core/sessionCapacityRefusedError.js +13 -0
- package/dist/core/sessionCapacityRefusedError.js.map +1 -0
- package/dist/data/standards-guard-index.json +1 -1
- package/dist/data/standards-guard-index.meta.json +2 -2
- package/dist/data/standards-registry.meta.json +1 -1
- package/dist/messaging/TelegramAdapter.d.ts +10 -0
- package/dist/messaging/TelegramAdapter.d.ts.map +1 -1
- package/dist/messaging/TelegramAdapter.js +12 -1
- package/dist/messaging/TelegramAdapter.js.map +1 -1
- package/dist/messaging/telegram-origin/TelegramOriginBoot.d.ts +2 -0
- package/dist/messaging/telegram-origin/TelegramOriginBoot.d.ts.map +1 -1
- package/dist/messaging/telegram-origin/TelegramOriginBoot.js +2 -0
- package/dist/messaging/telegram-origin/TelegramOriginBoot.js.map +1 -1
- package/dist/messaging/telegram-origin/TelegramOriginRuntime.d.ts +16 -0
- package/dist/messaging/telegram-origin/TelegramOriginRuntime.d.ts.map +1 -1
- package/dist/messaging/telegram-origin/TelegramOriginRuntime.js +23 -2
- package/dist/messaging/telegram-origin/TelegramOriginRuntime.js.map +1 -1
- package/dist/messaging/telegram-origin/TelegramOriginService.d.ts +1 -0
- package/dist/messaging/telegram-origin/TelegramOriginService.d.ts.map +1 -1
- package/dist/messaging/telegram-origin/TelegramOriginService.js +5 -2
- package/dist/messaging/telegram-origin/TelegramOriginService.js.map +1 -1
- package/dist/native/InstarWedgeCanary.app/Contents/MacOS/InstarWedgeCanary +0 -0
- package/dist/native/instar-desktop-host +0 -0
- package/dist/scheduler/JobScheduler.d.ts.map +1 -1
- package/dist/scheduler/JobScheduler.js +6 -1
- package/dist/scheduler/JobScheduler.js.map +1 -1
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +5 -1
- package/dist/server/routes.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +48 -48
- package/src/data/standards-guard-index.json +1 -1
- package/src/data/standards-guard-index.meta.json +2 -2
- package/src/data/standards-registry.meta.json +1 -1
- package/upgrades/1.3.1649.md +28 -0
- package/upgrades/job-alert-global-cap.eli16.md +9 -0
- package/upgrades/side-effects/echo-bugs-recovered-reply-history.md +67 -0
- package/upgrades/side-effects/job-alert-global-cap.md +66 -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-11-
|
|
5
|
-
"instarVersion": "1.3.
|
|
4
|
+
"generatedAt": "2026-11-04T07:49:43.811Z",
|
|
5
|
+
"instarVersion": "1.3.1649",
|
|
6
6
|
"entryCount": 206,
|
|
7
7
|
"entries": {
|
|
8
8
|
"hook:session-start": {
|
|
@@ -435,7 +435,7 @@
|
|
|
435
435
|
"type": "route-group",
|
|
436
436
|
"domain": "monitoring",
|
|
437
437
|
"sourcePath": "src/server/routes.ts",
|
|
438
|
-
"contentHash": "
|
|
438
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
439
439
|
"since": "2025-01-01"
|
|
440
440
|
},
|
|
441
441
|
"route-group:agents": {
|
|
@@ -443,7 +443,7 @@
|
|
|
443
443
|
"type": "route-group",
|
|
444
444
|
"domain": "sessions",
|
|
445
445
|
"sourcePath": "src/server/routes.ts",
|
|
446
|
-
"contentHash": "
|
|
446
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
447
447
|
"since": "2025-01-01"
|
|
448
448
|
},
|
|
449
449
|
"route-group:backups": {
|
|
@@ -451,7 +451,7 @@
|
|
|
451
451
|
"type": "route-group",
|
|
452
452
|
"domain": "operations",
|
|
453
453
|
"sourcePath": "src/server/routes.ts",
|
|
454
|
-
"contentHash": "
|
|
454
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
455
455
|
"since": "2025-01-01"
|
|
456
456
|
},
|
|
457
457
|
"route-group:git": {
|
|
@@ -459,7 +459,7 @@
|
|
|
459
459
|
"type": "route-group",
|
|
460
460
|
"domain": "coordination",
|
|
461
461
|
"sourcePath": "src/server/routes.ts",
|
|
462
|
-
"contentHash": "
|
|
462
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
463
463
|
"since": "2025-01-01"
|
|
464
464
|
},
|
|
465
465
|
"route-group:memory": {
|
|
@@ -467,7 +467,7 @@
|
|
|
467
467
|
"type": "route-group",
|
|
468
468
|
"domain": "memory",
|
|
469
469
|
"sourcePath": "src/server/routes.ts",
|
|
470
|
-
"contentHash": "
|
|
470
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
471
471
|
"since": "2025-01-01"
|
|
472
472
|
},
|
|
473
473
|
"route-group:semantic": {
|
|
@@ -475,7 +475,7 @@
|
|
|
475
475
|
"type": "route-group",
|
|
476
476
|
"domain": "memory",
|
|
477
477
|
"sourcePath": "src/server/routes.ts",
|
|
478
|
-
"contentHash": "
|
|
478
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
479
479
|
"since": "2025-01-01"
|
|
480
480
|
},
|
|
481
481
|
"route-group:status": {
|
|
@@ -483,7 +483,7 @@
|
|
|
483
483
|
"type": "route-group",
|
|
484
484
|
"domain": "monitoring",
|
|
485
485
|
"sourcePath": "src/server/routes.ts",
|
|
486
|
-
"contentHash": "
|
|
486
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
487
487
|
"since": "2025-01-01"
|
|
488
488
|
},
|
|
489
489
|
"route-group:capabilities": {
|
|
@@ -491,7 +491,7 @@
|
|
|
491
491
|
"type": "route-group",
|
|
492
492
|
"domain": "mapping",
|
|
493
493
|
"sourcePath": "src/server/routes.ts",
|
|
494
|
-
"contentHash": "
|
|
494
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
495
495
|
"since": "2025-01-01"
|
|
496
496
|
},
|
|
497
497
|
"route-group:project-map": {
|
|
@@ -499,7 +499,7 @@
|
|
|
499
499
|
"type": "route-group",
|
|
500
500
|
"domain": "mapping",
|
|
501
501
|
"sourcePath": "src/server/routes.ts",
|
|
502
|
-
"contentHash": "
|
|
502
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
503
503
|
"since": "2025-01-01"
|
|
504
504
|
},
|
|
505
505
|
"route-group:coherence": {
|
|
@@ -507,7 +507,7 @@
|
|
|
507
507
|
"type": "route-group",
|
|
508
508
|
"domain": "coherence",
|
|
509
509
|
"sourcePath": "src/server/routes.ts",
|
|
510
|
-
"contentHash": "
|
|
510
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
511
511
|
"since": "2025-01-01"
|
|
512
512
|
},
|
|
513
513
|
"route-group:topic-bindings": {
|
|
@@ -515,7 +515,7 @@
|
|
|
515
515
|
"type": "route-group",
|
|
516
516
|
"domain": "sessions",
|
|
517
517
|
"sourcePath": "src/server/routes.ts",
|
|
518
|
-
"contentHash": "
|
|
518
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
519
519
|
"since": "2025-01-01"
|
|
520
520
|
},
|
|
521
521
|
"route-group:context": {
|
|
@@ -523,7 +523,7 @@
|
|
|
523
523
|
"type": "route-group",
|
|
524
524
|
"domain": "context",
|
|
525
525
|
"sourcePath": "src/server/routes.ts",
|
|
526
|
-
"contentHash": "
|
|
526
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
527
527
|
"since": "2025-01-01"
|
|
528
528
|
},
|
|
529
529
|
"route-group:scope-coherence": {
|
|
@@ -531,7 +531,7 @@
|
|
|
531
531
|
"type": "route-group",
|
|
532
532
|
"domain": "coherence",
|
|
533
533
|
"sourcePath": "src/server/routes.ts",
|
|
534
|
-
"contentHash": "
|
|
534
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
535
535
|
"since": "2025-01-01"
|
|
536
536
|
},
|
|
537
537
|
"route-group:canonical-state": {
|
|
@@ -539,7 +539,7 @@
|
|
|
539
539
|
"type": "route-group",
|
|
540
540
|
"domain": "state",
|
|
541
541
|
"sourcePath": "src/server/routes.ts",
|
|
542
|
-
"contentHash": "
|
|
542
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
543
543
|
"since": "2025-01-01"
|
|
544
544
|
},
|
|
545
545
|
"route-group:ci": {
|
|
@@ -547,7 +547,7 @@
|
|
|
547
547
|
"type": "route-group",
|
|
548
548
|
"domain": "monitoring",
|
|
549
549
|
"sourcePath": "src/server/routes.ts",
|
|
550
|
-
"contentHash": "
|
|
550
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
551
551
|
"since": "2025-01-01"
|
|
552
552
|
},
|
|
553
553
|
"route-group:sessions": {
|
|
@@ -555,7 +555,7 @@
|
|
|
555
555
|
"type": "route-group",
|
|
556
556
|
"domain": "sessions",
|
|
557
557
|
"sourcePath": "src/server/routes.ts",
|
|
558
|
-
"contentHash": "
|
|
558
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
559
559
|
"since": "2025-01-01"
|
|
560
560
|
},
|
|
561
561
|
"route-group:jobs": {
|
|
@@ -563,7 +563,7 @@
|
|
|
563
563
|
"type": "route-group",
|
|
564
564
|
"domain": "scheduling",
|
|
565
565
|
"sourcePath": "src/server/routes.ts",
|
|
566
|
-
"contentHash": "
|
|
566
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
567
567
|
"since": "2025-01-01"
|
|
568
568
|
},
|
|
569
569
|
"route-group:skip-ledger": {
|
|
@@ -571,7 +571,7 @@
|
|
|
571
571
|
"type": "route-group",
|
|
572
572
|
"domain": "scheduling",
|
|
573
573
|
"sourcePath": "src/server/routes.ts",
|
|
574
|
-
"contentHash": "
|
|
574
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
575
575
|
"since": "2025-01-01"
|
|
576
576
|
},
|
|
577
577
|
"route-group:telegram": {
|
|
@@ -579,7 +579,7 @@
|
|
|
579
579
|
"type": "route-group",
|
|
580
580
|
"domain": "communication",
|
|
581
581
|
"sourcePath": "src/server/routes.ts",
|
|
582
|
-
"contentHash": "
|
|
582
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
583
583
|
"since": "2025-01-01"
|
|
584
584
|
},
|
|
585
585
|
"route-group:attention": {
|
|
@@ -587,7 +587,7 @@
|
|
|
587
587
|
"type": "route-group",
|
|
588
588
|
"domain": "communication",
|
|
589
589
|
"sourcePath": "src/server/routes.ts",
|
|
590
|
-
"contentHash": "
|
|
590
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
591
591
|
"since": "2025-01-01"
|
|
592
592
|
},
|
|
593
593
|
"route-group:relationships": {
|
|
@@ -595,7 +595,7 @@
|
|
|
595
595
|
"type": "route-group",
|
|
596
596
|
"domain": "relationships",
|
|
597
597
|
"sourcePath": "src/server/routes.ts",
|
|
598
|
-
"contentHash": "
|
|
598
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
599
599
|
"since": "2025-01-01"
|
|
600
600
|
},
|
|
601
601
|
"route-group:feedback": {
|
|
@@ -603,7 +603,7 @@
|
|
|
603
603
|
"type": "route-group",
|
|
604
604
|
"domain": "feedback",
|
|
605
605
|
"sourcePath": "src/server/routes.ts",
|
|
606
|
-
"contentHash": "
|
|
606
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
607
607
|
"since": "2025-01-01"
|
|
608
608
|
},
|
|
609
609
|
"route-group:updates": {
|
|
@@ -611,7 +611,7 @@
|
|
|
611
611
|
"type": "route-group",
|
|
612
612
|
"domain": "updates",
|
|
613
613
|
"sourcePath": "src/server/routes.ts",
|
|
614
|
-
"contentHash": "
|
|
614
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
615
615
|
"since": "2025-01-01"
|
|
616
616
|
},
|
|
617
617
|
"route-group:dispatches": {
|
|
@@ -619,7 +619,7 @@
|
|
|
619
619
|
"type": "route-group",
|
|
620
620
|
"domain": "dispatches",
|
|
621
621
|
"sourcePath": "src/server/routes.ts",
|
|
622
|
-
"contentHash": "
|
|
622
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
623
623
|
"since": "2025-01-01"
|
|
624
624
|
},
|
|
625
625
|
"route-group:quota": {
|
|
@@ -627,7 +627,7 @@
|
|
|
627
627
|
"type": "route-group",
|
|
628
628
|
"domain": "monitoring",
|
|
629
629
|
"sourcePath": "src/server/routes.ts",
|
|
630
|
-
"contentHash": "
|
|
630
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
631
631
|
"since": "2025-01-01"
|
|
632
632
|
},
|
|
633
633
|
"route-group:publishing": {
|
|
@@ -635,7 +635,7 @@
|
|
|
635
635
|
"type": "route-group",
|
|
636
636
|
"domain": "publishing",
|
|
637
637
|
"sourcePath": "src/server/routes.ts",
|
|
638
|
-
"contentHash": "
|
|
638
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
639
639
|
"since": "2025-01-01"
|
|
640
640
|
},
|
|
641
641
|
"route-group:private-views": {
|
|
@@ -643,7 +643,7 @@
|
|
|
643
643
|
"type": "route-group",
|
|
644
644
|
"domain": "publishing",
|
|
645
645
|
"sourcePath": "src/server/routes.ts",
|
|
646
|
-
"contentHash": "
|
|
646
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
647
647
|
"since": "2025-01-01"
|
|
648
648
|
},
|
|
649
649
|
"route-group:tunnel": {
|
|
@@ -651,7 +651,7 @@
|
|
|
651
651
|
"type": "route-group",
|
|
652
652
|
"domain": "networking",
|
|
653
653
|
"sourcePath": "src/server/routes.ts",
|
|
654
|
-
"contentHash": "
|
|
654
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
655
655
|
"since": "2025-01-01"
|
|
656
656
|
},
|
|
657
657
|
"route-group:events": {
|
|
@@ -659,7 +659,7 @@
|
|
|
659
659
|
"type": "route-group",
|
|
660
660
|
"domain": "networking",
|
|
661
661
|
"sourcePath": "src/server/routes.ts",
|
|
662
|
-
"contentHash": "
|
|
662
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
663
663
|
"since": "2025-01-01"
|
|
664
664
|
},
|
|
665
665
|
"route-group:evolution": {
|
|
@@ -667,7 +667,7 @@
|
|
|
667
667
|
"type": "route-group",
|
|
668
668
|
"domain": "evolution",
|
|
669
669
|
"sourcePath": "src/server/routes.ts",
|
|
670
|
-
"contentHash": "
|
|
670
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
671
671
|
"since": "2025-01-01"
|
|
672
672
|
},
|
|
673
673
|
"route-group:watchdog": {
|
|
@@ -675,7 +675,7 @@
|
|
|
675
675
|
"type": "route-group",
|
|
676
676
|
"domain": "monitoring",
|
|
677
677
|
"sourcePath": "src/server/routes.ts",
|
|
678
|
-
"contentHash": "
|
|
678
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
679
679
|
"since": "2025-01-01"
|
|
680
680
|
},
|
|
681
681
|
"route-group:topic-memory": {
|
|
@@ -683,7 +683,7 @@
|
|
|
683
683
|
"type": "route-group",
|
|
684
684
|
"domain": "memory",
|
|
685
685
|
"sourcePath": "src/server/routes.ts",
|
|
686
|
-
"contentHash": "
|
|
686
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
687
687
|
"since": "2025-01-01"
|
|
688
688
|
},
|
|
689
689
|
"route-group:state-sync": {
|
|
@@ -691,7 +691,7 @@
|
|
|
691
691
|
"type": "route-group",
|
|
692
692
|
"domain": "coordination",
|
|
693
693
|
"sourcePath": "src/server/routes.ts",
|
|
694
|
-
"contentHash": "
|
|
694
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
695
695
|
"since": "2025-01-01"
|
|
696
696
|
},
|
|
697
697
|
"route-group:intent": {
|
|
@@ -699,7 +699,7 @@
|
|
|
699
699
|
"type": "route-group",
|
|
700
700
|
"domain": "intent",
|
|
701
701
|
"sourcePath": "src/server/routes.ts",
|
|
702
|
-
"contentHash": "
|
|
702
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
703
703
|
"since": "2025-01-01"
|
|
704
704
|
},
|
|
705
705
|
"route-group:triage": {
|
|
@@ -707,7 +707,7 @@
|
|
|
707
707
|
"type": "route-group",
|
|
708
708
|
"domain": "safety",
|
|
709
709
|
"sourcePath": "src/server/routes.ts",
|
|
710
|
-
"contentHash": "
|
|
710
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
711
711
|
"since": "2025-01-01"
|
|
712
712
|
},
|
|
713
713
|
"route-group:operations": {
|
|
@@ -715,7 +715,7 @@
|
|
|
715
715
|
"type": "route-group",
|
|
716
716
|
"domain": "safety",
|
|
717
717
|
"sourcePath": "src/server/routes.ts",
|
|
718
|
-
"contentHash": "
|
|
718
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
719
719
|
"since": "2025-01-01"
|
|
720
720
|
},
|
|
721
721
|
"route-group:sentinel": {
|
|
@@ -723,7 +723,7 @@
|
|
|
723
723
|
"type": "route-group",
|
|
724
724
|
"domain": "safety",
|
|
725
725
|
"sourcePath": "src/server/routes.ts",
|
|
726
|
-
"contentHash": "
|
|
726
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
727
727
|
"since": "2025-01-01"
|
|
728
728
|
},
|
|
729
729
|
"route-group:trust": {
|
|
@@ -731,7 +731,7 @@
|
|
|
731
731
|
"type": "route-group",
|
|
732
732
|
"domain": "safety",
|
|
733
733
|
"sourcePath": "src/server/routes.ts",
|
|
734
|
-
"contentHash": "
|
|
734
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
735
735
|
"since": "2025-01-01"
|
|
736
736
|
},
|
|
737
737
|
"route-group:monitoring": {
|
|
@@ -739,7 +739,7 @@
|
|
|
739
739
|
"type": "route-group",
|
|
740
740
|
"domain": "monitoring",
|
|
741
741
|
"sourcePath": "src/server/routes.ts",
|
|
742
|
-
"contentHash": "
|
|
742
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
743
743
|
"since": "2025-01-01"
|
|
744
744
|
},
|
|
745
745
|
"route-group:commitments": {
|
|
@@ -747,7 +747,7 @@
|
|
|
747
747
|
"type": "route-group",
|
|
748
748
|
"domain": "commitments",
|
|
749
749
|
"sourcePath": "src/server/routes.ts",
|
|
750
|
-
"contentHash": "
|
|
750
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
751
751
|
"since": "2025-01-01"
|
|
752
752
|
},
|
|
753
753
|
"route-group:episodes": {
|
|
@@ -755,7 +755,7 @@
|
|
|
755
755
|
"type": "route-group",
|
|
756
756
|
"domain": "memory",
|
|
757
757
|
"sourcePath": "src/server/routes.ts",
|
|
758
|
-
"contentHash": "
|
|
758
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
759
759
|
"since": "2025-01-01"
|
|
760
760
|
},
|
|
761
761
|
"route-group:messages": {
|
|
@@ -763,7 +763,7 @@
|
|
|
763
763
|
"type": "route-group",
|
|
764
764
|
"domain": "coordination",
|
|
765
765
|
"sourcePath": "src/server/routes.ts",
|
|
766
|
-
"contentHash": "
|
|
766
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
767
767
|
"since": "2025-01-01"
|
|
768
768
|
},
|
|
769
769
|
"route-group:system-reviews": {
|
|
@@ -771,7 +771,7 @@
|
|
|
771
771
|
"type": "route-group",
|
|
772
772
|
"domain": "monitoring",
|
|
773
773
|
"sourcePath": "src/server/routes.ts",
|
|
774
|
-
"contentHash": "
|
|
774
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
775
775
|
"since": "2025-01-01"
|
|
776
776
|
},
|
|
777
777
|
"route-group:machine-mesh": {
|
|
@@ -787,7 +787,7 @@
|
|
|
787
787
|
"type": "route-group",
|
|
788
788
|
"domain": "security",
|
|
789
789
|
"sourcePath": "src/server/routes.ts",
|
|
790
|
-
"contentHash": "
|
|
790
|
+
"contentHash": "b26141cc65bcc119c3ff1089c0e4cb8425d24af5460d475d780f5ca485b653f2",
|
|
791
791
|
"since": "2025-01-01"
|
|
792
792
|
},
|
|
793
793
|
"cli:init": {
|
|
@@ -1571,7 +1571,7 @@
|
|
|
1571
1571
|
"type": "subsystem",
|
|
1572
1572
|
"domain": "sessions",
|
|
1573
1573
|
"sourcePath": "src/core/SessionManager.ts",
|
|
1574
|
-
"contentHash": "
|
|
1574
|
+
"contentHash": "ae49c6c5bb33ad5e39b1bc0336372f2f4355be2952f4940ecbca3b1faa70bc51",
|
|
1575
1575
|
"since": "2025-01-01"
|
|
1576
1576
|
},
|
|
1577
1577
|
"subsystem:auto-updater": {
|
|
@@ -1603,7 +1603,7 @@
|
|
|
1603
1603
|
"type": "subsystem",
|
|
1604
1604
|
"domain": "scheduling",
|
|
1605
1605
|
"sourcePath": "src/scheduler/JobScheduler.ts",
|
|
1606
|
-
"contentHash": "
|
|
1606
|
+
"contentHash": "a19229a622391310d4b4e768aaa28f396a5a1a6b9eb6cad346af18241115f712",
|
|
1607
1607
|
"since": "2025-01-01"
|
|
1608
1608
|
},
|
|
1609
1609
|
"subsystem:project-mapper": {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"generatedFrom": "source-tree",
|
|
4
4
|
"registrySha256": "e9eb5bb7f56ce6f81c5f80210c1ec7999d4b8c7d2ff1ab5cfd97a269172ce2ac",
|
|
5
|
-
"packageVersion": "1.3.
|
|
5
|
+
"packageVersion": "1.3.1649",
|
|
6
6
|
"guards": [
|
|
7
7
|
{
|
|
8
8
|
"ref": "docs/audits/phase-b/f10-triage.md",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"sha256": "
|
|
2
|
+
"sha256": "925a6e27d3abc6b957a8e865a9623c9a4a607cc43ddbf9bbe70cc8193b2f0e0e",
|
|
3
3
|
"registrySha256": "e9eb5bb7f56ce6f81c5f80210c1ec7999d4b8c7d2ff1ab5cfd97a269172ce2ac",
|
|
4
|
-
"packageVersion": "1.3.
|
|
4
|
+
"packageVersion": "1.3.1649"
|
|
5
5
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- assembled-by: assemble-next-md -->
|
|
4
|
+
<!-- bump: patch -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
Recovered Telegram session replies now get a topic history row from the confirmed receipt. A before-network connect failure that holds a session reply creates one operator attention item for that destination. Advisory preflight records now state that delivery is not confirmed.
|
|
9
|
+
|
|
10
|
+
The global session limit now returns a typed capacity refusal. Scheduled jobs wait in the existing priority queue without gaining a failure, and one scheduled job may use a guarded extra session place when conversations fill the ordinary allowance and memory is healthy. Old per-job failure reminders pause during the wait.
|
|
11
|
+
|
|
12
|
+
## What to Tell Your User
|
|
13
|
+
|
|
14
|
+
A delayed reply stays in the server's retry queue. Its delivery state is visible, and a recovered message appears in topic history once Telegram accepts it.
|
|
15
|
+
|
|
16
|
+
Scheduled checks no longer report a failure merely because conversations have filled the Studio's ordinary session allowance. They wait and try again when there is room.
|
|
17
|
+
|
|
18
|
+
## Summary of New Capabilities
|
|
19
|
+
|
|
20
|
+
Recovered Telegram replies are recorded in topic history; held session replies raise an operator attention item, and advisory rows clearly distinguish preflight from delivery.
|
|
21
|
+
|
|
22
|
+
One scheduled job can run beyond the ordinary conversation allowance when memory is healthy, while the hard host limit and the subscription lane limit still protect the machine.
|
|
23
|
+
|
|
24
|
+
## Evidence
|
|
25
|
+
|
|
26
|
+
A Mac Studio origin outbox receipt for Echo Bugs topic 10000001534 had Telegram message 1550 after recovery, while the topic history had no row. The focused regression failed before the adapter method and passed after it; the advisory E2E check passed.
|
|
27
|
+
|
|
28
|
+
Regression tests first failed on the old global-limit behavior, then passed for typed waiting, a single guarded extra slot, simultaneous requests, high memory pressure, and conversations beyond the soft cap. The full repository verifier is required before merge.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Scheduled jobs and the global session limit — plain English
|
|
2
|
+
|
|
3
|
+
The first job-alert fix reached the Mac Studio and exposed a second limit. The Studio had twenty running conversations, which filled its ordinary session allowance. Health Check was refused before it reached the six-slot subscription lane. That refusal still counted as a failed job, so a machine with busy conversations could keep producing alerts and miss checks even after the first fix.
|
|
4
|
+
|
|
5
|
+
This correction makes a full global session pool a typed waiting condition, just like a full subscription lane. A scheduled job that reaches the limit waits in the existing priority queue. Its failure count does not rise, and it is retried every fifteen seconds when room becomes available. The scheduler pauses any old per-job failure reminder while the job waits; a real failure after the retry starts the normal failure alert again.
|
|
6
|
+
|
|
7
|
+
People can open conversations beyond the ordinary limit because a conversation is an immediate request. To keep that choice from blocking all scheduled checks, one scheduled job may borrow a single additional session place while the host's memory is healthy. The loan is limited to one running or starting job at a time, even if several jobs trigger together. The hard safety limit of three times the configured session allowance remains in place. High memory pressure closes the loan, and the six-slot subscription lane still has its own cap. This keeps the protection that matters after the June 2026 laptop memory failure.
|
|
8
|
+
|
|
9
|
+
This is a small, reversible correction to the already shipped capacity episode. It adds no new notification type or destination. A short wait remains silent; a long wait still produces one plain Attention message for the episode. The live Studio check that prompted this change found twenty conversations and Health Check's existing “Max sessions” errors; the new behavior must be verified on the next installed release before it can be called live.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Side-Effects Review — Echo Bugs reply recovery visibility
|
|
2
|
+
|
|
3
|
+
**Version / slug:** `echo-bugs-recovered-reply-history`
|
|
4
|
+
**Date:** 2026-11-04
|
|
5
|
+
**Author:** Echo
|
|
6
|
+
**Second-pass reviewer:** independent review agent
|
|
7
|
+
|
|
8
|
+
## Summary of the change
|
|
9
|
+
|
|
10
|
+
Tier 1, 8 source/test files and about 80 changed lines; one review round and one commit/gate attempt planned. A recovered origin send now mirrors its Telegram receipt into topic history, using the issues chat and real thread to restore the internal topic id. A held session reply caused by a proved connect failure creates a deduplicated hub attention item. The advisory log explicitly marks preflight rows as delivery unconfirmed. The transport's connect error code is logged without credentials. This is built in a fresh worktree based on `JKHeadley/main`, remote `https://github.com/JKHeadley/instar.git`, package version 1.3.1646. Rollback is a revert; the durable origin outbox and retry authority remain unchanged.
|
|
11
|
+
|
|
12
|
+
## Decision-point inventory
|
|
13
|
+
|
|
14
|
+
- Origin recovery send gate: pass-through. The existing sealed outbox owns retries; this patch only observes a confirmed receipt.
|
|
15
|
+
- History mirror: add. Only a correlated Bot API acceptance from `sendMessage` produces a history row; adapter dedupe prevents a second row.
|
|
16
|
+
- Held session attention: add signal. The proved before-network connect failure creates an operator observation; it does not grant or deny send permission.
|
|
17
|
+
- Advisory API interpretation: modify presentation. `clean` means preflight only and is labeled `not-confirmed`.
|
|
18
|
+
|
|
19
|
+
## 1. Over-block
|
|
20
|
+
|
|
21
|
+
No block/allow surface; no legitimate message is rejected by this patch.
|
|
22
|
+
|
|
23
|
+
## 2. Under-block
|
|
24
|
+
|
|
25
|
+
A process crash after the origin store saves a recovered acceptance but before the callback writes history can still leave a log gap. Other hold reasons still rely on existing status and notices. An accepted Telegram receipt does not prove that a human read the message.
|
|
26
|
+
|
|
27
|
+
## 3. Level-of-abstraction fit
|
|
28
|
+
|
|
29
|
+
The origin transport confirms platform acceptance, and the Telegram adapter owns topic history. The callback joins those layers only after the existing origin authority has accepted the receipt. The attention observation uses the existing hub item system rather than another sender.
|
|
30
|
+
|
|
31
|
+
## 4. Signal vs authority compliance
|
|
32
|
+
|
|
33
|
+
[Signal vs authority](../../docs/signal-vs-authority.md): no new blocking authority. The connect failure is a transport proof and only feeds logging and attention. Retry permission remains with the outbox.
|
|
34
|
+
|
|
35
|
+
## 4b. Judgment-point check
|
|
36
|
+
|
|
37
|
+
No static heuristic at a competing-signals decision point. The log mirror requires a concrete receipt, and the alert requires the existing proved-unsent failure class.
|
|
38
|
+
|
|
39
|
+
## 5. Interactions
|
|
40
|
+
|
|
41
|
+
Normal sends still log in `sendToTopic`; recovered sends bypass it and use this callback. Adapter message-id dedupe handles a callback repeated by a recovery race. The callback runs after durable outcome recording and cannot trigger a resend. Attention uses a stable per-operation id, so repeated holds of the same reply coalesce. A confirmed recovered receipt closes exactly that operation's item, including when attention lifecycle automation is disabled.
|
|
42
|
+
|
|
43
|
+
## 6. External surfaces
|
|
44
|
+
|
|
45
|
+
The advisory endpoint adds `stage` and `deliveryStatus`; existing fields remain. Recovered sends appear in topic history and search. The operator hub shows delayed session replies while Telegram connect attempts fail. No new Bot API request is made.
|
|
46
|
+
|
|
47
|
+
## 7. Multi-machine posture
|
|
48
|
+
|
|
49
|
+
Origin operations remain machine-local to their execution owner and are recovered there. A holder logs recovered receipts into its topic history. The hub attention is created on that holder. Forward-to-holder behavior on a standby is unchanged and owned by the separate topic 10000001549 work.
|
|
50
|
+
|
|
51
|
+
## 8. Rollback cost
|
|
52
|
+
|
|
53
|
+
Revert the code and restart the server. Already-written message history rows remain true receipt records; existing dedupe prevents duplicates. No migration is required.
|
|
54
|
+
|
|
55
|
+
## Evidence
|
|
56
|
+
|
|
57
|
+
On the Mac Studio, operation `4a9ca1dd-56f3-4294-8cab-7fb7d7f80f47` was accepted on a recovery attempt at 05:44:45 UTC with Telegram message 1550, but topic 10000001534 history lacked that row. Operation `1206bc11-c6b0-441a-8d3f-619fcb82b45b` was still admitted after a proved connect failure; its outbox scheduled a retry. The new regression test failed with `logRecoveredOriginMessage is not a function` before the adapter change and passes afterward. The advisory E2E test passes with the new status fields.
|
|
58
|
+
|
|
59
|
+
## Class-Closure Declaration
|
|
60
|
+
|
|
61
|
+
`defectClass: unbounded-self-action`, `closure: n/a`. The new notification is a one-shot response to one existing send hold, keyed by that operation id. It installs no timer, retry, or self-triggered loop; the existing origin outbox retains all retry authority. No agent-authored-artifact defect.
|
|
62
|
+
|
|
63
|
+
## Second-pass review
|
|
64
|
+
|
|
65
|
+
The independent reviewer confirmed that the callback requires a Telegram receipt and existing adapter dedupe prevents a second history row. Concern raised: the new attention item could remain open after delivery. The callback now closes an operation-scoped item after receipt-confirmed recovery, with a fallback when lifecycle automation is disabled. The reviewer also noted that a recovery-path callback test would strengthen the adapter-only test; the targeted integration and E2E checks cover the added history and advisory behavior.
|
|
66
|
+
|
|
67
|
+
**Recheck:** The reviewer concurs with the revised fix. Each pending operation has its own attention item, and confirmed recovery closes it with or without attention lifecycle automation. The documented crash window remains.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Side-Effects Review — Global session capacity for scheduled jobs
|
|
2
|
+
|
|
3
|
+
**Version / slug:** `job-alert-global-cap`
|
|
4
|
+
**Date:** 2026-11-03
|
|
5
|
+
**Author:** echo
|
|
6
|
+
**Second-pass reviewer:** independent Codex reviewer
|
|
7
|
+
|
|
8
|
+
## Summary of the change
|
|
9
|
+
|
|
10
|
+
Tier 1, reversible correction after live evidence on Studio: twenty running conversations caused Health Check to fail at the global session limit before the reroute gate. A typed global refusal now enters the capacity episode. The session manager lends one bounded place to a scheduled job when memory is below the high tier; pending admissions are counted so simultaneous jobs cannot both borrow it. The scheduler suspends old failure reminders during that wait. Approximately eight files and 130 changed code and test lines, plus short release artifacts; one design pass, one reviewer pass, and one commit planned.
|
|
11
|
+
|
|
12
|
+
## Decision-point inventory
|
|
13
|
+
|
|
14
|
+
- `SessionManager.spawnSession` owns the soft and hard session limits and emits the new typed refusal. Its pending counter closes simultaneous admission races.
|
|
15
|
+
- `SessionManager.confinedRerouteCapacity` reports saturation from the global limit as well as the reroute lane, so the existing job queue waits rather than retrying a known-full host every poll.
|
|
16
|
+
- `JobScheduler` recognizes the typed global refusal and uses the existing durable capacity episode. It suspends a stale per-job failure reminder until a real retry result arrives.
|
|
17
|
+
|
|
18
|
+
## 1. Over-block
|
|
19
|
+
|
|
20
|
+
If memory is high, the borrowed place closes even when a critical job is waiting. This is deliberate: the rerouted lane's existing memory gate would refuse the same launch, and adding a session under high pressure would recreate the host risk. When another scheduled job is running, the loan is unavailable until that job finishes. A conversation remains possible under the existing operator path.
|
|
21
|
+
|
|
22
|
+
## 2. Under-block
|
|
23
|
+
|
|
24
|
+
The one-job loan does not force a running conversation to end. A host already at the hard absolute limit or above the memory threshold still cannot start a job; the episode's ten-minute critical or thirty-minute other notice remains the alarm. The global refusal class covers this admission point; unrelated real spawn errors continue through the failure path.
|
|
25
|
+
|
|
26
|
+
## 3. Level-of-abstraction fit
|
|
27
|
+
|
|
28
|
+
The session manager already owns admission and memory pressure. It makes the bounded loan decision there, while the scheduler owns retry order and notices. A class, rather than the changing error text, tells the scheduler to wait. The queue and alert logic from the preceding release are reused.
|
|
29
|
+
|
|
30
|
+
## 4. Signal vs authority compliance
|
|
31
|
+
|
|
32
|
+
Required reference: [Signal vs Authority](../../docs/signal-vs-authority.md). The new refusal is a structural resource signal from the existing admission authority. The scheduler does not infer capacity from a string or create another independent gate. The one-place loan is a bounded resource invariant, conditioned on the existing memory tier and absolute limit, rather than a judgment about a conversation's importance.
|
|
33
|
+
|
|
34
|
+
## 4b. Judgment-point check
|
|
35
|
+
|
|
36
|
+
The job's declared scheduler provenance is the only eligibility signal. Job priority remains with the scheduler queue. No semantic text classifier decides whether to stop a session, admit a job, or alert Justin.
|
|
37
|
+
|
|
38
|
+
## 5. Interactions
|
|
39
|
+
|
|
40
|
+
Pending headless launches count during admission; this is conservative until each launch settles. One pending or running scheduled job owns the loan. The reroute lane still limits subscription sessions and refuses under high memory pressure. Capacity waits release their machine claim and regain it at retry. A prior failure reminder stops during a capacity wait; if the later spawn really fails, normal alert state starts again.
|
|
41
|
+
|
|
42
|
+
## 6. External surfaces
|
|
43
|
+
|
|
44
|
+
Health Check and other scheduled jobs can now wait silently at the global session limit. There is no new topic or message format. The existing episode notice remains in Attention. Direct `/sessions/spawn` calls cannot claim the scheduled loan by merely supplying a job slug; the scheduler trigger marker is required.
|
|
45
|
+
|
|
46
|
+
## Operator surface
|
|
47
|
+
|
|
48
|
+
No new control is added. Existing conversation management remains available if Justin chooses to close one.
|
|
49
|
+
|
|
50
|
+
## 7. Multi-machine posture
|
|
51
|
+
|
|
52
|
+
Machine-local by design: session count and memory pressure are measured per host. The existing multi-machine job claim and wait-release path determine where a retried job can run. The notice uses the existing one-voice Telegram path; no state is moved between topic owners.
|
|
53
|
+
|
|
54
|
+
## 8. Rollback cost
|
|
55
|
+
|
|
56
|
+
Reverting this correction restores the previous global admission rule. The typed error has no persistent format, and the already existing capacity episode state is compatible with the previous release. No migration or cleanup is needed.
|
|
57
|
+
|
|
58
|
+
## Second-pass review
|
|
59
|
+
|
|
60
|
+
Concur with the review. The reviewer checked the typed refusal, the simultaneous-loan race, the absolute and high-memory limits, and the old failure reminder behavior. Tests cover direct-spawn refusal, a single scheduled loan, high pressure, simultaneous requests, and typed-versus-text scheduler handling. No concrete regression was found in this diff.
|
|
61
|
+
|
|
62
|
+
The full verifier exposed one stale end-to-end assertion in `tests/e2e/job-run-history-lifecycle.test.ts`: it required a numeric success rate even when all runs were still pending. The existing API contract returns `null` until a run completes. The assertion now checks both states against that contract; no production stats behavior changed.
|
|
63
|
+
|
|
64
|
+
## Class-Closure Declaration
|
|
65
|
+
|
|
66
|
+
`defectClass: unbounded-self-action`, `closure: guard`, `enforcementType: ratchet`, citation: `tests/unit/job-capacity-episode.test.ts`. A global-cap refusal enters the existing durable capacity episode. The tests require silence for individual refused jobs, at most one episode notice, and one queued retry per poll after capacity returns. Pending admission counts allow only one borrowed scheduled slot, so repeated polling cannot create an unbounded launch burst.
|