deepdebug-local-agent 1.9.0 → 1.10.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.
@@ -626,6 +626,1544 @@
626
626
  "command": "rm -rf /"
627
627
  }
628
628
  }
629
+ },
630
+ {
631
+ "name": "options-all-fields",
632
+ "why": "optional options object, every field (capability job.assign + job.options)",
633
+ "expect": {
634
+ "valid": true
635
+ },
636
+ "message": {
637
+ "schemaVersion": 2,
638
+ "type": "job.assign",
639
+ "msgId": "00000000-0000-4000-8000-000000000001",
640
+ "seq": 1,
641
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
642
+ "workspaceId": "ws-1",
643
+ "ts": "2026-10-29T10:00:00Z",
644
+ "paramsRaw": "{\"jobId\":\"c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f\",\"kind\":\"fix\",\"incidentRef\":{\"id\":\"inc-8c8deab3\",\"fingerprint\":\"5a1f09c2d7e8b3a4\"},\"repoRef\":{\"provider\":\"github\",\"org\":\"acme\",\"repo\":\"billing\",\"branch\":\"main\"},\"policy\":{\"operationMode\":\"assist\",\"automationLevel\":2,\"ceiling\":\"autonomous\"},\"budget\":{\"tokens\":200000,\"seconds\":900},\"llm\":{\"alias\":\"vh-coder\",\"keyRef\":\"key-la-1\"},\"inputs\":[{\"ref\":\"incident:inc-8c8deab3\"},{\"inline\":\"Fix the NPE in PaymentService\",\"transient\":true}],\"options\":{\"ticketKey\":\"SMART-123\",\"branchName\":\"feature/SMART-123\",\"createBranch\":true,\"createPullRequest\":true,\"dryRun\":false,\"maxIterations\":20}}",
645
+ "sig": {
646
+ "keyId": "vh-cp-2026-10",
647
+ "timestamp": "1793268000",
648
+ "nonce": "Zm9vYmFyYmF6cXV4MTIzNDU2",
649
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
650
+ "workspaceId": "ws-1",
651
+ "signature": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
652
+ },
653
+ "requestId": "d4e5f6a7-b8c9-4d0e-9f1a-3b4c5d6e7f80",
654
+ "payload": {
655
+ "jobId": "c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f",
656
+ "kind": "fix",
657
+ "incidentRef": {
658
+ "id": "inc-8c8deab3",
659
+ "fingerprint": "5a1f09c2d7e8b3a4"
660
+ },
661
+ "repoRef": {
662
+ "provider": "github",
663
+ "org": "acme",
664
+ "repo": "billing",
665
+ "branch": "main"
666
+ },
667
+ "policy": {
668
+ "operationMode": "assist",
669
+ "automationLevel": 2,
670
+ "ceiling": "autonomous"
671
+ },
672
+ "budget": {
673
+ "tokens": 200000,
674
+ "seconds": 900
675
+ },
676
+ "llm": {
677
+ "alias": "vh-coder",
678
+ "keyRef": "key-la-1"
679
+ },
680
+ "inputs": [
681
+ {
682
+ "ref": "incident:inc-8c8deab3"
683
+ },
684
+ {
685
+ "inline": "Fix the NPE in PaymentService",
686
+ "transient": true
687
+ }
688
+ ],
689
+ "options": {
690
+ "ticketKey": "SMART-123",
691
+ "branchName": "feature/SMART-123",
692
+ "createBranch": true,
693
+ "createPullRequest": true,
694
+ "dryRun": false,
695
+ "maxIterations": 20
696
+ }
697
+ }
698
+ }
699
+ },
700
+ {
701
+ "name": "options-dry-run-only",
702
+ "why": "a dry run: the one option that changes external effects",
703
+ "expect": {
704
+ "valid": true
705
+ },
706
+ "message": {
707
+ "schemaVersion": 2,
708
+ "type": "job.assign",
709
+ "msgId": "00000000-0000-4000-8000-000000000001",
710
+ "seq": 1,
711
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
712
+ "workspaceId": "ws-1",
713
+ "ts": "2026-10-29T10:00:00Z",
714
+ "paramsRaw": "{\"jobId\":\"c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f\",\"kind\":\"fix\",\"incidentRef\":{\"id\":\"inc-8c8deab3\",\"fingerprint\":\"5a1f09c2d7e8b3a4\"},\"repoRef\":{\"provider\":\"github\",\"org\":\"acme\",\"repo\":\"billing\",\"branch\":\"main\"},\"policy\":{\"operationMode\":\"assist\",\"automationLevel\":2,\"ceiling\":\"autonomous\"},\"budget\":{\"tokens\":200000,\"seconds\":900},\"llm\":{\"alias\":\"vh-coder\",\"keyRef\":\"key-la-1\"},\"inputs\":[{\"ref\":\"incident:inc-8c8deab3\"},{\"inline\":\"Fix the NPE in PaymentService\",\"transient\":true}],\"options\":{\"dryRun\":true}}",
715
+ "sig": {
716
+ "keyId": "vh-cp-2026-10",
717
+ "timestamp": "1793268000",
718
+ "nonce": "Zm9vYmFyYmF6cXV4MTIzNDU2",
719
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
720
+ "workspaceId": "ws-1",
721
+ "signature": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
722
+ },
723
+ "requestId": "d4e5f6a7-b8c9-4d0e-9f1a-3b4c5d6e7f80",
724
+ "payload": {
725
+ "jobId": "c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f",
726
+ "kind": "fix",
727
+ "incidentRef": {
728
+ "id": "inc-8c8deab3",
729
+ "fingerprint": "5a1f09c2d7e8b3a4"
730
+ },
731
+ "repoRef": {
732
+ "provider": "github",
733
+ "org": "acme",
734
+ "repo": "billing",
735
+ "branch": "main"
736
+ },
737
+ "policy": {
738
+ "operationMode": "assist",
739
+ "automationLevel": 2,
740
+ "ceiling": "autonomous"
741
+ },
742
+ "budget": {
743
+ "tokens": 200000,
744
+ "seconds": 900
745
+ },
746
+ "llm": {
747
+ "alias": "vh-coder",
748
+ "keyRef": "key-la-1"
749
+ },
750
+ "inputs": [
751
+ {
752
+ "ref": "incident:inc-8c8deab3"
753
+ },
754
+ {
755
+ "inline": "Fix the NPE in PaymentService",
756
+ "transient": true
757
+ }
758
+ ],
759
+ "options": {
760
+ "dryRun": true
761
+ }
762
+ }
763
+ }
764
+ },
765
+ {
766
+ "name": "options-no-pull-request",
767
+ "why": "branch pushed, no pull request; maxIterations at the upper bound",
768
+ "expect": {
769
+ "valid": true
770
+ },
771
+ "message": {
772
+ "schemaVersion": 2,
773
+ "type": "job.assign",
774
+ "msgId": "00000000-0000-4000-8000-000000000001",
775
+ "seq": 1,
776
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
777
+ "workspaceId": "ws-1",
778
+ "ts": "2026-10-29T10:00:00Z",
779
+ "paramsRaw": "{\"jobId\":\"c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f\",\"kind\":\"fix\",\"incidentRef\":{\"id\":\"inc-8c8deab3\",\"fingerprint\":\"5a1f09c2d7e8b3a4\"},\"repoRef\":{\"provider\":\"github\",\"org\":\"acme\",\"repo\":\"billing\",\"branch\":\"main\"},\"policy\":{\"operationMode\":\"assist\",\"automationLevel\":2,\"ceiling\":\"autonomous\"},\"budget\":{\"tokens\":200000,\"seconds\":900},\"llm\":{\"alias\":\"vh-coder\",\"keyRef\":\"key-la-1\"},\"inputs\":[{\"ref\":\"incident:inc-8c8deab3\"},{\"inline\":\"Fix the NPE in PaymentService\",\"transient\":true}],\"options\":{\"createBranch\":true,\"createPullRequest\":false,\"maxIterations\":100}}",
780
+ "sig": {
781
+ "keyId": "vh-cp-2026-10",
782
+ "timestamp": "1793268000",
783
+ "nonce": "Zm9vYmFyYmF6cXV4MTIzNDU2",
784
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
785
+ "workspaceId": "ws-1",
786
+ "signature": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
787
+ },
788
+ "requestId": "d4e5f6a7-b8c9-4d0e-9f1a-3b4c5d6e7f80",
789
+ "payload": {
790
+ "jobId": "c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f",
791
+ "kind": "fix",
792
+ "incidentRef": {
793
+ "id": "inc-8c8deab3",
794
+ "fingerprint": "5a1f09c2d7e8b3a4"
795
+ },
796
+ "repoRef": {
797
+ "provider": "github",
798
+ "org": "acme",
799
+ "repo": "billing",
800
+ "branch": "main"
801
+ },
802
+ "policy": {
803
+ "operationMode": "assist",
804
+ "automationLevel": 2,
805
+ "ceiling": "autonomous"
806
+ },
807
+ "budget": {
808
+ "tokens": 200000,
809
+ "seconds": 900
810
+ },
811
+ "llm": {
812
+ "alias": "vh-coder",
813
+ "keyRef": "key-la-1"
814
+ },
815
+ "inputs": [
816
+ {
817
+ "ref": "incident:inc-8c8deab3"
818
+ },
819
+ {
820
+ "inline": "Fix the NPE in PaymentService",
821
+ "transient": true
822
+ }
823
+ ],
824
+ "options": {
825
+ "createBranch": true,
826
+ "createPullRequest": false,
827
+ "maxIterations": 100
828
+ }
829
+ }
830
+ }
831
+ },
832
+ {
833
+ "name": "options-ticket-and-branch",
834
+ "why": "ticket key and a branch name with dots, dashes, underscores and slashes",
835
+ "expect": {
836
+ "valid": true
837
+ },
838
+ "message": {
839
+ "schemaVersion": 2,
840
+ "type": "job.assign",
841
+ "msgId": "00000000-0000-4000-8000-000000000001",
842
+ "seq": 1,
843
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
844
+ "workspaceId": "ws-1",
845
+ "ts": "2026-10-29T10:00:00Z",
846
+ "paramsRaw": "{\"jobId\":\"c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f\",\"kind\":\"fix\",\"incidentRef\":{\"id\":\"inc-8c8deab3\",\"fingerprint\":\"5a1f09c2d7e8b3a4\"},\"repoRef\":{\"provider\":\"github\",\"org\":\"acme\",\"repo\":\"billing\",\"branch\":\"main\"},\"policy\":{\"operationMode\":\"assist\",\"automationLevel\":2,\"ceiling\":\"autonomous\"},\"budget\":{\"tokens\":200000,\"seconds\":900},\"llm\":{\"alias\":\"vh-coder\",\"keyRef\":\"key-la-1\"},\"inputs\":[{\"ref\":\"incident:inc-8c8deab3\"},{\"inline\":\"Fix the NPE in PaymentService\",\"transient\":true}],\"options\":{\"ticketKey\":\"PROJ_9.v2:rc-1\",\"branchName\":\"fix/PROJ-9_hot.fix-1\"}}",
847
+ "sig": {
848
+ "keyId": "vh-cp-2026-10",
849
+ "timestamp": "1793268000",
850
+ "nonce": "Zm9vYmFyYmF6cXV4MTIzNDU2",
851
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
852
+ "workspaceId": "ws-1",
853
+ "signature": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
854
+ },
855
+ "requestId": "d4e5f6a7-b8c9-4d0e-9f1a-3b4c5d6e7f80",
856
+ "payload": {
857
+ "jobId": "c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f",
858
+ "kind": "fix",
859
+ "incidentRef": {
860
+ "id": "inc-8c8deab3",
861
+ "fingerprint": "5a1f09c2d7e8b3a4"
862
+ },
863
+ "repoRef": {
864
+ "provider": "github",
865
+ "org": "acme",
866
+ "repo": "billing",
867
+ "branch": "main"
868
+ },
869
+ "policy": {
870
+ "operationMode": "assist",
871
+ "automationLevel": 2,
872
+ "ceiling": "autonomous"
873
+ },
874
+ "budget": {
875
+ "tokens": 200000,
876
+ "seconds": 900
877
+ },
878
+ "llm": {
879
+ "alias": "vh-coder",
880
+ "keyRef": "key-la-1"
881
+ },
882
+ "inputs": [
883
+ {
884
+ "ref": "incident:inc-8c8deab3"
885
+ },
886
+ {
887
+ "inline": "Fix the NPE in PaymentService",
888
+ "transient": true
889
+ }
890
+ ],
891
+ "options": {
892
+ "ticketKey": "PROJ_9.v2:rc-1",
893
+ "branchName": "fix/PROJ-9_hot.fix-1"
894
+ }
895
+ }
896
+ }
897
+ },
898
+ {
899
+ "name": "options-min-iterations",
900
+ "why": "maxIterations at the lower bound",
901
+ "expect": {
902
+ "valid": true
903
+ },
904
+ "message": {
905
+ "schemaVersion": 2,
906
+ "type": "job.assign",
907
+ "msgId": "00000000-0000-4000-8000-000000000001",
908
+ "seq": 1,
909
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
910
+ "workspaceId": "ws-1",
911
+ "ts": "2026-10-29T10:00:00Z",
912
+ "paramsRaw": "{\"jobId\":\"c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f\",\"kind\":\"fix\",\"incidentRef\":{\"id\":\"inc-8c8deab3\",\"fingerprint\":\"5a1f09c2d7e8b3a4\"},\"repoRef\":{\"provider\":\"github\",\"org\":\"acme\",\"repo\":\"billing\",\"branch\":\"main\"},\"policy\":{\"operationMode\":\"assist\",\"automationLevel\":2,\"ceiling\":\"autonomous\"},\"budget\":{\"tokens\":200000,\"seconds\":900},\"llm\":{\"alias\":\"vh-coder\",\"keyRef\":\"key-la-1\"},\"inputs\":[{\"ref\":\"incident:inc-8c8deab3\"},{\"inline\":\"Fix the NPE in PaymentService\",\"transient\":true}],\"options\":{\"maxIterations\":1}}",
913
+ "sig": {
914
+ "keyId": "vh-cp-2026-10",
915
+ "timestamp": "1793268000",
916
+ "nonce": "Zm9vYmFyYmF6cXV4MTIzNDU2",
917
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
918
+ "workspaceId": "ws-1",
919
+ "signature": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
920
+ },
921
+ "requestId": "d4e5f6a7-b8c9-4d0e-9f1a-3b4c5d6e7f80",
922
+ "payload": {
923
+ "jobId": "c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f",
924
+ "kind": "fix",
925
+ "incidentRef": {
926
+ "id": "inc-8c8deab3",
927
+ "fingerprint": "5a1f09c2d7e8b3a4"
928
+ },
929
+ "repoRef": {
930
+ "provider": "github",
931
+ "org": "acme",
932
+ "repo": "billing",
933
+ "branch": "main"
934
+ },
935
+ "policy": {
936
+ "operationMode": "assist",
937
+ "automationLevel": 2,
938
+ "ceiling": "autonomous"
939
+ },
940
+ "budget": {
941
+ "tokens": 200000,
942
+ "seconds": 900
943
+ },
944
+ "llm": {
945
+ "alias": "vh-coder",
946
+ "keyRef": "key-la-1"
947
+ },
948
+ "inputs": [
949
+ {
950
+ "ref": "incident:inc-8c8deab3"
951
+ },
952
+ {
953
+ "inline": "Fix the NPE in PaymentService",
954
+ "transient": true
955
+ }
956
+ ],
957
+ "options": {
958
+ "maxIterations": 1
959
+ }
960
+ }
961
+ }
962
+ },
963
+ {
964
+ "name": "options-extra-field",
965
+ "why": "options is closed: no free-form field",
966
+ "expect": {
967
+ "valid": false,
968
+ "code": "schema_violation",
969
+ "keyword": "additionalProperties"
970
+ },
971
+ "message": {
972
+ "schemaVersion": 2,
973
+ "type": "job.assign",
974
+ "msgId": "00000000-0000-4000-8000-000000000001",
975
+ "seq": 1,
976
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
977
+ "workspaceId": "ws-1",
978
+ "ts": "2026-10-29T10:00:00Z",
979
+ "paramsRaw": "{\"jobId\":\"c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f\",\"kind\":\"fix\",\"incidentRef\":{\"id\":\"inc-8c8deab3\",\"fingerprint\":\"5a1f09c2d7e8b3a4\"},\"repoRef\":{\"provider\":\"github\",\"org\":\"acme\",\"repo\":\"billing\",\"branch\":\"main\"},\"policy\":{\"operationMode\":\"assist\",\"automationLevel\":2,\"ceiling\":\"autonomous\"},\"budget\":{\"tokens\":200000,\"seconds\":900},\"llm\":{\"alias\":\"vh-coder\",\"keyRef\":\"key-la-1\"},\"inputs\":[{\"ref\":\"incident:inc-8c8deab3\"},{\"inline\":\"Fix the NPE in PaymentService\",\"transient\":true}],\"options\":{\"dryRun\":true,\"freeText\":\"client text\"}}",
980
+ "sig": {
981
+ "keyId": "vh-cp-2026-10",
982
+ "timestamp": "1793268000",
983
+ "nonce": "Zm9vYmFyYmF6cXV4MTIzNDU2",
984
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
985
+ "workspaceId": "ws-1",
986
+ "signature": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
987
+ },
988
+ "requestId": "d4e5f6a7-b8c9-4d0e-9f1a-3b4c5d6e7f80",
989
+ "payload": {
990
+ "jobId": "c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f",
991
+ "kind": "fix",
992
+ "incidentRef": {
993
+ "id": "inc-8c8deab3",
994
+ "fingerprint": "5a1f09c2d7e8b3a4"
995
+ },
996
+ "repoRef": {
997
+ "provider": "github",
998
+ "org": "acme",
999
+ "repo": "billing",
1000
+ "branch": "main"
1001
+ },
1002
+ "policy": {
1003
+ "operationMode": "assist",
1004
+ "automationLevel": 2,
1005
+ "ceiling": "autonomous"
1006
+ },
1007
+ "budget": {
1008
+ "tokens": 200000,
1009
+ "seconds": 900
1010
+ },
1011
+ "llm": {
1012
+ "alias": "vh-coder",
1013
+ "keyRef": "key-la-1"
1014
+ },
1015
+ "inputs": [
1016
+ {
1017
+ "ref": "incident:inc-8c8deab3"
1018
+ },
1019
+ {
1020
+ "inline": "Fix the NPE in PaymentService",
1021
+ "transient": true
1022
+ }
1023
+ ],
1024
+ "options": {
1025
+ "dryRun": true,
1026
+ "freeText": "client text"
1027
+ }
1028
+ }
1029
+ }
1030
+ },
1031
+ {
1032
+ "name": "options-git-token-field",
1033
+ "why": "options never carries a credential: closed object",
1034
+ "expect": {
1035
+ "valid": false,
1036
+ "code": "schema_violation",
1037
+ "keyword": "additionalProperties"
1038
+ },
1039
+ "message": {
1040
+ "schemaVersion": 2,
1041
+ "type": "job.assign",
1042
+ "msgId": "00000000-0000-4000-8000-000000000001",
1043
+ "seq": 1,
1044
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
1045
+ "workspaceId": "ws-1",
1046
+ "ts": "2026-10-29T10:00:00Z",
1047
+ "paramsRaw": "{\"jobId\":\"c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f\",\"kind\":\"fix\",\"incidentRef\":{\"id\":\"inc-8c8deab3\",\"fingerprint\":\"5a1f09c2d7e8b3a4\"},\"repoRef\":{\"provider\":\"github\",\"org\":\"acme\",\"repo\":\"billing\",\"branch\":\"main\"},\"policy\":{\"operationMode\":\"assist\",\"automationLevel\":2,\"ceiling\":\"autonomous\"},\"budget\":{\"tokens\":200000,\"seconds\":900},\"llm\":{\"alias\":\"vh-coder\",\"keyRef\":\"key-la-1\"},\"inputs\":[{\"ref\":\"incident:inc-8c8deab3\"},{\"inline\":\"Fix the NPE in PaymentService\",\"transient\":true}],\"options\":{\"gitToken\":\"ghp_x\"}}",
1048
+ "sig": {
1049
+ "keyId": "vh-cp-2026-10",
1050
+ "timestamp": "1793268000",
1051
+ "nonce": "Zm9vYmFyYmF6cXV4MTIzNDU2",
1052
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
1053
+ "workspaceId": "ws-1",
1054
+ "signature": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
1055
+ },
1056
+ "requestId": "d4e5f6a7-b8c9-4d0e-9f1a-3b4c5d6e7f80",
1057
+ "payload": {
1058
+ "jobId": "c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f",
1059
+ "kind": "fix",
1060
+ "incidentRef": {
1061
+ "id": "inc-8c8deab3",
1062
+ "fingerprint": "5a1f09c2d7e8b3a4"
1063
+ },
1064
+ "repoRef": {
1065
+ "provider": "github",
1066
+ "org": "acme",
1067
+ "repo": "billing",
1068
+ "branch": "main"
1069
+ },
1070
+ "policy": {
1071
+ "operationMode": "assist",
1072
+ "automationLevel": 2,
1073
+ "ceiling": "autonomous"
1074
+ },
1075
+ "budget": {
1076
+ "tokens": 200000,
1077
+ "seconds": 900
1078
+ },
1079
+ "llm": {
1080
+ "alias": "vh-coder",
1081
+ "keyRef": "key-la-1"
1082
+ },
1083
+ "inputs": [
1084
+ {
1085
+ "ref": "incident:inc-8c8deab3"
1086
+ },
1087
+ {
1088
+ "inline": "Fix the NPE in PaymentService",
1089
+ "transient": true
1090
+ }
1091
+ ],
1092
+ "options": {
1093
+ "gitToken": "ghp_x"
1094
+ }
1095
+ }
1096
+ }
1097
+ },
1098
+ {
1099
+ "name": "options-empty-object",
1100
+ "why": "an empty options object says nothing: omit it",
1101
+ "expect": {
1102
+ "valid": false,
1103
+ "code": "schema_violation",
1104
+ "keyword": "minProperties"
1105
+ },
1106
+ "message": {
1107
+ "schemaVersion": 2,
1108
+ "type": "job.assign",
1109
+ "msgId": "00000000-0000-4000-8000-000000000001",
1110
+ "seq": 1,
1111
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
1112
+ "workspaceId": "ws-1",
1113
+ "ts": "2026-10-29T10:00:00Z",
1114
+ "paramsRaw": "{\"jobId\":\"c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f\",\"kind\":\"fix\",\"incidentRef\":{\"id\":\"inc-8c8deab3\",\"fingerprint\":\"5a1f09c2d7e8b3a4\"},\"repoRef\":{\"provider\":\"github\",\"org\":\"acme\",\"repo\":\"billing\",\"branch\":\"main\"},\"policy\":{\"operationMode\":\"assist\",\"automationLevel\":2,\"ceiling\":\"autonomous\"},\"budget\":{\"tokens\":200000,\"seconds\":900},\"llm\":{\"alias\":\"vh-coder\",\"keyRef\":\"key-la-1\"},\"inputs\":[{\"ref\":\"incident:inc-8c8deab3\"},{\"inline\":\"Fix the NPE in PaymentService\",\"transient\":true}],\"options\":{}}",
1115
+ "sig": {
1116
+ "keyId": "vh-cp-2026-10",
1117
+ "timestamp": "1793268000",
1118
+ "nonce": "Zm9vYmFyYmF6cXV4MTIzNDU2",
1119
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
1120
+ "workspaceId": "ws-1",
1121
+ "signature": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
1122
+ },
1123
+ "requestId": "d4e5f6a7-b8c9-4d0e-9f1a-3b4c5d6e7f80",
1124
+ "payload": {
1125
+ "jobId": "c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f",
1126
+ "kind": "fix",
1127
+ "incidentRef": {
1128
+ "id": "inc-8c8deab3",
1129
+ "fingerprint": "5a1f09c2d7e8b3a4"
1130
+ },
1131
+ "repoRef": {
1132
+ "provider": "github",
1133
+ "org": "acme",
1134
+ "repo": "billing",
1135
+ "branch": "main"
1136
+ },
1137
+ "policy": {
1138
+ "operationMode": "assist",
1139
+ "automationLevel": 2,
1140
+ "ceiling": "autonomous"
1141
+ },
1142
+ "budget": {
1143
+ "tokens": 200000,
1144
+ "seconds": 900
1145
+ },
1146
+ "llm": {
1147
+ "alias": "vh-coder",
1148
+ "keyRef": "key-la-1"
1149
+ },
1150
+ "inputs": [
1151
+ {
1152
+ "ref": "incident:inc-8c8deab3"
1153
+ },
1154
+ {
1155
+ "inline": "Fix the NPE in PaymentService",
1156
+ "transient": true
1157
+ }
1158
+ ],
1159
+ "options": {}
1160
+ }
1161
+ }
1162
+ },
1163
+ {
1164
+ "name": "options-ticket-key-with-space",
1165
+ "why": "ticketKey is a short id, no space",
1166
+ "expect": {
1167
+ "valid": false,
1168
+ "code": "schema_violation",
1169
+ "keyword": "pattern"
1170
+ },
1171
+ "message": {
1172
+ "schemaVersion": 2,
1173
+ "type": "job.assign",
1174
+ "msgId": "00000000-0000-4000-8000-000000000001",
1175
+ "seq": 1,
1176
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
1177
+ "workspaceId": "ws-1",
1178
+ "ts": "2026-10-29T10:00:00Z",
1179
+ "paramsRaw": "{\"jobId\":\"c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f\",\"kind\":\"fix\",\"incidentRef\":{\"id\":\"inc-8c8deab3\",\"fingerprint\":\"5a1f09c2d7e8b3a4\"},\"repoRef\":{\"provider\":\"github\",\"org\":\"acme\",\"repo\":\"billing\",\"branch\":\"main\"},\"policy\":{\"operationMode\":\"assist\",\"automationLevel\":2,\"ceiling\":\"autonomous\"},\"budget\":{\"tokens\":200000,\"seconds\":900},\"llm\":{\"alias\":\"vh-coder\",\"keyRef\":\"key-la-1\"},\"inputs\":[{\"ref\":\"incident:inc-8c8deab3\"},{\"inline\":\"Fix the NPE in PaymentService\",\"transient\":true}],\"options\":{\"ticketKey\":\"SMART 123\"}}",
1180
+ "sig": {
1181
+ "keyId": "vh-cp-2026-10",
1182
+ "timestamp": "1793268000",
1183
+ "nonce": "Zm9vYmFyYmF6cXV4MTIzNDU2",
1184
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
1185
+ "workspaceId": "ws-1",
1186
+ "signature": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
1187
+ },
1188
+ "requestId": "d4e5f6a7-b8c9-4d0e-9f1a-3b4c5d6e7f80",
1189
+ "payload": {
1190
+ "jobId": "c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f",
1191
+ "kind": "fix",
1192
+ "incidentRef": {
1193
+ "id": "inc-8c8deab3",
1194
+ "fingerprint": "5a1f09c2d7e8b3a4"
1195
+ },
1196
+ "repoRef": {
1197
+ "provider": "github",
1198
+ "org": "acme",
1199
+ "repo": "billing",
1200
+ "branch": "main"
1201
+ },
1202
+ "policy": {
1203
+ "operationMode": "assist",
1204
+ "automationLevel": 2,
1205
+ "ceiling": "autonomous"
1206
+ },
1207
+ "budget": {
1208
+ "tokens": 200000,
1209
+ "seconds": 900
1210
+ },
1211
+ "llm": {
1212
+ "alias": "vh-coder",
1213
+ "keyRef": "key-la-1"
1214
+ },
1215
+ "inputs": [
1216
+ {
1217
+ "ref": "incident:inc-8c8deab3"
1218
+ },
1219
+ {
1220
+ "inline": "Fix the NPE in PaymentService",
1221
+ "transient": true
1222
+ }
1223
+ ],
1224
+ "options": {
1225
+ "ticketKey": "SMART 123"
1226
+ }
1227
+ }
1228
+ }
1229
+ },
1230
+ {
1231
+ "name": "options-ticket-key-above-64",
1232
+ "why": "ticketKey is at most 64 characters",
1233
+ "expect": {
1234
+ "valid": false,
1235
+ "code": "schema_violation",
1236
+ "keyword": "maxLength"
1237
+ },
1238
+ "message": {
1239
+ "schemaVersion": 2,
1240
+ "type": "job.assign",
1241
+ "msgId": "00000000-0000-4000-8000-000000000001",
1242
+ "seq": 1,
1243
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
1244
+ "workspaceId": "ws-1",
1245
+ "ts": "2026-10-29T10:00:00Z",
1246
+ "paramsRaw": "{\"jobId\":\"c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f\",\"kind\":\"fix\",\"incidentRef\":{\"id\":\"inc-8c8deab3\",\"fingerprint\":\"5a1f09c2d7e8b3a4\"},\"repoRef\":{\"provider\":\"github\",\"org\":\"acme\",\"repo\":\"billing\",\"branch\":\"main\"},\"policy\":{\"operationMode\":\"assist\",\"automationLevel\":2,\"ceiling\":\"autonomous\"},\"budget\":{\"tokens\":200000,\"seconds\":900},\"llm\":{\"alias\":\"vh-coder\",\"keyRef\":\"key-la-1\"},\"inputs\":[{\"ref\":\"incident:inc-8c8deab3\"},{\"inline\":\"Fix the NPE in PaymentService\",\"transient\":true}],\"options\":{\"ticketKey\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\"}}",
1247
+ "sig": {
1248
+ "keyId": "vh-cp-2026-10",
1249
+ "timestamp": "1793268000",
1250
+ "nonce": "Zm9vYmFyYmF6cXV4MTIzNDU2",
1251
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
1252
+ "workspaceId": "ws-1",
1253
+ "signature": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
1254
+ },
1255
+ "requestId": "d4e5f6a7-b8c9-4d0e-9f1a-3b4c5d6e7f80",
1256
+ "payload": {
1257
+ "jobId": "c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f",
1258
+ "kind": "fix",
1259
+ "incidentRef": {
1260
+ "id": "inc-8c8deab3",
1261
+ "fingerprint": "5a1f09c2d7e8b3a4"
1262
+ },
1263
+ "repoRef": {
1264
+ "provider": "github",
1265
+ "org": "acme",
1266
+ "repo": "billing",
1267
+ "branch": "main"
1268
+ },
1269
+ "policy": {
1270
+ "operationMode": "assist",
1271
+ "automationLevel": 2,
1272
+ "ceiling": "autonomous"
1273
+ },
1274
+ "budget": {
1275
+ "tokens": 200000,
1276
+ "seconds": 900
1277
+ },
1278
+ "llm": {
1279
+ "alias": "vh-coder",
1280
+ "keyRef": "key-la-1"
1281
+ },
1282
+ "inputs": [
1283
+ {
1284
+ "ref": "incident:inc-8c8deab3"
1285
+ },
1286
+ {
1287
+ "inline": "Fix the NPE in PaymentService",
1288
+ "transient": true
1289
+ }
1290
+ ],
1291
+ "options": {
1292
+ "ticketKey": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
1293
+ }
1294
+ }
1295
+ }
1296
+ },
1297
+ {
1298
+ "name": "options-branch-dotdot",
1299
+ "why": "a branch name never has '..'",
1300
+ "expect": {
1301
+ "valid": false,
1302
+ "code": "schema_violation",
1303
+ "keyword": "pattern"
1304
+ },
1305
+ "message": {
1306
+ "schemaVersion": 2,
1307
+ "type": "job.assign",
1308
+ "msgId": "00000000-0000-4000-8000-000000000001",
1309
+ "seq": 1,
1310
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
1311
+ "workspaceId": "ws-1",
1312
+ "ts": "2026-10-29T10:00:00Z",
1313
+ "paramsRaw": "{\"jobId\":\"c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f\",\"kind\":\"fix\",\"incidentRef\":{\"id\":\"inc-8c8deab3\",\"fingerprint\":\"5a1f09c2d7e8b3a4\"},\"repoRef\":{\"provider\":\"github\",\"org\":\"acme\",\"repo\":\"billing\",\"branch\":\"main\"},\"policy\":{\"operationMode\":\"assist\",\"automationLevel\":2,\"ceiling\":\"autonomous\"},\"budget\":{\"tokens\":200000,\"seconds\":900},\"llm\":{\"alias\":\"vh-coder\",\"keyRef\":\"key-la-1\"},\"inputs\":[{\"ref\":\"incident:inc-8c8deab3\"},{\"inline\":\"Fix the NPE in PaymentService\",\"transient\":true}],\"options\":{\"branchName\":\"feature/../main\"}}",
1314
+ "sig": {
1315
+ "keyId": "vh-cp-2026-10",
1316
+ "timestamp": "1793268000",
1317
+ "nonce": "Zm9vYmFyYmF6cXV4MTIzNDU2",
1318
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
1319
+ "workspaceId": "ws-1",
1320
+ "signature": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
1321
+ },
1322
+ "requestId": "d4e5f6a7-b8c9-4d0e-9f1a-3b4c5d6e7f80",
1323
+ "payload": {
1324
+ "jobId": "c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f",
1325
+ "kind": "fix",
1326
+ "incidentRef": {
1327
+ "id": "inc-8c8deab3",
1328
+ "fingerprint": "5a1f09c2d7e8b3a4"
1329
+ },
1330
+ "repoRef": {
1331
+ "provider": "github",
1332
+ "org": "acme",
1333
+ "repo": "billing",
1334
+ "branch": "main"
1335
+ },
1336
+ "policy": {
1337
+ "operationMode": "assist",
1338
+ "automationLevel": 2,
1339
+ "ceiling": "autonomous"
1340
+ },
1341
+ "budget": {
1342
+ "tokens": 200000,
1343
+ "seconds": 900
1344
+ },
1345
+ "llm": {
1346
+ "alias": "vh-coder",
1347
+ "keyRef": "key-la-1"
1348
+ },
1349
+ "inputs": [
1350
+ {
1351
+ "ref": "incident:inc-8c8deab3"
1352
+ },
1353
+ {
1354
+ "inline": "Fix the NPE in PaymentService",
1355
+ "transient": true
1356
+ }
1357
+ ],
1358
+ "options": {
1359
+ "branchName": "feature/../main"
1360
+ }
1361
+ }
1362
+ }
1363
+ },
1364
+ {
1365
+ "name": "options-branch-with-space",
1366
+ "why": "a branch name never has a space",
1367
+ "expect": {
1368
+ "valid": false,
1369
+ "code": "schema_violation",
1370
+ "keyword": "pattern"
1371
+ },
1372
+ "message": {
1373
+ "schemaVersion": 2,
1374
+ "type": "job.assign",
1375
+ "msgId": "00000000-0000-4000-8000-000000000001",
1376
+ "seq": 1,
1377
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
1378
+ "workspaceId": "ws-1",
1379
+ "ts": "2026-10-29T10:00:00Z",
1380
+ "paramsRaw": "{\"jobId\":\"c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f\",\"kind\":\"fix\",\"incidentRef\":{\"id\":\"inc-8c8deab3\",\"fingerprint\":\"5a1f09c2d7e8b3a4\"},\"repoRef\":{\"provider\":\"github\",\"org\":\"acme\",\"repo\":\"billing\",\"branch\":\"main\"},\"policy\":{\"operationMode\":\"assist\",\"automationLevel\":2,\"ceiling\":\"autonomous\"},\"budget\":{\"tokens\":200000,\"seconds\":900},\"llm\":{\"alias\":\"vh-coder\",\"keyRef\":\"key-la-1\"},\"inputs\":[{\"ref\":\"incident:inc-8c8deab3\"},{\"inline\":\"Fix the NPE in PaymentService\",\"transient\":true}],\"options\":{\"branchName\":\"my branch\"}}",
1381
+ "sig": {
1382
+ "keyId": "vh-cp-2026-10",
1383
+ "timestamp": "1793268000",
1384
+ "nonce": "Zm9vYmFyYmF6cXV4MTIzNDU2",
1385
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
1386
+ "workspaceId": "ws-1",
1387
+ "signature": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
1388
+ },
1389
+ "requestId": "d4e5f6a7-b8c9-4d0e-9f1a-3b4c5d6e7f80",
1390
+ "payload": {
1391
+ "jobId": "c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f",
1392
+ "kind": "fix",
1393
+ "incidentRef": {
1394
+ "id": "inc-8c8deab3",
1395
+ "fingerprint": "5a1f09c2d7e8b3a4"
1396
+ },
1397
+ "repoRef": {
1398
+ "provider": "github",
1399
+ "org": "acme",
1400
+ "repo": "billing",
1401
+ "branch": "main"
1402
+ },
1403
+ "policy": {
1404
+ "operationMode": "assist",
1405
+ "automationLevel": 2,
1406
+ "ceiling": "autonomous"
1407
+ },
1408
+ "budget": {
1409
+ "tokens": 200000,
1410
+ "seconds": 900
1411
+ },
1412
+ "llm": {
1413
+ "alias": "vh-coder",
1414
+ "keyRef": "key-la-1"
1415
+ },
1416
+ "inputs": [
1417
+ {
1418
+ "ref": "incident:inc-8c8deab3"
1419
+ },
1420
+ {
1421
+ "inline": "Fix the NPE in PaymentService",
1422
+ "transient": true
1423
+ }
1424
+ ],
1425
+ "options": {
1426
+ "branchName": "my branch"
1427
+ }
1428
+ }
1429
+ }
1430
+ },
1431
+ {
1432
+ "name": "options-branch-leading-dash",
1433
+ "why": "a branch name never starts with '-' (option injection)",
1434
+ "expect": {
1435
+ "valid": false,
1436
+ "code": "schema_violation",
1437
+ "keyword": "pattern"
1438
+ },
1439
+ "message": {
1440
+ "schemaVersion": 2,
1441
+ "type": "job.assign",
1442
+ "msgId": "00000000-0000-4000-8000-000000000001",
1443
+ "seq": 1,
1444
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
1445
+ "workspaceId": "ws-1",
1446
+ "ts": "2026-10-29T10:00:00Z",
1447
+ "paramsRaw": "{\"jobId\":\"c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f\",\"kind\":\"fix\",\"incidentRef\":{\"id\":\"inc-8c8deab3\",\"fingerprint\":\"5a1f09c2d7e8b3a4\"},\"repoRef\":{\"provider\":\"github\",\"org\":\"acme\",\"repo\":\"billing\",\"branch\":\"main\"},\"policy\":{\"operationMode\":\"assist\",\"automationLevel\":2,\"ceiling\":\"autonomous\"},\"budget\":{\"tokens\":200000,\"seconds\":900},\"llm\":{\"alias\":\"vh-coder\",\"keyRef\":\"key-la-1\"},\"inputs\":[{\"ref\":\"incident:inc-8c8deab3\"},{\"inline\":\"Fix the NPE in PaymentService\",\"transient\":true}],\"options\":{\"branchName\":\"-delete\"}}",
1448
+ "sig": {
1449
+ "keyId": "vh-cp-2026-10",
1450
+ "timestamp": "1793268000",
1451
+ "nonce": "Zm9vYmFyYmF6cXV4MTIzNDU2",
1452
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
1453
+ "workspaceId": "ws-1",
1454
+ "signature": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
1455
+ },
1456
+ "requestId": "d4e5f6a7-b8c9-4d0e-9f1a-3b4c5d6e7f80",
1457
+ "payload": {
1458
+ "jobId": "c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f",
1459
+ "kind": "fix",
1460
+ "incidentRef": {
1461
+ "id": "inc-8c8deab3",
1462
+ "fingerprint": "5a1f09c2d7e8b3a4"
1463
+ },
1464
+ "repoRef": {
1465
+ "provider": "github",
1466
+ "org": "acme",
1467
+ "repo": "billing",
1468
+ "branch": "main"
1469
+ },
1470
+ "policy": {
1471
+ "operationMode": "assist",
1472
+ "automationLevel": 2,
1473
+ "ceiling": "autonomous"
1474
+ },
1475
+ "budget": {
1476
+ "tokens": 200000,
1477
+ "seconds": 900
1478
+ },
1479
+ "llm": {
1480
+ "alias": "vh-coder",
1481
+ "keyRef": "key-la-1"
1482
+ },
1483
+ "inputs": [
1484
+ {
1485
+ "ref": "incident:inc-8c8deab3"
1486
+ },
1487
+ {
1488
+ "inline": "Fix the NPE in PaymentService",
1489
+ "transient": true
1490
+ }
1491
+ ],
1492
+ "options": {
1493
+ "branchName": "-delete"
1494
+ }
1495
+ }
1496
+ }
1497
+ },
1498
+ {
1499
+ "name": "options-branch-trailing-slash",
1500
+ "why": "a branch name never ends with '/'",
1501
+ "expect": {
1502
+ "valid": false,
1503
+ "code": "schema_violation",
1504
+ "keyword": "pattern"
1505
+ },
1506
+ "message": {
1507
+ "schemaVersion": 2,
1508
+ "type": "job.assign",
1509
+ "msgId": "00000000-0000-4000-8000-000000000001",
1510
+ "seq": 1,
1511
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
1512
+ "workspaceId": "ws-1",
1513
+ "ts": "2026-10-29T10:00:00Z",
1514
+ "paramsRaw": "{\"jobId\":\"c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f\",\"kind\":\"fix\",\"incidentRef\":{\"id\":\"inc-8c8deab3\",\"fingerprint\":\"5a1f09c2d7e8b3a4\"},\"repoRef\":{\"provider\":\"github\",\"org\":\"acme\",\"repo\":\"billing\",\"branch\":\"main\"},\"policy\":{\"operationMode\":\"assist\",\"automationLevel\":2,\"ceiling\":\"autonomous\"},\"budget\":{\"tokens\":200000,\"seconds\":900},\"llm\":{\"alias\":\"vh-coder\",\"keyRef\":\"key-la-1\"},\"inputs\":[{\"ref\":\"incident:inc-8c8deab3\"},{\"inline\":\"Fix the NPE in PaymentService\",\"transient\":true}],\"options\":{\"branchName\":\"feature/\"}}",
1515
+ "sig": {
1516
+ "keyId": "vh-cp-2026-10",
1517
+ "timestamp": "1793268000",
1518
+ "nonce": "Zm9vYmFyYmF6cXV4MTIzNDU2",
1519
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
1520
+ "workspaceId": "ws-1",
1521
+ "signature": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
1522
+ },
1523
+ "requestId": "d4e5f6a7-b8c9-4d0e-9f1a-3b4c5d6e7f80",
1524
+ "payload": {
1525
+ "jobId": "c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f",
1526
+ "kind": "fix",
1527
+ "incidentRef": {
1528
+ "id": "inc-8c8deab3",
1529
+ "fingerprint": "5a1f09c2d7e8b3a4"
1530
+ },
1531
+ "repoRef": {
1532
+ "provider": "github",
1533
+ "org": "acme",
1534
+ "repo": "billing",
1535
+ "branch": "main"
1536
+ },
1537
+ "policy": {
1538
+ "operationMode": "assist",
1539
+ "automationLevel": 2,
1540
+ "ceiling": "autonomous"
1541
+ },
1542
+ "budget": {
1543
+ "tokens": 200000,
1544
+ "seconds": 900
1545
+ },
1546
+ "llm": {
1547
+ "alias": "vh-coder",
1548
+ "keyRef": "key-la-1"
1549
+ },
1550
+ "inputs": [
1551
+ {
1552
+ "ref": "incident:inc-8c8deab3"
1553
+ },
1554
+ {
1555
+ "inline": "Fix the NPE in PaymentService",
1556
+ "transient": true
1557
+ }
1558
+ ],
1559
+ "options": {
1560
+ "branchName": "feature/"
1561
+ }
1562
+ }
1563
+ }
1564
+ },
1565
+ {
1566
+ "name": "options-branch-lock-suffix",
1567
+ "why": "a branch name never ends with '.lock'",
1568
+ "expect": {
1569
+ "valid": false,
1570
+ "code": "schema_violation",
1571
+ "keyword": "pattern"
1572
+ },
1573
+ "message": {
1574
+ "schemaVersion": 2,
1575
+ "type": "job.assign",
1576
+ "msgId": "00000000-0000-4000-8000-000000000001",
1577
+ "seq": 1,
1578
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
1579
+ "workspaceId": "ws-1",
1580
+ "ts": "2026-10-29T10:00:00Z",
1581
+ "paramsRaw": "{\"jobId\":\"c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f\",\"kind\":\"fix\",\"incidentRef\":{\"id\":\"inc-8c8deab3\",\"fingerprint\":\"5a1f09c2d7e8b3a4\"},\"repoRef\":{\"provider\":\"github\",\"org\":\"acme\",\"repo\":\"billing\",\"branch\":\"main\"},\"policy\":{\"operationMode\":\"assist\",\"automationLevel\":2,\"ceiling\":\"autonomous\"},\"budget\":{\"tokens\":200000,\"seconds\":900},\"llm\":{\"alias\":\"vh-coder\",\"keyRef\":\"key-la-1\"},\"inputs\":[{\"ref\":\"incident:inc-8c8deab3\"},{\"inline\":\"Fix the NPE in PaymentService\",\"transient\":true}],\"options\":{\"branchName\":\"feature/x.lock\"}}",
1582
+ "sig": {
1583
+ "keyId": "vh-cp-2026-10",
1584
+ "timestamp": "1793268000",
1585
+ "nonce": "Zm9vYmFyYmF6cXV4MTIzNDU2",
1586
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
1587
+ "workspaceId": "ws-1",
1588
+ "signature": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
1589
+ },
1590
+ "requestId": "d4e5f6a7-b8c9-4d0e-9f1a-3b4c5d6e7f80",
1591
+ "payload": {
1592
+ "jobId": "c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f",
1593
+ "kind": "fix",
1594
+ "incidentRef": {
1595
+ "id": "inc-8c8deab3",
1596
+ "fingerprint": "5a1f09c2d7e8b3a4"
1597
+ },
1598
+ "repoRef": {
1599
+ "provider": "github",
1600
+ "org": "acme",
1601
+ "repo": "billing",
1602
+ "branch": "main"
1603
+ },
1604
+ "policy": {
1605
+ "operationMode": "assist",
1606
+ "automationLevel": 2,
1607
+ "ceiling": "autonomous"
1608
+ },
1609
+ "budget": {
1610
+ "tokens": 200000,
1611
+ "seconds": 900
1612
+ },
1613
+ "llm": {
1614
+ "alias": "vh-coder",
1615
+ "keyRef": "key-la-1"
1616
+ },
1617
+ "inputs": [
1618
+ {
1619
+ "ref": "incident:inc-8c8deab3"
1620
+ },
1621
+ {
1622
+ "inline": "Fix the NPE in PaymentService",
1623
+ "transient": true
1624
+ }
1625
+ ],
1626
+ "options": {
1627
+ "branchName": "feature/x.lock"
1628
+ }
1629
+ }
1630
+ }
1631
+ },
1632
+ {
1633
+ "name": "options-branch-shell-chars",
1634
+ "why": "a branch name has no shell or ref metacharacters",
1635
+ "expect": {
1636
+ "valid": false,
1637
+ "code": "schema_violation",
1638
+ "keyword": "pattern"
1639
+ },
1640
+ "message": {
1641
+ "schemaVersion": 2,
1642
+ "type": "job.assign",
1643
+ "msgId": "00000000-0000-4000-8000-000000000001",
1644
+ "seq": 1,
1645
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
1646
+ "workspaceId": "ws-1",
1647
+ "ts": "2026-10-29T10:00:00Z",
1648
+ "paramsRaw": "{\"jobId\":\"c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f\",\"kind\":\"fix\",\"incidentRef\":{\"id\":\"inc-8c8deab3\",\"fingerprint\":\"5a1f09c2d7e8b3a4\"},\"repoRef\":{\"provider\":\"github\",\"org\":\"acme\",\"repo\":\"billing\",\"branch\":\"main\"},\"policy\":{\"operationMode\":\"assist\",\"automationLevel\":2,\"ceiling\":\"autonomous\"},\"budget\":{\"tokens\":200000,\"seconds\":900},\"llm\":{\"alias\":\"vh-coder\",\"keyRef\":\"key-la-1\"},\"inputs\":[{\"ref\":\"incident:inc-8c8deab3\"},{\"inline\":\"Fix the NPE in PaymentService\",\"transient\":true}],\"options\":{\"branchName\":\"a;rm -rf\"}}",
1649
+ "sig": {
1650
+ "keyId": "vh-cp-2026-10",
1651
+ "timestamp": "1793268000",
1652
+ "nonce": "Zm9vYmFyYmF6cXV4MTIzNDU2",
1653
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
1654
+ "workspaceId": "ws-1",
1655
+ "signature": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
1656
+ },
1657
+ "requestId": "d4e5f6a7-b8c9-4d0e-9f1a-3b4c5d6e7f80",
1658
+ "payload": {
1659
+ "jobId": "c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f",
1660
+ "kind": "fix",
1661
+ "incidentRef": {
1662
+ "id": "inc-8c8deab3",
1663
+ "fingerprint": "5a1f09c2d7e8b3a4"
1664
+ },
1665
+ "repoRef": {
1666
+ "provider": "github",
1667
+ "org": "acme",
1668
+ "repo": "billing",
1669
+ "branch": "main"
1670
+ },
1671
+ "policy": {
1672
+ "operationMode": "assist",
1673
+ "automationLevel": 2,
1674
+ "ceiling": "autonomous"
1675
+ },
1676
+ "budget": {
1677
+ "tokens": 200000,
1678
+ "seconds": 900
1679
+ },
1680
+ "llm": {
1681
+ "alias": "vh-coder",
1682
+ "keyRef": "key-la-1"
1683
+ },
1684
+ "inputs": [
1685
+ {
1686
+ "ref": "incident:inc-8c8deab3"
1687
+ },
1688
+ {
1689
+ "inline": "Fix the NPE in PaymentService",
1690
+ "transient": true
1691
+ }
1692
+ ],
1693
+ "options": {
1694
+ "branchName": "a;rm -rf"
1695
+ }
1696
+ }
1697
+ }
1698
+ },
1699
+ {
1700
+ "name": "options-branch-above-255",
1701
+ "why": "a branch name is at most 255 characters",
1702
+ "expect": {
1703
+ "valid": false,
1704
+ "code": "schema_violation",
1705
+ "keyword": "maxLength"
1706
+ },
1707
+ "message": {
1708
+ "schemaVersion": 2,
1709
+ "type": "job.assign",
1710
+ "msgId": "00000000-0000-4000-8000-000000000001",
1711
+ "seq": 1,
1712
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
1713
+ "workspaceId": "ws-1",
1714
+ "ts": "2026-10-29T10:00:00Z",
1715
+ "paramsRaw": "{\"jobId\":\"c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f\",\"kind\":\"fix\",\"incidentRef\":{\"id\":\"inc-8c8deab3\",\"fingerprint\":\"5a1f09c2d7e8b3a4\"},\"repoRef\":{\"provider\":\"github\",\"org\":\"acme\",\"repo\":\"billing\",\"branch\":\"main\"},\"policy\":{\"operationMode\":\"assist\",\"automationLevel\":2,\"ceiling\":\"autonomous\"},\"budget\":{\"tokens\":200000,\"seconds\":900},\"llm\":{\"alias\":\"vh-coder\",\"keyRef\":\"key-la-1\"},\"inputs\":[{\"ref\":\"incident:inc-8c8deab3\"},{\"inline\":\"Fix the NPE in PaymentService\",\"transient\":true}],\"options\":{\"branchName\":\"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\"}}",
1716
+ "sig": {
1717
+ "keyId": "vh-cp-2026-10",
1718
+ "timestamp": "1793268000",
1719
+ "nonce": "Zm9vYmFyYmF6cXV4MTIzNDU2",
1720
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
1721
+ "workspaceId": "ws-1",
1722
+ "signature": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
1723
+ },
1724
+ "requestId": "d4e5f6a7-b8c9-4d0e-9f1a-3b4c5d6e7f80",
1725
+ "payload": {
1726
+ "jobId": "c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f",
1727
+ "kind": "fix",
1728
+ "incidentRef": {
1729
+ "id": "inc-8c8deab3",
1730
+ "fingerprint": "5a1f09c2d7e8b3a4"
1731
+ },
1732
+ "repoRef": {
1733
+ "provider": "github",
1734
+ "org": "acme",
1735
+ "repo": "billing",
1736
+ "branch": "main"
1737
+ },
1738
+ "policy": {
1739
+ "operationMode": "assist",
1740
+ "automationLevel": 2,
1741
+ "ceiling": "autonomous"
1742
+ },
1743
+ "budget": {
1744
+ "tokens": 200000,
1745
+ "seconds": 900
1746
+ },
1747
+ "llm": {
1748
+ "alias": "vh-coder",
1749
+ "keyRef": "key-la-1"
1750
+ },
1751
+ "inputs": [
1752
+ {
1753
+ "ref": "incident:inc-8c8deab3"
1754
+ },
1755
+ {
1756
+ "inline": "Fix the NPE in PaymentService",
1757
+ "transient": true
1758
+ }
1759
+ ],
1760
+ "options": {
1761
+ "branchName": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
1762
+ }
1763
+ }
1764
+ }
1765
+ },
1766
+ {
1767
+ "name": "options-max-iterations-zero",
1768
+ "why": "maxIterations is 1..100",
1769
+ "expect": {
1770
+ "valid": false,
1771
+ "code": "schema_violation",
1772
+ "keyword": "minimum"
1773
+ },
1774
+ "message": {
1775
+ "schemaVersion": 2,
1776
+ "type": "job.assign",
1777
+ "msgId": "00000000-0000-4000-8000-000000000001",
1778
+ "seq": 1,
1779
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
1780
+ "workspaceId": "ws-1",
1781
+ "ts": "2026-10-29T10:00:00Z",
1782
+ "paramsRaw": "{\"jobId\":\"c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f\",\"kind\":\"fix\",\"incidentRef\":{\"id\":\"inc-8c8deab3\",\"fingerprint\":\"5a1f09c2d7e8b3a4\"},\"repoRef\":{\"provider\":\"github\",\"org\":\"acme\",\"repo\":\"billing\",\"branch\":\"main\"},\"policy\":{\"operationMode\":\"assist\",\"automationLevel\":2,\"ceiling\":\"autonomous\"},\"budget\":{\"tokens\":200000,\"seconds\":900},\"llm\":{\"alias\":\"vh-coder\",\"keyRef\":\"key-la-1\"},\"inputs\":[{\"ref\":\"incident:inc-8c8deab3\"},{\"inline\":\"Fix the NPE in PaymentService\",\"transient\":true}],\"options\":{\"maxIterations\":0}}",
1783
+ "sig": {
1784
+ "keyId": "vh-cp-2026-10",
1785
+ "timestamp": "1793268000",
1786
+ "nonce": "Zm9vYmFyYmF6cXV4MTIzNDU2",
1787
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
1788
+ "workspaceId": "ws-1",
1789
+ "signature": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
1790
+ },
1791
+ "requestId": "d4e5f6a7-b8c9-4d0e-9f1a-3b4c5d6e7f80",
1792
+ "payload": {
1793
+ "jobId": "c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f",
1794
+ "kind": "fix",
1795
+ "incidentRef": {
1796
+ "id": "inc-8c8deab3",
1797
+ "fingerprint": "5a1f09c2d7e8b3a4"
1798
+ },
1799
+ "repoRef": {
1800
+ "provider": "github",
1801
+ "org": "acme",
1802
+ "repo": "billing",
1803
+ "branch": "main"
1804
+ },
1805
+ "policy": {
1806
+ "operationMode": "assist",
1807
+ "automationLevel": 2,
1808
+ "ceiling": "autonomous"
1809
+ },
1810
+ "budget": {
1811
+ "tokens": 200000,
1812
+ "seconds": 900
1813
+ },
1814
+ "llm": {
1815
+ "alias": "vh-coder",
1816
+ "keyRef": "key-la-1"
1817
+ },
1818
+ "inputs": [
1819
+ {
1820
+ "ref": "incident:inc-8c8deab3"
1821
+ },
1822
+ {
1823
+ "inline": "Fix the NPE in PaymentService",
1824
+ "transient": true
1825
+ }
1826
+ ],
1827
+ "options": {
1828
+ "maxIterations": 0
1829
+ }
1830
+ }
1831
+ }
1832
+ },
1833
+ {
1834
+ "name": "options-max-iterations-101",
1835
+ "why": "maxIterations is 1..100",
1836
+ "expect": {
1837
+ "valid": false,
1838
+ "code": "schema_violation",
1839
+ "keyword": "maximum"
1840
+ },
1841
+ "message": {
1842
+ "schemaVersion": 2,
1843
+ "type": "job.assign",
1844
+ "msgId": "00000000-0000-4000-8000-000000000001",
1845
+ "seq": 1,
1846
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
1847
+ "workspaceId": "ws-1",
1848
+ "ts": "2026-10-29T10:00:00Z",
1849
+ "paramsRaw": "{\"jobId\":\"c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f\",\"kind\":\"fix\",\"incidentRef\":{\"id\":\"inc-8c8deab3\",\"fingerprint\":\"5a1f09c2d7e8b3a4\"},\"repoRef\":{\"provider\":\"github\",\"org\":\"acme\",\"repo\":\"billing\",\"branch\":\"main\"},\"policy\":{\"operationMode\":\"assist\",\"automationLevel\":2,\"ceiling\":\"autonomous\"},\"budget\":{\"tokens\":200000,\"seconds\":900},\"llm\":{\"alias\":\"vh-coder\",\"keyRef\":\"key-la-1\"},\"inputs\":[{\"ref\":\"incident:inc-8c8deab3\"},{\"inline\":\"Fix the NPE in PaymentService\",\"transient\":true}],\"options\":{\"maxIterations\":101}}",
1850
+ "sig": {
1851
+ "keyId": "vh-cp-2026-10",
1852
+ "timestamp": "1793268000",
1853
+ "nonce": "Zm9vYmFyYmF6cXV4MTIzNDU2",
1854
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
1855
+ "workspaceId": "ws-1",
1856
+ "signature": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
1857
+ },
1858
+ "requestId": "d4e5f6a7-b8c9-4d0e-9f1a-3b4c5d6e7f80",
1859
+ "payload": {
1860
+ "jobId": "c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f",
1861
+ "kind": "fix",
1862
+ "incidentRef": {
1863
+ "id": "inc-8c8deab3",
1864
+ "fingerprint": "5a1f09c2d7e8b3a4"
1865
+ },
1866
+ "repoRef": {
1867
+ "provider": "github",
1868
+ "org": "acme",
1869
+ "repo": "billing",
1870
+ "branch": "main"
1871
+ },
1872
+ "policy": {
1873
+ "operationMode": "assist",
1874
+ "automationLevel": 2,
1875
+ "ceiling": "autonomous"
1876
+ },
1877
+ "budget": {
1878
+ "tokens": 200000,
1879
+ "seconds": 900
1880
+ },
1881
+ "llm": {
1882
+ "alias": "vh-coder",
1883
+ "keyRef": "key-la-1"
1884
+ },
1885
+ "inputs": [
1886
+ {
1887
+ "ref": "incident:inc-8c8deab3"
1888
+ },
1889
+ {
1890
+ "inline": "Fix the NPE in PaymentService",
1891
+ "transient": true
1892
+ }
1893
+ ],
1894
+ "options": {
1895
+ "maxIterations": 101
1896
+ }
1897
+ }
1898
+ }
1899
+ },
1900
+ {
1901
+ "name": "options-max-iterations-fraction",
1902
+ "why": "maxIterations is an integer",
1903
+ "expect": {
1904
+ "valid": false,
1905
+ "code": "schema_violation",
1906
+ "keyword": "type"
1907
+ },
1908
+ "message": {
1909
+ "schemaVersion": 2,
1910
+ "type": "job.assign",
1911
+ "msgId": "00000000-0000-4000-8000-000000000001",
1912
+ "seq": 1,
1913
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
1914
+ "workspaceId": "ws-1",
1915
+ "ts": "2026-10-29T10:00:00Z",
1916
+ "paramsRaw": "{\"jobId\":\"c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f\",\"kind\":\"fix\",\"incidentRef\":{\"id\":\"inc-8c8deab3\",\"fingerprint\":\"5a1f09c2d7e8b3a4\"},\"repoRef\":{\"provider\":\"github\",\"org\":\"acme\",\"repo\":\"billing\",\"branch\":\"main\"},\"policy\":{\"operationMode\":\"assist\",\"automationLevel\":2,\"ceiling\":\"autonomous\"},\"budget\":{\"tokens\":200000,\"seconds\":900},\"llm\":{\"alias\":\"vh-coder\",\"keyRef\":\"key-la-1\"},\"inputs\":[{\"ref\":\"incident:inc-8c8deab3\"},{\"inline\":\"Fix the NPE in PaymentService\",\"transient\":true}],\"options\":{\"maxIterations\":1.5}}",
1917
+ "sig": {
1918
+ "keyId": "vh-cp-2026-10",
1919
+ "timestamp": "1793268000",
1920
+ "nonce": "Zm9vYmFyYmF6cXV4MTIzNDU2",
1921
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
1922
+ "workspaceId": "ws-1",
1923
+ "signature": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
1924
+ },
1925
+ "requestId": "d4e5f6a7-b8c9-4d0e-9f1a-3b4c5d6e7f80",
1926
+ "payload": {
1927
+ "jobId": "c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f",
1928
+ "kind": "fix",
1929
+ "incidentRef": {
1930
+ "id": "inc-8c8deab3",
1931
+ "fingerprint": "5a1f09c2d7e8b3a4"
1932
+ },
1933
+ "repoRef": {
1934
+ "provider": "github",
1935
+ "org": "acme",
1936
+ "repo": "billing",
1937
+ "branch": "main"
1938
+ },
1939
+ "policy": {
1940
+ "operationMode": "assist",
1941
+ "automationLevel": 2,
1942
+ "ceiling": "autonomous"
1943
+ },
1944
+ "budget": {
1945
+ "tokens": 200000,
1946
+ "seconds": 900
1947
+ },
1948
+ "llm": {
1949
+ "alias": "vh-coder",
1950
+ "keyRef": "key-la-1"
1951
+ },
1952
+ "inputs": [
1953
+ {
1954
+ "ref": "incident:inc-8c8deab3"
1955
+ },
1956
+ {
1957
+ "inline": "Fix the NPE in PaymentService",
1958
+ "transient": true
1959
+ }
1960
+ ],
1961
+ "options": {
1962
+ "maxIterations": 1.5
1963
+ }
1964
+ }
1965
+ }
1966
+ },
1967
+ {
1968
+ "name": "options-dry-run-string",
1969
+ "why": "dryRun is a boolean, not a string",
1970
+ "expect": {
1971
+ "valid": false,
1972
+ "code": "schema_violation",
1973
+ "keyword": "type"
1974
+ },
1975
+ "message": {
1976
+ "schemaVersion": 2,
1977
+ "type": "job.assign",
1978
+ "msgId": "00000000-0000-4000-8000-000000000001",
1979
+ "seq": 1,
1980
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
1981
+ "workspaceId": "ws-1",
1982
+ "ts": "2026-10-29T10:00:00Z",
1983
+ "paramsRaw": "{\"jobId\":\"c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f\",\"kind\":\"fix\",\"incidentRef\":{\"id\":\"inc-8c8deab3\",\"fingerprint\":\"5a1f09c2d7e8b3a4\"},\"repoRef\":{\"provider\":\"github\",\"org\":\"acme\",\"repo\":\"billing\",\"branch\":\"main\"},\"policy\":{\"operationMode\":\"assist\",\"automationLevel\":2,\"ceiling\":\"autonomous\"},\"budget\":{\"tokens\":200000,\"seconds\":900},\"llm\":{\"alias\":\"vh-coder\",\"keyRef\":\"key-la-1\"},\"inputs\":[{\"ref\":\"incident:inc-8c8deab3\"},{\"inline\":\"Fix the NPE in PaymentService\",\"transient\":true}],\"options\":{\"dryRun\":\"true\"}}",
1984
+ "sig": {
1985
+ "keyId": "vh-cp-2026-10",
1986
+ "timestamp": "1793268000",
1987
+ "nonce": "Zm9vYmFyYmF6cXV4MTIzNDU2",
1988
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
1989
+ "workspaceId": "ws-1",
1990
+ "signature": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
1991
+ },
1992
+ "requestId": "d4e5f6a7-b8c9-4d0e-9f1a-3b4c5d6e7f80",
1993
+ "payload": {
1994
+ "jobId": "c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f",
1995
+ "kind": "fix",
1996
+ "incidentRef": {
1997
+ "id": "inc-8c8deab3",
1998
+ "fingerprint": "5a1f09c2d7e8b3a4"
1999
+ },
2000
+ "repoRef": {
2001
+ "provider": "github",
2002
+ "org": "acme",
2003
+ "repo": "billing",
2004
+ "branch": "main"
2005
+ },
2006
+ "policy": {
2007
+ "operationMode": "assist",
2008
+ "automationLevel": 2,
2009
+ "ceiling": "autonomous"
2010
+ },
2011
+ "budget": {
2012
+ "tokens": 200000,
2013
+ "seconds": 900
2014
+ },
2015
+ "llm": {
2016
+ "alias": "vh-coder",
2017
+ "keyRef": "key-la-1"
2018
+ },
2019
+ "inputs": [
2020
+ {
2021
+ "ref": "incident:inc-8c8deab3"
2022
+ },
2023
+ {
2024
+ "inline": "Fix the NPE in PaymentService",
2025
+ "transient": true
2026
+ }
2027
+ ],
2028
+ "options": {
2029
+ "dryRun": "true"
2030
+ }
2031
+ }
2032
+ }
2033
+ },
2034
+ {
2035
+ "name": "options-create-branch-number",
2036
+ "why": "createBranch is a boolean",
2037
+ "expect": {
2038
+ "valid": false,
2039
+ "code": "schema_violation",
2040
+ "keyword": "type"
2041
+ },
2042
+ "message": {
2043
+ "schemaVersion": 2,
2044
+ "type": "job.assign",
2045
+ "msgId": "00000000-0000-4000-8000-000000000001",
2046
+ "seq": 1,
2047
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
2048
+ "workspaceId": "ws-1",
2049
+ "ts": "2026-10-29T10:00:00Z",
2050
+ "paramsRaw": "{\"jobId\":\"c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f\",\"kind\":\"fix\",\"incidentRef\":{\"id\":\"inc-8c8deab3\",\"fingerprint\":\"5a1f09c2d7e8b3a4\"},\"repoRef\":{\"provider\":\"github\",\"org\":\"acme\",\"repo\":\"billing\",\"branch\":\"main\"},\"policy\":{\"operationMode\":\"assist\",\"automationLevel\":2,\"ceiling\":\"autonomous\"},\"budget\":{\"tokens\":200000,\"seconds\":900},\"llm\":{\"alias\":\"vh-coder\",\"keyRef\":\"key-la-1\"},\"inputs\":[{\"ref\":\"incident:inc-8c8deab3\"},{\"inline\":\"Fix the NPE in PaymentService\",\"transient\":true}],\"options\":{\"createBranch\":1}}",
2051
+ "sig": {
2052
+ "keyId": "vh-cp-2026-10",
2053
+ "timestamp": "1793268000",
2054
+ "nonce": "Zm9vYmFyYmF6cXV4MTIzNDU2",
2055
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
2056
+ "workspaceId": "ws-1",
2057
+ "signature": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
2058
+ },
2059
+ "requestId": "d4e5f6a7-b8c9-4d0e-9f1a-3b4c5d6e7f80",
2060
+ "payload": {
2061
+ "jobId": "c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f",
2062
+ "kind": "fix",
2063
+ "incidentRef": {
2064
+ "id": "inc-8c8deab3",
2065
+ "fingerprint": "5a1f09c2d7e8b3a4"
2066
+ },
2067
+ "repoRef": {
2068
+ "provider": "github",
2069
+ "org": "acme",
2070
+ "repo": "billing",
2071
+ "branch": "main"
2072
+ },
2073
+ "policy": {
2074
+ "operationMode": "assist",
2075
+ "automationLevel": 2,
2076
+ "ceiling": "autonomous"
2077
+ },
2078
+ "budget": {
2079
+ "tokens": 200000,
2080
+ "seconds": 900
2081
+ },
2082
+ "llm": {
2083
+ "alias": "vh-coder",
2084
+ "keyRef": "key-la-1"
2085
+ },
2086
+ "inputs": [
2087
+ {
2088
+ "ref": "incident:inc-8c8deab3"
2089
+ },
2090
+ {
2091
+ "inline": "Fix the NPE in PaymentService",
2092
+ "transient": true
2093
+ }
2094
+ ],
2095
+ "options": {
2096
+ "createBranch": 1
2097
+ }
2098
+ }
2099
+ }
2100
+ },
2101
+ {
2102
+ "name": "options-not-an-object",
2103
+ "why": "options is an object",
2104
+ "expect": {
2105
+ "valid": false,
2106
+ "code": "schema_violation",
2107
+ "keyword": "type"
2108
+ },
2109
+ "message": {
2110
+ "schemaVersion": 2,
2111
+ "type": "job.assign",
2112
+ "msgId": "00000000-0000-4000-8000-000000000001",
2113
+ "seq": 1,
2114
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
2115
+ "workspaceId": "ws-1",
2116
+ "ts": "2026-10-29T10:00:00Z",
2117
+ "paramsRaw": "{\"jobId\":\"c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f\",\"kind\":\"fix\",\"incidentRef\":{\"id\":\"inc-8c8deab3\",\"fingerprint\":\"5a1f09c2d7e8b3a4\"},\"repoRef\":{\"provider\":\"github\",\"org\":\"acme\",\"repo\":\"billing\",\"branch\":\"main\"},\"policy\":{\"operationMode\":\"assist\",\"automationLevel\":2,\"ceiling\":\"autonomous\"},\"budget\":{\"tokens\":200000,\"seconds\":900},\"llm\":{\"alias\":\"vh-coder\",\"keyRef\":\"key-la-1\"},\"inputs\":[{\"ref\":\"incident:inc-8c8deab3\"},{\"inline\":\"Fix the NPE in PaymentService\",\"transient\":true}],\"options\":[\"dryRun\"]}",
2118
+ "sig": {
2119
+ "keyId": "vh-cp-2026-10",
2120
+ "timestamp": "1793268000",
2121
+ "nonce": "Zm9vYmFyYmF6cXV4MTIzNDU2",
2122
+ "tenantId": "3f2b8c1e-5a4d-4e7b-9c21-0a1b2c3d4e5f",
2123
+ "workspaceId": "ws-1",
2124
+ "signature": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
2125
+ },
2126
+ "requestId": "d4e5f6a7-b8c9-4d0e-9f1a-3b4c5d6e7f80",
2127
+ "payload": {
2128
+ "jobId": "c3d4e5f6-a7b8-4c9d-8e0f-2a3b4c5d6e7f",
2129
+ "kind": "fix",
2130
+ "incidentRef": {
2131
+ "id": "inc-8c8deab3",
2132
+ "fingerprint": "5a1f09c2d7e8b3a4"
2133
+ },
2134
+ "repoRef": {
2135
+ "provider": "github",
2136
+ "org": "acme",
2137
+ "repo": "billing",
2138
+ "branch": "main"
2139
+ },
2140
+ "policy": {
2141
+ "operationMode": "assist",
2142
+ "automationLevel": 2,
2143
+ "ceiling": "autonomous"
2144
+ },
2145
+ "budget": {
2146
+ "tokens": 200000,
2147
+ "seconds": 900
2148
+ },
2149
+ "llm": {
2150
+ "alias": "vh-coder",
2151
+ "keyRef": "key-la-1"
2152
+ },
2153
+ "inputs": [
2154
+ {
2155
+ "ref": "incident:inc-8c8deab3"
2156
+ },
2157
+ {
2158
+ "inline": "Fix the NPE in PaymentService",
2159
+ "transient": true
2160
+ }
2161
+ ],
2162
+ "options": [
2163
+ "dryRun"
2164
+ ]
2165
+ }
2166
+ }
629
2167
  }
630
2168
  ]
631
2169
  }