instar 1.3.973 → 1.3.974
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/core/StandardsEnforcementAuditor.d.ts +43 -2
- package/dist/core/StandardsEnforcementAuditor.d.ts.map +1 -1
- package/dist/core/StandardsEnforcementAuditor.js +39 -9
- package/dist/core/StandardsEnforcementAuditor.js.map +1 -1
- package/dist/core/StandardsRegistryParser.d.ts +60 -5
- package/dist/core/StandardsRegistryParser.d.ts.map +1 -1
- package/dist/core/StandardsRegistryParser.js +111 -33
- package/dist/core/StandardsRegistryParser.js.map +1 -1
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +8 -2
- 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.974.md +74 -0
- package/upgrades/side-effects/honest-denominators-standards.md +147 -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-07-
|
|
5
|
-
"instarVersion": "1.3.
|
|
4
|
+
"generatedAt": "2026-07-26T02:08:55.331Z",
|
|
5
|
+
"instarVersion": "1.3.974",
|
|
6
6
|
"entryCount": 202,
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
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": "9cda21e349af7f9e1b0817a7a5aba7e54e0325a4c15ab3563ff87637aacb8515",
|
|
774
774
|
"since": "2025-01-01"
|
|
775
775
|
},
|
|
776
776
|
"cli:init": {
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- assembled-by: assemble-next-md -->
|
|
4
|
+
<!-- bump: patch -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
**The standards enforcement-coverage audit no longer reports a figure it cannot stand behind.**
|
|
9
|
+
Five honesty defects in one instrument, found while auditing the tool that audits our constitution
|
|
10
|
+
(2026-07-25). Live evidence on the dev machine: the audit reported `enforcedRatio: 0.0455` over
|
|
11
|
+
`total: 22` while the source registry carries **81** article headings — re-run over the whole
|
|
12
|
+
document the real figure is **0.5375**. The arithmetic was fine; the denominator was invisible, and
|
|
13
|
+
the visible number was 12× more alarming than reality.
|
|
14
|
+
|
|
15
|
+
- **`enforcedRatio` is now `number | null`.** With nothing to divide by it returns `null`, not `0`
|
|
16
|
+
("0% enforced" is a measurement nobody took — and an *alarming* fabrication is worse than a
|
|
17
|
+
flattering one, because a frightening number is the least likely to be questioned).
|
|
18
|
+
- **Family detection is structural, not a name allowlist.** A `##` section is a standards family
|
|
19
|
+
iff at least one `###` under it carries a `**Rule.**`. The old hardcoded five-name list silently
|
|
20
|
+
dropped every article under a sixth family (`## The Fractal`) — currently the Self-Hosting
|
|
21
|
+
standard. Prose sections are still excluded automatically, and the next family added needs no
|
|
22
|
+
code change to be seen.
|
|
23
|
+
- **The parse canary compares against the document's own denominator.** `MIN_EXPECTED_ARTICLES = 15`
|
|
24
|
+
(written when the real count was ~21) never moved as the registry grew to 81, so it would have
|
|
25
|
+
passed while 65 of 81 articles vanished. It now fails — naming each lost heading — whenever a
|
|
26
|
+
heading inside a family parses with no rule. The floor is retained as a coarse backstop only.
|
|
27
|
+
- **`converged` carries its meaning.** `GET /conformance/coverage/health` adds `convergedMeans`:
|
|
28
|
+
the field has only ever meant "the deterministic pass is stable", never "the standards are
|
|
29
|
+
healthy" — but sitting bare beside the ratio it read as the second thing.
|
|
30
|
+
- **An unreadable registry no longer hashes identically to an empty one** in the recompute cache.
|
|
31
|
+
|
|
32
|
+
`CoverageSummary` gains `assessmentTrustworthy` plus a `registry` provenance block (path, bytes,
|
|
33
|
+
article headings found, parsed, dropped headings, families, canary verdict), so a fragment can be
|
|
34
|
+
measured but can never pose as the whole.
|
|
35
|
+
|
|
36
|
+
## What to Tell Your User
|
|
37
|
+
|
|
38
|
+
Nothing to configure; this is an internal observability instrument (dev-agent-gated, read-only, and
|
|
39
|
+
it gates nothing). If you had ever read a standards-enforcement percentage off this endpoint, read
|
|
40
|
+
it again — the old figure may have been computed over a fraction of your constitution, and the
|
|
41
|
+
response now tells you exactly what it counted.
|
|
42
|
+
|
|
43
|
+
## Summary of New Capabilities
|
|
44
|
+
|
|
45
|
+
- `parseStandardsRegistryDetailed` / `loadStandardsRegistryDetailed` return
|
|
46
|
+
`RegistryParseDiagnostics` (families, article headings, parsed, dropped headings, non-family
|
|
47
|
+
sections).
|
|
48
|
+
- `runRegistryCanary(articles, diagnostics?)` reports `articleHeadings` + `completenessAssessed`,
|
|
49
|
+
and says so when it could NOT assess completeness rather than implying a clean bill of health.
|
|
50
|
+
- `GET /conformance/coverage` + `/conformance/coverage/health` carry `assessmentTrustworthy`,
|
|
51
|
+
`registry`, and `convergedMeans`.
|
|
52
|
+
|
|
53
|
+
## Evidence
|
|
54
|
+
|
|
55
|
+
- `tests/unit/standards-conformance-gate.test.ts` — structural family detection (incl. an invented
|
|
56
|
+
family and `The Fractal`); the canary reports its denominator and admits when it could not check;
|
|
57
|
+
the silent-drop case the old floor passed and the completeness check now names.
|
|
58
|
+
- `tests/unit/standards-enforcement-auditor.test.ts` — `enforcedRatio` null over an empty registry;
|
|
59
|
+
provenance + trustworthiness on a real pass vs a truncated fragment; unreadable ≠ empty in
|
|
60
|
+
`computeInputHash`.
|
|
61
|
+
- `tests/integration/conformance-dev-gate-route.test.ts` — the HTTP response returns `null` not `0`,
|
|
62
|
+
carries provenance, never presents `converged` bare, and gives a real ratio over a visible
|
|
63
|
+
denominator when populated.
|
|
64
|
+
- `tests/e2e/standards-coverage-lifecycle.test.ts` — the live route assesses the WHOLE constitution
|
|
65
|
+
(denominator equals the document's own heading count; families include `The Fractal`), and a
|
|
66
|
+
truncated registry cannot present itself as trustworthy.
|
|
67
|
+
|
|
68
|
+
## Known Gap (tracked, not deferred)
|
|
69
|
+
|
|
70
|
+
This does **not** change which registry copy the server reads. The audit reads the agent-home
|
|
71
|
+
snapshot, and `PostUpdateMigrator` classifies a drifted snapshot as "customized — left untouched",
|
|
72
|
+
so it stays frozen. What changes today is that the stale read is no longer *silent*: it comes back
|
|
73
|
+
`assessmentTrustworthy: false` with the counts attached instead of a confident low ratio. The
|
|
74
|
+
migration is the next item on the same project tier. <!-- tracked: CMT-1035 -->
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# Side-Effects Review — honest denominators, part two: the standards-enforcement audit
|
|
2
|
+
|
|
3
|
+
## Summary of the change
|
|
4
|
+
|
|
5
|
+
Five honesty defects in ONE instrument — the standards enforcement-coverage audit — all found by
|
|
6
|
+
the convergence-towards-coherence audit (2026-07-25) while measuring the instrument that measures
|
|
7
|
+
our constitution. Live evidence: `GET /conformance/coverage/health` on this machine returned
|
|
8
|
+
`{converged: true, total: 22, enforcedRatio: 0.0455}` while `docs/STANDARDS-REGISTRY.md` in the
|
|
9
|
+
source repo carries **81** article headings. Re-run over the real registry: `total: 80`,
|
|
10
|
+
`enforcedRatio: 0.5375`. The reported figure was 12× more alarming than reality and was quoted to
|
|
11
|
+
the operator as fact.
|
|
12
|
+
|
|
13
|
+
**A. `enforcedRatio` fabricated a ratio with no denominator.** `total === 0 ? 0 : …` returned `0`
|
|
14
|
+
— "0% of standards enforced", a measurement nobody had taken. Now `number | null`, with the type
|
|
15
|
+
telling callers not to coerce.
|
|
16
|
+
|
|
17
|
+
**B. Family detection was a hardcoded five-name allowlist**
|
|
18
|
+
(`The Root|The Substrate|Building|Shipping|Interaction`). The registry has SIX standards families;
|
|
19
|
+
every article under `## The Fractal — the framework that develops itself` was silently dropped
|
|
20
|
+
(currently the Self-Hosting standard). Replaced with structural detection: a `##` section is a
|
|
21
|
+
family iff ≥1 `###` under it carries a `**Rule.**`. The prose sections (Why this exists, Genesis,
|
|
22
|
+
Two layers, How a new standard joins, The Stakes) carry no rule lines and are excluded
|
|
23
|
+
automatically — same exclusion the allowlist achieved, with no list to maintain.
|
|
24
|
+
|
|
25
|
+
**C. The parse canary's floor could not detect a fourfold collapse.**
|
|
26
|
+
`MIN_EXPECTED_ARTICLES = 15`, commented "far below the real ~21", never moved as the registry grew
|
|
27
|
+
to 81 — so it would pass while 65 of 81 articles vanished. Added a completeness check:
|
|
28
|
+
`droppedHeadings` (headings inside a detected family with no rule line) fails the canary and names
|
|
29
|
+
each loss. The floor is retained, documented as a coarse backstop only.
|
|
30
|
+
|
|
31
|
+
**D. `converged: true` sat bare beside the ratio.** It only ever meant "the deterministic pass is
|
|
32
|
+
stable on unchanged inputs". Added `convergedMeans` so the meaning travels with the field.
|
|
33
|
+
|
|
34
|
+
**E. An unreadable registry hashed identically to an empty one** in `computeInputHash`
|
|
35
|
+
(`catch { registry = '' }`) — absence and emptiness sharing a cache slot, the same shape one layer
|
|
36
|
+
down. Now distinguishable via an explicit marker.
|
|
37
|
+
|
|
38
|
+
Supporting surface: `parseStandardsRegistryDetailed` / `loadStandardsRegistryDetailed` return
|
|
39
|
+
`RegistryParseDiagnostics`; `runRegistryCanary(articles, diagnostics?)` reports `articleHeadings`
|
|
40
|
+
and `completenessAssessed`; `CoverageSummary` gains `assessmentTrustworthy` + a `registry`
|
|
41
|
+
provenance block.
|
|
42
|
+
|
|
43
|
+
## Decision-point inventory
|
|
44
|
+
|
|
45
|
+
- `computeCoverage` — an OBSERVE-ONLY reporter. Gates nothing, blocks nothing, has no authority
|
|
46
|
+
over any pipeline. The change alters what it *reports*, never what anything *does*.
|
|
47
|
+
- `runRegistryCanary` — a state-detector whose verdict is returned as DATA. Both call sites
|
|
48
|
+
(`specReviewRoutes` HTTP handler and `runConformanceCheck` for the CLI) attach it to the
|
|
49
|
+
response; neither throws on it. A stricter canary therefore cannot newly block anything.
|
|
50
|
+
- `parseStandardsRegistry` — pure function. Behaviour change: it now returns MORE articles
|
|
51
|
+
(the previously-dropped family).
|
|
52
|
+
- `GET /conformance/coverage/health` — read-only, dev-agent-gated, `X-Instar-Request` gated.
|
|
53
|
+
Response gains fields; `enforcedRatio` changes type.
|
|
54
|
+
|
|
55
|
+
No gate, hook, reaper, sentinel, or scheduler path is touched.
|
|
56
|
+
|
|
57
|
+
## 1. Over-block
|
|
58
|
+
|
|
59
|
+
The audit has no blocking authority, so it cannot over-block. The two adjacent risks:
|
|
60
|
+
|
|
61
|
+
**The canary becoming stricter.** `runRegistryCanary` now fails when a heading inside a family
|
|
62
|
+
carries no `**Rule.**`. Verified against the REAL registry: 80 headings, 80 parsed, zero dropped —
|
|
63
|
+
so the live document passes. A future editor adding a non-article `###` inside a standards family
|
|
64
|
+
WOULD trip it. That is intended (the failure names the heading and is trivially resolved by adding
|
|
65
|
+
a rule or moving the subheading), and it is signal-only: the verdict rides in a response body,
|
|
66
|
+
where no consumer treats it as a block. Checked all call sites for a throw-on-canary — none.
|
|
67
|
+
|
|
68
|
+
**The conformance gate seeing more standards.** `StandardsConformanceReviewer` now receives the
|
|
69
|
+
previously-dropped family, so a spec review may raise findings against Self-Hosting that it
|
|
70
|
+
silently could not raise before. That is the defect being fixed, not a side effect to mitigate:
|
|
71
|
+
the article was always in the constitution. The reviewer is signal-only per its own spec.
|
|
72
|
+
|
|
73
|
+
## 2. Under-block
|
|
74
|
+
|
|
75
|
+
**The stale-copy defect is NOT fixed here and is deliberately not bundled.** The running server
|
|
76
|
+
reads `<projectDir>/docs/STANDARDS-REGISTRY.md` — the agent-home snapshot — and
|
|
77
|
+
`PostUpdateMigrator.migrateFeatureMaturationGate` only overwrites that file when its hash is in a
|
|
78
|
+
known `prior` set. Our copy has drifted out of that set, so it is classified "customized — left
|
|
79
|
+
untouched" and stays frozen at 22 articles forever. Fixing it is install-base migration work with
|
|
80
|
+
a real risk (overwriting a genuinely customised registry on someone's machine) and deserves its
|
|
81
|
+
own review rather than riding along here.
|
|
82
|
+
|
|
83
|
+
What this change buys in the meantime is that the stale read is no longer SILENT: the same
|
|
84
|
+
22-article read now returns `assessmentTrustworthy: false` with `registry.parsed: 22` and the
|
|
85
|
+
canary failures attached, instead of a bare confident `0.0455`.
|
|
86
|
+
|
|
87
|
+
Tracked, not deferred-and-forgotten: <!-- tracked: CMT-1035 --> (tier-one closeout commitment,
|
|
88
|
+
topic 29723) — the migration is the next item on the same tier and the completion condition of the
|
|
89
|
+
registered autonomous run `run-ms13zzrz-78576404` requires the LIVE figure to be computed over ≥80
|
|
90
|
+
standards, so this cannot be quietly dropped.
|
|
91
|
+
|
|
92
|
+
## 3. Blast radius
|
|
93
|
+
|
|
94
|
+
`enforcedRatio: number → number | null` is the one breaking-shaped change. Every consumer in the
|
|
95
|
+
repo was checked:
|
|
96
|
+
|
|
97
|
+
- `src/server/routes.ts` — spreads `report.summary` into the response; no arithmetic.
|
|
98
|
+
- `tests/unit/standards-enforcement-auditor.test.ts`, `tests/e2e/standards-coverage-lifecycle.test.ts`
|
|
99
|
+
— assert on real (non-empty) registries where the value stays a number; both still pass.
|
|
100
|
+
- `grep -rn "enforcedRatio"` across `src/`, `scripts/`, `tests/` — no other reader, no CI ratchet,
|
|
101
|
+
no dashboard tile consumes it.
|
|
102
|
+
- `docs/`/CLAUDE.md prose mentions it descriptively only.
|
|
103
|
+
|
|
104
|
+
`family` string values are unchanged for the five pre-existing families: the new
|
|
105
|
+
`familyName()` truncates at the first dash separator, so `## The Substrate — the model-level
|
|
106
|
+
truths …` still yields `The Substrate` (asserted in the updated unit test). `The Fractal` is
|
|
107
|
+
additive.
|
|
108
|
+
|
|
109
|
+
## 4. Rollback plan
|
|
110
|
+
|
|
111
|
+
Single-commit revert; no state migration, no persisted artifact, no config key. The audit is
|
|
112
|
+
recomputed from disk on every request behind an `inputHash` cache that lives in a route-local
|
|
113
|
+
variable, so a revert takes effect on the next server start with nothing to clean up. No dark flag
|
|
114
|
+
is needed: the change makes a read-only report more honest and cannot alter behaviour.
|
|
115
|
+
|
|
116
|
+
## 5. Test coverage (all three tiers, per the Testing Integrity Standard)
|
|
117
|
+
|
|
118
|
+
- **Unit** — `tests/unit/standards-conformance-gate.test.ts` (+4 cases): structural family
|
|
119
|
+
detection incl. an invented family and `The Fractal` present; canary reports its denominator and
|
|
120
|
+
says `completenessAssessed: false` when it cannot check; the silent-drop case that the old floor
|
|
121
|
+
passed and the completeness check now names.
|
|
122
|
+
`tests/unit/standards-enforcement-auditor.test.ts` (+3): `enforcedRatio` null over an empty
|
|
123
|
+
registry; provenance + trustworthiness on a real pass vs a truncated fragment; unreadable ≠
|
|
124
|
+
empty in `computeInputHash`.
|
|
125
|
+
- **Integration** — `tests/integration/conformance-dev-gate-route.test.ts` (+4): the HTTP response
|
|
126
|
+
returns `null` not `0`, carries the registry provenance, never presents `converged` bare, and
|
|
127
|
+
yields a real ratio with a visible denominator on a populated registry.
|
|
128
|
+
- **E2E** — `tests/e2e/standards-coverage-lifecycle.test.ts` (+2): the live route assesses the
|
|
129
|
+
WHOLE constitution (denominator equals the document's own heading count, families include
|
|
130
|
+
`The Fractal`), and a truncated registry cannot present itself as trustworthy.
|
|
131
|
+
|
|
132
|
+
Every one of the three "has it refused something?" demonstrations in the ELI16 is an assertion in
|
|
133
|
+
this set, not a manual check.
|
|
134
|
+
|
|
135
|
+
## 6. Two mistakes made while building this, recorded rather than tidied away
|
|
136
|
+
|
|
137
|
+
**The test that was protecting the bug.** `standards-conformance-gate.test.ts` asserted that every
|
|
138
|
+
parsed family is one of exactly five names. It failed the moment `The Fractal` started parsing —
|
|
139
|
+
the test existed to confirm the exclusion of prose sections, but it had frozen the bug in place as
|
|
140
|
+
a specification. Rewritten to assert the prose sections are excluded (the real intent) plus a
|
|
141
|
+
regression guard for the dropped family. This is the second time in one day a passing test was
|
|
142
|
+
found protecting the defect it sat next to.
|
|
143
|
+
|
|
144
|
+
**The alarming number was passed on unchecked.** Every other instrument found in this audit failed
|
|
145
|
+
by *flattering* us; this one failed by *damning* us, and it was relayed to the operator without
|
|
146
|
+
checking its denominator. A frightening figure is the one least likely to be questioned — which is
|
|
147
|
+
why the denominator now travels with the number rather than being available on request.
|