Compare commits
920 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| eec8c28fb3 | |||
|
|
a599623ea9 | ||
|
|
0f0a442d74 | ||
|
|
2123fbca77 | ||
|
|
a8cd4bf34c | ||
|
|
02911109ef | ||
|
|
2bad9fec53 | ||
|
|
54ce6f677c | ||
|
|
26a75f5fe3 | ||
|
|
ad7704c1df | ||
|
|
877fee487b | ||
|
|
330ccae82f | ||
|
|
0a5bb296a9 | ||
|
|
437a35bd47 | ||
|
|
612d3655fa | ||
|
|
38cdc5d9d0 | ||
|
|
816124634b | ||
|
|
2b2f3c876b | ||
|
|
20f2624653 | ||
|
|
6509bb5d1b | ||
|
|
e8724c5edc | ||
|
|
2c284bdd49 | ||
|
|
db1e77ceb3 | ||
|
|
df5e69236a | ||
|
|
a3259b042d | ||
|
|
f5e7c2bdfc | ||
|
|
0859ab31ab | ||
|
|
c02219cc92 | ||
|
|
d73b3aee5c | ||
|
|
80eb91e9a1 | ||
|
|
aa6c751007 | ||
|
|
1af786e7c8 | ||
|
|
c46c1976a2 | ||
|
|
3b3ea83ecd | ||
|
|
5980a8081c | ||
|
|
55f64f8050 | ||
|
|
983ae34147 | ||
|
|
4232c0a8ee | ||
|
|
402a8b3105 | ||
|
|
f46bb838ca | ||
|
|
3d0179a119 | ||
|
|
557b33dc73 | ||
|
|
2a1652d0b1 | ||
|
|
f0fdf9b752 | ||
|
|
973efd6412 | ||
|
|
028342c63a | ||
|
|
eb9b907ba3 | ||
|
|
aee0eeef82 | ||
|
|
c977cf6190 | ||
|
|
28bc73bb1a | ||
|
|
19719693b0 | ||
|
|
a243066691 | ||
|
|
741a59c333 | ||
|
|
5642a37c44 | ||
|
|
1726a19cb6 | ||
|
|
40090cda23 | ||
|
|
9945fac150 | ||
|
|
9c416599f8 | ||
|
|
abf88ab4cb | ||
|
|
34903cdd49 | ||
|
|
98c720987d | ||
|
|
1bd7eab223 | ||
|
|
080e17d85a | ||
|
|
a059edf60d | ||
|
|
0a3b64ba5c | ||
|
|
8ee0d0403a | ||
|
|
9dab9186e5 | ||
|
|
c63e4a3d6b | ||
|
|
0e8ff1bc2a | ||
|
|
683967bbfc | ||
|
|
15947616a9 | ||
|
|
813985a903 | ||
|
|
bd48c17aab | ||
|
|
8239a94938 | ||
|
|
fb8d80f6a3 | ||
|
|
8090c12556 | ||
|
|
0e0d42c9fd | ||
|
|
14b48f23b6 | ||
|
|
0c0adf0e5a | ||
|
|
135edd208c | ||
|
|
81a083a634 | ||
|
|
149a2071c3 | ||
|
|
027a1b1f18 | ||
|
|
7adf39a6a0 | ||
|
|
5408ebc95b | ||
|
|
92a90bb8a1 | ||
|
|
6391532b2d | ||
|
|
a161163508 | ||
|
|
5b6bf945d9 | ||
|
|
877a32f180 | ||
|
|
1fe8a79ea3 | ||
|
|
7c8e8c001c | ||
|
|
29c56ab283 | ||
|
|
0391f2b3e3 | ||
|
|
942f585dd1 | ||
|
|
3005db6943 | ||
|
|
f3c33dc81b | ||
|
|
44e2bdec95 | ||
|
|
d71fc0b95f | ||
|
|
f295788ac1 | ||
|
|
c19aa55fd7 | ||
|
|
ea3d93253f | ||
|
|
114dca89c6 | ||
|
|
c7932fa1d9 | ||
|
|
f0ffc27ca7 | ||
|
|
4dfcf70c08 | ||
|
|
71b34061d9 | ||
|
|
368130b07a | ||
|
|
85216ba6e0 | ||
|
|
06aacdee98 | ||
|
|
ef44ae40ec | ||
|
|
26ea2e9da1 | ||
|
|
b90da3740c | ||
|
|
83b361ae57 | ||
|
|
0ae1dc998a | ||
|
|
44f475778f | ||
|
|
7bd3a73bcf | ||
|
|
48f6b7a12b | ||
|
|
122e1fc20b | ||
|
|
850550c5da | ||
|
|
3b4fa064d6 | ||
|
|
78a9231c8a | ||
|
|
e88a4c7982 | ||
|
|
9c056faec7 | ||
|
|
e865fa2b8b | ||
|
|
e1bc648dfc | ||
|
|
9d8d97e556 | ||
|
|
9dc55675ca | ||
|
|
30c9d735aa | ||
|
|
e49ea7061a | ||
|
|
5c50d8b314 | ||
|
|
00ba5b3650 | ||
|
|
af95c1bdb3 | ||
|
|
01e3d910f1 | ||
|
|
1230694f55 | ||
|
|
77f15a225f | ||
|
|
d75abb80d1 | ||
|
|
42bc897610 | ||
|
|
b15f7c3fbc | ||
|
|
bb99dacecd | ||
|
|
4b925418f2 | ||
|
|
9e82efd23a | ||
|
|
8f7c10440c | ||
|
|
a439e1d467 | ||
|
|
718a957ad9 | ||
|
|
059ff9c6b4 | ||
|
|
062b86642d | ||
|
|
a5724aecf9 | ||
|
|
53dccbe82b | ||
|
|
8d6645415a | ||
|
|
4cfcc9aa02 | ||
|
|
5d384e4afa | ||
|
|
5bf25fdebc | ||
|
|
253d1ddd29 | ||
|
|
5eab41b559 | ||
|
|
a076bb3265 | ||
|
|
9c85d9e737 | ||
|
|
1de4ce6729 | ||
|
|
8e0f88e8bd | ||
|
|
36460a884e | ||
|
|
585ae9494d | ||
|
|
ed9d6fe5d8 | ||
|
|
f0147b1315 | ||
|
|
615e5a95f5 | ||
|
|
5b85d18217 | ||
|
|
f05c24dd66 | ||
|
|
fd11279aa3 | ||
|
|
59282952b0 | ||
|
|
8742c76d52 | ||
|
|
9c0193e812 | ||
|
|
64465e1cd9 | ||
|
|
580e20d573 | ||
|
|
bb496daae3 | ||
|
|
4cd568b0e5 | ||
|
|
efd70cd651 | ||
|
|
3d4a63b515 | ||
|
|
42cec9e8c3 | ||
|
|
73565e0e0d | ||
|
|
6dddc5db43 | ||
|
|
ef90d1c0d7 | ||
|
|
0354f5cecf | ||
|
|
2d923246a9 | ||
|
|
241c0d1b35 | ||
|
|
a9767baa69 | ||
|
|
79f0080c80 | ||
|
|
bfa6fc0920 | ||
|
|
c70c87386e | ||
|
|
a5c6eb95c6 | ||
|
|
f5ab2cddd8 | ||
|
|
47d306b44b | ||
|
|
5e73ba7bd0 | ||
|
|
32a30434b1 | ||
|
|
138426311f | ||
|
|
a8ef9dd6ce | ||
|
|
b48794df14 | ||
|
|
85a80568b2 | ||
|
|
fc0e31df56 | ||
|
|
cb4ae8367c | ||
|
|
de020d9901 | ||
|
|
0634357ee9 | ||
|
|
9753a13001 | ||
|
|
d0deef1537 | ||
|
|
4603b57224 | ||
|
|
bb64ca64e2 | ||
|
|
ce4a9c5626 | ||
|
|
b45861090d | ||
|
|
4a3f655a49 | ||
|
|
29e069ac94 | ||
|
|
625fcf8e5c | ||
|
|
2b8ed06c3c | ||
|
|
34d73ad6ed | ||
|
|
e06a8cb676 | ||
|
|
5ba8cd60c8 | ||
|
|
29985714a3 | ||
|
|
64c9d7adbe | ||
|
|
8d56760c64 | ||
|
|
087ae9cc0d | ||
|
|
35b003ae5e | ||
|
|
cab3c68508 | ||
|
|
b6558d4165 | ||
|
|
64cbe5a74d | ||
|
|
1d3e60b4f8 | ||
|
|
07e6ad2d09 | ||
|
|
1911003db5 | ||
|
|
543388b5a4 | ||
|
|
e2774cccf7 | ||
|
|
bf4dd17792 | ||
|
|
4abc29406f | ||
|
|
b75f92a88b | ||
|
|
237a3a4d80 | ||
|
|
3e926298f2 | ||
|
|
e84df69cb6 | ||
|
|
0a43a76a4a | ||
|
|
c852838644 | ||
|
|
9740ddb813 | ||
|
|
5abd01f61c | ||
|
|
e40a241d62 | ||
|
|
a72e587d29 | ||
|
|
976ae0272b | ||
|
|
ccd3081d09 | ||
|
|
844c800cd9 | ||
|
|
ecf314b2e5 | ||
|
|
a78529e218 | ||
|
|
e32f3dfb57 | ||
|
|
e6c4e46dd8 | ||
|
|
f40fca844f | ||
|
|
c7daa4ac46 | ||
|
|
0a4ac41242 | ||
|
|
3336aae2a0 | ||
|
|
1fe69c2a15 | ||
|
|
846eedeab0 | ||
|
|
37c7c4aeb8 | ||
|
|
548a2b6851 | ||
|
|
c64890b5a0 | ||
|
|
664b440d70 | ||
|
|
c929dfbe4a | ||
|
|
20e724f19c | ||
|
|
a6deff77a7 | ||
|
|
8702d7b76d | ||
|
|
c9f4e42735 | ||
|
|
86023788aa | ||
|
|
5a2b6fec9d | ||
|
|
d90dc5af98 | ||
|
|
1d62a3da5f | ||
|
|
f237fa595a | ||
|
|
07ce79b439 | ||
|
|
77511b0994 | ||
|
|
246b83c72d | ||
|
|
a7e4e12f32 | ||
|
|
91c1fa9d0f | ||
|
|
5a2698123e | ||
|
|
752e4dbd66 | ||
|
|
f2769eca1a | ||
|
|
e779041039 | ||
|
|
6c6c3f3373 | ||
|
|
59adf32861 | ||
|
|
55204289ec | ||
|
|
95bf0b496d | ||
|
|
583633c74b | ||
|
|
c822ba7582 | ||
|
|
a5daaa5e8c | ||
|
|
6967c73eaf | ||
|
|
602b0b0e2e | ||
|
|
49b3e4e537 | ||
|
|
ca477c48d4 | ||
|
|
7d986f2821 | ||
|
|
849c3513bb | ||
|
|
a707d8e67e | ||
|
|
3cacecde5a | ||
|
|
4bdc771cd4 | ||
|
|
f13d95df0f | ||
|
|
73aecc60e8 | ||
|
|
6fc4409513 | ||
|
|
9ed698b236 | ||
|
|
69736503ac | ||
|
|
5b8941554b | ||
|
|
0bb7826ad5 | ||
|
|
bae55fb876 | ||
|
|
97255f84e6 | ||
|
|
174f1fe511 | ||
|
|
53fc2f1e78 | ||
|
|
ef5e2e2ea2 | ||
|
|
b2c40345f8 | ||
|
|
a38de8518f | ||
|
|
a98e37b8b4 | ||
|
|
441864be95 | ||
|
|
2c9c791ae5 | ||
|
|
ea3e8e8371 | ||
|
|
c5dc4a9d71 | ||
|
|
3b3ae29414 | ||
|
|
551532d41b | ||
|
|
20537d7bd9 | ||
|
|
66b37b5a98 | ||
|
|
9d4b6e5b43 | ||
|
|
f335b3f03f | ||
|
|
52f759cc00 | ||
|
|
cc3cb1da4b | ||
|
|
2c608bf684 | ||
|
|
a855ed0cf6 | ||
|
|
ad7e97e7df | ||
|
|
a2fea2b368 | ||
|
|
c428a5be57 | ||
|
|
22769977e3 | ||
|
|
50fb6659da | ||
|
|
e4f2606ea2 | ||
|
|
af5cdf48cf | ||
|
|
1940f7f55d | ||
|
|
c785c5165d | ||
|
|
eaf981f635 | ||
|
|
4284bcf0b6 | ||
|
|
586f7cfc98 | ||
|
|
15e9efeeae | ||
|
|
cd8bb2f501 | ||
|
|
fa42e79af3 | ||
|
|
859ddaef1f | ||
|
|
3b247cdd73 | ||
|
|
00aab022f5 | ||
|
|
a40764d7da | ||
|
|
87b3db7019 | ||
|
|
ded533d690 | ||
|
|
fc4ceafa20 | ||
|
|
5b02eebfe5 | ||
|
|
338c9a3eef | ||
|
|
68d21fc20b | ||
|
|
ea9ebdfdf2 | ||
|
|
1d09c793f6 | ||
|
|
856fd4097b | ||
|
|
bb14ae73cc | ||
|
|
44450ff88a | ||
|
|
3a80e032f4 | ||
|
|
6e2d89372f | ||
|
|
5bf7b54496 | ||
|
|
0bdcb2a091 | ||
|
|
b988179685 | ||
|
|
cbfe80809e | ||
|
|
9f826f764c | ||
|
|
262a805317 | ||
|
|
ec25165e54 | ||
|
|
7b34e2ecea | ||
|
|
ec9b8ac925 | ||
|
|
431d88c47c | ||
|
|
e08e1861d6 | ||
|
|
64d2d4d423 | ||
|
|
9f233a0128 | ||
|
|
6939c792bd | ||
|
|
853940b74a | ||
|
|
5aa8940af2 | ||
|
|
cd3f2a90b4 | ||
|
|
bf89c2603d | ||
|
|
19b388d865 | ||
|
|
25e40f164d | ||
|
|
5505f66c41 | ||
|
|
9a07619b89 | ||
|
|
faf2041a82 | ||
|
|
460834f8f3 | ||
|
|
75ae77a6bf | ||
|
|
73f2134caf | ||
|
|
c5efc30f43 | ||
|
|
3099d74b28 | ||
|
|
fcc9309f2e | ||
|
|
e581a9e7e7 | ||
|
|
ac72e6c3ac | ||
|
|
db824152ef | ||
|
|
1de29fe6fc | ||
|
|
ac2026159e | ||
|
|
cfb28055cf | ||
|
|
a2d8970b22 | ||
|
|
abadf9878a | ||
|
|
87590ac4e8 | ||
|
|
999a81dce7 | ||
|
|
031457406a | ||
|
|
3d9d183b77 | ||
|
|
379c664b5c | ||
|
|
4d8f09e279 | ||
|
|
8a0e91ac3b | ||
|
|
3bc798bc9d | ||
|
|
8b4e0afd43 | ||
|
|
c7c4fc8915 | ||
|
|
41c0252cf1 | ||
|
|
4c375ad86f | ||
|
|
459a8fef42 | ||
|
|
00a18704e8 | ||
|
|
dc9bbacc27 | ||
|
|
4da4e1a0d4 | ||
|
|
3318b4af80 | ||
|
|
c1aaa48ecb | ||
|
|
f82a892405 | ||
|
|
287e85d232 | ||
|
|
fa6fbc8ce9 | ||
|
|
61418fa9dd | ||
|
|
0df1126aa9 | ||
|
|
1c72469ad6 | ||
|
|
338f864f60 | ||
|
|
8b0011f6c6 | ||
|
|
e6a044c532 | ||
|
|
bb1e59ea93 | ||
|
|
b761d7d4f7 | ||
|
|
418fb7d17c | ||
|
|
5084483984 | ||
|
|
3c96810aa1 | ||
|
|
dcd1ec7e95 | ||
|
|
4f222b6308 | ||
|
|
071ae38d35 | ||
|
|
3385800f41 | ||
|
|
4fe538b37e | ||
|
|
2bdf4f8286 | ||
|
|
a96366957e | ||
|
|
c44642241c | ||
|
|
b5bf505ab9 | ||
|
|
51f59e5972 | ||
|
|
65d02e754e | ||
|
|
816c0595e1 | ||
|
|
9496001811 | ||
|
|
ec1b79c2b7 | ||
|
|
bab79f2349 | ||
|
|
edd7405313 | ||
|
|
79800871fa | ||
|
|
67dd87d3a9 | ||
|
|
dfc2beb8f3 | ||
|
|
5e5eae7422 | ||
|
|
78f216eaef | ||
|
|
34d5cca972 | ||
|
|
5d771381a1 | ||
|
|
95a65069c0 | ||
|
|
1e4b2d1d03 | ||
|
|
81f1dce887 | ||
|
|
3570c05805 | ||
|
|
b66cc34e1c | ||
|
|
5bafd92edf | ||
|
|
6e4294dce1 | ||
|
|
82b1c85b7c | ||
|
|
41ecb7122f | ||
|
|
2fa7608b9b | ||
|
|
285ee2cdda | ||
|
|
72598ed2ce | ||
|
|
8670cdfd2b | ||
|
|
f8e8440388 | ||
|
|
ab4dee5fcd | ||
|
|
04e87e87d5 | ||
|
|
cc96435db1 | ||
|
|
53af0a6866 | ||
|
|
3577ce6c56 | ||
|
|
0ce35f2d64 | ||
|
|
0e556433f7 | ||
|
|
4b170b69e0 | ||
|
|
fd58f9d99a | ||
|
|
f33ab83b7c | ||
|
|
6777f6e8ff | ||
|
|
1096b00b94 | ||
|
|
6180d53a93 | ||
|
|
fca1139c81 | ||
|
|
847b10322a | ||
|
|
59251c8f27 | ||
|
|
58b087bc63 | ||
|
|
8ab926dc8b | ||
|
|
85f258d9f6 | ||
|
|
042c5ec6e5 | ||
|
|
05d19c0471 | ||
|
|
48af524313 | ||
|
|
bad97102e1 | ||
|
|
98a4efcd82 | ||
|
|
f631dfc628 | ||
|
|
eb5b74cbe3 | ||
|
|
1785ccc39f | ||
|
|
4b896c2e3c | ||
|
|
88a9cdb0ff | ||
|
|
354ff0068a | ||
|
|
0c419d8f85 | ||
|
|
26be592f4d | ||
|
|
fb9b6cae76 | ||
|
|
5bb9b2a6fb | ||
|
|
593694a4b4 | ||
|
|
b207993299 | ||
|
|
a807288052 | ||
|
|
49b956f916 | ||
|
|
53227de55c | ||
|
|
58921556a1 | ||
|
|
442164cc5c | ||
|
|
8414004d8f | ||
|
|
7932188dae | ||
|
|
d4081d954f | ||
|
|
2e85a341c8 | ||
|
|
2969eb58e4 | ||
|
|
9d6ecd8f73 | ||
|
|
0c2a9d0ee8 | ||
|
|
c71e6fef30 | ||
|
|
3186676f94 | ||
|
|
b108f11bb4 | ||
|
|
d56e8a0f7f | ||
|
|
b76c1d7efc | ||
|
|
cbb2f42a2b | ||
|
|
fd056c05a7 | ||
|
|
2f76b4eadc | ||
|
|
fde59a94ae | ||
|
|
7409862140 | ||
|
|
065ac87815 | ||
|
|
d6d810f1a2 | ||
|
|
05c71988c0 | ||
|
|
3e32610ea1 | ||
|
|
be502b7533 | ||
|
|
4e81a982aa | ||
|
|
c977c6f9a4 | ||
|
|
7416229ba3 | ||
|
|
9000c1f4ba | ||
|
|
7423e64bc5 | ||
|
|
1d5f46980d | ||
|
|
e09efa42a8 | ||
|
|
e99be20bae | ||
|
|
6ce858e52e | ||
|
|
f41bd485e3 | ||
|
|
2fc5b10d3d | ||
|
|
f3d69b0116 | ||
|
|
13c5f8356c | ||
|
|
95c3adfa61 | ||
|
|
ef71f66029 | ||
|
|
317bff326b | ||
|
|
542d4ff3ee | ||
|
|
82a55da026 | ||
|
|
0535f50d89 | ||
|
|
fc5cb0eb88 | ||
|
|
524d363e27 | ||
|
|
e2ebdb37f0 | ||
|
|
539dd1bff4 | ||
|
|
f8ec567a35 | ||
|
|
c758c9d3ab | ||
|
|
bfe535d36a | ||
|
|
aaf52475ee | ||
|
|
424dc43652 | ||
|
|
cd35f6d8c7 | ||
|
|
85b0bb1f5e | ||
|
|
b0001e4d50 | ||
|
|
a77b6c5d3e | ||
|
|
3414c7c941 | ||
|
|
332872c7f5 | ||
|
|
c499c57296 | ||
|
|
912bb7c577 | ||
|
|
36d561bbb8 | ||
|
|
fccb1f06ac | ||
|
|
cf46ff0a3b | ||
|
|
6a37a906ce | ||
|
|
0f823956c6 | ||
|
|
703108051a | ||
|
|
795486e5b2 | ||
|
|
799ca8c5f9 | ||
|
|
9cc7393e7b | ||
|
|
791e812c3c | ||
|
|
187c3aea68 | ||
|
|
d7de28a040 | ||
|
|
d1baf6f1b0 | ||
|
|
3201830405 | ||
|
|
728a55f1d8 | ||
|
|
d3ef8d83b3 | ||
|
|
c4e8d6c8ae | ||
|
|
698ad86d17 | ||
|
|
2240c4c629 | ||
|
|
65b82a8e08 | ||
|
|
8032fb5b41 | ||
|
|
56fde3cbe1 | ||
|
|
bccbb708f1 | ||
|
|
80b1ed7fab | ||
|
|
e68035fe30 | ||
|
|
80ecb7de7f | ||
|
|
75cd0a4d9c | ||
|
|
2824a731f5 | ||
|
|
2dbb00036d | ||
|
|
0ad0c2f2c4 | ||
|
|
104f0eb6ee | ||
|
|
c144bb2b97 | ||
|
|
f50b05519b | ||
|
|
ca3c1085ac | ||
|
|
4cee4f01f3 | ||
|
|
82e2134333 | ||
|
|
6add11f1d2 | ||
|
|
744b6aeff5 | ||
|
|
92310a8b3e | ||
|
|
d74ea47e2c | ||
|
|
c665f62700 | ||
|
|
37471141e8 | ||
|
|
81497beb4b | ||
|
|
2d40f34ff0 | ||
|
|
801760add1 | ||
|
|
4ebf8d23fe | ||
|
|
77a7368c5d | ||
|
|
51a01c4f7b | ||
|
|
13d31dd922 | ||
|
|
c9bb303a7d | ||
|
|
6ebfd417e3 | ||
|
|
b527470e75 | ||
|
|
89b4d88eb1 | ||
|
|
a69f698440 | ||
|
|
ee224adcf1 | ||
|
|
5bbae48b6b | ||
|
|
abcfd62b21 | ||
|
|
10d952a22e | ||
|
|
635caf0f9a | ||
|
|
2266a8d051 | ||
|
|
b292a1b793 | ||
|
|
bf398a1cb2 | ||
|
|
e7c98e5526 | ||
|
|
99ff0a34e3 | ||
|
|
c42b7f5a5b | ||
|
|
ed89295012 | ||
|
|
834907cb5d | ||
|
|
e295a1f64c | ||
|
|
7cec4d7979 | ||
|
|
132bbbd657 | ||
|
|
833220f1cb | ||
|
|
e1e422bfc6 | ||
|
|
e4b6ce62cd | ||
|
|
396d01595e | ||
|
|
6a13e648ea | ||
|
|
5fa0cff274 | ||
|
|
bcb2748f89 | ||
|
|
e68a6039b9 | ||
|
|
0199f93994 | ||
|
|
f2cf5c3508 | ||
|
|
1d39756713 | ||
|
|
71455ef88f | ||
|
|
99b8ed875e | ||
|
|
8242666678 | ||
|
|
5aade0456e | ||
|
|
479f56f3e8 | ||
|
|
8c7a55eaa2 | ||
|
|
924b8227b5 | ||
|
|
c3fa29d13c | ||
|
|
e5dab58b42 | ||
|
|
22496a44a8 | ||
|
|
87e6762611 | ||
|
|
ddc79865bc | ||
|
|
6ee185c538 | ||
|
|
367943b543 | ||
|
|
08e7eb7525 | ||
|
|
35ca99866a | ||
|
|
2f83526966 | ||
|
|
5a58404e1b | ||
|
|
8ea907066b | ||
|
|
ffe5d951e0 | ||
|
|
e5af7d98d1 | ||
|
|
27c252600a | ||
|
|
c32cce2a88 | ||
|
|
c01c6c6225 | ||
|
|
a66659476d | ||
|
|
7a8b0343e4 | ||
|
|
cc3077d709 | ||
|
|
d1362a7fba | ||
|
|
4e9e1919a8 | ||
|
|
f19f53ed9a | ||
|
|
f062dc206e | ||
|
|
a97cb334a2 | ||
|
|
cf52a943b5 | ||
|
|
46d0ecc4fb | ||
|
|
348c5e5405 | ||
|
|
25dbe82360 | ||
|
|
fc404da455 | ||
|
|
ed27fb0da9 | ||
|
|
afbd50b43f | ||
|
|
ad2d30b525 | ||
|
|
a570a3327f | ||
|
|
0fd00575a2 | ||
|
|
a3d1ae3742 | ||
|
|
6f408f62ba | ||
|
|
e92e7edd70 | ||
|
|
4e4c4581ea | ||
|
|
3f12ca05a3 | ||
|
|
a681d6aa30 | ||
|
|
3632d0d88c | ||
|
|
a1a9ab2ece | ||
|
|
9c203914dd | ||
|
|
6cfe8ca9f2 | ||
|
|
938b170d98 | ||
|
|
9d6d2cbe53 | ||
|
|
136dd7ef62 | ||
|
|
f0c754cc52 | ||
|
|
28be62dee0 | ||
|
|
49bfbf3f76 | ||
|
|
2f90d936bf | ||
|
|
4a60400af9 | ||
|
|
18d0c235fa | ||
|
|
fe8225753b | ||
|
|
273fb3cf21 | ||
|
|
e3b6693402 | ||
|
|
ac915f14c7 | ||
|
|
5ee52dd4d6 | ||
|
|
b5fd5d5774 | ||
|
|
ae4f5936b3 | ||
|
|
5017fdf4c1 | ||
|
|
f0eda7c93c | ||
|
|
f60a99d0bd | ||
|
|
1440b2722e | ||
|
|
f58c96d29f | ||
|
|
3b92700b5b | ||
|
|
5c0a543669 | ||
|
|
317b695efb | ||
|
|
077e3c1d2b | ||
|
|
b5c5ab0bc3 | ||
|
|
a6188bf2f1 | ||
|
|
2ecd6dd9d4 | ||
|
|
16752f4bb1 | ||
|
|
a75dd2dcdd | ||
|
|
63e79664cc | ||
|
|
005b7bdf5b | ||
|
|
0f143af5bc | ||
|
|
76fb800922 | ||
|
|
58f5295652 | ||
|
|
0917a1ae95 | ||
|
|
409dc0526f | ||
|
|
10259146df | ||
|
|
8cbd907d82 | ||
|
|
ff5ef35a0f | ||
|
|
fbb86b1cc3 | ||
|
|
0f995edbd1 | ||
|
|
aaddb88488 | ||
|
|
f79f0218c5 | ||
|
|
d94c9ba623 | ||
|
|
0241de69f4 | ||
|
|
f20e789a16 | ||
|
|
6f5c8873f9 | ||
|
|
7a12ab7928 | ||
|
|
871adca270 | ||
|
|
dbff270d22 | ||
|
|
8e1b9d91e2 | ||
|
|
67bcef32e4 | ||
|
|
739104e029 | ||
|
|
2204b7bd35 | ||
|
|
fdbba5b838 | ||
|
|
4ff65c83be | ||
|
|
3409e204eb | ||
|
|
61bb19e6f3 | ||
|
|
3cc979f5b8 | ||
|
|
ef8f237233 | ||
|
|
43a63007a7 | ||
|
|
404aa92ea0 | ||
|
|
94356e7d4e | ||
|
|
63c9976e5f | ||
|
|
09ef4f579e | ||
|
|
fbd94a031e | ||
|
|
6483a25555 | ||
|
|
61b73bc57b | ||
|
|
d77d618de0 | ||
|
|
2cd19d8964 | ||
|
|
61d4e12c56 | ||
|
|
5c5c1eabfc | ||
|
|
d9cc0ead71 | ||
|
|
b78798b877 | ||
|
|
e90ad34c28 | ||
|
|
1a559e3c64 | ||
|
|
a83967daa3 | ||
|
|
e374d6f7d2 | ||
|
|
7723d291ce | ||
|
|
386fcd8276 | ||
|
|
10f5e5dd1d | ||
|
|
89281c4255 | ||
|
|
de7861abea | ||
|
|
25443d3319 | ||
|
|
be279ba864 | ||
|
|
5fe1cf9265 | ||
|
|
cdf7948575 | ||
|
|
b04b94e429 | ||
|
|
0ff19f66b6 | ||
|
|
bf583927c1 | ||
|
|
6ed8d8054f | ||
|
|
5c4a558486 | ||
|
|
2024ad1373 | ||
|
|
5c0185d5eb | ||
|
|
c9e4916d43 | ||
|
|
75d945f706 | ||
|
|
99ab2202a2 | ||
|
|
feaae052ac | ||
|
|
476e65e7dd | ||
|
|
24a5773637 | ||
|
|
0eb0e43d60 | ||
|
|
6f98962981 | ||
|
|
2b3b5c3ff2 | ||
|
|
eb5518092f | ||
|
|
1b10198d50 | ||
|
|
449d316174 | ||
|
|
9356756065 | ||
|
|
5b3e005f2b | ||
|
|
7654acc710 | ||
|
|
afb2901618 | ||
|
|
117fd51082 | ||
|
|
b66ba3ad4d | ||
|
|
cbe238b27d | ||
|
|
f814706fe2 | ||
|
|
fc508d01d7 | ||
|
|
ba880083be | ||
|
|
b657235870 | ||
|
|
132b78b317 | ||
|
|
25cb0528e2 | ||
|
|
e9acaa61cc | ||
|
|
218ce5658e | ||
|
|
08a17d7716 | ||
|
|
f9c43d50c6 | ||
|
|
e348b5b2a3 | ||
|
|
678b442f5e | ||
|
|
2470861c4a | ||
|
|
9e201126a9 | ||
|
|
5b67808d13 | ||
|
|
68e3bee684 | ||
|
|
4081003051 | ||
|
|
bd2b1bd8b7 | ||
|
|
5e033e4bef | ||
|
|
06ba9bc438 | ||
|
|
3339208e53 | ||
|
|
4fad52aef5 | ||
|
|
9664e379ea | ||
|
|
1e126996cb | ||
|
|
f4115a2977 | ||
|
|
c6fd201f90 | ||
|
|
6ed988dc5b | ||
|
|
f34a9c4f37 | ||
|
|
940c42f341 | ||
|
|
759cff5e7f | ||
|
|
5a626715d6 | ||
|
|
82d18f11a5 | ||
|
|
fb5fdb8c4e | ||
|
|
8ff3f305db | ||
|
|
06ceb9ef6f | ||
|
|
5a3b143127 | ||
|
|
d28add1a73 | ||
|
|
70d2465429 | ||
|
|
3cc5126267 | ||
|
|
26fde2d649 | ||
|
|
da2db85bfc | ||
|
|
ccdc719501 | ||
|
|
ac720f95df | ||
|
|
1913e9d739 | ||
|
|
a7be6c304d | ||
|
|
d89b86675c | ||
|
|
fb69f3da12 | ||
|
|
e1c0173e3d | ||
|
|
46fe59cf0a | ||
|
|
4a398185c2 | ||
|
|
122030269e | ||
|
|
5b436a883d | ||
|
|
a1c88de3c4 | ||
|
|
a6c6ce550e | ||
|
|
1af04987e0 | ||
|
|
ad31bacc1c | ||
|
|
bab8414666 | ||
|
|
0deffd37e7 | ||
|
|
a98c9ed311 | ||
|
|
12a04b4744 | ||
|
|
d97c08bada | ||
|
|
ce335ff342 | ||
|
|
cb16ac05a2 | ||
|
|
0917edb863 | ||
|
|
4d0df36e5e | ||
|
|
7b1861f5a9 | ||
|
|
29f6664ab0 | ||
|
|
690480e181 | ||
|
|
c156183666 | ||
|
|
d8e6d8d9a9 | ||
|
|
7591d2cda8 | ||
|
|
aa2e7a1685 | ||
|
|
9a683c3231 | ||
|
|
e5cebc091d | ||
|
|
15cdaa8294 | ||
|
|
32f2d25d58 | ||
|
|
a9dcc007e5 | ||
|
|
bf53712b7c | ||
|
|
2b4f60615f | ||
|
|
bbaad17e97 | ||
|
|
bc4c7c1406 | ||
|
|
e13b49cfd2 | ||
|
|
4d4a5d3adb | ||
|
|
7983de9f2a | ||
|
|
0034968919 | ||
|
|
6cec0a67eb | ||
|
|
f56fa41301 | ||
|
|
b1a1a7a238 | ||
|
|
8381790b0b | ||
|
|
65228c5ee8 | ||
|
|
b531a840e8 | ||
|
|
5a2e11878b | ||
|
|
fcc60a0aa3 | ||
|
|
fdbf1a66cd | ||
|
|
e8a513541f | ||
|
|
bc9f2cf882 | ||
|
|
1329b00ed5 | ||
|
|
a9c5b5b2d8 | ||
|
|
4b9508a9be | ||
|
|
dc1426ae31 | ||
|
|
72bfca2dc3 | ||
|
|
09f9f7eb3d | ||
|
|
9e71dd218b | ||
|
|
ee5350d675 | ||
|
|
9424aca5e2 | ||
|
|
8fa0950138 | ||
|
|
1315d7a3ef | ||
|
|
63d7c5c0c4 | ||
|
|
79c8e660f5 | ||
|
|
7b640cc0af | ||
|
|
1f2b4c7d5e | ||
|
|
441c3dc947 | ||
|
|
735b9fdd0e | ||
|
|
45458df1bf | ||
|
|
427babd3c1 | ||
|
|
3fa1074ea9 | ||
|
|
51d997c6fb |
4
.docker/README.md
Normal file → Executable file
4
.docker/README.md
Normal file → Executable file
@@ -94,7 +94,7 @@ Configure the application via `docker-compose.yml`:
|
||||
| `CHARON_ENV` | `production` | Set to `development` for verbose logging (`CPM_ENV` supported for backward compatibility). |
|
||||
| `CHARON_HTTP_PORT` | `8080` | Port for the Web UI (`CPM_HTTP_PORT` supported for backward compatibility). |
|
||||
| `CHARON_DB_PATH` | `/app/data/charon.db` | Path to the SQLite database (`CPM_DB_PATH` supported for backward compatibility). |
|
||||
| `CHARON_CADDY_ADMIN_API` | `http://localhost:2019` | Internal URL for Caddy API (`CPM_CADDY_ADMIN_API` supported for backward compatibility). |
|
||||
| `CHARON_CADDY_ADMIN_API` | `http://localhost:2019` | Internal URL for Caddy API (`CPM_CADDY_ADMIN_API` supported for backward compatibility). Must resolve to an internal allowlisted host on port `2019`. |
|
||||
| `CHARON_CADDY_CONFIG_ROOT` | `/config` | Path to Caddy autosave configuration directory. |
|
||||
| `CHARON_CADDY_LOG_DIR` | `/var/log/caddy` | Directory for Caddy access logs. |
|
||||
| `CHARON_CROWDSEC_LOG_DIR` | `/var/log/crowdsec` | Directory for CrowdSec logs. |
|
||||
@@ -218,6 +218,8 @@ environment:
|
||||
- CPM_CADDY_ADMIN_API=http://your-caddy-host:2019
|
||||
```
|
||||
|
||||
If using a non-localhost internal hostname, add it to `CHARON_SSRF_INTERNAL_HOST_ALLOWLIST`.
|
||||
|
||||
**Warning**: Charon will replace Caddy's entire configuration. Backup first!
|
||||
|
||||
## Performance Tuning
|
||||
|
||||
0
.docker/compose/README.md
Normal file → Executable file
0
.docker/compose/README.md
Normal file → Executable file
2
.docker/compose/docker-compose.dev.yml
Normal file → Executable file
2
.docker/compose/docker-compose.dev.yml
Normal file → Executable file
@@ -32,6 +32,8 @@ services:
|
||||
#- CPM_SECURITY_RATELIMIT_ENABLED=false
|
||||
#- CPM_SECURITY_ACL_ENABLED=false
|
||||
- FEATURE_CERBERUS_ENABLED=true
|
||||
# Docker socket group access: copy docker-compose.override.example.yml
|
||||
# to docker-compose.override.yml and set your host's docker GID.
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro # For local container discovery
|
||||
- crowdsec_data:/app/data/crowdsec
|
||||
|
||||
0
.docker/compose/docker-compose.e2e.cerberus-disabled.override.yml
Normal file → Executable file
0
.docker/compose/docker-compose.e2e.cerberus-disabled.override.yml
Normal file → Executable file
4
.docker/compose/docker-compose.local.yml
Normal file → Executable file
4
.docker/compose/docker-compose.local.yml
Normal file → Executable file
@@ -27,6 +27,8 @@ services:
|
||||
- FEATURE_CERBERUS_ENABLED=true
|
||||
# Emergency "break-glass" token for security reset when ACL blocks access
|
||||
- CHARON_EMERGENCY_TOKEN=03e4682c1164f0c1cb8e17c99bd1a2d9156b59824dde41af3bb67c513e5c5e92
|
||||
# Docker socket group access: copy docker-compose.override.example.yml
|
||||
# to docker-compose.override.yml and set your host's docker GID.
|
||||
extra_hosts:
|
||||
- "host.docker.internal:host-gateway"
|
||||
cap_add:
|
||||
@@ -45,7 +47,7 @@ services:
|
||||
# - <PATH_TO_YOUR_CADDYFILE>:/import/Caddyfile:ro
|
||||
# - <PATH_TO_YOUR_SITES_DIR>:/import/sites:ro # If your Caddyfile imports other files
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "curl -fsS http://localhost:8080/api/v1/health || exit 1"]
|
||||
test: ["CMD-SHELL", "wget -qO /dev/null http://localhost:8080/api/v1/health || exit 1"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
|
||||
26
.docker/compose/docker-compose.override.example.yml
Executable file
26
.docker/compose/docker-compose.override.example.yml
Executable file
@@ -0,0 +1,26 @@
|
||||
# Docker Compose override — copy to docker-compose.override.yml to activate.
|
||||
#
|
||||
# Use case: grant the container access to the host Docker socket so that
|
||||
# Charon can discover running containers.
|
||||
#
|
||||
# 1. cp docker-compose.override.example.yml docker-compose.override.yml
|
||||
# 2. Uncomment the service that matches your compose file:
|
||||
# - "charon" for docker-compose.local.yml
|
||||
# - "app" for docker-compose.dev.yml
|
||||
# 3. Replace <GID> with the output of: stat -c '%g' /var/run/docker.sock
|
||||
# 4. docker compose up -d
|
||||
|
||||
services:
|
||||
# Uncomment for docker-compose.local.yml
|
||||
charon:
|
||||
group_add:
|
||||
- "<GID>" # e.g. "988" — run: stat -c '%g' /var/run/docker.sock
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
|
||||
# Uncomment for docker-compose.dev.yml
|
||||
app:
|
||||
group_add:
|
||||
- "<GID>" # e.g. "988" — run: stat -c '%g' /var/run/docker.sock
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
4
.docker/compose/docker-compose.playwright-ci.yml
Normal file → Executable file
4
.docker/compose/docker-compose.playwright-ci.yml
Normal file → Executable file
@@ -85,8 +85,9 @@ services:
|
||||
- playwright_data:/app/data
|
||||
- playwright_caddy_data:/data
|
||||
- playwright_caddy_config:/config
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro # For container discovery in tests
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-sf", "http://localhost:8080/api/v1/health"]
|
||||
test: ["CMD-SHELL", "wget -qO /dev/null http://localhost:8080/api/v1/health || exit 1"]
|
||||
interval: 5s
|
||||
timeout: 3s
|
||||
retries: 12
|
||||
@@ -111,6 +112,7 @@ services:
|
||||
volumes:
|
||||
- playwright_crowdsec_data:/var/lib/crowdsec/data
|
||||
- playwright_crowdsec_config:/etc/crowdsec
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro # For container discovery in tests
|
||||
healthcheck:
|
||||
test: ["CMD", "cscli", "version"]
|
||||
interval: 10s
|
||||
|
||||
7
.docker/compose/docker-compose.playwright-local.yml
Normal file → Executable file
7
.docker/compose/docker-compose.playwright-local.yml
Normal file → Executable file
@@ -48,9 +48,12 @@ services:
|
||||
tmpfs:
|
||||
# True tmpfs for E2E test data - fresh on every run, in-memory only
|
||||
# mode=1777 allows any user to write (container runs as non-root)
|
||||
- /app/data:size=100M,mode=1777
|
||||
# 256M gives headroom for the backup service's 100MB disk-space check
|
||||
- /app/data:size=256M,mode=1777
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro # For container discovery in tests
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "curl -fsS http://localhost:8080/api/v1/health || exit 1"]
|
||||
test: ["CMD-SHELL", "wget -qO /dev/null http://localhost:8080/api/v1/health || exit 1"]
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
|
||||
0
.docker/compose/docker-compose.remote.yml
Normal file → Executable file
0
.docker/compose/docker-compose.remote.yml
Normal file → Executable file
2
.docker/compose/docker-compose.yml
Normal file → Executable file
2
.docker/compose/docker-compose.yml
Normal file → Executable file
@@ -52,7 +52,7 @@ services:
|
||||
# - ./my-existing-Caddyfile:/import/Caddyfile:ro
|
||||
# - ./sites:/import/sites:ro # If your Caddyfile imports other files
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "curl -fsS http://localhost:8080/api/v1/health || exit 1"]
|
||||
test: ["CMD-SHELL", "wget -qO /dev/null http://localhost:8080/api/v1/health || exit 1"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
|
||||
@@ -27,30 +27,24 @@ get_group_by_gid() {
|
||||
}
|
||||
|
||||
create_group_with_gid() {
|
||||
local gid="$1"
|
||||
local name="$2"
|
||||
|
||||
if command -v addgroup >/dev/null 2>&1; then
|
||||
addgroup -g "$gid" "$name" 2>/dev/null || true
|
||||
addgroup -g "$1" "$2" 2>/dev/null || true
|
||||
return
|
||||
fi
|
||||
|
||||
if command -v groupadd >/dev/null 2>&1; then
|
||||
groupadd -g "$gid" "$name" 2>/dev/null || true
|
||||
groupadd -g "$1" "$2" 2>/dev/null || true
|
||||
fi
|
||||
}
|
||||
|
||||
add_user_to_group() {
|
||||
local user="$1"
|
||||
local group="$2"
|
||||
|
||||
if command -v addgroup >/dev/null 2>&1; then
|
||||
addgroup "$user" "$group" 2>/dev/null || true
|
||||
addgroup "$1" "$2" 2>/dev/null || true
|
||||
return
|
||||
fi
|
||||
|
||||
if command -v usermod >/dev/null 2>&1; then
|
||||
usermod -aG "$group" "$user" 2>/dev/null || true
|
||||
usermod -aG "$2" "$1" 2>/dev/null || true
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -142,8 +136,15 @@ if [ -S "/var/run/docker.sock" ] && is_root; then
|
||||
fi
|
||||
fi
|
||||
elif [ -S "/var/run/docker.sock" ]; then
|
||||
echo "Note: Docker socket mounted but container is running non-root; skipping docker.sock group setup."
|
||||
echo " If Docker discovery is needed, run with matching group permissions (e.g., --group-add)"
|
||||
DOCKER_SOCK_GID=$(stat -c '%g' /var/run/docker.sock 2>/dev/null || echo "unknown")
|
||||
echo "Note: Docker socket mounted (GID=$DOCKER_SOCK_GID) but container is running non-root; skipping docker.sock group setup."
|
||||
echo " If Docker discovery is needed, add 'group_add: [\"$DOCKER_SOCK_GID\"]' to your compose service."
|
||||
if [ "$DOCKER_SOCK_GID" = "0" ]; then
|
||||
if [ "${ALLOW_DOCKER_SOCK_GID_0:-false}" != "true" ]; then
|
||||
echo "⚠️ WARNING: Docker socket GID is 0 (root group). group_add: [\"0\"] grants root-group access."
|
||||
echo " Set ALLOW_DOCKER_SOCK_GID_0=true to acknowledge this risk."
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo "Note: Docker socket not found. Docker container discovery will be unavailable."
|
||||
fi
|
||||
@@ -191,7 +192,7 @@ if command -v cscli >/dev/null; then
|
||||
echo "Initializing persistent CrowdSec configuration..."
|
||||
|
||||
# Check if .dist has content
|
||||
if [ -d "/etc/crowdsec.dist" ] && [ -n "$(ls -A /etc/crowdsec.dist 2>/dev/null)" ]; then
|
||||
if [ -d "/etc/crowdsec.dist" ] && find /etc/crowdsec.dist -mindepth 1 -maxdepth 1 -print -quit 2>/dev/null | grep -q .; then
|
||||
echo "Copying config from /etc/crowdsec.dist..."
|
||||
if ! cp -r /etc/crowdsec.dist/* "$CS_CONFIG_DIR/"; then
|
||||
echo "ERROR: Failed to copy config from /etc/crowdsec.dist"
|
||||
@@ -208,7 +209,7 @@ if command -v cscli >/dev/null; then
|
||||
exit 1
|
||||
fi
|
||||
echo "✓ Successfully initialized config from .dist directory"
|
||||
elif [ -d "/etc/crowdsec" ] && [ ! -L "/etc/crowdsec" ] && [ -n "$(ls -A /etc/crowdsec 2>/dev/null)" ]; then
|
||||
elif [ -d "/etc/crowdsec" ] && [ ! -L "/etc/crowdsec" ] && find /etc/crowdsec -mindepth 1 -maxdepth 1 -print -quit 2>/dev/null | grep -q .; then
|
||||
echo "Copying config from /etc/crowdsec (fallback)..."
|
||||
if ! cp -r /etc/crowdsec/* "$CS_CONFIG_DIR/"; then
|
||||
echo "ERROR: Failed to copy config from /etc/crowdsec (fallback)"
|
||||
@@ -248,7 +249,7 @@ if command -v cscli >/dev/null; then
|
||||
echo "Expected: /etc/crowdsec -> /app/data/crowdsec/config"
|
||||
echo "This indicates a critical build-time issue. Symlink must be created at build time as root."
|
||||
echo "DEBUG: Directory check:"
|
||||
ls -la /etc/ | grep crowdsec || echo " (no crowdsec entry found)"
|
||||
find /etc -mindepth 1 -maxdepth 1 -name '*crowdsec*' -exec ls -ld {} \; 2>/dev/null || echo " (no crowdsec entry found)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -302,6 +303,19 @@ ACQUIS_EOF
|
||||
# Also handle case where it might be without trailing slash
|
||||
sed -i 's|log_dir: /var/log$|log_dir: /var/log/crowdsec|g' "$CS_CONFIG_DIR/config.yaml"
|
||||
|
||||
# Redirect CrowdSec LAPI database to persistent volume
|
||||
# Default path /var/lib/crowdsec/data/crowdsec.db is ephemeral (not volume-mounted),
|
||||
# so it is destroyed on every container rebuild. The bouncer API key (stored on the
|
||||
# persistent volume at /app/data/crowdsec/) survives rebuilds but the LAPI database
|
||||
# that validates it does not — causing perpetual key rejection.
|
||||
# Redirecting db_path to the volume-mounted CS_DATA_DIR fixes this.
|
||||
sed -i "s|db_path: /var/lib/crowdsec/data/crowdsec.db|db_path: ${CS_DATA_DIR}/crowdsec.db|g" "$CS_CONFIG_DIR/config.yaml"
|
||||
if grep -q "db_path:.*${CS_DATA_DIR}" "$CS_CONFIG_DIR/config.yaml"; then
|
||||
echo "✓ CrowdSec LAPI database redirected to persistent volume: ${CS_DATA_DIR}/crowdsec.db"
|
||||
else
|
||||
echo "⚠️ WARNING: Could not verify LAPI db_path redirect — bouncer keys may not survive rebuilds"
|
||||
fi
|
||||
|
||||
# Verify LAPI configuration was applied correctly
|
||||
if grep -q "listen_uri:.*:8085" "$CS_CONFIG_DIR/config.yaml"; then
|
||||
echo "✓ CrowdSec LAPI configured for port 8085"
|
||||
@@ -309,10 +323,11 @@ ACQUIS_EOF
|
||||
echo "✗ WARNING: LAPI port configuration may be incorrect"
|
||||
fi
|
||||
|
||||
# Update hub index to ensure CrowdSec can start
|
||||
if [ ! -f "/etc/crowdsec/hub/.index.json" ]; then
|
||||
echo "Updating CrowdSec hub index..."
|
||||
timeout 60s cscli hub update 2>/dev/null || echo "⚠️ Hub update timed out or failed, continuing..."
|
||||
# Always refresh hub index on startup (stale index causes hash mismatch errors on collection install)
|
||||
echo "Updating CrowdSec hub index..."
|
||||
if ! timeout 60s cscli hub update 2>&1; then
|
||||
echo "⚠️ Hub index update failed (network issue?). Collections may fail to install."
|
||||
echo " CrowdSec will still start with whatever index is cached."
|
||||
fi
|
||||
|
||||
# Ensure local machine is registered (auto-heal for volume/config mismatch)
|
||||
@@ -320,12 +335,11 @@ ACQUIS_EOF
|
||||
echo "Registering local machine..."
|
||||
cscli machines add -a --force 2>/dev/null || echo "Warning: Machine registration may have failed"
|
||||
|
||||
# Install hub items (parsers, scenarios, collections) if local mode enabled
|
||||
if [ "$SECURITY_CROWDSEC_MODE" = "local" ]; then
|
||||
echo "Installing CrowdSec hub items..."
|
||||
if [ -x /usr/local/bin/install_hub_items.sh ]; then
|
||||
/usr/local/bin/install_hub_items.sh 2>/dev/null || echo "Warning: Some hub items may not have installed"
|
||||
fi
|
||||
# Always ensure required collections are present (idempotent — already-installed items are skipped).
|
||||
# Collections are just config files with zero runtime cost when CrowdSec is disabled.
|
||||
echo "Ensuring CrowdSec hub items are installed..."
|
||||
if [ -x /usr/local/bin/install_hub_items.sh ]; then
|
||||
/usr/local/bin/install_hub_items.sh || echo "⚠️ Some hub items may not have installed. CrowdSec can still start."
|
||||
fi
|
||||
|
||||
# Fix ownership AFTER cscli commands (they run as root and create root-owned files)
|
||||
@@ -364,7 +378,7 @@ echo "Caddy started (PID: $CADDY_PID)"
|
||||
echo "Waiting for Caddy admin API..."
|
||||
i=1
|
||||
while [ "$i" -le 30 ]; do
|
||||
if curl -sf http://127.0.0.1:2019/config/ > /dev/null 2>&1; then
|
||||
if wget -qO /dev/null http://127.0.0.1:2019/config/ 2>/dev/null; then
|
||||
echo "Caddy is ready!"
|
||||
break
|
||||
fi
|
||||
|
||||
3
.dockerignore
Normal file → Executable file
3
.dockerignore
Normal file → Executable file
@@ -9,13 +9,12 @@
|
||||
.git/
|
||||
.gitignore
|
||||
.github/
|
||||
.pre-commit-config.yaml
|
||||
codecov.yml
|
||||
.goreleaser.yaml
|
||||
.sourcery.yml
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Python (pre-commit, tooling)
|
||||
# Python (tooling)
|
||||
# -----------------------------------------------------------------------------
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
|
||||
0
.env.example
Normal file → Executable file
0
.env.example
Normal file → Executable file
0
.gitattributes
vendored
Normal file → Executable file
0
.gitattributes
vendored
Normal file → Executable file
0
.github/FUNDING.yml
vendored
Normal file → Executable file
0
.github/FUNDING.yml
vendored
Normal file → Executable file
0
.github/ISSUE_TEMPLATE/alpha-feature.yml
vendored
Normal file → Executable file
0
.github/ISSUE_TEMPLATE/alpha-feature.yml
vendored
Normal file → Executable file
0
.github/ISSUE_TEMPLATE/beta-monitoring-feature.yml
vendored
Normal file → Executable file
0
.github/ISSUE_TEMPLATE/beta-monitoring-feature.yml
vendored
Normal file → Executable file
0
.github/ISSUE_TEMPLATE/beta-security-feature.yml
vendored
Normal file → Executable file
0
.github/ISSUE_TEMPLATE/beta-security-feature.yml
vendored
Normal file → Executable file
0
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file → Executable file
0
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file → Executable file
0
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file → Executable file
0
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file → Executable file
0
.github/ISSUE_TEMPLATE/general-feature.yml
vendored
Normal file → Executable file
0
.github/ISSUE_TEMPLATE/general-feature.yml
vendored
Normal file → Executable file
0
.github/PULL_REQUEST_TEMPLATE/history-rewrite.md
vendored
Normal file → Executable file
0
.github/PULL_REQUEST_TEMPLATE/history-rewrite.md
vendored
Normal file → Executable file
14
.github/agents/Backend_Dev.agent.md
vendored
Normal file → Executable file
14
.github/agents/Backend_Dev.agent.md
vendored
Normal file → Executable file
@@ -2,9 +2,10 @@
|
||||
name: 'Backend Dev'
|
||||
description: 'Senior Go Engineer focused on high-performance, secure backend implementation.'
|
||||
argument-hint: 'The specific backend task from the Plan (e.g., "Implement ProxyHost CRUD endpoints")'
|
||||
tools: vscode/extensions, vscode/getProjectSetupInfo, vscode/installExtension, vscode/memory, vscode/openIntegratedBrowser, vscode/runCommand, vscode/askQuestions, vscode/vscodeAPI, execute, read, agent, 'github/*', 'github/*', 'io.github.goreleaser/mcp/*', edit, search, web, 'github/*', 'playwright/*', todo, vscode.mermaid-chat-features/renderMermaidDiagram, github.vscode-pull-request-github/issue_fetch, github.vscode-pull-request-github/labels_fetch, github.vscode-pull-request-github/notification_fetch, github.vscode-pull-request-github/doSearch, github.vscode-pull-request-github/activePullRequest, github.vscode-pull-request-github/openPullRequest, ms-azuretools.vscode-containers/containerToolsConfig, ms-python.python/getPythonEnvironmentInfo, ms-python.python/getPythonExecutableCommand, ms-python.python/installPythonPackage, ms-python.python/configurePythonEnvironment, ''
|
||||
tools: vscode/getProjectSetupInfo, vscode/installExtension, vscode/memory, vscode/runCommand, vscode/vscodeAPI, vscode/extensions, vscode/askQuestions, execute, read, edit, search, web, browser, github/add_comment_to_pending_review, github/add_issue_comment, github/add_reply_to_pull_request_comment, github/assign_copilot_to_issue, github/create_branch, github/create_or_update_file, github/create_pull_request, github/create_pull_request_with_copilot, github/create_repository, github/delete_file, github/fork_repository, github/get_commit, github/get_copilot_job_status, github/get_file_contents, github/get_label, github/get_latest_release, github/get_me, github/get_release_by_tag, github/get_tag, github/get_team_members, github/get_teams, github/issue_read, github/issue_write, github/list_branches, github/list_commits, github/list_issue_types, github/list_issues, github/list_pull_requests, github/list_releases, github/list_tags, github/merge_pull_request, github/pull_request_read, github/pull_request_review_write, github/push_files, github/request_copilot_review, github/search_code, github/search_issues, github/search_pull_requests, github/search_repositories, github/search_users, github/sub_issue_write, github/update_pull_request, github/update_pull_request_branch, playwright/*, github/*, io.github.goreleaser/mcp/*, mcp-refactor-typescript/*, microsoftdocs/mcp/*, vscode.mermaid-chat-features/renderMermaidDiagram, github.vscode-pull-request-github/issue_fetch, github.vscode-pull-request-github/labels_fetch, github.vscode-pull-request-github/notification_fetch, github.vscode-pull-request-github/doSearch, github.vscode-pull-request-github/activePullRequest, github.vscode-pull-request-github/pullRequestStatusChecks, github.vscode-pull-request-github/openPullRequest, ms-azuretools.vscode-containers/containerToolsConfig, ms-python.python/getPythonEnvironmentInfo, ms-python.python/getPythonExecutableCommand, ms-python.python/installPythonPackage, ms-python.python/configurePythonEnvironment, todo
|
||||
|
||||
|
||||
|
||||
model: GPT-5.3-Codex (copilot)
|
||||
target: vscode
|
||||
user-invocable: true
|
||||
disable-model-invocation: false
|
||||
@@ -45,7 +46,7 @@ Your priority is writing code that is clean, tested, and secure by default.
|
||||
- **Step 3 (The Logic)**:
|
||||
- Implement the handler in `internal/api/handlers`.
|
||||
- **Step 4 (Lint and Format)**:
|
||||
- Run `pre-commit run --all-files` to ensure code quality.
|
||||
- Run `lefthook run pre-commit` to ensure code quality.
|
||||
- **Step 5 (The Green Light)**:
|
||||
- Run `go test ./...`.
|
||||
- **CRITICAL**: If it fails, fix the *Code*, NOT the *Test* (unless the test was wrong about the contract).
|
||||
@@ -57,8 +58,7 @@ Your priority is writing code that is clean, tested, and secure by default.
|
||||
- **Conditional GORM Gate**: If task changes include model/database-related
|
||||
files (`backend/internal/models/**`, GORM query logic, migrations), run
|
||||
GORM scanner in check mode and treat CRITICAL/HIGH findings as blocking:
|
||||
- Run: `pre-commit run --hook-stage manual gorm-security-scan --all-files`
|
||||
OR `./scripts/scan-gorm-security.sh --check`
|
||||
- Run: `lefthook run pre-commit` (which includes manual gorm-security-scan) OR `./scripts/scan-gorm-security.sh --check`
|
||||
- Policy: Process-blocking gate even while automation is manual stage
|
||||
- **Local Patch Coverage Preflight (MANDATORY)**: Run VS Code task `Test: Local Patch Report` or `bash scripts/local-patch-report.sh` before backend coverage runs.
|
||||
- Ensure artifacts exist: `test-results/local-patch-report.md` and `test-results/local-patch-report.json`.
|
||||
@@ -69,9 +69,9 @@ Your priority is writing code that is clean, tested, and secure by default.
|
||||
- **Manual Script**: Execute `/projects/Charon/scripts/go-test-coverage.sh` from the root directory
|
||||
- **Minimum**: 85% coverage (configured via `CHARON_MIN_COVERAGE` or `CPM_MIN_COVERAGE`)
|
||||
- **Critical**: If coverage drops below threshold, write additional tests immediately. Do not skip this step.
|
||||
- **Why**: Coverage tests are in manual stage of pre-commit for performance. You MUST run them via VS Code tasks or scripts before completing your task.
|
||||
- **Why**: Coverage tests are in manual stage of lefthook for performance. You MUST run them via VS Code tasks or scripts before completing your task.
|
||||
- Ensure coverage goals are met as well as all tests pass. Just because Tests pass does not mean you are done. Goal Coverage Needs to be met even if the tests to get us there are outside the scope of your task. At this point, your task is to maintain coverage goal and all tests pass because we cannot commit changes if they fail.
|
||||
- Run `pre-commit run --all-files` as final check (this runs fast hooks only; coverage was verified above).
|
||||
- Run `lefthook run pre-commit` as final check (this runs fast hooks only; coverage was verified above).
|
||||
</workflow>
|
||||
|
||||
<constraints>
|
||||
|
||||
4
.github/agents/DevOps.agent.md
vendored
Normal file → Executable file
4
.github/agents/DevOps.agent.md
vendored
Normal file → Executable file
@@ -2,9 +2,9 @@
|
||||
name: 'DevOps'
|
||||
description: 'DevOps specialist for CI/CD pipelines, deployment debugging, and GitOps workflows focused on making deployments boring and reliable'
|
||||
argument-hint: 'The CI/CD or infrastructure task (e.g., "Debug failing GitHub Action workflow")'
|
||||
tools: vscode/extensions, vscode/getProjectSetupInfo, vscode/installExtension, vscode/memory, vscode/openIntegratedBrowser, vscode/runCommand, vscode/askQuestions, vscode/vscodeAPI, execute, read, agent, 'github/*', 'github/*', 'io.github.goreleaser/mcp/*', edit, search, web, 'github/*', 'playwright/*', todo, vscode.mermaid-chat-features/renderMermaidDiagram, github.vscode-pull-request-github/issue_fetch, github.vscode-pull-request-github/labels_fetch, github.vscode-pull-request-github/notification_fetch, github.vscode-pull-request-github/doSearch, github.vscode-pull-request-github/activePullRequest, github.vscode-pull-request-github/openPullRequest, ms-azuretools.vscode-containers/containerToolsConfig, ms-python.python/getPythonEnvironmentInfo, ms-python.python/getPythonExecutableCommand, ms-python.python/installPythonPackage, ms-python.python/configurePythonEnvironment, ''
|
||||
tools: vscode/getProjectSetupInfo, vscode/installExtension, vscode/memory, vscode/runCommand, vscode/vscodeAPI, vscode/extensions, vscode/askQuestions, execute, read, edit, search, web, browser, github/add_comment_to_pending_review, github/add_issue_comment, github/add_reply_to_pull_request_comment, github/assign_copilot_to_issue, github/create_branch, github/create_or_update_file, github/create_pull_request, github/create_pull_request_with_copilot, github/create_repository, github/delete_file, github/fork_repository, github/get_commit, github/get_copilot_job_status, github/get_file_contents, github/get_label, github/get_latest_release, github/get_me, github/get_release_by_tag, github/get_tag, github/get_team_members, github/get_teams, github/issue_read, github/issue_write, github/list_branches, github/list_commits, github/list_issue_types, github/list_issues, github/list_pull_requests, github/list_releases, github/list_tags, github/merge_pull_request, github/pull_request_read, github/pull_request_review_write, github/push_files, github/request_copilot_review, github/search_code, github/search_issues, github/search_pull_requests, github/search_repositories, github/search_users, github/sub_issue_write, github/update_pull_request, github/update_pull_request_branch, playwright/*, github/*, io.github.goreleaser/mcp/*, mcp-refactor-typescript/*, microsoftdocs/mcp/*, vscode.mermaid-chat-features/renderMermaidDiagram, github.vscode-pull-request-github/issue_fetch, github.vscode-pull-request-github/labels_fetch, github.vscode-pull-request-github/notification_fetch, github.vscode-pull-request-github/doSearch, github.vscode-pull-request-github/activePullRequest, github.vscode-pull-request-github/pullRequestStatusChecks, github.vscode-pull-request-github/openPullRequest, ms-azuretools.vscode-containers/containerToolsConfig, ms-python.python/getPythonEnvironmentInfo, ms-python.python/getPythonExecutableCommand, ms-python.python/installPythonPackage, ms-python.python/configurePythonEnvironment, todo
|
||||
|
||||
|
||||
model: GPT-5.3-Codex (copilot)
|
||||
target: vscode
|
||||
user-invocable: true
|
||||
disable-model-invocation: false
|
||||
|
||||
4
.github/agents/Doc_Writer.agent.md
vendored
Normal file → Executable file
4
.github/agents/Doc_Writer.agent.md
vendored
Normal file → Executable file
@@ -2,9 +2,9 @@
|
||||
name: 'Docs Writer'
|
||||
description: 'User Advocate and Writer focused on creating simple, layman-friendly documentation.'
|
||||
argument-hint: 'The feature to document (e.g., "Write the guide for the new Real-Time Logs")'
|
||||
tools: vscode/extensions, vscode/getProjectSetupInfo, vscode/installExtension, vscode/memory, vscode/openIntegratedBrowser, vscode/runCommand, vscode/askQuestions, vscode/vscodeAPI, execute, read, agent, 'github/*', 'github/*', 'io.github.goreleaser/mcp/*', edit, search, web, 'github/*', 'playwright/*', todo, vscode.mermaid-chat-features/renderMermaidDiagram, github.vscode-pull-request-github/issue_fetch, github.vscode-pull-request-github/labels_fetch, github.vscode-pull-request-github/notification_fetch, github.vscode-pull-request-github/doSearch, github.vscode-pull-request-github/activePullRequest, github.vscode-pull-request-github/openPullRequest, ms-azuretools.vscode-containers/containerToolsConfig, ms-python.python/getPythonEnvironmentInfo, ms-python.python/getPythonExecutableCommand, ms-python.python/installPythonPackage, ms-python.python/configurePythonEnvironment, ''
|
||||
tools: vscode/getProjectSetupInfo, vscode/installExtension, vscode/memory, vscode/runCommand, vscode/vscodeAPI, vscode/extensions, vscode/askQuestions, execute, read, edit, search, web, browser, github/add_comment_to_pending_review, github/add_issue_comment, github/add_reply_to_pull_request_comment, github/assign_copilot_to_issue, github/create_branch, github/create_or_update_file, github/create_pull_request, github/create_pull_request_with_copilot, github/create_repository, github/delete_file, github/fork_repository, github/get_commit, github/get_copilot_job_status, github/get_file_contents, github/get_label, github/get_latest_release, github/get_me, github/get_release_by_tag, github/get_tag, github/get_team_members, github/get_teams, github/issue_read, github/issue_write, github/list_branches, github/list_commits, github/list_issue_types, github/list_issues, github/list_pull_requests, github/list_releases, github/list_tags, github/merge_pull_request, github/pull_request_read, github/pull_request_review_write, github/push_files, github/request_copilot_review, github/search_code, github/search_issues, github/search_pull_requests, github/search_repositories, github/search_users, github/sub_issue_write, github/update_pull_request, github/update_pull_request_branch, playwright/*, github/*, io.github.goreleaser/mcp/*, mcp-refactor-typescript/*, microsoftdocs/mcp/*, vscode.mermaid-chat-features/renderMermaidDiagram, github.vscode-pull-request-github/issue_fetch, github.vscode-pull-request-github/labels_fetch, github.vscode-pull-request-github/notification_fetch, github.vscode-pull-request-github/doSearch, github.vscode-pull-request-github/activePullRequest, github.vscode-pull-request-github/pullRequestStatusChecks, github.vscode-pull-request-github/openPullRequest, ms-azuretools.vscode-containers/containerToolsConfig, ms-python.python/getPythonEnvironmentInfo, ms-python.python/getPythonExecutableCommand, ms-python.python/installPythonPackage, ms-python.python/configurePythonEnvironment, todo
|
||||
|
||||
|
||||
model: GPT-5.3-Codex (copilot)
|
||||
target: vscode
|
||||
user-invocable: true
|
||||
disable-model-invocation: false
|
||||
|
||||
7
.github/agents/Frontend_Dev.agent.md
vendored
Normal file → Executable file
7
.github/agents/Frontend_Dev.agent.md
vendored
Normal file → Executable file
@@ -2,9 +2,10 @@
|
||||
name: 'Frontend Dev'
|
||||
description: 'Senior React/TypeScript Engineer for frontend implementation.'
|
||||
argument-hint: 'The frontend feature or component to implement (e.g., "Implement the Real-Time Logs dashboard component")'
|
||||
tools: vscode/extensions, vscode/getProjectSetupInfo, vscode/installExtension, vscode/memory, vscode/openIntegratedBrowser, vscode/runCommand, vscode/askQuestions, vscode/vscodeAPI, execute, read, agent, 'github/*', 'github/*', 'io.github.goreleaser/mcp/*', edit, search, web, 'github/*', 'playwright/*', todo, vscode.mermaid-chat-features/renderMermaidDiagram, github.vscode-pull-request-github/issue_fetch, github.vscode-pull-request-github/labels_fetch, github.vscode-pull-request-github/notification_fetch, github.vscode-pull-request-github/doSearch, github.vscode-pull-request-github/activePullRequest, github.vscode-pull-request-github/openPullRequest, ms-azuretools.vscode-containers/containerToolsConfig, ms-python.python/getPythonEnvironmentInfo, ms-python.python/getPythonExecutableCommand, ms-python.python/installPythonPackage, ms-python.python/configurePythonEnvironment, ''
|
||||
tools: vscode/getProjectSetupInfo, vscode/installExtension, vscode/memory, vscode/runCommand, vscode/vscodeAPI, vscode/extensions, vscode/askQuestions, execute, read, edit, search, web, browser, github/add_comment_to_pending_review, github/add_issue_comment, github/add_reply_to_pull_request_comment, github/assign_copilot_to_issue, github/create_branch, github/create_or_update_file, github/create_pull_request, github/create_pull_request_with_copilot, github/create_repository, github/delete_file, github/fork_repository, github/get_commit, github/get_copilot_job_status, github/get_file_contents, github/get_label, github/get_latest_release, github/get_me, github/get_release_by_tag, github/get_tag, github/get_team_members, github/get_teams, github/issue_read, github/issue_write, github/list_branches, github/list_commits, github/list_issue_types, github/list_issues, github/list_pull_requests, github/list_releases, github/list_tags, github/merge_pull_request, github/pull_request_read, github/pull_request_review_write, github/push_files, github/request_copilot_review, github/search_code, github/search_issues, github/search_pull_requests, github/search_repositories, github/search_users, github/sub_issue_write, github/update_pull_request, github/update_pull_request_branch, playwright/*, github/*, io.github.goreleaser/mcp/*, mcp-refactor-typescript/*, microsoftdocs/mcp/*, vscode.mermaid-chat-features/renderMermaidDiagram, github.vscode-pull-request-github/issue_fetch, github.vscode-pull-request-github/labels_fetch, github.vscode-pull-request-github/notification_fetch, github.vscode-pull-request-github/doSearch, github.vscode-pull-request-github/activePullRequest, github.vscode-pull-request-github/pullRequestStatusChecks, github.vscode-pull-request-github/openPullRequest, ms-azuretools.vscode-containers/containerToolsConfig, ms-python.python/getPythonEnvironmentInfo, ms-python.python/getPythonExecutableCommand, ms-python.python/installPythonPackage, ms-python.python/configurePythonEnvironment, todo
|
||||
|
||||
|
||||
|
||||
model: GPT-5.3-Codex (copilot)
|
||||
target: vscode
|
||||
user-invocable: true
|
||||
disable-model-invocation: false
|
||||
@@ -48,7 +49,7 @@ You are a SENIOR REACT/TYPESCRIPT ENGINEER with deep expertise in:
|
||||
- Run tests with `npm test` in `frontend/` directory
|
||||
|
||||
4. **Quality Checks**:
|
||||
- Run `pre-commit run --all-files` to ensure linting and formatting
|
||||
- Run `lefthook run pre-commit` to ensure linting and formatting
|
||||
- Ensure accessibility with proper ARIA attributes
|
||||
</workflow>
|
||||
|
||||
|
||||
52
.github/agents/Management.agent.md
vendored
Normal file → Executable file
52
.github/agents/Management.agent.md
vendored
Normal file → Executable file
@@ -3,9 +3,9 @@ name: 'Management'
|
||||
description: 'Engineering Director. Delegates ALL research and execution. DO NOT ask it to debug code directly.'
|
||||
argument-hint: 'The high-level goal (e.g., "Build the new Proxy Host Dashboard widget")'
|
||||
|
||||
tools: vscode/extensions, vscode/getProjectSetupInfo, vscode/installExtension, vscode/memory, vscode/openIntegratedBrowser, vscode/runCommand, vscode/askQuestions, vscode/vscodeAPI, execute, read, agent, 'github/*', 'github/*', 'io.github.goreleaser/mcp/*', edit, search, web, 'github/*', '', 'playwright/*', todo, vscode.mermaid-chat-features/renderMermaidDiagram, github.vscode-pull-request-github/issue_fetch, github.vscode-pull-request-github/labels_fetch, github.vscode-pull-request-github/notification_fetch, github.vscode-pull-request-github/doSearch, github.vscode-pull-request-github/activePullRequest, github.vscode-pull-request-github/openPullRequest, ms-azuretools.vscode-containers/containerToolsConfig, ms-python.python/getPythonEnvironmentInfo, ms-python.python/getPythonExecutableCommand, ms-python.python/installPythonPackage, ms-python.python/configurePythonEnvironment
|
||||
tools: vscode/extensions, vscode/getProjectSetupInfo, vscode/installExtension, vscode/memory, vscode/runCommand, vscode/vscodeAPI, vscode/askQuestions, execute, read, agent, edit, search, web, 'github/*', 'playwright/*', 'github/*', 'github/*', 'io.github.goreleaser/mcp/*', 'mcp-refactor-typescript/*', 'microsoftdocs/mcp/*', browser, vscode.mermaid-chat-features/renderMermaidDiagram, github.vscode-pull-request-github/issue_fetch, github.vscode-pull-request-github/labels_fetch, github.vscode-pull-request-github/notification_fetch, github.vscode-pull-request-github/doSearch, github.vscode-pull-request-github/activePullRequest, github.vscode-pull-request-github/pullRequestStatusChecks, github.vscode-pull-request-github/openPullRequest, ms-azuretools.vscode-containers/containerToolsConfig, ms-python.python/getPythonEnvironmentInfo, ms-python.python/getPythonExecutableCommand, ms-python.python/installPythonPackage, ms-python.python/configurePythonEnvironment, todo
|
||||
|
||||
|
||||
model: GPT-5.3-Codex (copilot)
|
||||
target: vscode
|
||||
user-invocable: true
|
||||
disable-model-invocation: false
|
||||
@@ -24,16 +24,16 @@ You are "lazy" in the smartest way possible. You never do what a subordinate can
|
||||
4. **Team Roster**:
|
||||
- `Planning`: The Architect. (Delegate research & planning here).
|
||||
- `Supervisor`: The Senior Advisor. (Delegate plan review here).
|
||||
- `Backend_Dev`: The Engineer. (Delegate Go implementation here).
|
||||
- `Frontend_Dev`: The Designer. (Delegate React implementation here).
|
||||
- `QA_Security`: The Auditor. (Delegate verification and testing here).
|
||||
- `Docs_Writer`: The Scribe. (Delegate docs here).
|
||||
- `Backend Dev`: The Engineer. (Delegate Go implementation here).
|
||||
- `Frontend Dev`: The Designer. (Delegate React implementation here).
|
||||
- `QA Security`: The Auditor. (Delegate verification and testing here).
|
||||
- `Docs Writer`: The Scribe. (Delegate docs here).
|
||||
- `DevOps`: The Packager. (Delegate CI/CD and infrastructure here).
|
||||
- `Playwright_Dev`: The E2E Specialist. (Delegate Playwright test creation and maintenance here).
|
||||
- `Playwright Dev`: The E2E Specialist. (Delegate Playwright test creation and maintenance here).
|
||||
5. **Parallel Execution**:
|
||||
- You may delegate to `runSubagent` multiple times in parallel if tasks are independent. The only exception is `QA_Security`, which must run last as this validates the entire codebase after all changes.
|
||||
6. **Implementation Choices**:
|
||||
- When faced with multiple implementation options, ALWAYS choose the "Prroper" fix over a "Quick" fix. This ensures long-term maintainability and saves double work. The "Quick" fix will only cause more work later when the "Proper" fix is eventually needed.
|
||||
- When faced with multiple implementation options, ALWAYS choose the "Long Term" fix over a "Quick" fix. This ensures long-term maintainability and saves double work. The "Quick" fix will only cause more work later when the "Long Term" fix is eventually needed.
|
||||
</global_context>
|
||||
|
||||
<workflow>
|
||||
@@ -43,7 +43,7 @@ You are "lazy" in the smartest way possible. You never do what a subordinate can
|
||||
- **Identify Goal**: Understand the user's request.
|
||||
- **STOP**: Do not look at the code. Do not run `list_dir`. No code is to be changed or implemented until there is a fundamentally sound plan of action that has been approved by the user.
|
||||
- **Action**: Immediately call `Planning` subagent.
|
||||
- *Prompt*: "Research the necessary files for '{user_request}' and write a comprehensive plan detailing as many specifics as possible to `docs/plans/current_spec.md`. Be an artist with directions and discriptions. Include file names, function names, and component names wherever possible. Break the plan into phases based on the least amount of requests. Include a PR Slicing Strategy section that decides whether to split work into multiple PRs and, when split, defines PR-1/PR-2/PR-3 scope, dependencies, and acceptance criteria. Review and suggest updaetes to `.gitignore`, `codecov.yml`, `.dockerignore`, and `Dockerfile` if necessary. Return only when the plan is complete."
|
||||
- *Prompt*: "Research the necessary files for '{user_request}' and write a comprehensive plan detailing as many specifics as possible to `docs/plans/current_spec.md`. Be an artist with directions and discriptions. Include file names, function names, and component names wherever possible. Break the plan into phases based on the least amount of requests. Include a Commit Slicing Strategy section that organizes work into logical commits within a single PR — one feature = one PR, with ordered commits (Commit 1, Commit 2, …) each defining scope, files, dependencies, and validation gates. Review and suggest updaetes to `.gitignore`, `codecov.yml`, `.dockerignore`, and `Dockerfile` if necessary. Return only when the plan is complete."
|
||||
- **Task Specifics**:
|
||||
- If the task is to just run tests or audits, there is no need for a plan. Directly call `QA_Security` to perform the tests and write the report. If issues are found, return to `Planning` for a remediation plan and delegate the fixes to the corresponding subagents.
|
||||
|
||||
@@ -59,26 +59,26 @@ You are "lazy" in the smartest way possible. You never do what a subordinate can
|
||||
- **Ask**: "Plan created. Shall I authorize the construction?"
|
||||
|
||||
4. **Phase 4: Execution (Waterfall)**:
|
||||
- **Single-PR or Multi-PR Decision**: Read the PR Slicing Strategy in `docs/plans/current_spec.md`.
|
||||
- **If single PR**:
|
||||
- **Read Commit Slicing Strategy**: Read the Commit Slicing Strategy in `docs/plans/current_spec.md` to understand the ordered commits.
|
||||
- **Single PR, Multiple Commits**: All work ships as one PR. Each commit maps to a phase in the plan.
|
||||
- **Backend**: Call `Backend_Dev` with the plan file.
|
||||
- **Frontend**: Call `Frontend_Dev` with the plan file.
|
||||
- **If multi-PR**:
|
||||
- Execute in PR slices, one slice at a time, in dependency order.
|
||||
- Require each slice to pass review + QA gates before starting the next slice.
|
||||
- Keep every slice deployable and independently testable.
|
||||
- Execute commits in dependency order. Each commit must pass its validation gates before the next commit begins.
|
||||
- The PR is merged only when all commits are complete and all DoD gates pass.
|
||||
- **MANDATORY**: Implementation agents must perform linting and type checks locally before declaring their commit "DONE". This is a critical step that must not be skipped to avoid broken commits and security issues.
|
||||
|
||||
5. **Phase 5: Review**:
|
||||
- **Supervisor**: Call `Supervisor` to review the implementation against the plan. Provide feedback and ensure alignment with best practices.
|
||||
|
||||
6. **Phase 6: Audit**:
|
||||
- **QA**: Call `QA_Security` to meticulously test current implementation as well as regression test. Run all linting, security tasks, and manual pre-commit checks. Write a report to `docs/reports/qa_report.md`. Start back at Phase 1 if issues are found.
|
||||
- Review Security: Read `security.md.instrutctions.md` and `SECURITY.md` to understand the security requirements and best practices for Charon. Ensure that any open concerns or issues are addressed in the QA Audit and `SECURITY.md` is updated accordingly.
|
||||
- **QA**: Call `QA_Security` to meticulously test current implementation as well as regression test. Run all linting, security tasks, and manual lefthook checks. Write a report to `docs/reports/qa_report.md`. Start back at Phase 1 if issues are found.
|
||||
|
||||
7. **Phase 7: Closure**:
|
||||
- **Docs**: Call `Docs_Writer`.
|
||||
- **Manual Testing**: create a new test plan in `docs/issues/*.md` for tracking manual testing focused on finding potential bugs of the implemented features.
|
||||
- **Final Report**: Summarize the successful subagent runs.
|
||||
- **PR Roadmap**: If split mode was used, include a concise roadmap of completed and remaining PR slices.
|
||||
- **Commit Roadmap**: Include a concise summary of completed and remaining commits within the PR.
|
||||
|
||||
**Mandatory Commit Message**: When you reach a stopping point, provide a copy and paste code block commit message at the END of the response on format laid out in `.github/instructions/commit-message.instructions.md`
|
||||
- **STRICT RULES**:
|
||||
@@ -165,23 +165,27 @@ The task is not complete until ALL of the following pass with zero issues:
|
||||
- **Base URL**: Uses `PLAYWRIGHT_BASE_URL` or default from `playwright.config.js`
|
||||
- All E2E tests must pass before proceeding to unit tests
|
||||
|
||||
2. **Local Patch Coverage Preflight (MANDATORY - Before Unit/Coverage Tests)**:
|
||||
- Ensure the local patch report is run first via VS Code task `Test: Local Patch Report` or `bash scripts/local-patch-report.sh`.
|
||||
- Verify both artifacts exist: `test-results/local-patch-report.md` and `test-results/local-patch-report.json`.
|
||||
- Use this report to identify changed files needing coverage before running backend/frontend coverage suites.
|
||||
|
||||
3. **Coverage Tests (MANDATORY - Verify Explicitly)**:
|
||||
2. **Coverage Tests (MANDATORY - Verify Explicitly)**:
|
||||
- **Backend**: Ensure `Backend_Dev` ran VS Code task "Test: Backend with Coverage" or `scripts/go-test-coverage.sh`
|
||||
- **Frontend**: Ensure `Frontend_Dev` ran VS Code task "Test: Frontend with Coverage" or `scripts/frontend-test-coverage.sh`
|
||||
- **Why**: These are in manual stage of pre-commit for performance. Subagents MUST run them via VS Code tasks or scripts.
|
||||
- Minimum coverage: 85% for both backend and frontend.
|
||||
- All tests must pass with zero failures.
|
||||
- **Outputs**: `backend/coverage.txt` and `frontend/coverage/lcov.info` — these are required inputs for step 3.
|
||||
|
||||
3. **Local Patch Coverage Report (MANDATORY - After Coverage Tests)**:
|
||||
- **Purpose**: Identify uncovered lines in files modified by this task so missing tests are written before declaring Done. This is the bridge between "overall coverage is fine" and "the actual lines I changed are tested."
|
||||
- **Prerequisites**: `backend/coverage.txt` and `frontend/coverage/lcov.info` must exist (generated by step 2). If missing, run coverage tests first.
|
||||
- **Run**: VS Code task `Test: Local Patch Report` or `bash scripts/local-patch-report.sh`.
|
||||
- **Verify artifacts**: Both `test-results/local-patch-report.md` and `test-results/local-patch-report.json` must exist with non-empty results.
|
||||
- **Act on findings**: If patch coverage for any changed file is below **90%**, delegate to the responsible agent (`Backend_Dev` or `Frontend_Dev`) to add targeted tests covering the uncovered lines. Re-run coverage (step 2) and this report until the threshold is met.
|
||||
- **Blocking gate**: 90% overall patch coverage. Do not proceed to pre-commit or security scans until resolved or explicitly waived by the user.
|
||||
|
||||
4. **Type Safety (Frontend)**:
|
||||
- Ensure `Frontend_Dev` ran VS Code task "Lint: TypeScript Check" or `npm run type-check`
|
||||
- **Why**: This check is in manual stage of pre-commit for performance. Subagents MUST run it explicitly.
|
||||
|
||||
5. **Pre-commit Hooks**: Ensure `QA_Security` ran `pre-commit run --all-files` (fast hooks only; coverage was verified in step 3)
|
||||
5. **Pre-commit Hooks**: Ensure `QA_Security` ran `pre-commit run --all-files` (fast hooks only; coverage was verified in step 2)
|
||||
|
||||
6. **Security Scans**: Ensure `QA_Security` ran the following with zero Critical or High severity issues:
|
||||
- **Trivy Filesystem Scan**: Fast scan of source code and dependencies
|
||||
|
||||
15
.github/agents/Planning.agent.md
vendored
Normal file → Executable file
15
.github/agents/Planning.agent.md
vendored
Normal file → Executable file
@@ -2,9 +2,10 @@
|
||||
name: 'Planning'
|
||||
description: 'Principal Architect for technical planning and design decisions.'
|
||||
argument-hint: 'The feature or system to plan (e.g., "Design the architecture for Real-Time Logs")'
|
||||
tools: vscode/extensions, vscode/getProjectSetupInfo, vscode/installExtension, vscode/memory, vscode/openIntegratedBrowser, vscode/runCommand, vscode/askQuestions, vscode/vscodeAPI, execute, read, agent, 'github/*', 'github/*', 'io.github.goreleaser/mcp/*', edit, search, web, 'github/*', 'playwright/*', todo, vscode.mermaid-chat-features/renderMermaidDiagram, github.vscode-pull-request-github/issue_fetch, github.vscode-pull-request-github/labels_fetch, github.vscode-pull-request-github/notification_fetch, github.vscode-pull-request-github/doSearch, github.vscode-pull-request-github/activePullRequest, github.vscode-pull-request-github/openPullRequest, ms-azuretools.vscode-containers/containerToolsConfig, ms-python.python/getPythonEnvironmentInfo, ms-python.python/getPythonExecutableCommand, ms-python.python/installPythonPackage, ms-python.python/configurePythonEnvironment , ''
|
||||
tools: vscode/getProjectSetupInfo, vscode/installExtension, vscode/memory, vscode/runCommand, vscode/vscodeAPI, vscode/extensions, vscode/askQuestions, execute, read, edit, search, web, browser, github/add_comment_to_pending_review, github/add_issue_comment, github/add_reply_to_pull_request_comment, github/assign_copilot_to_issue, github/create_branch, github/create_or_update_file, github/create_pull_request, github/create_pull_request_with_copilot, github/create_repository, github/delete_file, github/fork_repository, github/get_commit, github/get_copilot_job_status, github/get_file_contents, github/get_label, github/get_latest_release, github/get_me, github/get_release_by_tag, github/get_tag, github/get_team_members, github/get_teams, github/issue_read, github/issue_write, github/list_branches, github/list_commits, github/list_issue_types, github/list_issues, github/list_pull_requests, github/list_releases, github/list_tags, github/merge_pull_request, github/pull_request_read, github/pull_request_review_write, github/push_files, github/request_copilot_review, github/search_code, github/search_issues, github/search_pull_requests, github/search_repositories, github/search_users, github/sub_issue_write, github/update_pull_request, github/update_pull_request_branch, playwright/*, github/*, io.github.goreleaser/mcp/*, mcp-refactor-typescript/*, microsoftdocs/mcp/*, vscode.mermaid-chat-features/renderMermaidDiagram, github.vscode-pull-request-github/issue_fetch, github.vscode-pull-request-github/labels_fetch, github.vscode-pull-request-github/notification_fetch, github.vscode-pull-request-github/doSearch, github.vscode-pull-request-github/activePullRequest, github.vscode-pull-request-github/pullRequestStatusChecks, github.vscode-pull-request-github/openPullRequest, ms-azuretools.vscode-containers/containerToolsConfig, ms-python.python/getPythonEnvironmentInfo, ms-python.python/getPythonExecutableCommand, ms-python.python/installPythonPackage, ms-python.python/configurePythonEnvironment, todo
|
||||
|
||||
|
||||
|
||||
model: GPT-5.3-Codex (copilot)
|
||||
target: vscode
|
||||
user-invocable: true
|
||||
disable-model-invocation: false
|
||||
@@ -37,18 +38,18 @@ You are a PRINCIPAL ARCHITECT responsible for technical planning and system desi
|
||||
- Specify database schema changes
|
||||
- Document component interactions and data flow
|
||||
- Identify potential risks and mitigation strategies
|
||||
- Determine PR sizing and whether to split the work into multiple PRs for safer and faster review
|
||||
- Determine commit sizing and how to organize work into logical commits within a single PR for safer and faster review
|
||||
|
||||
3. **Documentation**:
|
||||
- Write plan to `docs/plans/current_spec.md`
|
||||
- Include acceptance criteria
|
||||
- Break down into implementable tasks using examples, diagrams, and tables
|
||||
- Estimate complexity for each component
|
||||
- Add a **PR Slicing Strategy** section with:
|
||||
- Decision: single PR or multiple PRs
|
||||
- Add a **Commit Slicing Strategy** section with:
|
||||
- Decision: single PR with ordered logical commits (one feature = one PR)
|
||||
- Trigger reasons (scope, risk, cross-domain changes, review size)
|
||||
- Ordered PR slices (`PR-1`, `PR-2`, ...), each with scope, files, dependencies, and validation gates
|
||||
- Rollback and contingency notes per slice
|
||||
- Ordered commits (`Commit 1`, `Commit 2`, ...), each with scope, files, dependencies, and validation gates
|
||||
- Rollback and contingency notes for the PR as a whole
|
||||
|
||||
4. **Handoff**:
|
||||
- Once plan is approved, delegate to `Supervisor` agent for review.
|
||||
|
||||
5
.github/agents/Playwright_Dev.agent.md
vendored
Normal file → Executable file
5
.github/agents/Playwright_Dev.agent.md
vendored
Normal file → Executable file
@@ -3,9 +3,10 @@ name: 'Playwright Dev'
|
||||
description: 'E2E Testing Specialist for Playwright test automation.'
|
||||
argument-hint: 'The feature or flow to test (e.g., "Write E2E tests for the login flow")'
|
||||
|
||||
tools: vscode/extensions, vscode/getProjectSetupInfo, vscode/installExtension, vscode/memory, vscode/openIntegratedBrowser, vscode/runCommand, vscode/askQuestions, vscode/vscodeAPI, execute, read, agent, 'github/*', 'github/*', 'io.github.goreleaser/mcp/*', edit, search, web, 'github/*', '', 'playwright/*', todo, vscode.mermaid-chat-features/renderMermaidDiagram, github.vscode-pull-request-github/issue_fetch, github.vscode-pull-request-github/labels_fetch, github.vscode-pull-request-github/notification_fetch, github.vscode-pull-request-github/doSearch, github.vscode-pull-request-github/activePullRequest, github.vscode-pull-request-github/openPullRequest, ms-azuretools.vscode-containers/containerToolsConfig, ms-python.python/getPythonEnvironmentInfo, ms-python.python/getPythonExecutableCommand, ms-python.python/installPythonPackage, ms-python.python/configurePythonEnvironment
|
||||
tools: vscode/getProjectSetupInfo, vscode/installExtension, vscode/memory, vscode/runCommand, vscode/vscodeAPI, vscode/extensions, vscode/askQuestions, execute, read, edit, search, web, browser, github/add_comment_to_pending_review, github/add_issue_comment, github/add_reply_to_pull_request_comment, github/assign_copilot_to_issue, github/create_branch, github/create_or_update_file, github/create_pull_request, github/create_pull_request_with_copilot, github/create_repository, github/delete_file, github/fork_repository, github/get_commit, github/get_copilot_job_status, github/get_file_contents, github/get_label, github/get_latest_release, github/get_me, github/get_release_by_tag, github/get_tag, github/get_team_members, github/get_teams, github/issue_read, github/issue_write, github/list_branches, github/list_commits, github/list_issue_types, github/list_issues, github/list_pull_requests, github/list_releases, github/list_tags, github/merge_pull_request, github/pull_request_read, github/pull_request_review_write, github/push_files, github/request_copilot_review, github/search_code, github/search_issues, github/search_pull_requests, github/search_repositories, github/search_users, github/sub_issue_write, github/update_pull_request, github/update_pull_request_branch, playwright/*, github/*, io.github.goreleaser/mcp/*, mcp-refactor-typescript/*, microsoftdocs/mcp/*, vscode.mermaid-chat-features/renderMermaidDiagram, github.vscode-pull-request-github/issue_fetch, github.vscode-pull-request-github/labels_fetch, github.vscode-pull-request-github/notification_fetch, github.vscode-pull-request-github/doSearch, github.vscode-pull-request-github/activePullRequest, github.vscode-pull-request-github/pullRequestStatusChecks, github.vscode-pull-request-github/openPullRequest, ms-azuretools.vscode-containers/containerToolsConfig, ms-python.python/getPythonEnvironmentInfo, ms-python.python/getPythonExecutableCommand, ms-python.python/installPythonPackage, ms-python.python/configurePythonEnvironment, todo
|
||||
|
||||
|
||||
|
||||
model: GPT-5.3-Codex (copilot)
|
||||
target: vscode
|
||||
user-invocable: true
|
||||
disable-model-invocation: false
|
||||
|
||||
6
.github/agents/QA_Security.agent.md
vendored
Normal file → Executable file
6
.github/agents/QA_Security.agent.md
vendored
Normal file → Executable file
@@ -2,9 +2,10 @@
|
||||
name: 'QA Security'
|
||||
description: 'Quality Assurance and Security Engineer for testing and vulnerability assessment.'
|
||||
argument-hint: 'The component or feature to test (e.g., "Run security scan on authentication endpoints")'
|
||||
tools: vscode/extensions, vscode/getProjectSetupInfo, vscode/installExtension, vscode/memory, vscode/openIntegratedBrowser, vscode/runCommand, vscode/askQuestions, vscode/vscodeAPI, execute, read, agent, 'github/*', 'github/*', 'io.github.goreleaser/mcp/*', edit, search, web, 'github/*', 'playwright/*', todo, vscode.mermaid-chat-features/renderMermaidDiagram, github.vscode-pull-request-github/issue_fetch, github.vscode-pull-request-github/labels_fetch, github.vscode-pull-request-github/notification_fetch, github.vscode-pull-request-github/doSearch, github.vscode-pull-request-github/activePullRequest, github.vscode-pull-request-github/openPullRequest, ms-azuretools.vscode-containers/containerToolsConfig, ms-python.python/getPythonEnvironmentInfo, ms-python.python/getPythonExecutableCommand, ms-python.python/installPythonPackage, ms-python.python/configurePythonEnvironment, ''
|
||||
tools: vscode/getProjectSetupInfo, vscode/installExtension, vscode/memory, vscode/runCommand, vscode/vscodeAPI, vscode/extensions, vscode/askQuestions, execute, read, edit, search, web, browser, github/add_comment_to_pending_review, github/add_issue_comment, github/add_reply_to_pull_request_comment, github/assign_copilot_to_issue, github/create_branch, github/create_or_update_file, github/create_pull_request, github/create_pull_request_with_copilot, github/create_repository, github/delete_file, github/fork_repository, github/get_commit, github/get_copilot_job_status, github/get_file_contents, github/get_label, github/get_latest_release, github/get_me, github/get_release_by_tag, github/get_tag, github/get_team_members, github/get_teams, github/issue_read, github/issue_write, github/list_branches, github/list_commits, github/list_issue_types, github/list_issues, github/list_pull_requests, github/list_releases, github/list_tags, github/merge_pull_request, github/pull_request_read, github/pull_request_review_write, github/push_files, github/request_copilot_review, github/search_code, github/search_issues, github/search_pull_requests, github/search_repositories, github/search_users, github/sub_issue_write, github/update_pull_request, github/update_pull_request_branch, playwright/*, github/*, io.github.goreleaser/mcp/*, mcp-refactor-typescript/*, microsoftdocs/mcp/*, vscode.mermaid-chat-features/renderMermaidDiagram, github.vscode-pull-request-github/issue_fetch, github.vscode-pull-request-github/labels_fetch, github.vscode-pull-request-github/notification_fetch, github.vscode-pull-request-github/doSearch, github.vscode-pull-request-github/activePullRequest, github.vscode-pull-request-github/pullRequestStatusChecks, github.vscode-pull-request-github/openPullRequest, ms-azuretools.vscode-containers/containerToolsConfig, ms-python.python/getPythonEnvironmentInfo, ms-python.python/getPythonExecutableCommand, ms-python.python/installPythonPackage, ms-python.python/configurePythonEnvironment, todo
|
||||
|
||||
|
||||
|
||||
model: GPT-5.3-Codex (copilot)
|
||||
target: vscode
|
||||
user-invocable: true
|
||||
disable-model-invocation: false
|
||||
@@ -44,6 +45,7 @@ You are a QA AND SECURITY ENGINEER responsible for testing and vulnerability ass
|
||||
- Review test failure outputs with `test_failure` tool
|
||||
|
||||
4. **Security Scanning**:
|
||||
- - Review Security: Read `security.md.instrutctions.md` and `SECURITY.md` to understand the security requirements and best practices for Charon. Ensure that any open concerns or issues are addressed in the QA Audit and `SECURITY.md` is updated accordingly.
|
||||
- **Conditional GORM Scan**: When backend model/database-related changes are
|
||||
in scope (`backend/internal/models/**`, GORM services, migrations), run
|
||||
GORM scanner in check mode and report pass/fail as DoD gate:
|
||||
|
||||
3
.github/agents/Supervisor.agent.md
vendored
Normal file → Executable file
3
.github/agents/Supervisor.agent.md
vendored
Normal file → Executable file
@@ -2,10 +2,9 @@
|
||||
name: 'Supervisor'
|
||||
description: 'Code Review Lead for quality assurance and PR review.'
|
||||
argument-hint: 'The PR or code change to review (e.g., "Review PR #123 for security issues")'
|
||||
tools: vscode/getProjectSetupInfo, vscode/installExtension, vscode/memory, vscode/runCommand, vscode/vscodeAPI, vscode/extensions, vscode/askQuestions, execute, read, edit, search, web, browser, github/add_comment_to_pending_review, github/add_issue_comment, github/add_reply_to_pull_request_comment, github/assign_copilot_to_issue, github/create_branch, github/create_or_update_file, github/create_pull_request, github/create_pull_request_with_copilot, github/create_repository, github/delete_file, github/fork_repository, github/get_commit, github/get_copilot_job_status, github/get_file_contents, github/get_label, github/get_latest_release, github/get_me, github/get_release_by_tag, github/get_tag, github/get_team_members, github/get_teams, github/issue_read, github/issue_write, github/list_branches, github/list_commits, github/list_issue_types, github/list_issues, github/list_pull_requests, github/list_releases, github/list_tags, github/merge_pull_request, github/pull_request_read, github/pull_request_review_write, github/push_files, github/request_copilot_review, github/search_code, github/search_issues, github/search_pull_requests, github/search_repositories, github/search_users, github/sub_issue_write, github/update_pull_request, github/update_pull_request_branch, playwright/*, github/*, io.github.goreleaser/mcp/*, mcp-refactor-typescript/*, microsoftdocs/mcp/*, vscode.mermaid-chat-features/renderMermaidDiagram, github.vscode-pull-request-github/issue_fetch, github.vscode-pull-request-github/labels_fetch, github.vscode-pull-request-github/notification_fetch, github.vscode-pull-request-github/doSearch, github.vscode-pull-request-github/activePullRequest, github.vscode-pull-request-github/pullRequestStatusChecks, github.vscode-pull-request-github/openPullRequest, ms-azuretools.vscode-containers/containerToolsConfig, ms-python.python/getPythonEnvironmentInfo, ms-python.python/getPythonExecutableCommand, ms-python.python/installPythonPackage, ms-python.python/configurePythonEnvironment, todo
|
||||
|
||||
tools: vscode/extensions, vscode/getProjectSetupInfo, vscode/installExtension, vscode/memory, vscode/openIntegratedBrowser, vscode/runCommand, vscode/askQuestions, vscode/vscodeAPI, execute, read, agent, 'github/*', 'github/*', 'io.github.goreleaser/mcp/*', edit, search, web, 'github/*', 'playwright/*', '', vscode.mermaid-chat-features/renderMermaidDiagram, github.vscode-pull-request-github/issue_fetch, github.vscode-pull-request-github/labels_fetch, github.vscode-pull-request-github/notification_fetch, github.vscode-pull-request-github/doSearch, github.vscode-pull-request-github/activePullRequest, github.vscode-pull-request-github/openPullRequest, ms-azuretools.vscode-containers/containerToolsConfig, ms-python.python/getPythonEnvironmentInfo, ms-python.python/getPythonExecutableCommand, ms-python.python/installPythonPackage, ms-python.python/configurePythonEnvironment, todo
|
||||
|
||||
model: GPT-5.3-Codex (copilot)
|
||||
target: vscode
|
||||
user-invocable: true
|
||||
disable-model-invocation: false
|
||||
|
||||
0
.github/codeql-custom-model.yml
vendored
Normal file → Executable file
0
.github/codeql-custom-model.yml
vendored
Normal file → Executable file
0
.github/codeql/codeql-config.yml
vendored
Normal file → Executable file
0
.github/codeql/codeql-config.yml
vendored
Normal file → Executable file
8
.github/instructions/ARCHITECTURE.instructions.md
vendored
Normal file → Executable file
8
.github/instructions/ARCHITECTURE.instructions.md
vendored
Normal file → Executable file
@@ -126,11 +126,11 @@ graph TB
|
||||
| **HTTP Framework** | Gin | Latest | Routing, middleware, HTTP handling |
|
||||
| **Database** | SQLite | 3.x | Embedded database |
|
||||
| **ORM** | GORM | Latest | Database abstraction layer |
|
||||
| **Reverse Proxy** | Caddy Server | 2.11.0-beta.2 | Embedded HTTP/HTTPS proxy |
|
||||
| **Reverse Proxy** | Caddy Server | 2.11.2 | Embedded HTTP/HTTPS proxy |
|
||||
| **WebSocket** | gorilla/websocket | Latest | Real-time log streaming |
|
||||
| **Crypto** | golang.org/x/crypto | Latest | Password hashing, encryption |
|
||||
| **Metrics** | Prometheus Client | Latest | Application metrics |
|
||||
| **Notifications** | Shoutrrr | Latest | Multi-platform alerts |
|
||||
| **Notifications** | Notify | Latest | Multi-platform alerts |
|
||||
| **Docker Client** | Docker SDK | Latest | Container discovery |
|
||||
| **Logging** | Logrus + Lumberjack | Latest | Structured logging with rotation |
|
||||
|
||||
@@ -1263,8 +1263,8 @@ docker exec charon /app/scripts/restore-backup.sh \
|
||||
- Future: Dynamic plugin loading for custom providers
|
||||
|
||||
2. **Notification Channels:**
|
||||
- Shoutrrr provides 40+ channels (Discord, Slack, Email, etc.)
|
||||
- Custom channels via Shoutrrr service URLs
|
||||
- Notify provides multi-platform channels (Discord, Slack, Gotify, etc.)
|
||||
- Provider-based configuration with per-channel feature flags
|
||||
|
||||
3. **Authentication Providers:**
|
||||
- Current: Local database authentication
|
||||
|
||||
0
.github/instructions/a11y.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/a11y.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/agent-skills.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/agent-skills.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/agents.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/agents.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/code-review-generic.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/code-review-generic.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/commit-message.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/commit-message.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/containerization-docker-best-practices.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/containerization-docker-best-practices.instructions.md
vendored
Normal file → Executable file
14
.github/instructions/copilot-instructions.md
vendored
Normal file → Executable file
14
.github/instructions/copilot-instructions.md
vendored
Normal file → Executable file
@@ -67,7 +67,7 @@ Before proposing ANY code change or fix, you must build a mental map of the feat
|
||||
|
||||
- **Run**: `cd backend && go run ./cmd/api`.
|
||||
- **Test**: `go test ./...`.
|
||||
- **Static Analysis (BLOCKING)**: Fast linters run automatically on every commit via pre-commit hooks.
|
||||
- **Static Analysis (BLOCKING)**: Fast linters run automatically on every commit via lefthook pre-commit-phase hooks.
|
||||
- **Staticcheck errors MUST be fixed** - commits are BLOCKED until resolved
|
||||
- Manual run: `make lint-fast` or VS Code task "Lint: Staticcheck (Fast)"
|
||||
- Staticcheck-only: `make lint-staticcheck-only`
|
||||
@@ -79,7 +79,7 @@ Before proposing ANY code change or fix, you must build a mental map of the feat
|
||||
- **Security**: Sanitize all file paths using `filepath.Clean`. Use `fmt.Errorf("context: %w", err)` for error wrapping.
|
||||
- **Graceful Shutdown**: Long-running work must respect `server.Run(ctx)`.
|
||||
|
||||
### Troubleshooting Pre-Commit Staticcheck Failures
|
||||
### Troubleshooting Lefthook Staticcheck Failures
|
||||
|
||||
**Common Issues:**
|
||||
|
||||
@@ -175,7 +175,7 @@ Before marking an implementation task as complete, perform the following in orde
|
||||
- **Exclusions**: Skip this gate for docs-only (`**/*.md`) or frontend-only (`frontend/**`) changes
|
||||
- **Run One Of**:
|
||||
- VS Code task: `Lint: GORM Security Scan`
|
||||
- Pre-commit: `pre-commit run --hook-stage manual gorm-security-scan --all-files`
|
||||
- Lefthook: `lefthook run pre-commit` (includes gorm-security-scan)
|
||||
- Direct: `./scripts/scan-gorm-security.sh --check`
|
||||
- **Gate Enforcement**: DoD is process-blocking until scanner reports zero
|
||||
CRITICAL/HIGH findings, even while automation remains in manual stage
|
||||
@@ -189,15 +189,15 @@ Before marking an implementation task as complete, perform the following in orde
|
||||
- **Expected Behavior**: Report may warn (non-blocking rollout), but artifact generation is mandatory.
|
||||
|
||||
3. **Security Scans** (MANDATORY - Zero Tolerance):
|
||||
- **CodeQL Go Scan**: Run VS Code task "Security: CodeQL Go Scan (CI-Aligned)" OR `pre-commit run codeql-go-scan --all-files`
|
||||
- **CodeQL Go Scan**: Run VS Code task "Security: CodeQL Go Scan (CI-Aligned)" OR `lefthook run pre-commit`
|
||||
- Must use `security-and-quality` suite (CI-aligned)
|
||||
- **Zero high/critical (error-level) findings allowed**
|
||||
- Medium/low findings should be documented and triaged
|
||||
- **CodeQL JS Scan**: Run VS Code task "Security: CodeQL JS Scan (CI-Aligned)" OR `pre-commit run codeql-js-scan --all-files`
|
||||
- **CodeQL JS Scan**: Run VS Code task "Security: CodeQL JS Scan (CI-Aligned)" OR `lefthook run pre-commit`
|
||||
- Must use `security-and-quality` suite (CI-aligned)
|
||||
- **Zero high/critical (error-level) findings allowed**
|
||||
- Medium/low findings should be documented and triaged
|
||||
- **Validate Findings**: Run `pre-commit run codeql-check-findings --all-files` to check for HIGH/CRITICAL issues
|
||||
- **Validate Findings**: Run `lefthook run pre-commit` to check for HIGH/CRITICAL issues
|
||||
- **Trivy Container Scan**: Run VS Code task "Security: Trivy Scan" for container/dependency vulnerabilities
|
||||
- **Results Viewing**:
|
||||
- Primary: VS Code SARIF Viewer extension (`MS-SarifVSCode.sarif-viewer`)
|
||||
@@ -210,7 +210,7 @@ Before marking an implementation task as complete, perform the following in orde
|
||||
- Database creation: `--threads=0 --overwrite`
|
||||
- Analysis: `--sarif-add-baseline-file-info`
|
||||
|
||||
4. **Pre-Commit Triage**: Run `pre-commit run --all-files`.
|
||||
4. **Lefthook Triage**: Run `lefthook run pre-commit`.
|
||||
- If errors occur, **fix them immediately**.
|
||||
- If logic errors occur, analyze and propose a fix.
|
||||
- Do not output code that violates pre-commit standards.
|
||||
|
||||
0
.github/instructions/documentation-coding-best-practices.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/documentation-coding-best-practices.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/features.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/features.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/github-actions-ci-cd-best-practices.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/github-actions-ci-cd-best-practices.instructions.md
vendored
Normal file → Executable file
2
.github/instructions/go.instructions.md
vendored
Normal file → Executable file
2
.github/instructions/go.instructions.md
vendored
Normal file → Executable file
@@ -353,7 +353,7 @@ Follow idiomatic Go practices and community standards when writing Go code. Thes
|
||||
### Development Practices
|
||||
|
||||
- Run tests before committing
|
||||
- Use pre-commit hooks for formatting and linting
|
||||
- Use lefthook pre-commit-phase hooks for formatting and linting
|
||||
- Keep commits focused and atomic
|
||||
- Write meaningful commit messages
|
||||
- Review diffs before committing
|
||||
|
||||
0
.github/instructions/html-css-style-color-guide.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/html-css-style-color-guide.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/instructions.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/instructions.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/makefile.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/makefile.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/markdown.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/markdown.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/nodejs-javascript-vitest.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/nodejs-javascript-vitest.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/object-calisthenics.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/object-calisthenics.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/pcf-react-platform-libraries.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/pcf-react-platform-libraries.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/performance-optimization.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/performance-optimization.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/playwright-typescript.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/playwright-typescript.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/prompt.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/prompt.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/reactjs.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/reactjs.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/security-and-owasp.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/security-and-owasp.instructions.md
vendored
Normal file → Executable file
204
.github/instructions/security.md.instructions.md
vendored
Executable file
204
.github/instructions/security.md.instructions.md
vendored
Executable file
@@ -0,0 +1,204 @@
|
||||
---
|
||||
applyTo: SECURITY.md
|
||||
---
|
||||
|
||||
# Instructions: Maintaining `SECURITY.md`
|
||||
|
||||
`SECURITY.md` is the project's living security record. It serves two audiences simultaneously: users who need to know what risks exist right now, and the broader community who need confidence that vulnerabilities are being tracked and remediated with discipline. Treat it like a changelog, but for security events — every known issue gets an entry, every resolved issue keeps its entry.
|
||||
|
||||
---
|
||||
|
||||
## File Structure
|
||||
|
||||
`SECURITY.md` must always contain the following top-level sections, in this order:
|
||||
|
||||
1. A brief project security policy preamble (responsible disclosure contact, response SLA)
|
||||
2. **`## Known Vulnerabilities`** — active, unpatched issues
|
||||
3. **`## Patched Vulnerabilities`** — resolved issues, retained permanently for audit trail
|
||||
|
||||
No other top-level sections are required. Do not collapse or remove sections even when they are empty — use the explicit empty-state placeholder defined below.
|
||||
|
||||
---
|
||||
|
||||
## Section 1: Known Vulnerabilities
|
||||
|
||||
This section lists every vulnerability that is currently unpatched or only partially mitigated. Entries must be sorted with the highest severity first, then by discovery date descending within the same severity tier.
|
||||
|
||||
### Entry Format
|
||||
|
||||
Each entry is an H3 heading followed by a structured block:
|
||||
|
||||
```markdown
|
||||
### [SEVERITY] CVE-XXXX-XXXXX · Short Title
|
||||
|
||||
| Field | Value |
|
||||
|--------------|-------|
|
||||
| **ID** | CVE-XXXX-XXXXX (or `CHARON-YYYY-NNN` if no CVE assigned yet) |
|
||||
| **Severity** | Critical / High / Medium / Low · CVSS v3.1 score if known (e.g. `8.1 · High`) |
|
||||
| **Status** | Investigating / Fix In Progress / Awaiting Upstream / Mitigated (partial) |
|
||||
|
||||
**What**
|
||||
One to three sentences describing the vulnerability class and its impact.
|
||||
Be specific: name the weakness type (e.g. SQL injection, path traversal, SSRF).
|
||||
|
||||
**Who**
|
||||
- Discovered by: [Reporter name or handle, or "Internal audit", or "Automated scan (tool name)"]
|
||||
- Reported: YYYY-MM-DD
|
||||
- Affects: [User roles, API consumers, unauthenticated users, etc.]
|
||||
|
||||
**Where**
|
||||
- Component: [Module or service name]
|
||||
- File(s): `path/to/affected/file.go`, `path/to/other/file.ts`
|
||||
- Versions affected: `>= X.Y.Z` (or "all versions" / "prior to X.Y.Z")
|
||||
|
||||
**When**
|
||||
- Discovered: YYYY-MM-DD
|
||||
- Disclosed (if public): YYYY-MM-DD (or "Not yet publicly disclosed")
|
||||
- Target fix: YYYY-MM-DD (or sprint/milestone reference)
|
||||
|
||||
**How**
|
||||
A concise technical description of the attack vector, prerequisites, and exploitation
|
||||
method. Omit proof-of-concept code. Reference CVE advisories or upstream issue
|
||||
trackers where appropriate.
|
||||
|
||||
**Planned Remediation**
|
||||
Describe the fix strategy: library upgrade, logic refactor, config change, etc.
|
||||
If a workaround is available in the meantime, document it here.
|
||||
Link to the tracking issue: [#NNN](https://github.com/owner/repo/issues/NNN)
|
||||
```
|
||||
|
||||
### Empty State
|
||||
|
||||
When there are no known vulnerabilities:
|
||||
|
||||
```markdown
|
||||
## Known Vulnerabilities
|
||||
|
||||
No known unpatched vulnerabilities at this time.
|
||||
Last reviewed: YYYY-MM-DD
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Section 2: Patched Vulnerabilities
|
||||
|
||||
This section is a permanent, append-only ledger. Entries are never deleted. Sort newest-patched first. This section builds community trust by demonstrating that issues are resolved promptly and transparently.
|
||||
|
||||
### Entry Format
|
||||
|
||||
```markdown
|
||||
### ✅ [SEVERITY] CVE-XXXX-XXXXX · Short Title
|
||||
|
||||
| Field | Value |
|
||||
|--------------|-------|
|
||||
| **ID** | CVE-XXXX-XXXXX (or internal ID) |
|
||||
| **Severity** | Critical / High / Medium / Low · CVSS v3.1 score |
|
||||
| **Patched** | YYYY-MM-DD in `vX.Y.Z` |
|
||||
|
||||
**What**
|
||||
Same description carried over from the Known Vulnerabilities entry.
|
||||
|
||||
**Who**
|
||||
- Discovered by: [Reporter or method]
|
||||
- Reported: YYYY-MM-DD
|
||||
|
||||
**Where**
|
||||
- Component: [Module or service name]
|
||||
- File(s): `path/to/affected/file.go`
|
||||
- Versions affected: `< X.Y.Z`
|
||||
|
||||
**When**
|
||||
- Discovered: YYYY-MM-DD
|
||||
- Patched: YYYY-MM-DD
|
||||
- Time to patch: N days
|
||||
|
||||
**How**
|
||||
Same technical description as the original entry.
|
||||
|
||||
**Resolution**
|
||||
Describe exactly what was changed to fix the issue.
|
||||
- Commit: [`abc1234`](https://github.com/owner/repo/commit/abc1234)
|
||||
- PR: [#NNN](https://github.com/owner/repo/pull/NNN)
|
||||
- Release: [`vX.Y.Z`](https://github.com/owner/repo/releases/tag/vX.Y.Z)
|
||||
|
||||
**Credit**
|
||||
[Optional] Thank the reporter if they consented to attribution.
|
||||
```
|
||||
|
||||
### Empty State
|
||||
|
||||
```markdown
|
||||
## Patched Vulnerabilities
|
||||
|
||||
No patched vulnerabilities on record yet.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Lifecycle: Moving an Entry from Known → Patched
|
||||
|
||||
When a fix ships:
|
||||
|
||||
1. Remove the entry from `## Known Vulnerabilities` entirely.
|
||||
2. Add a new entry to the **top** of `## Patched Vulnerabilities` using the patched format above.
|
||||
3. Carry forward all original fields verbatim — do not rewrite the history of the issue.
|
||||
4. Add the `**Resolution**` and `**Credit**` blocks with patch details.
|
||||
5. Update the `Last reviewed` date on the Known Vulnerabilities section if it is now empty.
|
||||
|
||||
Do not edit or backfill existing Patched entries once they are committed.
|
||||
|
||||
---
|
||||
|
||||
## Severity Classification
|
||||
|
||||
Use the following definitions consistently:
|
||||
|
||||
| Severity | CVSS Range | Meaning |
|
||||
|----------|------------|---------|
|
||||
| **Critical** | 9.0–10.0 | Remote code execution, auth bypass, full data exposure |
|
||||
| **High** | 7.0–8.9 | Significant data exposure, privilege escalation, DoS |
|
||||
| **Medium** | 4.0–6.9 | Limited data exposure, requires user interaction or auth |
|
||||
| **Low** | 0.1–3.9 | Minimal impact, difficult to exploit, defense-in-depth |
|
||||
|
||||
When a CVE CVSS score is not yet available, assign a preliminary severity based on these definitions and note it as `(preliminary)` until confirmed.
|
||||
|
||||
---
|
||||
|
||||
## Internal IDs
|
||||
|
||||
If a vulnerability has no CVE assigned, use the format `CHARON-YYYY-NNN` where `YYYY` is the year and `NNN` is a zero-padded sequence number starting at `001` for each year. Example: `CHARON-2025-003`. Assign a CVE ID in the entry retroactively if one is issued later, and add the internal ID as an alias in parentheses.
|
||||
|
||||
---
|
||||
|
||||
## Responsible Disclosure Preamble
|
||||
|
||||
The preamble at the top of `SECURITY.md` (before the vulnerability sections) must include:
|
||||
|
||||
- The preferred contact method for reporting vulnerabilities (e.g. a GitHub private advisory link, a security email address, or both)
|
||||
- An acknowledgment-first response commitment: confirm receipt within 48 hours, even if the full investigation takes longer
|
||||
- A statement that reporters will not be penalized or publicly named without consent
|
||||
- A link to the full disclosure policy if one exists
|
||||
|
||||
Example:
|
||||
|
||||
```markdown
|
||||
## Reporting a Vulnerability
|
||||
|
||||
To report a security issue, please use
|
||||
[GitHub Private Security Advisories](https://github.com/owner/repo/security/advisories/new)
|
||||
or email `security@example.com`.
|
||||
|
||||
We will acknowledge your report within **48 hours** and provide a remediation
|
||||
timeline within **7 days**. Reporters are credited with their consent.
|
||||
We do not pursue legal action against good-faith security researchers.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Maintenance Rules
|
||||
|
||||
- **Review cadence**: Update the `Last reviewed` date in the Known Vulnerabilities section at least once per release cycle, even if no entries changed.
|
||||
- **No silent patches**: Every security fix — no matter how minor — must produce an entry in `## Patched Vulnerabilities` before or alongside the release.
|
||||
- **No redaction**: Do not redact or soften historical entries. Accuracy builds trust; minimizing past issues destroys it.
|
||||
- **Dependency vulnerabilities**: Transitive dependency CVEs that affect Charon's exposed attack surface must be tracked here the same as first-party vulnerabilities. Pure dev-dependency CVEs with no runtime impact may be omitted at maintainer discretion, but must still be noted in the relevant dependency update PR.
|
||||
- **Partial mitigations**: If a workaround is deployed but the root cause is not fixed, the entry stays in `## Known Vulnerabilities` with `Status: Mitigated (partial)` and the workaround documented in `**Planned Remediation**`.
|
||||
0
.github/instructions/self-explanatory-code-commenting.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/self-explanatory-code-commenting.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/shell.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/shell.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/spec-driven-workflow-v1.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/spec-driven-workflow-v1.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/sql-sp-generation.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/sql-sp-generation.instructions.md
vendored
Normal file → Executable file
2
.github/instructions/structure.instructions.md
vendored
Normal file → Executable file
2
.github/instructions/structure.instructions.md
vendored
Normal file → Executable file
@@ -9,7 +9,7 @@ description: 'Repository structure guidelines to maintain organized file placeme
|
||||
|
||||
The repository root should contain ONLY:
|
||||
|
||||
- Essential config files (`.gitignore`, `.pre-commit-config.yaml`, `Makefile`, etc.)
|
||||
- Essential config files (`.gitignore`, `Makefile`, etc.)
|
||||
- Standard project files (`README.md`, `CONTRIBUTING.md`, `LICENSE`, `CHANGELOG.md`)
|
||||
- Go workspace files (`go.work`, `go.work.sum`)
|
||||
- VS Code workspace (`Chiron.code-workspace`)
|
||||
|
||||
20
.github/instructions/subagent.instructions.md
vendored
Normal file → Executable file
20
.github/instructions/subagent.instructions.md
vendored
Normal file → Executable file
@@ -23,21 +23,21 @@ runSubagent({
|
||||
|
||||
- Validate: `plan_file` exists and contains a `Handoff Contract` JSON.
|
||||
- Kickoff: call `Planning` to create the plan if not present.
|
||||
- Decide: check if work should be split into multiple PRs (size, risk, cross-domain impact).
|
||||
- Decide: check how to organize work into logical commits within a single PR (size, risk, cross-domain impact).
|
||||
- Run: execute `Backend Dev` then `Frontend Dev` sequentially.
|
||||
- Parallel: run `QA and Security`, `DevOps` and `Doc Writer` in parallel for CI / QA checks and documentation.
|
||||
- Return: a JSON summary with `subagent_results`, `overall_status`, and aggregated artifacts.
|
||||
|
||||
2.1) Multi-PR Slicing Protocol
|
||||
2.1) Multi-Commit Slicing Protocol
|
||||
|
||||
- If a task is large or high-risk, split into PR slices and execute in order.
|
||||
- Each slice must have:
|
||||
- All work for a single feature ships as one PR with ordered logical commits.
|
||||
- Each commit must have:
|
||||
- Scope boundary (what is included/excluded)
|
||||
- Dependency on previous slices
|
||||
- Validation gates (tests/scans required for that slice)
|
||||
- Explicit rollback notes
|
||||
- Do not start the next slice until the current slice is complete and verified.
|
||||
- Keep each slice independently reviewable and deployable.
|
||||
- Dependency on previous commits
|
||||
- Validation gates (tests/scans required for that commit)
|
||||
- Explicit rollback notes for the PR as a whole
|
||||
- Do not start the next commit until the current commit is complete and verified.
|
||||
- Keep each commit independently reviewable within the PR.
|
||||
|
||||
3) Return Contract that all subagents must return
|
||||
|
||||
@@ -55,7 +55,7 @@ runSubagent({
|
||||
|
||||
- On a subagent failure, the Management agent must capture `tests.output` and decide to retry (1 retry maximum), or request a revert/rollback.
|
||||
- Clearly mark the `status` as `failed`, and include `errors` and `failing_tests` in the `summary`.
|
||||
- For multi-PR execution, mark failed slice as blocked and stop downstream slices until resolved.
|
||||
- For multi-commit execution, mark failed commit as blocked and stop downstream commits until resolved.
|
||||
|
||||
5) Example: Run a full Feature Implementation
|
||||
|
||||
|
||||
0
.github/instructions/taming-copilot.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/taming-copilot.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/tanstack-start-shadcn-tailwind.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/tanstack-start-shadcn-tailwind.instructions.md
vendored
Normal file → Executable file
21
.github/instructions/testing.instructions.md
vendored
Normal file → Executable file
21
.github/instructions/testing.instructions.md
vendored
Normal file → Executable file
@@ -12,9 +12,19 @@ instruction files take precedence over agent files and operator documentation.
|
||||
|
||||
**MANDATORY**: Before running unit tests, verify the application UI/UX functions correctly end-to-end.
|
||||
|
||||
## 0.5 Local Patch Coverage Preflight (Before Unit Tests)
|
||||
## 0.5 Local Patch Coverage Report (After Coverage Tests)
|
||||
|
||||
**MANDATORY**: After E2E and before backend/frontend unit coverage runs, generate a local patch report so uncovered changed lines are visible early.
|
||||
**MANDATORY**: After running backend and frontend coverage tests (which generate
|
||||
`backend/coverage.txt` and `frontend/coverage/lcov.info`), run the local patch
|
||||
report to identify uncovered lines in changed files.
|
||||
|
||||
**Purpose**: Overall coverage can be healthy while the specific lines you changed
|
||||
are untested. This step catches that gap. If uncovered lines are found in
|
||||
feature code, add targeted tests before completing the task.
|
||||
|
||||
**Prerequisites**: Coverage artifacts must exist before running the report:
|
||||
- `backend/coverage.txt` — generated by `scripts/go-test-coverage.sh`
|
||||
- `frontend/coverage/lcov.info` — generated by `scripts/frontend-test-coverage.sh`
|
||||
|
||||
Run one of the following from `/projects/Charon`:
|
||||
|
||||
@@ -26,11 +36,14 @@ Test: Local Patch Report
|
||||
bash scripts/local-patch-report.sh
|
||||
```
|
||||
|
||||
Required artifacts:
|
||||
Required output artifacts:
|
||||
- `test-results/local-patch-report.md`
|
||||
- `test-results/local-patch-report.json`
|
||||
|
||||
This preflight is advisory for thresholds during rollout, but artifact generation is required in DoD.
|
||||
**Action on results**: If patch coverage for any changed file is below 90%, add
|
||||
tests targeting the uncovered changed lines. Re-run coverage and this report to
|
||||
verify improvement. Artifact generation is required for DoD regardless of
|
||||
threshold results.
|
||||
|
||||
### PREREQUISITE: Start E2E Environment
|
||||
|
||||
|
||||
0
.github/instructions/typescript-5-es2022.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/typescript-5-es2022.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/update-docs-on-code-change.instructions.md
vendored
Normal file → Executable file
0
.github/instructions/update-docs-on-code-change.instructions.md
vendored
Normal file → Executable file
0
.github/prompts/ai-prompt-engineering-safety-review.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/ai-prompt-engineering-safety-review.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/breakdown-feature-implementation.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/breakdown-feature-implementation.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/codecov-patch-coverage-fix.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/codecov-patch-coverage-fix.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/create-github-issues-feature-from-implementation-plan.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/create-github-issues-feature-from-implementation-plan.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/create-implementation-plan.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/create-implementation-plan.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/create-technical-spike.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/create-technical-spike.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/debug-web-console-errors.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/debug-web-console-errors.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/playwright-explore-website.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/playwright-explore-website.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/playwright-generate-test.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/playwright-generate-test.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/prompt-builder.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/prompt-builder.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/sql-code-review.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/sql-code-review.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/sql-optimization.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/sql-optimization.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/structured-autonomy-generate.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/structured-autonomy-generate.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/structured-autonomy-implement.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/structured-autonomy-implement.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/structured-autonomy-plan.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/structured-autonomy-plan.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/suggest-awesome-github-copilot-agents.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/suggest-awesome-github-copilot-agents.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/suggest-awesome-github-copilot-chatmodes.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/suggest-awesome-github-copilot-chatmodes.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/suggest-awesome-github-copilot-collections.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/suggest-awesome-github-copilot-collections.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/suggest-awesome-github-copilot-instructions.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/suggest-awesome-github-copilot-instructions.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/suggest-awesome-github-copilot-prompts.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/suggest-awesome-github-copilot-prompts.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/supply-chain-vulnerability-remediation.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/supply-chain-vulnerability-remediation.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/update-implementation-plan.prompt.md
vendored
Normal file → Executable file
0
.github/prompts/update-implementation-plan.prompt.md
vendored
Normal file → Executable file
0
.github/propagate-config.yml
vendored
Normal file → Executable file
0
.github/propagate-config.yml
vendored
Normal file → Executable file
0
.github/release-drafter.yml
vendored
Normal file → Executable file
0
.github/release-drafter.yml
vendored
Normal file → Executable file
170
.github/renovate.json
vendored
Normal file → Executable file
170
.github/renovate.json
vendored
Normal file → Executable file
@@ -6,11 +6,11 @@
|
||||
":separateMultipleMajorReleases",
|
||||
"helpers:pinGitHubActionDigests"
|
||||
],
|
||||
"baseBranches": [
|
||||
"baseBranchPatterns": [
|
||||
"feature/beta-release",
|
||||
"development"
|
||||
|
||||
],
|
||||
"postUpdateOptions": ["npmDedupe"],
|
||||
"timezone": "America/New_York",
|
||||
"dependencyDashboard": true,
|
||||
"dependencyDashboardApproval": true,
|
||||
@@ -27,7 +27,10 @@
|
||||
"rebaseWhen": "auto",
|
||||
|
||||
"vulnerabilityAlerts": {
|
||||
"enabled": true
|
||||
"enabled": true,
|
||||
"dependencyDashboardApproval": false,
|
||||
"automerge": false,
|
||||
"labels": ["security", "vulnerability"]
|
||||
},
|
||||
|
||||
"rangeStrategy": "bump",
|
||||
@@ -36,6 +39,19 @@
|
||||
"platformAutomerge": true,
|
||||
|
||||
"customManagers": [
|
||||
{
|
||||
"customType": "regex",
|
||||
"description": "Track caddy-security plugin version in Dockerfile",
|
||||
"managerFilePatterns": [
|
||||
"/^Dockerfile$/"
|
||||
],
|
||||
"matchStrings": [
|
||||
"ARG CADDY_SECURITY_VERSION=(?<currentValue>[^\\s]+)"
|
||||
],
|
||||
"depNameTemplate": "github.com/greenpau/caddy-security",
|
||||
"datasourceTemplate": "go",
|
||||
"versioningTemplate": "semver"
|
||||
},
|
||||
{
|
||||
"customType": "regex",
|
||||
"description": "Track Go dependencies patched in Dockerfile for Caddy CVE fixes",
|
||||
@@ -53,12 +69,45 @@
|
||||
"description": "Track Alpine base image digest in Dockerfile for security updates",
|
||||
"managerFilePatterns": ["/^Dockerfile$/"],
|
||||
"matchStrings": [
|
||||
"#\\s*renovate:\\s*datasource=docker\\s+depName=alpine.*\\nARG CADDY_IMAGE=alpine:(?<currentValue>[^\\s@]+@sha256:[a-f0-9]+)"
|
||||
"#\\s*renovate:\\s*datasource=docker\\s+depName=alpine.*\\nARG ALPINE_IMAGE=alpine:(?<currentValue>[^@\\s]+)@(?<currentDigest>sha256:[a-f0-9]+)"
|
||||
],
|
||||
"depNameTemplate": "alpine",
|
||||
"datasourceTemplate": "docker",
|
||||
"versioningTemplate": "docker"
|
||||
},
|
||||
{
|
||||
"customType": "regex",
|
||||
"description": "Track Go toolchain version ARG in Dockerfile",
|
||||
"managerFilePatterns": ["/^Dockerfile$/"],
|
||||
"matchStrings": [
|
||||
"#\\s*renovate:\\s*datasource=docker\\s+depName=golang.*\\nARG GO_VERSION=(?<currentValue>[^\\s]+)"
|
||||
],
|
||||
"depNameTemplate": "golang",
|
||||
"datasourceTemplate": "docker",
|
||||
"versioningTemplate": "docker"
|
||||
},
|
||||
{
|
||||
"customType": "regex",
|
||||
"description": "Track expr-lang version ARG in Dockerfile",
|
||||
"managerFilePatterns": ["/^Dockerfile$/"],
|
||||
"matchStrings": [
|
||||
"#\\s*renovate:\\s*datasource=go\\s+depName=github\\.com/expr-lang/expr.*\\nARG EXPR_LANG_VERSION=(?<currentValue>[^\\s]+)"
|
||||
],
|
||||
"depNameTemplate": "github.com/expr-lang/expr",
|
||||
"datasourceTemplate": "go",
|
||||
"versioningTemplate": "semver"
|
||||
},
|
||||
{
|
||||
"customType": "regex",
|
||||
"description": "Track golang.org/x/net version ARG in Dockerfile",
|
||||
"managerFilePatterns": ["/^Dockerfile$/"],
|
||||
"matchStrings": [
|
||||
"#\\s*renovate:\\s*datasource=go\\s+depName=golang\\.org/x/net.*\\nARG XNET_VERSION=(?<currentValue>[^\\s]+)"
|
||||
],
|
||||
"depNameTemplate": "golang.org/x/net",
|
||||
"datasourceTemplate": "go",
|
||||
"versioningTemplate": "semver"
|
||||
},
|
||||
{
|
||||
"customType": "regex",
|
||||
"description": "Track Delve version in Dockerfile",
|
||||
@@ -81,6 +130,32 @@
|
||||
"datasourceTemplate": "go",
|
||||
"versioningTemplate": "semver"
|
||||
},
|
||||
{
|
||||
"customType": "regex",
|
||||
"description": "Track gotestsum version in codecov workflow",
|
||||
"managerFilePatterns": [
|
||||
"/^\\.github/workflows/codecov-upload\\.yml$/"
|
||||
],
|
||||
"matchStrings": [
|
||||
"gotestsum@v(?<currentValue>[^\\s]+)"
|
||||
],
|
||||
"depNameTemplate": "gotest.tools/gotestsum",
|
||||
"datasourceTemplate": "go",
|
||||
"versioningTemplate": "semver"
|
||||
},
|
||||
{
|
||||
"customType": "regex",
|
||||
"description": "Track gotestsum version in quality checks workflow",
|
||||
"managerFilePatterns": [
|
||||
"/^\\.github/workflows/quality-checks\\.yml$/"
|
||||
],
|
||||
"matchStrings": [
|
||||
"gotestsum@v(?<currentValue>[^\\s]+)"
|
||||
],
|
||||
"depNameTemplate": "gotest.tools/gotestsum",
|
||||
"datasourceTemplate": "go",
|
||||
"versioningTemplate": "semver"
|
||||
},
|
||||
{
|
||||
"customType": "regex",
|
||||
"description": "Track govulncheck version in scripts",
|
||||
@@ -117,27 +192,78 @@
|
||||
{
|
||||
"customType": "regex",
|
||||
"description": "Track GO_VERSION in Actions workflows",
|
||||
"fileMatch": ["^\\.github/workflows/.*\\.yml$"],
|
||||
"managerFilePatterns": ["/^\\.github/workflows/.*\\.yml$/"],
|
||||
"matchStrings": [
|
||||
"GO_VERSION: ['\"]?(?<currentValue>[\\d\\.]+)['\"]?"
|
||||
],
|
||||
"depNameTemplate": "golang/go",
|
||||
"datasourceTemplate": "golang-version",
|
||||
"versioningTemplate": "semver"
|
||||
},
|
||||
{
|
||||
"customType": "regex",
|
||||
"description": "Track Syft version in workflows and scripts",
|
||||
"managerFilePatterns": [
|
||||
"/^\\.github/workflows/nightly-build\\.yml$/",
|
||||
"/^\\.github/skills/security-scan-docker-image-scripts/run\\.sh$/"
|
||||
],
|
||||
"matchStrings": [
|
||||
"SYFT_VERSION=\\\"v(?<currentValue>[^\\\"\\s]+)\\\"",
|
||||
"set_default_env \\\"SYFT_VERSION\\\" \\\"v(?<currentValue>[^\\\"]+)\\\""
|
||||
],
|
||||
"depNameTemplate": "anchore/syft",
|
||||
"datasourceTemplate": "github-releases",
|
||||
"versioningTemplate": "semver",
|
||||
"extractVersionTemplate": "^v(?<version>.*)$"
|
||||
},
|
||||
{
|
||||
"customType": "regex",
|
||||
"description": "Track Grype version in workflows and scripts",
|
||||
"managerFilePatterns": [
|
||||
"/^\\.github/workflows/supply-chain-pr\\.yml$/",
|
||||
"/^\\.github/skills/security-scan-docker-image-scripts/run\\.sh$/"
|
||||
],
|
||||
"matchStrings": [
|
||||
"anchore/grype/main/install\\.sh \\| sh -s -- -b /usr/local/bin v(?<currentValue>[0-9]+\\.[0-9]+\\.[0-9]+)",
|
||||
"set_default_env \\\"GRYPE_VERSION\\\" \\\"v(?<currentValue>[^\\\"]+)\\\""
|
||||
],
|
||||
"depNameTemplate": "anchore/grype",
|
||||
"datasourceTemplate": "github-releases",
|
||||
"versioningTemplate": "semver",
|
||||
"extractVersionTemplate": "^v(?<version>.*)$"
|
||||
},
|
||||
{
|
||||
"customType": "regex",
|
||||
"description": "Track go-version in skill example workflows",
|
||||
"managerFilePatterns": ["/^\\.github/skills/examples/.*\\.yml$/"],
|
||||
"matchStrings": [
|
||||
"go-version: [\"']?(?<currentValue>[\\d\\.]+)[\"']?"
|
||||
],
|
||||
"depNameTemplate": "golang/go",
|
||||
"datasourceTemplate": "golang-version",
|
||||
"versioningTemplate": "semver"
|
||||
}
|
||||
],
|
||||
|
||||
"github-actions": {
|
||||
"managerFilePatterns": [
|
||||
"/^\\.github/skills/examples/.*\\.ya?ml$/"
|
||||
]
|
||||
},
|
||||
|
||||
"packageRules": [
|
||||
{
|
||||
"description": "THE MEGAZORD: Group ALL non-major updates (NPM, Docker, Go, Actions) into one PR",
|
||||
"matchPackagePatterns": ["*"],
|
||||
"matchUpdateTypes": [
|
||||
"minor",
|
||||
"patch",
|
||||
"pin",
|
||||
"digest"
|
||||
],
|
||||
"groupName": "non-major-updates"
|
||||
"groupName": "non-major-updates",
|
||||
"matchPackageNames": [
|
||||
"*"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "Feature branches: Auto-merge non-major updates after proven stable",
|
||||
@@ -169,11 +295,41 @@
|
||||
"matchPackageNames": ["caddy"],
|
||||
"allowedVersions": "<3.0.0"
|
||||
},
|
||||
{
|
||||
"description": "Go: keep pgx within v4 (CrowdSec requires pgx/v4 module path)",
|
||||
"matchDatasources": ["go"],
|
||||
"matchPackageNames": ["github.com/jackc/pgx/v4"],
|
||||
"allowedVersions": "<5.0.0"
|
||||
},
|
||||
{
|
||||
"description": "Go: keep go-jose/v3 within v3 (v4 is a different Go module path)",
|
||||
"matchDatasources": ["go"],
|
||||
"matchPackageNames": ["github.com/go-jose/go-jose/v3"],
|
||||
"allowedVersions": "<4.0.0"
|
||||
},
|
||||
{
|
||||
"description": "Go: keep go-jose/v4 within v4 (v5 would be a different Go module path)",
|
||||
"matchDatasources": ["go"],
|
||||
"matchPackageNames": ["github.com/go-jose/go-jose/v4"],
|
||||
"allowedVersions": "<5.0.0"
|
||||
},
|
||||
{
|
||||
"description": "Safety: Keep MAJOR updates separate and require manual review",
|
||||
"matchUpdateTypes": ["major"],
|
||||
"automerge": false,
|
||||
"labels": ["manual-review"]
|
||||
},
|
||||
{
|
||||
"description": "Fix Renovate lookup for geoip2-golang v2 module path",
|
||||
"matchDatasources": ["go"],
|
||||
"matchPackageNames": ["github.com/oschwald/geoip2-golang/v2"],
|
||||
"sourceUrl": "https://github.com/oschwald/geoip2-golang"
|
||||
},
|
||||
{
|
||||
"description": "Fix Renovate lookup for google/uuid",
|
||||
"matchDatasources": ["go"],
|
||||
"matchPackageNames": ["github.com/google/uuid"],
|
||||
"sourceUrl": "https://github.com/google/uuid"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
55
.github/security-severity-policy.yml
vendored
Executable file
55
.github/security-severity-policy.yml
vendored
Executable file
@@ -0,0 +1,55 @@
|
||||
version: 1
|
||||
effective_date: 2026-02-25
|
||||
scope:
|
||||
- local pre-commit manual security hooks
|
||||
- github actions security workflows
|
||||
|
||||
defaults:
|
||||
blocking:
|
||||
- critical
|
||||
- high
|
||||
medium:
|
||||
mode: risk-based
|
||||
default_action: report
|
||||
require_sla: true
|
||||
default_sla_days: 14
|
||||
escalation:
|
||||
trigger: high-signal class or repeated finding
|
||||
action: require issue + owner + due date
|
||||
low:
|
||||
action: report
|
||||
|
||||
codeql:
|
||||
severity_mapping:
|
||||
error: high_or_critical
|
||||
warning: medium_or_lower
|
||||
note: informational
|
||||
blocking_levels:
|
||||
- error
|
||||
warning_policy:
|
||||
default_action: report
|
||||
escalation_high_signal_rule_ids:
|
||||
- go/request-forgery
|
||||
- js/missing-rate-limiting
|
||||
- js/insecure-randomness
|
||||
|
||||
trivy:
|
||||
blocking_severities:
|
||||
- CRITICAL
|
||||
- HIGH
|
||||
medium_policy:
|
||||
action: report
|
||||
escalation: issue-with-sla
|
||||
|
||||
grype:
|
||||
blocking_severities:
|
||||
- Critical
|
||||
- High
|
||||
medium_policy:
|
||||
action: report
|
||||
escalation: issue-with-sla
|
||||
|
||||
enforcement_contract:
|
||||
codeql_local_vs_ci: "local and ci block on codeql error-level findings only"
|
||||
supply_chain_medium: "medium vulnerabilities are non-blocking by default and require explicit triage"
|
||||
auth_regression_guard: "state-changing routes must remain protected by auth middleware"
|
||||
0
.github/skills/.skill-quickref-gorm-scanner.md
vendored
Normal file → Executable file
0
.github/skills/.skill-quickref-gorm-scanner.md
vendored
Normal file → Executable file
2
.github/skills/README.md
vendored
Normal file → Executable file
2
.github/skills/README.md
vendored
Normal file → Executable file
@@ -63,7 +63,7 @@ Agent Skills are self-documenting, AI-discoverable task definitions that combine
|
||||
|
||||
| Skill Name | Category | Description | Status |
|
||||
|------------|----------|-------------|--------|
|
||||
| [qa-precommit-all](./qa-precommit-all.SKILL.md) | qa | Run all pre-commit hooks on entire codebase | ✅ Active |
|
||||
| [qa-lefthook-all](./qa-lefthook-all.SKILL.md) | qa | Run all lefthook pre-commit‑phase hooks on entire codebase | ✅ Active |
|
||||
|
||||
### Utility Skills
|
||||
|
||||
|
||||
0
.github/skills/docker-prune.SKILL.md
vendored
Normal file → Executable file
0
.github/skills/docker-prune.SKILL.md
vendored
Normal file → Executable file
0
.github/skills/docker-rebuild-e2e.SKILL.md
vendored
Normal file → Executable file
0
.github/skills/docker-rebuild-e2e.SKILL.md
vendored
Normal file → Executable file
0
.github/skills/docker-start-dev.SKILL.md
vendored
Normal file → Executable file
0
.github/skills/docker-start-dev.SKILL.md
vendored
Normal file → Executable file
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user