@portll/cobolwork 0.2.117 → 0.2.150

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.
Files changed (51) hide show
  1. package/README.md +13 -1
  2. package/THIRD-PARTY-NOTICES.md +3 -2
  3. package/bin/cobolwork.mjs +16 -1
  4. package/lib/baseline.mjs +8 -6
  5. package/lib/bms.mjs +1 -1
  6. package/lib/capabilities.mjs +2 -1
  7. package/lib/cards.mjs +66 -0
  8. package/lib/cics-commands.mjs +136 -125
  9. package/lib/compliance.mjs +6 -5
  10. package/lib/control.mjs +295 -6
  11. package/lib/dataflow.mjs +72 -88
  12. package/lib/diff.mjs +65 -89
  13. package/lib/embedded-sql.mjs +110 -0
  14. package/lib/equivalence.mjs +30 -12
  15. package/lib/evidence/journal.mjs +11 -2
  16. package/lib/evidence/record.mjs +3 -1
  17. package/lib/evidence/slsa.mjs +17 -2
  18. package/lib/execution.mjs +77 -0
  19. package/lib/explain.mjs +5 -4
  20. package/lib/ftp.mjs +136 -0
  21. package/lib/inventory.mjs +8 -9
  22. package/lib/ironwork.mjs +4 -6
  23. package/lib/jcl.mjs +29 -54
  24. package/lib/kernel/git.mjs +60 -0
  25. package/lib/kernel/identity.mjs +7 -6
  26. package/lib/kernel/source-tree.mjs +204 -34
  27. package/lib/layout.mjs +202 -0
  28. package/lib/parser.mjs +58 -207
  29. package/lib/precompile.mjs +5 -88
  30. package/lib/revision.json +1 -1
  31. package/lib/sbom.mjs +125 -13
  32. package/lib/scan.mjs +11 -4
  33. package/lib/sets/build.mjs +1 -1
  34. package/lib/sets/cics.mjs +32 -5
  35. package/lib/sets/copybook.mjs +2 -1
  36. package/lib/sets/hidden.mjs +4 -8
  37. package/lib/sets/jcl.mjs +17 -120
  38. package/lib/sets/priv.mjs +1 -1
  39. package/lib/sets/recon.mjs +3 -2
  40. package/lib/sets/semantics.mjs +1 -1
  41. package/lib/sets/vendor.mjs +1 -1
  42. package/lib/sets/zowe.mjs +34 -8
  43. package/lib/site.mjs +17 -7
  44. package/lib/sources.mjs +82 -38
  45. package/lib/utilities.mjs +146 -4
  46. package/package.json +1 -1
  47. package/rules/compliance-cobit2019.json +2438 -0
  48. package/rules/compliance-dora.json +1 -1
  49. package/rules/compliance-ffiec.json +1 -1
  50. package/rules/compliance-nist80053.json +1 -1
  51. package/schema/cobolwork.policy.schema.json +94 -17
@@ -2634,7 +2634,7 @@
2634
2634
  "framework": "dora",
2635
2635
  "clause": "Article 8(2)",
2636
2636
  "title": "Identification",
2637
- "rationale": "The rule reports: A Zowe MCP server is launched by npx with no pinned version. That is a source of ICT risk in a business-supporting function, identified by reading the source rather than by asking the team that maintains it.",
2637
+ "rationale": "The rule reports: A Zowe MCP server is launched from the registry with no pinned version. That is a source of ICT risk in a business-supporting function, identified by reading the source rather than by asking the team that maintains it.",
2638
2638
  "source": {
2639
2639
  "doc": "dora",
2640
2640
  "retrieved": "2026-09-20",
@@ -2617,7 +2617,7 @@
2617
2617
  "framework": "ffiec",
2618
2618
  "clause": "DA&M IV",
2619
2619
  "title": "Common Development, Acquisition, and Maintenance Practices",
2620
- "rationale": "The rule reports: A Zowe MCP server is launched by npx with no pinned version. That is a component or dependency the inventory does not accurately account for, which this practice requires be catalogued.",
2620
+ "rationale": "The rule reports: A Zowe MCP server is launched from the registry with no pinned version. That is a component or dependency the inventory does not accurately account for, which this practice requires be catalogued.",
2621
2621
  "source": {
2622
2622
  "doc": "ffiec",
2623
2623
  "retrieved": "2026-09-20",
@@ -2617,7 +2617,7 @@
2617
2617
  "framework": "nist-800-53r5",
2618
2618
  "clause": "CM-8",
2619
2619
  "title": "System Component Inventory",
2620
- "rationale": "The rule reports: A Zowe MCP server is launched by npx with no pinned version. That is a component the inventory does not accurately account for, which this control requires be documented.",
2620
+ "rationale": "The rule reports: A Zowe MCP server is launched from the registry with no pinned version. That is a component the inventory does not accurately account for, which this control requires be documented.",
2621
2621
  "source": {
2622
2622
  "doc": "nist80053",
2623
2623
  "retrieved": "2026-09-20",
@@ -5,35 +5,83 @@
5
5
  "description": "Which findings stop a build, which run-time checks the compiler must generate, and what an incomplete scan means. docs/spec/build-gate.md section 4. lib/policy.mjs validates the same shape and also refuses a rule id cobolwork does not declare.",
6
6
  "type": "object",
7
7
  "additionalProperties": false,
8
- "required": ["policyVersion"],
8
+ "required": [
9
+ "policyVersion"
10
+ ],
9
11
  "properties": {
10
- "_comment": { "type": "string" },
11
- "policyVersion": { "const": 1 },
12
- "block": { "$ref": "#/$defs/tier", "description": "A finding at or above this tier blocks. Default high." },
13
- "always": { "$ref": "#/$defs/tier", "description": "In ratchet mode, a finding at or above this tier blocks whether or not the change introduced it. Default crit." },
12
+ "_comment": {
13
+ "type": "string"
14
+ },
15
+ "policyVersion": {
16
+ "const": 1
17
+ },
18
+ "block": {
19
+ "$ref": "#/$defs/tier",
20
+ "description": "A finding at or above this tier blocks. Default high."
21
+ },
22
+ "always": {
23
+ "$ref": "#/$defs/tier",
24
+ "description": "In ratchet mode, a finding at or above this tier blocks whether or not the change introduced it. Default crit."
25
+ },
14
26
  "classes": {
15
27
  "type": "array",
16
- "items": { "enum": ["privilege-escalation", "data-mutation"] },
28
+ "items": {
29
+ "enum": [
30
+ "privilege-escalation",
31
+ "data-mutation"
32
+ ]
33
+ },
17
34
  "uniqueItems": true,
18
35
  "description": "A finding in one of these consequence classes blocks at any tier. Default both."
19
36
  },
20
37
  "rules": {
21
38
  "type": "object",
22
- "additionalProperties": { "enum": ["block", "warn"] },
39
+ "additionalProperties": {
40
+ "enum": [
41
+ "block",
42
+ "warn"
43
+ ]
44
+ },
23
45
  "description": "Per rule id: block whatever its tier, or warn whatever its tier or class."
24
46
  },
25
- "coverage": { "enum": ["block", "warn"], "description": "Incomplete coverage makes the build undecided (block) or is reported (warn). Default block." },
26
- "options": { "enum": ["block", "warn"], "description": "A build without a required run-time check fails, and options nothing declares make it undecided (block); or both are reported and the build passes relaxed (warn). An option forbid names, and a check the change removes, fail either way. Default warn." },
47
+ "coverage": {
48
+ "enum": [
49
+ "block",
50
+ "warn"
51
+ ],
52
+ "description": "Incomplete coverage makes the build undecided (block) or is reported (warn). Default block."
53
+ },
54
+ "options": {
55
+ "enum": [
56
+ "block",
57
+ "warn"
58
+ ],
59
+ "description": "A build without a required run-time check fails, and options nothing declares make it undecided (block); or both are reported and the build passes relaxed (warn). An option forbid names, and a check the change removes, fail either way. Default warn."
60
+ },
27
61
  "waivers": {
28
62
  "type": "object",
29
63
  "additionalProperties": false,
30
- "required": ["maxDays"],
31
- "properties": { "maxDays": { "type": "integer", "minimum": 1 } },
64
+ "required": [
65
+ "maxDays"
66
+ ],
67
+ "properties": {
68
+ "maxDays": {
69
+ "type": "integer",
70
+ "minimum": 1
71
+ }
72
+ },
32
73
  "description": "A waiver written with an expiry further off than maxDays covers nothing. Default 180."
33
74
  },
34
75
  "checks": {
35
76
  "type": "array",
36
- "items": { "enum": ["subscript", "reference-modification", "numeric-data", "argument-length"] },
77
+ "items": {
78
+ "enum": [
79
+ "subscript",
80
+ "reference-modification",
81
+ "numeric-data",
82
+ "argument-length"
83
+ ]
84
+ },
37
85
  "uniqueItems": true,
38
86
  "description": "The run-time checks every program must be compiled with. Default subscript and reference-modification."
39
87
  },
@@ -41,15 +89,44 @@
41
89
  "type": "object",
42
90
  "additionalProperties": false,
43
91
  "properties": {
44
- "enterprise": { "$ref": "#/$defs/options" },
45
- "gnucobol": { "$ref": "#/$defs/options" },
46
- "gcobol": { "$ref": "#/$defs/options" }
92
+ "enterprise": {
93
+ "$ref": "#/$defs/options"
94
+ },
95
+ "gnucobol": {
96
+ "$ref": "#/$defs/options"
97
+ },
98
+ "gcobol": {
99
+ "$ref": "#/$defs/options"
100
+ }
47
101
  },
48
102
  "description": "Options a build must not pass, beyond those that turn a required check off."
103
+ },
104
+ "requireEquivalence": {
105
+ "enum": [
106
+ "never",
107
+ "machineAuthored",
108
+ "always"
109
+ ],
110
+ "description": "When every program a change edits, or whose copybooks it edits, needs an ironwork equivalence statement passed to build --equivalence: never, only when a commit in the change names a code assistant or bot as author, committer or co-author (machineAuthored), or always. The stricter of the floor and the repository applies. Default never."
49
111
  }
50
112
  },
51
113
  "$defs": {
52
- "tier": { "enum": ["info", "low", "med", "high", "crit", "known-exploitable"] },
53
- "options": { "type": "array", "items": { "type": "string", "minLength": 1 } }
114
+ "tier": {
115
+ "enum": [
116
+ "info",
117
+ "low",
118
+ "med",
119
+ "high",
120
+ "crit",
121
+ "known-exploitable"
122
+ ]
123
+ },
124
+ "options": {
125
+ "type": "array",
126
+ "items": {
127
+ "type": "string",
128
+ "minLength": 1
129
+ }
130
+ }
54
131
  }
55
132
  }