@planu/cli 0.80.1 → 0.81.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/config/ac-gap-keywords.json +144 -0
- package/dist/config/challenge-scenarios.json +114 -0
- package/dist/config/code-quality-thresholds.json +114 -0
- package/dist/config/compliance-frameworks.json +150 -0
- package/dist/config/dor-dod-items.json +214 -0
- package/dist/config/drift-severity.json +22 -0
- package/dist/config/elicitation-questions.json +70 -0
- package/dist/config/feasibility-rules.json +91 -0
- package/dist/config/rbac-roles.json +27 -0
- package/dist/config/readiness-config.json +18 -0
- package/dist/config/spec-types.json +42 -0
- package/dist/engine/ac-gap-detector/constants.d.ts.map +1 -1
- package/dist/engine/ac-gap-detector/constants.js +24 -126
- package/dist/engine/ac-gap-detector/constants.js.map +1 -1
- package/dist/engine/ac-gap-detector/keyword-loader.d.ts +13 -0
- package/dist/engine/ac-gap-detector/keyword-loader.d.ts.map +1 -0
- package/dist/engine/ac-gap-detector/keyword-loader.js +35 -0
- package/dist/engine/ac-gap-detector/keyword-loader.js.map +1 -0
- package/dist/engine/challenge-scenarios-loader.d.ts +46 -0
- package/dist/engine/challenge-scenarios-loader.d.ts.map +1 -0
- package/dist/engine/challenge-scenarios-loader.js +83 -0
- package/dist/engine/challenge-scenarios-loader.js.map +1 -0
- package/dist/engine/code-quality-thresholds-loader.d.ts +27 -0
- package/dist/engine/code-quality-thresholds-loader.d.ts.map +1 -0
- package/dist/engine/code-quality-thresholds-loader.js +88 -0
- package/dist/engine/code-quality-thresholds-loader.js.map +1 -0
- package/dist/engine/compliance-injector.d.ts +46 -0
- package/dist/engine/compliance-injector.d.ts.map +1 -0
- package/dist/engine/compliance-injector.js +121 -0
- package/dist/engine/compliance-injector.js.map +1 -0
- package/dist/engine/dor-dod/dod.d.ts +3 -2
- package/dist/engine/dor-dod/dod.d.ts.map +1 -1
- package/dist/engine/dor-dod/dod.js +38 -73
- package/dist/engine/dor-dod/dod.js.map +1 -1
- package/dist/engine/dor-dod/dor.d.ts +3 -2
- package/dist/engine/dor-dod/dor.d.ts.map +1 -1
- package/dist/engine/dor-dod/dor.js +75 -125
- package/dist/engine/dor-dod/dor.js.map +1 -1
- package/dist/engine/dor-dod/items-loader.d.ts +18 -0
- package/dist/engine/dor-dod/items-loader.d.ts.map +1 -0
- package/dist/engine/dor-dod/items-loader.js +55 -0
- package/dist/engine/dor-dod/items-loader.js.map +1 -0
- package/dist/engine/elicitation/question-generator.d.ts.map +1 -1
- package/dist/engine/elicitation/question-generator.js +74 -63
- package/dist/engine/elicitation/question-generator.js.map +1 -1
- package/dist/engine/feasibility-rules-loader.d.ts +13 -0
- package/dist/engine/feasibility-rules-loader.d.ts.map +1 -0
- package/dist/engine/feasibility-rules-loader.js +39 -0
- package/dist/engine/feasibility-rules-loader.js.map +1 -0
- package/dist/engine/feasibility-validator.d.ts +1 -1
- package/dist/engine/feasibility-validator.d.ts.map +1 -1
- package/dist/engine/feasibility-validator.js +21 -78
- package/dist/engine/feasibility-validator.js.map +1 -1
- package/dist/engine/rbac/roles.d.ts +13 -5
- package/dist/engine/rbac/roles.d.ts.map +1 -1
- package/dist/engine/rbac/roles.js +58 -24
- package/dist/engine/rbac/roles.js.map +1 -1
- package/dist/engine/readiness-checker.d.ts +1 -1
- package/dist/engine/readiness-checker.d.ts.map +1 -1
- package/dist/engine/readiness-checker.js +10 -12
- package/dist/engine/readiness-checker.js.map +1 -1
- package/dist/engine/readiness-config-loader.d.ts +8 -0
- package/dist/engine/readiness-config-loader.d.ts.map +1 -0
- package/dist/engine/readiness-config-loader.js +58 -0
- package/dist/engine/readiness-config-loader.js.map +1 -0
- package/dist/engine/spec-types-loader.d.ts +22 -0
- package/dist/engine/spec-types-loader.d.ts.map +1 -0
- package/dist/engine/spec-types-loader.js +50 -0
- package/dist/engine/spec-types-loader.js.map +1 -0
- package/dist/engine/validator/analyzer.d.ts +1 -0
- package/dist/engine/validator/analyzer.d.ts.map +1 -1
- package/dist/engine/validator/analyzer.js +31 -8
- package/dist/engine/validator/analyzer.js.map +1 -1
- package/dist/types/common/primitives.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/plugin-configs.d.ts +105 -0
- package/dist/types/plugin-configs.d.ts.map +1 -0
- package/dist/types/plugin-configs.js +6 -0
- package/dist/types/plugin-configs.js.map +1 -0
- package/package.json +1 -1
- package/src/config/ac-gap-keywords.json +144 -0
- package/src/config/challenge-scenarios.json +114 -0
- package/src/config/code-quality-thresholds.json +114 -0
- package/src/config/compliance-frameworks.json +150 -0
- package/src/config/dor-dod-items.json +214 -0
- package/src/config/drift-severity.json +22 -0
- package/src/config/elicitation-questions.json +70 -0
- package/src/config/feasibility-rules.json +91 -0
- package/src/config/rbac-roles.json +27 -0
- package/src/config/readiness-config.json +18 -0
- package/src/config/spec-types.json +42 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/cli/commands/create.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAE5E,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,CAAC,MAAM,aAAa,GAAe;IACvC,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,mBAAmB;IAChC,KAAK,EAAE,wEAAwE;IAE/E,KAAK,CAAC,GAAG,CAAC,IAAc,EAAE,KAAmB;QAC3C,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;YACxC,IAAI;YACJ,OAAO,EAAE;gBACP,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;gBACpC,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;gBAC3C,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;gBACpC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC1B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAC5B;YACD,MAAM,EAAE,KAAK;YACb,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,+BAA+B,aAAa,CAAC,KAAK,IAAI,CAAC,CAAC;YAC7F,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,CAAE,MAAM,CAAC,IAA2B,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAClF,MAAM,WAAW,GAAI,MAAM,CAAC,WAAkC,IAAI,KAAK,CAAC;QAExE,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC;YACpC,KAAK;YACL,WAAW;YACX,WAAW;YACX,IAAI,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/cli/commands/create.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAE5E,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,CAAC,MAAM,aAAa,GAAe;IACvC,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,mBAAmB;IAChC,KAAK,EAAE,wEAAwE;IAE/E,KAAK,CAAC,GAAG,CAAC,IAAc,EAAE,KAAmB;QAC3C,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;YACxC,IAAI;YACJ,OAAO,EAAE;gBACP,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;gBACpC,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;gBAC3C,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;gBACpC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC1B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAC5B;YACD,MAAM,EAAE,KAAK;YACb,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,+BAA+B,aAAa,CAAC,KAAK,IAAI,CAAC,CAAC;YAC7F,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,CAAE,MAAM,CAAC,IAA2B,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAClF,MAAM,WAAW,GAAI,MAAM,CAAC,WAAkC,IAAI,KAAK,CAAC;QAExE,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC;YACpC,KAAK;YACL,WAAW;YACX,WAAW;YACX,IAAI,EAAE,MAAM,CAAC,IAA4B;YACzC,KAAK,EAAE,MAAM,CAAC,KAA8B;YAC5C,MAAM,EAAE,MAAM,CAAC,MAAgC;YAC/C,OAAO,EAAG,MAAM,CAAC,OAA8B,IAAI,SAAS;SAC7D,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;YAClE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC/C,IAAI,KAAK,EAAE,KAAK,EAAE,CAAC;YACjB,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAAA,mEAAmE;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,MAAM,CAAC,MAAM,WAAW,GAAe;IACrC,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,mCAAmC;IAChD,KAAK,EAAE,gEAAgE;IAEvE,KAAK,CAAC,GAAG,CAAC,IAAc,EAAE,KAAmB;QAC3C,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;YAC3B,IAAI;YACJ,OAAO,EAAE;gBACP,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;gBACtC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;gBACpC,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aACjC;YACD,MAAM,EAAE,KAAK;YACb,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAI,MAAM,CAAC,YAAY,CAAwB,IAAI,eAAe,EAAE,CAAC;QAEpF,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;YACnC,SAAS;YACT,MAAM,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAAA,mEAAmE;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,MAAM,CAAC,MAAM,WAAW,GAAe;IACrC,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,mCAAmC;IAChD,KAAK,EAAE,gEAAgE;IAEvE,KAAK,CAAC,GAAG,CAAC,IAAc,EAAE,KAAmB;QAC3C,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;YAC3B,IAAI;YACJ,OAAO,EAAE;gBACP,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;gBACtC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;gBACpC,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aACjC;YACD,MAAM,EAAE,KAAK;YACb,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAI,MAAM,CAAC,YAAY,CAAwB,IAAI,eAAe,EAAE,CAAC;QAEpF,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;YACnC,SAAS;YACT,MAAM,EAAE,MAAM,CAAC,MAAgC;YAC/C,IAAI,EAAE,MAAM,CAAC,IAA4B;SAC1C,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;YAClE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC/C,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "error-handling",
|
|
4
|
+
"domain": "error-handling",
|
|
5
|
+
"language": "en",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"error",
|
|
8
|
+
"fail",
|
|
9
|
+
"invalid",
|
|
10
|
+
"exception",
|
|
11
|
+
"reject",
|
|
12
|
+
"4xx",
|
|
13
|
+
"5xx",
|
|
14
|
+
"not found",
|
|
15
|
+
"404",
|
|
16
|
+
"500",
|
|
17
|
+
"timeout",
|
|
18
|
+
"unavailable",
|
|
19
|
+
"catch",
|
|
20
|
+
"handling"
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"id": "security",
|
|
25
|
+
"domain": "security",
|
|
26
|
+
"language": "en",
|
|
27
|
+
"keywords": [
|
|
28
|
+
"auth",
|
|
29
|
+
"permission",
|
|
30
|
+
"role",
|
|
31
|
+
"unauthorized",
|
|
32
|
+
"forbidden",
|
|
33
|
+
"jwt",
|
|
34
|
+
"token",
|
|
35
|
+
"csrf",
|
|
36
|
+
"xss",
|
|
37
|
+
"inject",
|
|
38
|
+
"sanitize",
|
|
39
|
+
"rate limit",
|
|
40
|
+
"throttle",
|
|
41
|
+
"secure",
|
|
42
|
+
"encrypt",
|
|
43
|
+
"https"
|
|
44
|
+
]
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"id": "performance",
|
|
48
|
+
"domain": "performance",
|
|
49
|
+
"language": "en",
|
|
50
|
+
"keywords": [
|
|
51
|
+
"performance",
|
|
52
|
+
"latency",
|
|
53
|
+
"response time",
|
|
54
|
+
"load",
|
|
55
|
+
"concurrent",
|
|
56
|
+
"throughput",
|
|
57
|
+
"cache",
|
|
58
|
+
"slow",
|
|
59
|
+
"fast",
|
|
60
|
+
"benchmark",
|
|
61
|
+
"sla",
|
|
62
|
+
"p95",
|
|
63
|
+
"p99"
|
|
64
|
+
]
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"id": "accessibility",
|
|
68
|
+
"domain": "accessibility",
|
|
69
|
+
"language": "en",
|
|
70
|
+
"keywords": ["accessibility", "a11y", "wcag", "aria", "screen reader", "keyboard", "focus", "contrast", "alt text"]
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"id": "data-validation",
|
|
74
|
+
"domain": "data-validation",
|
|
75
|
+
"language": "en",
|
|
76
|
+
"keywords": [
|
|
77
|
+
"validate",
|
|
78
|
+
"validation",
|
|
79
|
+
"required field",
|
|
80
|
+
"max length",
|
|
81
|
+
"min length",
|
|
82
|
+
"format",
|
|
83
|
+
"schema",
|
|
84
|
+
"constraint",
|
|
85
|
+
"sanitize",
|
|
86
|
+
"input",
|
|
87
|
+
"boundary"
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"id": "observability",
|
|
92
|
+
"domain": "observability",
|
|
93
|
+
"language": "en",
|
|
94
|
+
"keywords": ["log", "metric", "trace", "monitor", "alert", "audit", "observability", "telemetry", "event"]
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"id": "edge-cases",
|
|
98
|
+
"domain": "edge-cases",
|
|
99
|
+
"language": "en",
|
|
100
|
+
"keywords": [
|
|
101
|
+
"edge",
|
|
102
|
+
"empty",
|
|
103
|
+
"null",
|
|
104
|
+
"boundary",
|
|
105
|
+
"concurrent",
|
|
106
|
+
"race condition",
|
|
107
|
+
"duplicate",
|
|
108
|
+
"overflow",
|
|
109
|
+
"underflow",
|
|
110
|
+
"missing",
|
|
111
|
+
"optional"
|
|
112
|
+
]
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"id": "rollback",
|
|
116
|
+
"domain": "rollback",
|
|
117
|
+
"language": "en",
|
|
118
|
+
"keywords": ["rollback", "undo", "revert", "restore", "migration", "transaction", "atomic", "idempotent"]
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"id": "web-ui",
|
|
122
|
+
"domain": "web-ui",
|
|
123
|
+
"language": "en",
|
|
124
|
+
"keywords": [
|
|
125
|
+
"ui",
|
|
126
|
+
"frontend",
|
|
127
|
+
"form",
|
|
128
|
+
"page",
|
|
129
|
+
"view",
|
|
130
|
+
"component",
|
|
131
|
+
"modal",
|
|
132
|
+
"button",
|
|
133
|
+
"screen",
|
|
134
|
+
"layout",
|
|
135
|
+
"render",
|
|
136
|
+
"display",
|
|
137
|
+
"react",
|
|
138
|
+
"vue",
|
|
139
|
+
"angular",
|
|
140
|
+
"html",
|
|
141
|
+
"css"
|
|
142
|
+
]
|
|
143
|
+
}
|
|
144
|
+
]
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "data-partial-write",
|
|
4
|
+
"category": "data-consistency",
|
|
5
|
+
"triggerKeywords": ["transaction", "update", "create", "modify", "save"],
|
|
6
|
+
"scenario": "Partial write: server crashes mid-transaction",
|
|
7
|
+
"probability": "low",
|
|
8
|
+
"impact": "critical",
|
|
9
|
+
"handlingKeywords": ["transaction", "atomic", "rollback"],
|
|
10
|
+
"handlingFound": "Transactions mentioned",
|
|
11
|
+
"handlingMissing": "Not addressed",
|
|
12
|
+
"requiredHandling": "Wrap multi-step writes in database transactions. Implement saga pattern for distributed operations.",
|
|
13
|
+
"dataConsistency": "ACID properties must be maintained. No orphaned records.",
|
|
14
|
+
"userExperience": "Transparent: user sees either success or clean failure with clear error message."
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "data-stale-cache",
|
|
18
|
+
"category": "data-consistency",
|
|
19
|
+
"triggerKeywords": ["cache", "real-time", "concurrent"],
|
|
20
|
+
"scenario": "Stale data served from cache after underlying data changes",
|
|
21
|
+
"probability": "high",
|
|
22
|
+
"impact": "medium",
|
|
23
|
+
"handlingKeywords": ["invalidat", "ttl", "websocket", "real-time"],
|
|
24
|
+
"handlingFound": "Some cache strategy mentioned",
|
|
25
|
+
"handlingMissing": "Not addressed",
|
|
26
|
+
"requiredHandling": "Implement cache invalidation on writes. Use TTL for time-sensitive data. Consider event-driven invalidation.",
|
|
27
|
+
"dataConsistency": "Define acceptable staleness window per data type. Document cache strategy.",
|
|
28
|
+
"userExperience": "Show \"last updated\" timestamp. Offer manual refresh option."
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"id": "data-duplicate-submit",
|
|
32
|
+
"category": "data-consistency",
|
|
33
|
+
"triggerKeywords": [],
|
|
34
|
+
"scenario": "User double-clicks submit, causing duplicate records",
|
|
35
|
+
"probability": "high",
|
|
36
|
+
"impact": "medium",
|
|
37
|
+
"handlingKeywords": ["idempoten", "debounce", "disable", "lock"],
|
|
38
|
+
"handlingFound": "Some prevention mentioned",
|
|
39
|
+
"handlingMissing": "Not addressed",
|
|
40
|
+
"requiredHandling": "Implement idempotency keys for mutations. Disable submit button on click. Use unique constraints in DB.",
|
|
41
|
+
"dataConsistency": "No duplicate records from repeated submissions.",
|
|
42
|
+
"userExperience": "Button disabled during submission. Clear success/error feedback."
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"id": "security-auth-bypass",
|
|
46
|
+
"category": "security",
|
|
47
|
+
"triggerKeywords": ["auth", "login", "user", "permission", "role"],
|
|
48
|
+
"scenario": "Unauthorized access attempt / authentication bypass",
|
|
49
|
+
"probability": "high",
|
|
50
|
+
"impact": "critical",
|
|
51
|
+
"handlingKeywords": ["auth", "jwt", "session", "middleware"],
|
|
52
|
+
"handlingFound": "Authentication mentioned",
|
|
53
|
+
"handlingMissing": "No explicit auth handling",
|
|
54
|
+
"requiredHandling": "Validate auth tokens on every request. Implement RBAC. Never trust client-side auth state.",
|
|
55
|
+
"dataConsistency": "Ensure RLS policies are enabled. No data leak through unauthorized queries.",
|
|
56
|
+
"userExperience": "Redirect to login on 401. Clear error messages without leaking implementation details."
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"id": "security-injection",
|
|
60
|
+
"category": "security",
|
|
61
|
+
"triggerKeywords": ["input", "form", "query", "search", "user"],
|
|
62
|
+
"scenario": "SQL injection / XSS / command injection via user input",
|
|
63
|
+
"probability": "high",
|
|
64
|
+
"impact": "critical",
|
|
65
|
+
"handlingKeywords": ["sanitiz", "escap", "parameterized", "prepared"],
|
|
66
|
+
"handlingFound": "Some sanitization mentioned",
|
|
67
|
+
"handlingMissing": "Not explicitly addressed",
|
|
68
|
+
"requiredHandling": "Use parameterized queries (never string concatenation). Sanitize HTML output. Use CSP headers.",
|
|
69
|
+
"dataConsistency": "Injection can corrupt or exfiltrate data. Use least-privilege DB connections.",
|
|
70
|
+
"userExperience": "Transparent to user. Invalid input is silently sanitized."
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"id": "scale-high-traffic",
|
|
74
|
+
"category": "scale",
|
|
75
|
+
"triggerKeywords": ["user", "request", "api", "endpoint"],
|
|
76
|
+
"scenario": "Traffic spike: 10x normal load in 60 seconds",
|
|
77
|
+
"probability": "medium",
|
|
78
|
+
"impact": "critical",
|
|
79
|
+
"handlingKeywords": ["rate-limit", "throttl", "queue", "cache", "cdn", "auto-scal"],
|
|
80
|
+
"handlingFound": "Some scaling strategy mentioned",
|
|
81
|
+
"handlingMissing": "No scaling strategy defined",
|
|
82
|
+
"requiredHandling": "Define rate limits per user and per IP. Implement request queuing for expensive operations. Use CDN for static assets.",
|
|
83
|
+
"dataConsistency": "Eventual consistency acceptable under load. No data loss.",
|
|
84
|
+
"userExperience": "Graceful degradation. Show 'service busy' instead of 500 errors."
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"id": "failure-network-timeout",
|
|
88
|
+
"category": "failure",
|
|
89
|
+
"triggerKeywords": ["api", "external", "service", "http", "fetch"],
|
|
90
|
+
"scenario": "External API or service becomes unavailable / times out",
|
|
91
|
+
"probability": "medium",
|
|
92
|
+
"impact": "high",
|
|
93
|
+
"handlingKeywords": ["timeout", "retry", "fallback", "circuit-breaker", "circuit breaker"],
|
|
94
|
+
"handlingFound": "Timeout/retry strategy mentioned",
|
|
95
|
+
"handlingMissing": "No timeout or fallback defined",
|
|
96
|
+
"requiredHandling": "Set explicit timeouts on all external calls. Implement exponential backoff. Define fallback behavior (cached data, graceful degradation).",
|
|
97
|
+
"dataConsistency": "Operations that fail mid-way must be idempotent or rolled back.",
|
|
98
|
+
"userExperience": "Show cached/stale data with staleness indicator. Never hang indefinitely."
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"id": "failure-disk-full",
|
|
102
|
+
"category": "failure",
|
|
103
|
+
"triggerKeywords": ["file", "upload", "storage", "media", "image"],
|
|
104
|
+
"scenario": "Storage exhaustion: disk full or quota exceeded",
|
|
105
|
+
"probability": "low",
|
|
106
|
+
"impact": "high",
|
|
107
|
+
"handlingKeywords": ["quota", "limit", "storage", "disk"],
|
|
108
|
+
"handlingFound": "Storage limits mentioned",
|
|
109
|
+
"handlingMissing": "No storage limit handling",
|
|
110
|
+
"requiredHandling": "Check available space before writes. Implement quota enforcement. Alert when approaching limits.",
|
|
111
|
+
"dataConsistency": "Partial uploads must be cleaned up. No orphaned files.",
|
|
112
|
+
"userExperience": "Clear error: 'Storage quota exceeded. Please free up space.' with actionable next step."
|
|
113
|
+
}
|
|
114
|
+
]
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "typescript",
|
|
4
|
+
"language": "typescript",
|
|
5
|
+
"maxFileLines": 400,
|
|
6
|
+
"maxFunctionLines": 80,
|
|
7
|
+
"maxParams": 4,
|
|
8
|
+
"maxNestingDepth": 5,
|
|
9
|
+
"maxCyclomaticComplexity": 15,
|
|
10
|
+
"minCoverageStatements": 90,
|
|
11
|
+
"minCoverageBranches": 80,
|
|
12
|
+
"minCoverageFunctions": 90,
|
|
13
|
+
"minCoverageLines": 90,
|
|
14
|
+
"duplicateLineThreshold": 4
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "javascript",
|
|
18
|
+
"language": "javascript",
|
|
19
|
+
"maxFileLines": 400,
|
|
20
|
+
"maxFunctionLines": 80,
|
|
21
|
+
"maxParams": 4,
|
|
22
|
+
"maxNestingDepth": 5,
|
|
23
|
+
"maxCyclomaticComplexity": 15,
|
|
24
|
+
"minCoverageStatements": 80,
|
|
25
|
+
"minCoverageBranches": 70,
|
|
26
|
+
"minCoverageFunctions": 80,
|
|
27
|
+
"minCoverageLines": 80,
|
|
28
|
+
"duplicateLineThreshold": 4
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"id": "python",
|
|
32
|
+
"language": "python",
|
|
33
|
+
"maxFileLines": 500,
|
|
34
|
+
"maxFunctionLines": 50,
|
|
35
|
+
"maxParams": 5,
|
|
36
|
+
"maxNestingDepth": 4,
|
|
37
|
+
"maxCyclomaticComplexity": 10,
|
|
38
|
+
"minCoverageStatements": 85,
|
|
39
|
+
"minCoverageBranches": 75,
|
|
40
|
+
"minCoverageFunctions": 85,
|
|
41
|
+
"minCoverageLines": 85,
|
|
42
|
+
"duplicateLineThreshold": 4
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"id": "go",
|
|
46
|
+
"language": "go",
|
|
47
|
+
"maxFileLines": 300,
|
|
48
|
+
"maxFunctionLines": 50,
|
|
49
|
+
"maxParams": 4,
|
|
50
|
+
"maxNestingDepth": 4,
|
|
51
|
+
"maxCyclomaticComplexity": 10,
|
|
52
|
+
"minCoverageStatements": 80,
|
|
53
|
+
"minCoverageBranches": 70,
|
|
54
|
+
"minCoverageFunctions": 80,
|
|
55
|
+
"minCoverageLines": 80,
|
|
56
|
+
"duplicateLineThreshold": 3
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"id": "rust",
|
|
60
|
+
"language": "rust",
|
|
61
|
+
"maxFileLines": 500,
|
|
62
|
+
"maxFunctionLines": 60,
|
|
63
|
+
"maxParams": 5,
|
|
64
|
+
"maxNestingDepth": 5,
|
|
65
|
+
"maxCyclomaticComplexity": 15,
|
|
66
|
+
"minCoverageStatements": 75,
|
|
67
|
+
"minCoverageBranches": 65,
|
|
68
|
+
"minCoverageFunctions": 75,
|
|
69
|
+
"minCoverageLines": 75,
|
|
70
|
+
"duplicateLineThreshold": 4
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"id": "java",
|
|
74
|
+
"language": "java",
|
|
75
|
+
"maxFileLines": 600,
|
|
76
|
+
"maxFunctionLines": 60,
|
|
77
|
+
"maxParams": 5,
|
|
78
|
+
"maxNestingDepth": 5,
|
|
79
|
+
"maxCyclomaticComplexity": 15,
|
|
80
|
+
"minCoverageStatements": 80,
|
|
81
|
+
"minCoverageBranches": 70,
|
|
82
|
+
"minCoverageFunctions": 80,
|
|
83
|
+
"minCoverageLines": 80,
|
|
84
|
+
"duplicateLineThreshold": 4
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"id": "csharp",
|
|
88
|
+
"language": "csharp",
|
|
89
|
+
"maxFileLines": 600,
|
|
90
|
+
"maxFunctionLines": 60,
|
|
91
|
+
"maxParams": 5,
|
|
92
|
+
"maxNestingDepth": 5,
|
|
93
|
+
"maxCyclomaticComplexity": 15,
|
|
94
|
+
"minCoverageStatements": 80,
|
|
95
|
+
"minCoverageBranches": 70,
|
|
96
|
+
"minCoverageFunctions": 80,
|
|
97
|
+
"minCoverageLines": 80,
|
|
98
|
+
"duplicateLineThreshold": 4
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"id": "default",
|
|
102
|
+
"language": "default",
|
|
103
|
+
"maxFileLines": 500,
|
|
104
|
+
"maxFunctionLines": 60,
|
|
105
|
+
"maxParams": 5,
|
|
106
|
+
"maxNestingDepth": 5,
|
|
107
|
+
"maxCyclomaticComplexity": 15,
|
|
108
|
+
"minCoverageStatements": 80,
|
|
109
|
+
"minCoverageBranches": 70,
|
|
110
|
+
"minCoverageFunctions": 80,
|
|
111
|
+
"minCoverageLines": 80,
|
|
112
|
+
"duplicateLineThreshold": 4
|
|
113
|
+
}
|
|
114
|
+
]
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "gdpr",
|
|
4
|
+
"name": "GDPR",
|
|
5
|
+
"fullName": "General Data Protection Regulation",
|
|
6
|
+
"type": "privacy",
|
|
7
|
+
"regions": ["EU", "EEA", "GB"],
|
|
8
|
+
"triggerKeywords": ["eu", "europe", "european", "gdpr", "user", "personal data", "email"],
|
|
9
|
+
"dataTypes": ["pii", "behavioral", "location", "biometric"],
|
|
10
|
+
"criteria": [
|
|
11
|
+
"Implement user consent mechanism with explicit opt-in before collecting personal data",
|
|
12
|
+
"Provide data subject rights: access, rectification, erasure (right to be forgotten)",
|
|
13
|
+
"Document data processing activities in a Record of Processing Activities (RoPA)",
|
|
14
|
+
"Implement data breach notification process (72-hour reporting window)",
|
|
15
|
+
"Appoint Data Protection Officer if processing at scale"
|
|
16
|
+
],
|
|
17
|
+
"references": [
|
|
18
|
+
"https://gdpr.eu/",
|
|
19
|
+
"https://ico.org.uk/for-organisations/guide-to-data-protection/guide-to-the-general-data-protection-regulation-gdpr/"
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"id": "iso-27001",
|
|
24
|
+
"name": "ISO 27001",
|
|
25
|
+
"fullName": "ISO/IEC 27001 - Information Security Management",
|
|
26
|
+
"type": "security",
|
|
27
|
+
"regions": ["global"],
|
|
28
|
+
"triggerKeywords": ["security", "enterprise", "saas", "b2b", "compliance", "audit", "iso"],
|
|
29
|
+
"dataTypes": ["credentials", "financial", "pii"],
|
|
30
|
+
"criteria": [
|
|
31
|
+
"Implement information security policy and management framework",
|
|
32
|
+
"Conduct regular risk assessments and maintain risk register",
|
|
33
|
+
"Implement access control with principle of least privilege",
|
|
34
|
+
"Establish incident response and security monitoring procedures",
|
|
35
|
+
"Perform regular security training and awareness programs"
|
|
36
|
+
],
|
|
37
|
+
"references": [
|
|
38
|
+
"https://www.iso.org/isoiec-27001-information-security.html",
|
|
39
|
+
"https://www.bsigroup.com/en-GB/iso-27001-information-security/"
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"id": "ieee-730",
|
|
44
|
+
"name": "IEEE 730",
|
|
45
|
+
"fullName": "IEEE Standard for Software Quality Assurance",
|
|
46
|
+
"type": "quality",
|
|
47
|
+
"regions": ["global"],
|
|
48
|
+
"triggerKeywords": ["software quality", "qa", "quality assurance", "testing", "ieee"],
|
|
49
|
+
"dataTypes": [],
|
|
50
|
+
"criteria": [
|
|
51
|
+
"Define and document Software Quality Assurance Plan (SQAP)",
|
|
52
|
+
"Implement code review processes with documented review criteria",
|
|
53
|
+
"Establish traceability between requirements, design, and test cases",
|
|
54
|
+
"Define defect classification and resolution procedures",
|
|
55
|
+
"Conduct formal inspections at each development phase gate"
|
|
56
|
+
],
|
|
57
|
+
"references": ["https://standards.ieee.org/ieee/730/5284/", "https://ieeexplore.ieee.org/document/9415778"]
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"id": "ieee-29119",
|
|
61
|
+
"name": "IEEE 29119",
|
|
62
|
+
"fullName": "IEEE Standard for Software Testing",
|
|
63
|
+
"type": "testing",
|
|
64
|
+
"regions": ["global"],
|
|
65
|
+
"triggerKeywords": ["testing", "test plan", "test strategy", "ieee", "software testing"],
|
|
66
|
+
"dataTypes": [],
|
|
67
|
+
"criteria": [
|
|
68
|
+
"Document test strategy covering scope, approach, resources, and schedule",
|
|
69
|
+
"Define test levels: unit, integration, system, acceptance",
|
|
70
|
+
"Implement test completion criteria with measurable coverage thresholds",
|
|
71
|
+
"Maintain test case documentation with expected vs actual results",
|
|
72
|
+
"Conduct risk-based testing to prioritize test effort"
|
|
73
|
+
],
|
|
74
|
+
"references": ["https://www.softwaretestingstandard.org/", "https://standards.ieee.org/ieee/29119-1/5248/"]
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"id": "iso-9001",
|
|
78
|
+
"name": "ISO 9001",
|
|
79
|
+
"fullName": "ISO 9001 - Quality Management Systems",
|
|
80
|
+
"type": "quality",
|
|
81
|
+
"regions": ["global"],
|
|
82
|
+
"triggerKeywords": ["quality", "iso", "certification", "enterprise", "compliance", "process"],
|
|
83
|
+
"dataTypes": [],
|
|
84
|
+
"criteria": [
|
|
85
|
+
"Define and document quality management processes and procedures",
|
|
86
|
+
"Implement customer feedback collection and analysis mechanisms",
|
|
87
|
+
"Establish continuous improvement processes with measurable KPIs",
|
|
88
|
+
"Conduct internal audits and management reviews",
|
|
89
|
+
"Control nonconforming outputs with documented corrective actions"
|
|
90
|
+
],
|
|
91
|
+
"references": ["https://www.iso.org/iso-9001-quality-management.html", "https://asq.org/quality-resources/iso-9001"]
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"id": "hipaa",
|
|
95
|
+
"name": "HIPAA",
|
|
96
|
+
"fullName": "Health Insurance Portability and Accountability Act",
|
|
97
|
+
"type": "privacy",
|
|
98
|
+
"regions": ["US"],
|
|
99
|
+
"triggerKeywords": ["health", "medical", "patient", "hipaa", "healthcare", "ehr", "phi"],
|
|
100
|
+
"dataTypes": ["health", "pii"],
|
|
101
|
+
"criteria": [
|
|
102
|
+
"Implement Administrative Safeguards: workforce training, access management policies",
|
|
103
|
+
"Implement Physical Safeguards: facility access controls, workstation security",
|
|
104
|
+
"Implement Technical Safeguards: encryption, audit controls, automatic logoff",
|
|
105
|
+
"Execute Business Associate Agreements (BAA) with all third-party data processors",
|
|
106
|
+
"Establish minimum necessary standard for PHI access"
|
|
107
|
+
],
|
|
108
|
+
"references": [
|
|
109
|
+
"https://www.hhs.gov/hipaa/for-professionals/index.html",
|
|
110
|
+
"https://www.hhs.gov/hipaa/for-professionals/security/laws-regulations/index.html"
|
|
111
|
+
]
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"id": "pci-dss",
|
|
115
|
+
"name": "PCI DSS",
|
|
116
|
+
"fullName": "Payment Card Industry Data Security Standard",
|
|
117
|
+
"type": "security",
|
|
118
|
+
"regions": ["global"],
|
|
119
|
+
"triggerKeywords": ["payment", "card", "stripe", "credit card", "checkout", "billing", "transaction"],
|
|
120
|
+
"dataTypes": ["financial"],
|
|
121
|
+
"criteria": [
|
|
122
|
+
"Never store sensitive card data (CVV, full PAN) after authorization",
|
|
123
|
+
"Encrypt transmission of cardholder data over public networks (TLS 1.2+)",
|
|
124
|
+
"Implement strong access control measures and unique user IDs",
|
|
125
|
+
"Regularly test security systems and processes (penetration testing)",
|
|
126
|
+
"Maintain information security policy and vulnerability management program"
|
|
127
|
+
],
|
|
128
|
+
"references": [
|
|
129
|
+
"https://www.pcisecuritystandards.org/",
|
|
130
|
+
"https://docs-prv.pcisecuritystandards.org/PCI%20DSS/Standard/PCI-DSS-v4_0.pdf"
|
|
131
|
+
]
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"id": "wcag-21",
|
|
135
|
+
"name": "WCAG 2.1",
|
|
136
|
+
"fullName": "Web Content Accessibility Guidelines 2.1",
|
|
137
|
+
"type": "accessibility",
|
|
138
|
+
"regions": ["global"],
|
|
139
|
+
"triggerKeywords": ["web", "frontend", "ui", "accessibility", "wcag", "a11y", "government", "public"],
|
|
140
|
+
"dataTypes": [],
|
|
141
|
+
"criteria": [
|
|
142
|
+
"All images must have descriptive alt text (WCAG 1.1.1)",
|
|
143
|
+
"Color is not used as the only visual means of conveying information (WCAG 1.4.1)",
|
|
144
|
+
"All functionality must be operable via keyboard (WCAG 2.1.1)",
|
|
145
|
+
"Users must have enough time to read and use content (WCAG 2.2)",
|
|
146
|
+
"Content must be robust enough to be interpreted by assistive technologies (WCAG 4.1)"
|
|
147
|
+
],
|
|
148
|
+
"references": ["https://www.w3.org/WAI/standards-guidelines/wcag/", "https://www.w3.org/WAI/WCAG21/quickref/"]
|
|
149
|
+
}
|
|
150
|
+
]
|