@crvouga/atlas 1.20.0 → 1.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -1
- package/dist/core/src/cli.d.ts +2 -2
- package/dist/core/src/cli.js +7 -1
- package/dist/critics/src/catalog-client.d.ts +91 -0
- package/dist/critics/src/catalog-client.js +194 -0
- package/dist/critics/src/cli-calibrate.d.ts +4 -0
- package/dist/critics/src/cli-calibrate.js +211 -0
- package/dist/critics/src/cli-common.d.ts +108 -0
- package/dist/critics/src/cli-common.js +155 -0
- package/dist/critics/src/cli-review.d.ts +4 -0
- package/dist/critics/src/cli-review.js +174 -0
- package/dist/critics/src/cli-watch.d.ts +4 -0
- package/dist/critics/src/cli-watch.js +191 -0
- package/dist/critics/src/cli.d.ts +13 -0
- package/dist/critics/src/cli.js +490 -0
- package/dist/critics/src/index.d.ts +3 -0
- package/dist/critics/src/index.js +3 -0
- package/dist/critics/src/judging.d.ts +8 -0
- package/dist/critics/src/llm.d.ts +120 -0
- package/dist/critics/src/llm.js +266 -0
- package/dist/critics/src/marks.d.ts +74 -0
- package/dist/critics/src/marks.js +76 -0
- package/dist/critics/src/registry.d.ts +125 -0
- package/dist/critics/src/registry.js +203 -0
- package/dist/critics/src/spool.d.ts +32 -0
- package/dist/critics/src/spool.js +129 -0
- package/dist/critics/src/uiclip.d.ts +82 -0
- package/dist/critics/src/uiclip.js +167 -0
- package/dist/reports/src/compose.d.ts +23 -1
- package/dist/reports/src/compose.js +29 -19
- package/dist/reports/src/critique-review.d.ts +111 -0
- package/dist/reports/src/critique-review.js +123 -0
- package/dist/reports/src/critique-row.d.ts +24 -0
- package/dist/reports/src/critique-row.js +39 -0
- package/dist/reports/src/evidence-types.d.ts +5 -0
- package/dist/reports/src/layer-merge.js +5 -0
- package/dist/reports/src/report-cli.d.ts +13 -0
- package/dist/reports/src/report-cli.js +6 -4
- package/dist/reports/src/report-index.d.ts +6 -0
- package/dist/reports/src/report-index.js +12 -0
- package/dist/reports/src/ui-catalog-cli.d.ts +10 -0
- package/dist/reports/src/ui-catalog-cli.js +391 -0
- package/dist/reports/src/ui-catalog-diff.d.ts +104 -0
- package/dist/reports/src/ui-catalog-diff.js +130 -0
- package/dist/reports/src/ui-catalog-entries.d.ts +147 -0
- package/dist/reports/src/ui-catalog-entries.js +190 -0
- package/dist/reports/src/ui-catalog-export.d.ts +82 -0
- package/dist/reports/src/ui-catalog-export.js +221 -0
- package/dist/reports/src/ui-catalog-publish.js +2 -2
- package/dist/reports/src/ui-catalog.d.ts +2 -0
- package/dist/reports/src/ui-catalog.js +1 -1
- package/dist/reports/src/ui-state.d.ts +2 -0
- package/dist/reports/src/ui-state.js +2 -2
- package/dist/schema/src/api.d.ts +653 -1
- package/dist/schema/src/api.js +44 -0
- package/dist/schema/src/cli-results.d.ts +991 -1
- package/dist/schema/src/cli-results.js +265 -1
- package/dist/schema/src/critique.d.ts +31 -0
- package/dist/schema/src/critique.js +26 -0
- package/dist/schema/src/server-config.d.ts +3 -3
- package/dist/server/src/app.js +28 -1
- package/dist/server/src/openapi.js +19 -2
- package/docs/agents.md +16 -2
- package/docs/critics.md +273 -9
- package/docs/extending.md +1 -1
- package/docs/reference/cli.md +126 -1
- package/docs/reference/core.md +1 -1
- package/docs/reference/critics.md +1131 -29
- package/docs/reference/http-api.md +40 -0
- package/docs/reference/reports.md +855 -0
- package/docs/reference/schema.md +197 -1
- package/docs/report-contract.md +2 -1
- package/docs/server.md +2 -0
- package/docs/ui-catalog.md +110 -13
- package/docs/ui.md +69 -2
- package/llms-full.txt +636 -26
- package/llms.txt +1 -1
- package/package.json +9 -1
- package/packages/critics/README.md +1 -0
- package/packages/schema/schemas/critic-calibrate-result.schema.json +274 -0
- package/packages/schema/schemas/critic-doctor-result.schema.json +74 -0
- package/packages/schema/schemas/critic-list-result.schema.json +90 -0
- package/packages/schema/schemas/critic-review-result.schema.json +397 -0
- package/packages/schema/schemas/critic-run-result.schema.json +249 -0
- package/packages/schema/schemas/critic-setup-result.schema.json +34 -0
- package/packages/schema/schemas/critic-watch-result.schema.json +211 -0
- package/packages/schema/schemas/critique-mark.schema.json +81 -0
- package/packages/schema/schemas/effective-delta.schema.json +337 -0
- package/packages/schema/schemas/effective-evidence.schema.json +337 -0
- package/packages/schema/schemas/layer-rows.schema.json +337 -0
- package/packages/schema/schemas/ui-catalog-diff-result.schema.json +201 -0
- package/packages/schema/schemas/ui-catalog-export-result.schema.json +83 -0
- package/packages/schema/schemas/ui-catalog-publish-result.schema.json +116 -0
- package/packages/schema/schemas/ui-catalog-status.schema.json +197 -0
- package/packages/server/openapi.json +6755 -4738
- package/packages/visualizer/src/app/AppShell.tsx +3 -1
- package/packages/visualizer/src/app/router.tsx +20 -7
- package/packages/visualizer/src/catalog/Picture.tsx +32 -0
- package/packages/visualizer/src/catalog/UiCatalogCompare.tsx +289 -0
- package/packages/visualizer/src/catalog/UiCatalogPage.tsx +18 -28
- package/packages/visualizer/src/catalog/history.ts +61 -0
- package/packages/visualizer/src/catalog/search.ts +14 -3
- package/packages/visualizer/src/components/Header.tsx +16 -4
- package/packages/visualizer/src/critiques/CritiquesPage.tsx +402 -0
- package/packages/visualizer/src/critiques/FindingOverlay.tsx +50 -0
- package/packages/visualizer/src/critiques/ranking.ts +54 -0
- package/packages/visualizer/src/critiques/search.ts +41 -0
- package/packages/visualizer/src/evidence/applicability-view.tsx +11 -7
- package/packages/visualizer/src/evidence/behaviors-page.tsx +22 -15
- package/packages/visualizer/src/evidence/evidence-context.tsx +2 -1
- package/packages/visualizer/src/explorer/Explorer.tsx +5 -0
- package/packages/visualizer/src/explorer/TestDetail.tsx +4 -1
- package/packages/visualizer/src/explorer/parts.tsx +19 -1
- package/packages/visualizer/src/explorer/playlist.tsx +11 -7
|
@@ -402,6 +402,10 @@
|
|
|
402
402
|
"area": {
|
|
403
403
|
"type": "string"
|
|
404
404
|
},
|
|
405
|
+
"kind": {
|
|
406
|
+
"description": "The kind of UI state the producer declared: `screen`, `overlay`, `loading`, `error`, `empty`… Open vocabulary",
|
|
407
|
+
"type": "string"
|
|
408
|
+
},
|
|
405
409
|
"flags": {
|
|
406
410
|
"type": "array",
|
|
407
411
|
"items": {
|
|
@@ -459,6 +463,339 @@
|
|
|
459
463
|
},
|
|
460
464
|
"additionalProperties": {}
|
|
461
465
|
},
|
|
466
|
+
"critique": {
|
|
467
|
+
"description": "Only for a check of a `critique` part whose `atlas.critique` extension can be read: the opinion of an automated reviewer. An opinion, never a result: it does not decide `status`, a slot or the gate. See the critics guide",
|
|
468
|
+
"type": "object",
|
|
469
|
+
"properties": {
|
|
470
|
+
"schema": {
|
|
471
|
+
"type": "integer",
|
|
472
|
+
"exclusiveMinimum": 0,
|
|
473
|
+
"maximum": 9007199254740991,
|
|
474
|
+
"description": "The version of this extension. 1"
|
|
475
|
+
},
|
|
476
|
+
"subject": {
|
|
477
|
+
"type": "object",
|
|
478
|
+
"properties": {
|
|
479
|
+
"entryKey": {
|
|
480
|
+
"type": "string",
|
|
481
|
+
"minLength": 1,
|
|
482
|
+
"description": "The catalog entry that was judged"
|
|
483
|
+
},
|
|
484
|
+
"imageSha256": {
|
|
485
|
+
"type": "string",
|
|
486
|
+
"minLength": 1,
|
|
487
|
+
"description": "The hash of the exact image bytes that were judged. When the entry's image changes, this critique judged an earlier image"
|
|
488
|
+
},
|
|
489
|
+
"state": {
|
|
490
|
+
"description": "The kind of UI state: `screen`, `overlay`, `loading`, `error`, `empty`…",
|
|
491
|
+
"type": "string",
|
|
492
|
+
"minLength": 1
|
|
493
|
+
}
|
|
494
|
+
},
|
|
495
|
+
"required": [
|
|
496
|
+
"entryKey",
|
|
497
|
+
"imageSha256"
|
|
498
|
+
],
|
|
499
|
+
"additionalProperties": {}
|
|
500
|
+
},
|
|
501
|
+
"critic": {
|
|
502
|
+
"type": "object",
|
|
503
|
+
"properties": {
|
|
504
|
+
"name": {
|
|
505
|
+
"type": "string",
|
|
506
|
+
"minLength": 1
|
|
507
|
+
},
|
|
508
|
+
"version": {
|
|
509
|
+
"type": "string",
|
|
510
|
+
"minLength": 1,
|
|
511
|
+
"description": "Of the critic's own logic. A newer version replaces an older one"
|
|
512
|
+
},
|
|
513
|
+
"kind": {
|
|
514
|
+
"description": "Open vocabulary: `model`, `llm`, `ml`, `heuristic`…",
|
|
515
|
+
"type": "string",
|
|
516
|
+
"minLength": 1
|
|
517
|
+
}
|
|
518
|
+
},
|
|
519
|
+
"required": [
|
|
520
|
+
"name",
|
|
521
|
+
"version"
|
|
522
|
+
],
|
|
523
|
+
"additionalProperties": {}
|
|
524
|
+
},
|
|
525
|
+
"model": {
|
|
526
|
+
"type": "object",
|
|
527
|
+
"properties": {
|
|
528
|
+
"id": {
|
|
529
|
+
"type": "string",
|
|
530
|
+
"minLength": 1
|
|
531
|
+
},
|
|
532
|
+
"provider": {
|
|
533
|
+
"type": "string"
|
|
534
|
+
}
|
|
535
|
+
},
|
|
536
|
+
"required": [
|
|
537
|
+
"id"
|
|
538
|
+
],
|
|
539
|
+
"additionalProperties": {}
|
|
540
|
+
},
|
|
541
|
+
"parameters": {
|
|
542
|
+
"description": "Everything else that explains the result: temperature, seed, the SHA-256 of the rubric",
|
|
543
|
+
"type": "object",
|
|
544
|
+
"propertyNames": {
|
|
545
|
+
"type": "string"
|
|
546
|
+
},
|
|
547
|
+
"additionalProperties": {}
|
|
548
|
+
},
|
|
549
|
+
"verdict": {
|
|
550
|
+
"type": "object",
|
|
551
|
+
"properties": {
|
|
552
|
+
"score": {
|
|
553
|
+
"description": "A finite number. `scale` says what it means",
|
|
554
|
+
"type": "number"
|
|
555
|
+
},
|
|
556
|
+
"scale": {
|
|
557
|
+
"description": "For example `0..1, higher is better`",
|
|
558
|
+
"type": "string"
|
|
559
|
+
},
|
|
560
|
+
"label": {
|
|
561
|
+
"description": "Open vocabulary, conventionally `ok` or `needs-polish`",
|
|
562
|
+
"type": "string"
|
|
563
|
+
},
|
|
564
|
+
"confidence": {
|
|
565
|
+
"type": "number",
|
|
566
|
+
"minimum": 0,
|
|
567
|
+
"maximum": 1
|
|
568
|
+
},
|
|
569
|
+
"relative": {
|
|
570
|
+
"type": "object",
|
|
571
|
+
"properties": {
|
|
572
|
+
"stateKind": {
|
|
573
|
+
"type": "string",
|
|
574
|
+
"minLength": 1,
|
|
575
|
+
"description": "The kind of UI state the score is relative to: `screen`, `overlay`, `loading`, `error`, `empty`…"
|
|
576
|
+
},
|
|
577
|
+
"percentile": {
|
|
578
|
+
"description": "Where the score falls among the project's scores of the same state kind, 0..100, higher is better",
|
|
579
|
+
"type": "number",
|
|
580
|
+
"minimum": 0,
|
|
581
|
+
"maximum": 100
|
|
582
|
+
},
|
|
583
|
+
"sampleSize": {
|
|
584
|
+
"description": "How many scores of that state kind the percentile is over",
|
|
585
|
+
"type": "integer",
|
|
586
|
+
"minimum": 0,
|
|
587
|
+
"maximum": 9007199254740991
|
|
588
|
+
},
|
|
589
|
+
"previousScore": {
|
|
590
|
+
"description": "The same entry's score for its previous image, from the same critic",
|
|
591
|
+
"type": "number"
|
|
592
|
+
},
|
|
593
|
+
"delta": {
|
|
594
|
+
"description": "`score` minus `previousScore`",
|
|
595
|
+
"type": "number"
|
|
596
|
+
}
|
|
597
|
+
},
|
|
598
|
+
"required": [
|
|
599
|
+
"stateKind"
|
|
600
|
+
],
|
|
601
|
+
"additionalProperties": {}
|
|
602
|
+
}
|
|
603
|
+
},
|
|
604
|
+
"additionalProperties": {}
|
|
605
|
+
},
|
|
606
|
+
"findings": {
|
|
607
|
+
"type": "array",
|
|
608
|
+
"items": {
|
|
609
|
+
"type": "object",
|
|
610
|
+
"properties": {
|
|
611
|
+
"id": {
|
|
612
|
+
"description": "Stable within the critique, so a reviewer can mark this finding valid or not",
|
|
613
|
+
"type": "string",
|
|
614
|
+
"minLength": 1
|
|
615
|
+
},
|
|
616
|
+
"category": {
|
|
617
|
+
"description": "Open vocabulary: `spacing`, `contrast`, `alignment`, `overflow`, `hierarchy`…",
|
|
618
|
+
"type": "string",
|
|
619
|
+
"minLength": 1
|
|
620
|
+
},
|
|
621
|
+
"severity": {
|
|
622
|
+
"description": "Open vocabulary, conventionally `info`, `minor`, `major`",
|
|
623
|
+
"type": "string",
|
|
624
|
+
"minLength": 1
|
|
625
|
+
},
|
|
626
|
+
"confidence": {
|
|
627
|
+
"type": "number",
|
|
628
|
+
"minimum": 0,
|
|
629
|
+
"maximum": 1
|
|
630
|
+
},
|
|
631
|
+
"region": {
|
|
632
|
+
"type": "object",
|
|
633
|
+
"properties": {
|
|
634
|
+
"unit": {
|
|
635
|
+
"type": "string",
|
|
636
|
+
"minLength": 1,
|
|
637
|
+
"description": "`px` (pixels of the stored image) or `normalized` (0..1 of its width and height). Open vocabulary"
|
|
638
|
+
},
|
|
639
|
+
"x": {
|
|
640
|
+
"type": "number"
|
|
641
|
+
},
|
|
642
|
+
"y": {
|
|
643
|
+
"type": "number"
|
|
644
|
+
},
|
|
645
|
+
"w": {
|
|
646
|
+
"type": "number",
|
|
647
|
+
"minimum": 0
|
|
648
|
+
},
|
|
649
|
+
"h": {
|
|
650
|
+
"type": "number",
|
|
651
|
+
"minimum": 0
|
|
652
|
+
}
|
|
653
|
+
},
|
|
654
|
+
"required": [
|
|
655
|
+
"unit",
|
|
656
|
+
"x",
|
|
657
|
+
"y",
|
|
658
|
+
"w",
|
|
659
|
+
"h"
|
|
660
|
+
],
|
|
661
|
+
"additionalProperties": {}
|
|
662
|
+
},
|
|
663
|
+
"rationale": {
|
|
664
|
+
"type": "string"
|
|
665
|
+
},
|
|
666
|
+
"suggestion": {
|
|
667
|
+
"type": "string"
|
|
668
|
+
}
|
|
669
|
+
},
|
|
670
|
+
"additionalProperties": {}
|
|
671
|
+
}
|
|
672
|
+
},
|
|
673
|
+
"failure": {
|
|
674
|
+
"type": "object",
|
|
675
|
+
"properties": {
|
|
676
|
+
"reason": {
|
|
677
|
+
"type": "string",
|
|
678
|
+
"minLength": 1
|
|
679
|
+
},
|
|
680
|
+
"message": {
|
|
681
|
+
"type": "string"
|
|
682
|
+
}
|
|
683
|
+
},
|
|
684
|
+
"required": [
|
|
685
|
+
"reason"
|
|
686
|
+
],
|
|
687
|
+
"additionalProperties": {}
|
|
688
|
+
},
|
|
689
|
+
"usage": {
|
|
690
|
+
"type": "object",
|
|
691
|
+
"properties": {
|
|
692
|
+
"inputTokens": {
|
|
693
|
+
"type": "number",
|
|
694
|
+
"minimum": 0
|
|
695
|
+
},
|
|
696
|
+
"outputTokens": {
|
|
697
|
+
"type": "number",
|
|
698
|
+
"minimum": 0
|
|
699
|
+
},
|
|
700
|
+
"latencyMs": {
|
|
701
|
+
"type": "number",
|
|
702
|
+
"minimum": 0
|
|
703
|
+
},
|
|
704
|
+
"costUsd": {
|
|
705
|
+
"type": "number",
|
|
706
|
+
"minimum": 0
|
|
707
|
+
}
|
|
708
|
+
},
|
|
709
|
+
"additionalProperties": {}
|
|
710
|
+
}
|
|
711
|
+
},
|
|
712
|
+
"required": [
|
|
713
|
+
"schema",
|
|
714
|
+
"subject",
|
|
715
|
+
"critic"
|
|
716
|
+
],
|
|
717
|
+
"additionalProperties": {}
|
|
718
|
+
},
|
|
719
|
+
"critiqueMark": {
|
|
720
|
+
"description": "Only for a check of a `critique` part whose `atlas.critique-mark` extension can be read: a person's accept or dismiss of a critic's opinion. Evidence, never a result: it does not decide `status`, a slot or the gate. See the critics guide",
|
|
721
|
+
"type": "object",
|
|
722
|
+
"properties": {
|
|
723
|
+
"schema": {
|
|
724
|
+
"type": "integer",
|
|
725
|
+
"exclusiveMinimum": 0,
|
|
726
|
+
"maximum": 9007199254740991,
|
|
727
|
+
"description": "The version of this extension. 1"
|
|
728
|
+
},
|
|
729
|
+
"subject": {
|
|
730
|
+
"type": "object",
|
|
731
|
+
"properties": {
|
|
732
|
+
"entryKey": {
|
|
733
|
+
"type": "string",
|
|
734
|
+
"minLength": 1,
|
|
735
|
+
"description": "The catalog entry the marked critique is about"
|
|
736
|
+
},
|
|
737
|
+
"imageSha256": {
|
|
738
|
+
"type": "string",
|
|
739
|
+
"minLength": 1,
|
|
740
|
+
"description": "The hash of the picture the marked critique judged, so a mark about an earlier picture is shown as that"
|
|
741
|
+
}
|
|
742
|
+
},
|
|
743
|
+
"required": [
|
|
744
|
+
"entryKey",
|
|
745
|
+
"imageSha256"
|
|
746
|
+
],
|
|
747
|
+
"additionalProperties": {}
|
|
748
|
+
},
|
|
749
|
+
"critic": {
|
|
750
|
+
"type": "object",
|
|
751
|
+
"properties": {
|
|
752
|
+
"name": {
|
|
753
|
+
"type": "string",
|
|
754
|
+
"minLength": 1
|
|
755
|
+
},
|
|
756
|
+
"version": {
|
|
757
|
+
"type": "string",
|
|
758
|
+
"minLength": 1
|
|
759
|
+
}
|
|
760
|
+
},
|
|
761
|
+
"required": [
|
|
762
|
+
"name"
|
|
763
|
+
],
|
|
764
|
+
"additionalProperties": {},
|
|
765
|
+
"description": "The critic whose opinion is marked"
|
|
766
|
+
},
|
|
767
|
+
"finding": {
|
|
768
|
+
"description": "The `id` of the marked finding. Absent: the critique as a whole",
|
|
769
|
+
"type": "string",
|
|
770
|
+
"minLength": 1
|
|
771
|
+
},
|
|
772
|
+
"decision": {
|
|
773
|
+
"type": "string",
|
|
774
|
+
"minLength": 1,
|
|
775
|
+
"description": "Open vocabulary; this release understands `accept` (the opinion is right) and `dismiss` (it is not). Anything else is shown as written and counts as neither"
|
|
776
|
+
},
|
|
777
|
+
"reviewer": {
|
|
778
|
+
"description": "Who marked it: a name the reviewer chose, never an account",
|
|
779
|
+
"type": "string",
|
|
780
|
+
"minLength": 1
|
|
781
|
+
},
|
|
782
|
+
"note": {
|
|
783
|
+
"description": "Why, in the reviewer's words",
|
|
784
|
+
"type": "string"
|
|
785
|
+
},
|
|
786
|
+
"layer": {
|
|
787
|
+
"description": "The layer of the critique that was marked, for tracing",
|
|
788
|
+
"type": "string"
|
|
789
|
+
}
|
|
790
|
+
},
|
|
791
|
+
"required": [
|
|
792
|
+
"schema",
|
|
793
|
+
"subject",
|
|
794
|
+
"critic",
|
|
795
|
+
"decision"
|
|
796
|
+
],
|
|
797
|
+
"additionalProperties": {}
|
|
798
|
+
},
|
|
462
799
|
"recording": {
|
|
463
800
|
"description": "What became of the check's expected recording: uploaded, referenced, skipped, unresolved or not-applicable. Independent of `status`",
|
|
464
801
|
"type": "object",
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$id": "https://github.com/crvouga/atlas/schemas/ui-catalog-diff-result.schema.json",
|
|
3
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"ok": {
|
|
7
|
+
"type": "boolean",
|
|
8
|
+
"description": "False when a layer or backend could not be read (the comparison may be wrong), or, with `--fail-on-change`, when anything differs. Otherwise true: a difference is not a failure by itself"
|
|
9
|
+
},
|
|
10
|
+
"from": {
|
|
11
|
+
"type": "object",
|
|
12
|
+
"properties": {
|
|
13
|
+
"sha": {
|
|
14
|
+
"type": "string"
|
|
15
|
+
},
|
|
16
|
+
"states": {
|
|
17
|
+
"type": "integer",
|
|
18
|
+
"minimum": 0,
|
|
19
|
+
"maximum": 9007199254740991
|
|
20
|
+
},
|
|
21
|
+
"layers": {
|
|
22
|
+
"type": "integer",
|
|
23
|
+
"minimum": 0,
|
|
24
|
+
"maximum": 9007199254740991
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"required": [
|
|
28
|
+
"sha",
|
|
29
|
+
"states",
|
|
30
|
+
"layers"
|
|
31
|
+
],
|
|
32
|
+
"additionalProperties": {}
|
|
33
|
+
},
|
|
34
|
+
"to": {
|
|
35
|
+
"type": "object",
|
|
36
|
+
"properties": {
|
|
37
|
+
"sha": {
|
|
38
|
+
"type": "string"
|
|
39
|
+
},
|
|
40
|
+
"states": {
|
|
41
|
+
"type": "integer",
|
|
42
|
+
"minimum": 0,
|
|
43
|
+
"maximum": 9007199254740991
|
|
44
|
+
},
|
|
45
|
+
"layers": {
|
|
46
|
+
"type": "integer",
|
|
47
|
+
"minimum": 0,
|
|
48
|
+
"maximum": 9007199254740991
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"required": [
|
|
52
|
+
"sha",
|
|
53
|
+
"states",
|
|
54
|
+
"layers"
|
|
55
|
+
],
|
|
56
|
+
"additionalProperties": {}
|
|
57
|
+
},
|
|
58
|
+
"summary": {
|
|
59
|
+
"type": "object",
|
|
60
|
+
"properties": {
|
|
61
|
+
"coverage": {
|
|
62
|
+
"type": "integer",
|
|
63
|
+
"minimum": 0,
|
|
64
|
+
"maximum": 9007199254740991,
|
|
65
|
+
"description": "Pairs that stand differently (captured against failed, for example)"
|
|
66
|
+
},
|
|
67
|
+
"picture": {
|
|
68
|
+
"type": "integer",
|
|
69
|
+
"minimum": 0,
|
|
70
|
+
"maximum": 9007199254740991,
|
|
71
|
+
"description": "Both captured, and the stored bytes differ. Not a measure of how many pixels"
|
|
72
|
+
},
|
|
73
|
+
"unverified": {
|
|
74
|
+
"type": "integer",
|
|
75
|
+
"minimum": 0,
|
|
76
|
+
"maximum": 9007199254740991,
|
|
77
|
+
"description": "Both captured, but a side has no content hash, so whether the picture changed is unknown"
|
|
78
|
+
},
|
|
79
|
+
"added": {
|
|
80
|
+
"type": "integer",
|
|
81
|
+
"minimum": 0,
|
|
82
|
+
"maximum": 9007199254740991,
|
|
83
|
+
"description": "Only `to` has it"
|
|
84
|
+
},
|
|
85
|
+
"removed": {
|
|
86
|
+
"type": "integer",
|
|
87
|
+
"minimum": 0,
|
|
88
|
+
"maximum": 9007199254740991,
|
|
89
|
+
"description": "Only `from` has it. Not a regression: the other side may not have run it"
|
|
90
|
+
},
|
|
91
|
+
"unchanged": {
|
|
92
|
+
"type": "integer",
|
|
93
|
+
"minimum": 0,
|
|
94
|
+
"maximum": 9007199254740991
|
|
95
|
+
},
|
|
96
|
+
"total": {
|
|
97
|
+
"type": "integer",
|
|
98
|
+
"minimum": 0,
|
|
99
|
+
"maximum": 9007199254740991
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
"required": [
|
|
103
|
+
"coverage",
|
|
104
|
+
"picture",
|
|
105
|
+
"unverified",
|
|
106
|
+
"added",
|
|
107
|
+
"removed",
|
|
108
|
+
"unchanged",
|
|
109
|
+
"total"
|
|
110
|
+
],
|
|
111
|
+
"additionalProperties": {}
|
|
112
|
+
},
|
|
113
|
+
"changes": {
|
|
114
|
+
"type": "array",
|
|
115
|
+
"items": {
|
|
116
|
+
"type": "object",
|
|
117
|
+
"properties": {
|
|
118
|
+
"state": {
|
|
119
|
+
"type": "string"
|
|
120
|
+
},
|
|
121
|
+
"title": {
|
|
122
|
+
"type": "string"
|
|
123
|
+
},
|
|
124
|
+
"profile": {
|
|
125
|
+
"type": "string"
|
|
126
|
+
},
|
|
127
|
+
"change": {
|
|
128
|
+
"type": "string",
|
|
129
|
+
"enum": [
|
|
130
|
+
"coverage",
|
|
131
|
+
"picture",
|
|
132
|
+
"unverified",
|
|
133
|
+
"added",
|
|
134
|
+
"removed"
|
|
135
|
+
]
|
|
136
|
+
},
|
|
137
|
+
"from": {
|
|
138
|
+
"anyOf": [
|
|
139
|
+
{
|
|
140
|
+
"type": "string",
|
|
141
|
+
"enum": [
|
|
142
|
+
"captured",
|
|
143
|
+
"failed",
|
|
144
|
+
"capturing",
|
|
145
|
+
"skipped",
|
|
146
|
+
"missing"
|
|
147
|
+
]
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"type": "null"
|
|
151
|
+
}
|
|
152
|
+
]
|
|
153
|
+
},
|
|
154
|
+
"to": {
|
|
155
|
+
"anyOf": [
|
|
156
|
+
{
|
|
157
|
+
"type": "string",
|
|
158
|
+
"enum": [
|
|
159
|
+
"captured",
|
|
160
|
+
"failed",
|
|
161
|
+
"capturing",
|
|
162
|
+
"skipped",
|
|
163
|
+
"missing"
|
|
164
|
+
]
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"type": "null"
|
|
168
|
+
}
|
|
169
|
+
]
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
"required": [
|
|
173
|
+
"state",
|
|
174
|
+
"title",
|
|
175
|
+
"profile",
|
|
176
|
+
"change",
|
|
177
|
+
"from",
|
|
178
|
+
"to"
|
|
179
|
+
],
|
|
180
|
+
"additionalProperties": {}
|
|
181
|
+
},
|
|
182
|
+
"description": "Every pair that is not unchanged"
|
|
183
|
+
},
|
|
184
|
+
"notices": {
|
|
185
|
+
"type": "array",
|
|
186
|
+
"items": {
|
|
187
|
+
"type": "string"
|
|
188
|
+
},
|
|
189
|
+
"description": "What could not be read. Any makes `ok` false: an unreadable layer is unknown, never unchanged"
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
"required": [
|
|
193
|
+
"ok",
|
|
194
|
+
"from",
|
|
195
|
+
"to",
|
|
196
|
+
"summary",
|
|
197
|
+
"changes",
|
|
198
|
+
"notices"
|
|
199
|
+
],
|
|
200
|
+
"additionalProperties": {}
|
|
201
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$id": "https://github.com/crvouga/atlas/schemas/ui-catalog-export-result.schema.json",
|
|
3
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"ok": {
|
|
7
|
+
"type": "boolean",
|
|
8
|
+
"const": true
|
|
9
|
+
},
|
|
10
|
+
"out": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"description": "The HTML file that was written"
|
|
13
|
+
},
|
|
14
|
+
"bytes": {
|
|
15
|
+
"type": "integer",
|
|
16
|
+
"minimum": 0,
|
|
17
|
+
"maximum": 9007199254740991,
|
|
18
|
+
"description": "Its size"
|
|
19
|
+
},
|
|
20
|
+
"states": {
|
|
21
|
+
"type": "integer",
|
|
22
|
+
"minimum": 0,
|
|
23
|
+
"maximum": 9007199254740991
|
|
24
|
+
},
|
|
25
|
+
"cells": {
|
|
26
|
+
"type": "integer",
|
|
27
|
+
"minimum": 0,
|
|
28
|
+
"maximum": 9007199254740991
|
|
29
|
+
},
|
|
30
|
+
"pictures": {
|
|
31
|
+
"type": "object",
|
|
32
|
+
"properties": {
|
|
33
|
+
"embedded": {
|
|
34
|
+
"type": "integer",
|
|
35
|
+
"minimum": 0,
|
|
36
|
+
"maximum": 9007199254740991
|
|
37
|
+
},
|
|
38
|
+
"embeddedBytes": {
|
|
39
|
+
"type": "integer",
|
|
40
|
+
"minimum": 0,
|
|
41
|
+
"maximum": 9007199254740991
|
|
42
|
+
},
|
|
43
|
+
"left": {
|
|
44
|
+
"type": "integer",
|
|
45
|
+
"minimum": 0,
|
|
46
|
+
"maximum": 9007199254740991,
|
|
47
|
+
"description": "Pictures not embedded (over the size limit, not stored, not an image, or `--images none`); each is listed on the page with the reason"
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"required": [
|
|
51
|
+
"embedded",
|
|
52
|
+
"embeddedBytes",
|
|
53
|
+
"left"
|
|
54
|
+
],
|
|
55
|
+
"additionalProperties": {}
|
|
56
|
+
},
|
|
57
|
+
"manifest": {
|
|
58
|
+
"description": "The JSON manifest written beside it with `--manifest`, or null",
|
|
59
|
+
"type": [
|
|
60
|
+
"string",
|
|
61
|
+
"null"
|
|
62
|
+
]
|
|
63
|
+
},
|
|
64
|
+
"warnings": {
|
|
65
|
+
"type": "array",
|
|
66
|
+
"items": {
|
|
67
|
+
"type": "string"
|
|
68
|
+
},
|
|
69
|
+
"description": "Backends and layers that could not be read, and pictures left out. The page says so too"
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
"required": [
|
|
73
|
+
"ok",
|
|
74
|
+
"out",
|
|
75
|
+
"bytes",
|
|
76
|
+
"states",
|
|
77
|
+
"cells",
|
|
78
|
+
"pictures",
|
|
79
|
+
"manifest",
|
|
80
|
+
"warnings"
|
|
81
|
+
],
|
|
82
|
+
"additionalProperties": {}
|
|
83
|
+
}
|