@fulmenhq/tsfulmen 0.1.6

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 (188) hide show
  1. package/CHANGELOG.md +616 -0
  2. package/LICENSE +57 -0
  3. package/README.md +674 -0
  4. package/config/crucible-ts/README.md +38 -0
  5. package/config/crucible-ts/library/foundry/country-codes.yaml +29 -0
  6. package/config/crucible-ts/library/foundry/exit-codes.snapshot.json +351 -0
  7. package/config/crucible-ts/library/foundry/exit-codes.yaml +483 -0
  8. package/config/crucible-ts/library/foundry/fixtures/signals/invalid/invalid-behavior.yaml +45 -0
  9. package/config/crucible-ts/library/foundry/fixtures/signals/invalid/invalid-exit-code.yaml +51 -0
  10. package/config/crucible-ts/library/foundry/fixtures/signals/invalid/malformed.yaml +44 -0
  11. package/config/crucible-ts/library/foundry/fixtures/signals/invalid/missing-required.yaml +36 -0
  12. package/config/crucible-ts/library/foundry/fixtures/signals/parity-snapshot.json +162 -0
  13. package/config/crucible-ts/library/foundry/fixtures/signals/valid/complete.yaml +314 -0
  14. package/config/crucible-ts/library/foundry/fixtures/signals/valid/custom-behavior.yaml +96 -0
  15. package/config/crucible-ts/library/foundry/fixtures/signals/valid/minimal.yaml +55 -0
  16. package/config/crucible-ts/library/foundry/http-statuses.yaml +148 -0
  17. package/config/crucible-ts/library/foundry/mime-types.yaml +39 -0
  18. package/config/crucible-ts/library/foundry/patterns.yaml +185 -0
  19. package/config/crucible-ts/library/foundry/signals.yaml +331 -0
  20. package/config/crucible-ts/library/foundry/similarity-fixtures.yaml +432 -0
  21. package/config/crucible-ts/library/foundry/simplified-modes.snapshot.json +117 -0
  22. package/config/crucible-ts/library/fulhash/fixtures.yaml +160 -0
  23. package/config/crucible-ts/library/v1.0.0/module-manifest.yaml +179 -0
  24. package/config/crucible-ts/repository/app-identity/app-identity.example.yaml +42 -0
  25. package/config/crucible-ts/repository/app-identity/fixtures/invalid/invalid-binary-name.yaml +7 -0
  26. package/config/crucible-ts/repository/app-identity/fixtures/invalid/invalid-env-prefix.yaml +7 -0
  27. package/config/crucible-ts/repository/app-identity/fixtures/invalid/invalid-vendor.yaml +7 -0
  28. package/config/crucible-ts/repository/app-identity/fixtures/invalid/malformed-yaml.yaml +8 -0
  29. package/config/crucible-ts/repository/app-identity/fixtures/invalid/missing-required.yaml +6 -0
  30. package/config/crucible-ts/repository/app-identity/fixtures/valid/complete.yaml +20 -0
  31. package/config/crucible-ts/repository/app-identity/fixtures/valid/minimal.yaml +7 -0
  32. package/config/crucible-ts/repository/app-identity/fixtures/valid/monorepo-api.yaml +10 -0
  33. package/config/crucible-ts/repository/app-identity/fixtures/valid/monorepo-worker.yaml +10 -0
  34. package/config/crucible-ts/repository/app-identity/parity-snapshot.json +125 -0
  35. package/config/crucible-ts/server/management/server-management.yaml +141 -0
  36. package/config/crucible-ts/sync/README.md +13 -0
  37. package/config/crucible-ts/sync/sync-keys.yaml +74 -0
  38. package/config/crucible-ts/taxonomy/languages.yaml +33 -0
  39. package/config/crucible-ts/taxonomy/metrics.yaml +115 -0
  40. package/config/crucible-ts/taxonomy/repository-categories.yaml +66 -0
  41. package/config/crucible-ts/terminal/v1.0.0/terminal-overrides-defaults.yaml +38 -0
  42. package/config/crucible-ts/web/branding/site-branding.yaml +21 -0
  43. package/config/crucible-ts/web/styling/site-styling.yaml +104 -0
  44. package/dist/appidentity/index.d.ts +304 -0
  45. package/dist/appidentity/index.js +5519 -0
  46. package/dist/appidentity/index.js.map +1 -0
  47. package/dist/config/index.d.ts +144 -0
  48. package/dist/config/index.js +5752 -0
  49. package/dist/config/index.js.map +1 -0
  50. package/dist/crucible/index.d.ts +78 -0
  51. package/dist/crucible/index.js +6038 -0
  52. package/dist/crucible/index.js.map +1 -0
  53. package/dist/docscribe/index.d.ts +110 -0
  54. package/dist/docscribe/index.js +682 -0
  55. package/dist/docscribe/index.js.map +1 -0
  56. package/dist/errors/index.d.ts +150 -0
  57. package/dist/errors/index.js +5583 -0
  58. package/dist/errors/index.js.map +1 -0
  59. package/dist/foundry/index.d.ts +1557 -0
  60. package/dist/foundry/index.js +5474 -0
  61. package/dist/foundry/index.js.map +1 -0
  62. package/dist/foundry/similarity/index.d.ts +17 -0
  63. package/dist/foundry/similarity/index.js +136 -0
  64. package/dist/foundry/similarity/index.js.map +1 -0
  65. package/dist/fulhash/index.d.ts +82 -0
  66. package/dist/fulhash/index.js +374 -0
  67. package/dist/fulhash/index.js.map +1 -0
  68. package/dist/fulmen-error-B_kX8jSC.d.ts +309 -0
  69. package/dist/index.d.ts +14 -0
  70. package/dist/index.js +6197 -0
  71. package/dist/index.js.map +1 -0
  72. package/dist/logger-JU2jYitA.d.ts +171 -0
  73. package/dist/logging/index.d.ts +198 -0
  74. package/dist/logging/index.js +578 -0
  75. package/dist/logging/index.js.map +1 -0
  76. package/dist/pathfinder/index.d.ts +532 -0
  77. package/dist/pathfinder/index.js +6750 -0
  78. package/dist/pathfinder/index.js.map +1 -0
  79. package/dist/registry-x1-Qi_Tz.d.ts +349 -0
  80. package/dist/schema/index.d.ts +388 -0
  81. package/dist/schema/index.js +5522 -0
  82. package/dist/schema/index.js.map +1 -0
  83. package/dist/suggest-CLqjLZ5L.d.ts +168 -0
  84. package/dist/telemetry/index.d.ts +161 -0
  85. package/dist/telemetry/index.js +5610 -0
  86. package/dist/telemetry/index.js.map +1 -0
  87. package/dist/types-B_WtvQbS.d.ts +214 -0
  88. package/package.json +130 -0
  89. package/schemas/crucible-ts/api/http/v1.0.0/README.md +22 -0
  90. package/schemas/crucible-ts/api/http/v1.0.0/error-response.schema.json +54 -0
  91. package/schemas/crucible-ts/api/http/v1.0.0/health-response.schema.json +70 -0
  92. package/schemas/crucible-ts/api/http/v1.0.0/success-response.schema.json +51 -0
  93. package/schemas/crucible-ts/api/http/v1.0.0/version-response.schema.json +61 -0
  94. package/schemas/crucible-ts/ascii/v1.0.0/README.md +69 -0
  95. package/schemas/crucible-ts/ascii/v1.0.0/box-chars.schema.json +60 -0
  96. package/schemas/crucible-ts/ascii/v1.0.0/string-analysis.schema.json +45 -0
  97. package/schemas/crucible-ts/assessment/README.md +25 -0
  98. package/schemas/crucible-ts/assessment/v1.0.0/severity-definitions.schema.json +60 -0
  99. package/schemas/crucible-ts/config/fulmen-ecosystem/v1.0.0/README.md +11 -0
  100. package/schemas/crucible-ts/config/fulmen-ecosystem/v1.0.0/fulmen-config-paths.schema.json +61 -0
  101. package/schemas/crucible-ts/config/goneat/README.md +60 -0
  102. package/schemas/crucible-ts/config/goneat/v1.0.0/dates.yaml +234 -0
  103. package/schemas/crucible-ts/config/goneat/v1.0.0/goneat-config.yaml +344 -0
  104. package/schemas/crucible-ts/config/goneat/v1.0.0/lifecycle-phase.json +20 -0
  105. package/schemas/crucible-ts/config/goneat/v1.0.0/release-phase.json +17 -0
  106. package/schemas/crucible-ts/config/goneat/v1.0.0/security-policy.yaml +178 -0
  107. package/schemas/crucible-ts/config/goneat/v1.0.0/version-policy.schema.yaml +205 -0
  108. package/schemas/crucible-ts/config/repository/app-identity/v1.0.0/app-identity.schema.json +143 -0
  109. package/schemas/crucible-ts/config/repository/v1.0.0/lifecycle-phase.json +20 -0
  110. package/schemas/crucible-ts/config/repository-category/codex/v1.0.0/codex-config.schema.json +288 -0
  111. package/schemas/crucible-ts/config/standards/v1.0.0/adr-adoption-status.json +60 -0
  112. package/schemas/crucible-ts/config/standards/v1.0.0/adr-frontmatter.schema.json +225 -0
  113. package/schemas/crucible-ts/config/standards/v1.0.0/adr-lifecycle-status.json +62 -0
  114. package/schemas/crucible-ts/config/sync-consumer-config.yaml +51 -0
  115. package/schemas/crucible-ts/config/sync-keys.schema.yaml +37 -0
  116. package/schemas/crucible-ts/content/README.md +19 -0
  117. package/schemas/crucible-ts/content/binary-embed-manifest/v1.0.0/README.md +13 -0
  118. package/schemas/crucible-ts/content/binary-embed-manifest/v1.0.0/binary-embed-manifest.schema.yaml +36 -0
  119. package/schemas/crucible-ts/content/embed-manifest/v1.1.0/README.md +13 -0
  120. package/schemas/crucible-ts/content/embed-manifest/v1.1.0/embed-manifest.schema.yaml +78 -0
  121. package/schemas/crucible-ts/content/ssot-provenance/v1.0.0/README.md +200 -0
  122. package/schemas/crucible-ts/content/ssot-provenance/v1.0.0/ssot-provenance.schema.json +128 -0
  123. package/schemas/crucible-ts/error-handling/v1.0.0/error-response.schema.json +75 -0
  124. package/schemas/crucible-ts/library/foundry/v1.0.0/country-codes.schema.json +58 -0
  125. package/schemas/crucible-ts/library/foundry/v1.0.0/exit-codes.schema.json +300 -0
  126. package/schemas/crucible-ts/library/foundry/v1.0.0/http-status-groups.schema.json +74 -0
  127. package/schemas/crucible-ts/library/foundry/v1.0.0/mime-types.schema.json +60 -0
  128. package/schemas/crucible-ts/library/foundry/v1.0.0/patterns.schema.json +97 -0
  129. package/schemas/crucible-ts/library/foundry/v1.0.0/signals.schema.json +457 -0
  130. package/schemas/crucible-ts/library/foundry/v1.0.0/similarity.schema.json +260 -0
  131. package/schemas/crucible-ts/library/foundry/v2.0.0/similarity.schema.json +558 -0
  132. package/schemas/crucible-ts/library/fulhash/v1.0.0/README.md +6 -0
  133. package/schemas/crucible-ts/library/fulhash/v1.0.0/checksum-string.schema.json +8 -0
  134. package/schemas/crucible-ts/library/fulhash/v1.0.0/digest.schema.json +100 -0
  135. package/schemas/crucible-ts/library/fulhash/v1.0.0/fixtures.schema.json +227 -0
  136. package/schemas/crucible-ts/library/module-manifest/v1.0.0/README.md +31 -0
  137. package/schemas/crucible-ts/library/module-manifest/v1.0.0/module-manifest.schema.json +132 -0
  138. package/schemas/crucible-ts/meta/README.md +23 -0
  139. package/schemas/crucible-ts/meta/draft-07/schema.json +245 -0
  140. package/schemas/crucible-ts/meta/draft-2020-12/meta/applicator.json +81 -0
  141. package/schemas/crucible-ts/meta/draft-2020-12/meta/content.json +21 -0
  142. package/schemas/crucible-ts/meta/draft-2020-12/meta/core.json +64 -0
  143. package/schemas/crucible-ts/meta/draft-2020-12/meta/format-annotation.json +15 -0
  144. package/schemas/crucible-ts/meta/draft-2020-12/meta/meta-data.json +35 -0
  145. package/schemas/crucible-ts/meta/draft-2020-12/meta/unevaluated.json +18 -0
  146. package/schemas/crucible-ts/meta/draft-2020-12/meta/validation.json +119 -0
  147. package/schemas/crucible-ts/meta/draft-2020-12/schema.json +80 -0
  148. package/schemas/crucible-ts/observability/logging/v1.0.0/README.md +82 -0
  149. package/schemas/crucible-ts/observability/logging/v1.0.0/definitions.schema.json +140 -0
  150. package/schemas/crucible-ts/observability/logging/v1.0.0/log-event.schema.json +179 -0
  151. package/schemas/crucible-ts/observability/logging/v1.0.0/logger-config.schema.json +518 -0
  152. package/schemas/crucible-ts/observability/logging/v1.0.0/logging-policy.schema.json +225 -0
  153. package/schemas/crucible-ts/observability/logging/v1.0.0/middleware-config.schema.json +181 -0
  154. package/schemas/crucible-ts/observability/logging/v1.0.0/severity-filter.schema.json +38 -0
  155. package/schemas/crucible-ts/observability/metrics/v1.0.0/metrics-event.schema.json +86 -0
  156. package/schemas/crucible-ts/pathfinder/v1.0.0/README.md +104 -0
  157. package/schemas/crucible-ts/pathfinder/v1.0.0/error-response.schema.json +35 -0
  158. package/schemas/crucible-ts/pathfinder/v1.0.0/find-query.schema.json +49 -0
  159. package/schemas/crucible-ts/pathfinder/v1.0.0/finder-config.schema.json +91 -0
  160. package/schemas/crucible-ts/pathfinder/v1.0.0/metadata.schema.json +61 -0
  161. package/schemas/crucible-ts/pathfinder/v1.0.0/path-constraint.schema.json +50 -0
  162. package/schemas/crucible-ts/pathfinder/v1.0.0/path-result.schema.json +40 -0
  163. package/schemas/crucible-ts/protocol/http/v1.0.0/README.md +22 -0
  164. package/schemas/crucible-ts/protocol/http/v1.0.0/error-response.schema.json +54 -0
  165. package/schemas/crucible-ts/protocol/http/v1.0.0/health-response.schema.json +70 -0
  166. package/schemas/crucible-ts/protocol/http/v1.0.0/success-response.schema.json +51 -0
  167. package/schemas/crucible-ts/protocol/http/v1.0.0/version-response.schema.json +61 -0
  168. package/schemas/crucible-ts/schema-validation/v1.0.0/README.md +65 -0
  169. package/schemas/crucible-ts/schema-validation/v1.0.0/schema-registry.schema.json +31 -0
  170. package/schemas/crucible-ts/schema-validation/v1.0.0/validator-config.schema.json +36 -0
  171. package/schemas/crucible-ts/server/management/v1.0.0/server-management.schema.json +199 -0
  172. package/schemas/crucible-ts/taxonomy/language/v1.0.0/README.md +30 -0
  173. package/schemas/crucible-ts/taxonomy/language/v1.0.0/language-key.schema.json +17 -0
  174. package/schemas/crucible-ts/taxonomy/language/v1.0.0/language-metadata.schema.json +44 -0
  175. package/schemas/crucible-ts/taxonomy/repository-category/v1.0.0/README.md +31 -0
  176. package/schemas/crucible-ts/taxonomy/repository-category/v1.0.0/category-key.schema.json +19 -0
  177. package/schemas/crucible-ts/taxonomy/repository-category/v1.0.0/category-metadata.schema.json +39 -0
  178. package/schemas/crucible-ts/terminal/v1.0.0/README.md +45 -0
  179. package/schemas/crucible-ts/terminal/v1.0.0/catalog/apple-terminal.yaml +2 -0
  180. package/schemas/crucible-ts/terminal/v1.0.0/catalog/ghostty.yaml +13 -0
  181. package/schemas/crucible-ts/terminal/v1.0.0/catalog/iterm2.yaml +13 -0
  182. package/schemas/crucible-ts/terminal/v1.0.0/schema.json +40 -0
  183. package/schemas/crucible-ts/tooling/external-tools/v1.0.0/README.md +164 -0
  184. package/schemas/crucible-ts/tooling/external-tools/v1.0.0/external-tools-manifest.schema.yaml +83 -0
  185. package/schemas/crucible-ts/tooling/goneat-tools/v1.0.0/README.md +177 -0
  186. package/schemas/crucible-ts/tooling/goneat-tools/v1.0.0/goneat-tools-config.schema.yaml +146 -0
  187. package/schemas/crucible-ts/web/branding/v1.0.0/site-branding.schema.json +79 -0
  188. package/schemas/crucible-ts/web/styling/v1.0.0/site-styling.schema.json +321 -0
@@ -0,0 +1,60 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.fulmenhq.dev/crucible/ascii/box-chars-v1.0.0.json",
4
+ "title": "BoxChars",
5
+ "description": "Characters used for drawing ASCII boxes and borders",
6
+ "type": "object",
7
+ "properties": {
8
+ "topLeft": {
9
+ "type": "string",
10
+ "description": "Top-left corner character",
11
+ "minLength": 1,
12
+ "maxLength": 1
13
+ },
14
+ "topRight": {
15
+ "type": "string",
16
+ "description": "Top-right corner character",
17
+ "minLength": 1,
18
+ "maxLength": 1
19
+ },
20
+ "bottomLeft": {
21
+ "type": "string",
22
+ "description": "Bottom-left corner character",
23
+ "minLength": 1,
24
+ "maxLength": 1
25
+ },
26
+ "bottomRight": {
27
+ "type": "string",
28
+ "description": "Bottom-right corner character",
29
+ "minLength": 1,
30
+ "maxLength": 1
31
+ },
32
+ "horizontal": {
33
+ "type": "string",
34
+ "description": "Horizontal line character",
35
+ "minLength": 1,
36
+ "maxLength": 1
37
+ },
38
+ "vertical": {
39
+ "type": "string",
40
+ "description": "Vertical line character",
41
+ "minLength": 1,
42
+ "maxLength": 1
43
+ },
44
+ "cross": {
45
+ "type": "string",
46
+ "description": "Cross/intersection character",
47
+ "minLength": 1,
48
+ "maxLength": 1
49
+ }
50
+ },
51
+ "required": [
52
+ "topLeft",
53
+ "topRight",
54
+ "bottomLeft",
55
+ "bottomRight",
56
+ "horizontal",
57
+ "vertical",
58
+ "cross"
59
+ ]
60
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.fulmenhq.dev/crucible/ascii/string-analysis-v1.0.0.json",
4
+ "title": "StringAnalysis",
5
+ "description": "Analysis results for string properties including Unicode-aware width calculation",
6
+ "type": "object",
7
+ "properties": {
8
+ "length": {
9
+ "type": "integer",
10
+ "minimum": 0,
11
+ "description": "Total character length of the string"
12
+ },
13
+ "width": {
14
+ "type": "integer",
15
+ "minimum": 0,
16
+ "description": "Display width accounting for Unicode characters"
17
+ },
18
+ "hasUnicode": {
19
+ "type": "boolean",
20
+ "description": "Whether the string contains Unicode characters"
21
+ },
22
+ "lineCount": {
23
+ "type": "integer",
24
+ "minimum": 0,
25
+ "description": "Number of lines in the string"
26
+ },
27
+ "wordCount": {
28
+ "type": "integer",
29
+ "minimum": 0,
30
+ "description": "Number of words in the string"
31
+ },
32
+ "isMultiline": {
33
+ "type": "boolean",
34
+ "description": "Whether the string contains multiple lines"
35
+ }
36
+ },
37
+ "required": [
38
+ "length",
39
+ "width",
40
+ "hasUnicode",
41
+ "lineCount",
42
+ "wordCount",
43
+ "isMultiline"
44
+ ]
45
+ }
@@ -0,0 +1,25 @@
1
+ # Assessment Schemas
2
+
3
+ This directory contains shared schema definitions for assessment- and analysis-related
4
+ artifacts that span multiple Fulmen tools.
5
+
6
+ ## Files
7
+
8
+ | Schema | Purpose |
9
+ | ----------------------------------------- | ------------------------------------------------------------- |
10
+ | `v1.0.0/severity-definitions.schema.json` | Canonical severity name/level mapping for assessment tooling. |
11
+
12
+ ### Severity Definitions
13
+
14
+ `severity-definitions.schema.json` provides `$defs` that map assessment severity names
15
+ (`info`, `low`, `medium`, `high`, `critical`) to sortable numeric levels (`0-4`).
16
+ Consumers should reference these definitions via `$ref`, for example:
17
+
18
+ ```yaml
19
+ fail_on:
20
+ $ref: ../../assessment/v1.0.0/severity-definitions.schema.json#/$defs/severityName
21
+ default: high
22
+ ```
23
+
24
+ When comparing severities, always convert names to `severityLevel` using the canonical
25
+ mapping (`severityMapping`) rather than relying on lexical ordering.
@@ -0,0 +1,60 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.fulmenhq.dev/assessment/severity-definitions-v1.0.0.json",
4
+ "title": "Assessment Severity Definitions",
5
+ "description": "Shared severity definitions for assessment and analysis tooling.",
6
+ "$comment": "Implementations MUST compare severities using severityLevel, not lexical ordering of severityName.",
7
+ "$defs": {
8
+ "severityName": {
9
+ "type": "string",
10
+ "enum": [
11
+ "info",
12
+ "low",
13
+ "medium",
14
+ "high",
15
+ "critical"
16
+ ],
17
+ "description": "Assessment severity name from lowest (info) to highest (critical)."
18
+ },
19
+ "severityLevel": {
20
+ "type": "integer",
21
+ "enum": [
22
+ 0,
23
+ 1,
24
+ 2,
25
+ 3,
26
+ 4
27
+ ],
28
+ "description": "Numeric severity level for sorting and comparison (info=0, critical=4)."
29
+ },
30
+ "severityMapping": {
31
+ "type": "object",
32
+ "description": "Canonical mapping of severity names to numeric levels.",
33
+ "additionalProperties": false,
34
+ "properties": {
35
+ "info": {
36
+ "const": 0
37
+ },
38
+ "low": {
39
+ "const": 1
40
+ },
41
+ "medium": {
42
+ "const": 2
43
+ },
44
+ "high": {
45
+ "const": 3
46
+ },
47
+ "critical": {
48
+ "const": 4
49
+ }
50
+ },
51
+ "required": [
52
+ "info",
53
+ "low",
54
+ "medium",
55
+ "high",
56
+ "critical"
57
+ ]
58
+ }
59
+ }
60
+ }
@@ -0,0 +1,11 @@
1
+ ---
2
+ title: "Fulmen Config Paths Schema"
3
+ description: "JSON schema describing default config/data/cache locations for Fulmen ecosystem"
4
+ author: "Schema Cartographer"
5
+ date: "2025-10-02"
6
+ last_updated: "2025-10-02"
7
+ status: "draft"
8
+ tags: ["config", "schema", "xdg"]
9
+ ---
10
+
11
+ Use `fulmen-config-paths.schema.json` to validate documents that capture per-platform configuration directories. This schema complements the Fulmen Config Path Standard.
@@ -0,0 +1,61 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.fulmenhq.dev/config/fulmen-ecosystem/fulmen-config-paths-v1.0.0.json",
4
+ "title": "Fulmen Config Paths",
5
+ "description": "Describes shared configuration directories for Fulmen tools",
6
+ "type": "object",
7
+ "required": [
8
+ "platforms"
9
+ ],
10
+ "properties": {
11
+ "version": {
12
+ "type": "string",
13
+ "description": "Schema version or manifest revision"
14
+ },
15
+ "platforms": {
16
+ "type": "object",
17
+ "additionalProperties": false,
18
+ "required": [
19
+ "linux",
20
+ "macos",
21
+ "windows"
22
+ ],
23
+ "properties": {
24
+ "linux": {
25
+ "$ref": "#/definitions/platformPaths"
26
+ },
27
+ "macos": {
28
+ "$ref": "#/definitions/platformPaths"
29
+ },
30
+ "windows": {
31
+ "$ref": "#/definitions/platformPaths"
32
+ }
33
+ }
34
+ }
35
+ },
36
+ "definitions": {
37
+ "platformPaths": {
38
+ "type": "object",
39
+ "required": [
40
+ "config",
41
+ "data",
42
+ "cache"
43
+ ],
44
+ "properties": {
45
+ "config": {
46
+ "type": "string",
47
+ "description": "Default configuration directory"
48
+ },
49
+ "data": {
50
+ "type": "string",
51
+ "description": "Default data directory"
52
+ },
53
+ "cache": {
54
+ "type": "string",
55
+ "description": "Default cache directory"
56
+ }
57
+ },
58
+ "additionalProperties": false
59
+ }
60
+ }
61
+ }
@@ -0,0 +1,60 @@
1
+ # Goneat Configuration Schemas
2
+
3
+ This directory contains JSON Schema definitions that codify configuration and policy
4
+ files consumed by the goneat toolchain. Each schema is published at
5
+ `https://schemas.fulmenhq.dev/config/goneat/<name>-<version>.schema.json` and should
6
+ be referenced from the corresponding YAML/JSON policy files via the `$schema` field
7
+ whenever possible.
8
+
9
+ ## Available Schemas
10
+
11
+ | Schema | Purpose |
12
+ | --------------------------------------------- | ---------------------------------------------------------------- |
13
+ | `goneat-config.yaml` | Core goneat CLI configuration (toolchain sources, telemetry opt) |
14
+ | `dates.yaml` | Date formatting conventions for release automation |
15
+ | `security-policy.yaml` | Security scanning and suppression policy |
16
+ | `lifecycle-phase.json` / `release-phase.json` | Lifecycle metadata used by release automation |
17
+ | `version-policy.schema.yaml` | Version SSOT propagation policy (new in v0.3.0) |
18
+
19
+ ## Version Policy (`version-policy.schema.yaml`)
20
+
21
+ The version policy schema enables repositories to describe how the authoritative
22
+ `VERSION` file propagates into downstream package manifests using goneat’s
23
+ `version propagate` command. Policies live at `.goneat/version-policy.yaml` in consumer
24
+ repositories and should reference the schema via:
25
+
26
+ ```yaml
27
+ $schema: https://schemas.fulmenhq.dev/config/goneat/version-policy-v1.0.0.schema.json
28
+ ```
29
+
30
+ Key capabilities:
31
+
32
+ - **Schemes & Channels**: declare whether the repo uses SemVer or CalVer and optionally
33
+ constrain prerelease channels.
34
+ - **Propagation Rules**: control default include/exclude patterns, handler-specific
35
+ overrides, workspace behaviour, and backup retention.
36
+ - **Content Rules vs Guards**: `rules` describes version content constraints (channels,
37
+ tags, prerelease allowances) while `guards` enforce execution preconditions (branch
38
+ allow-lists, dirty worktree checks). Both sections are optional—planned for Phase 3a of
39
+ goneat’s roadmap.
40
+ - **Extensibility**: `metadata` allows teams to attach internal annotations that goneat
41
+ will ignore while keeping the schema forward-compatible.
42
+
43
+ The schema keys align with manifest filenames (e.g., `package.json`, `pyproject.toml`,
44
+ `go.mod`). The workspace strategy supports three patterns:
45
+
46
+ - `single-version`: all manifests inherit the root VERSION.
47
+ - `opt-in`: only globs listed in `allowlist` receive independent version control.
48
+ - `opt-out`: everything propagates except paths explicitly listed in `blocklist`.
49
+
50
+ See the schema `examples` block for a reference configuration that covers common
51
+ use cases (JS + Python monorepo with Go validation only). Additional cookbook
52
+ samples will ship with goneat v0.3.0 documentation.
53
+
54
+ ## Contributing
55
+
56
+ - Update the `$id` to point at the published schema URL when introducing new versions.
57
+ - Keep the schema version number in lock-step with goneat releases that introduce
58
+ breaking changes to the configuration surface.
59
+ - Whenever a schema is added or updated, ensure `make check-all` passes so that
60
+ downstream language wrappers receive the new definition during sync.
@@ -0,0 +1,234 @@
1
+ $schema: https://json-schema.org/draft/2020-12/schema
2
+ $id: https://schemas.goneat.dev/config/dates/v1.0.0
3
+ $version: 1.0.0
4
+ title: Goneat Dates Configuration Schema
5
+ description: Configuration schema for Goneat dates validation and fixes
6
+ type: object
7
+ properties:
8
+ enabled:
9
+ type: boolean
10
+ description: Enable dates validation
11
+ default: true
12
+ examples:
13
+ - true
14
+ - false
15
+ rules:
16
+ type: object
17
+ description: Rule-specific configurations
18
+ properties:
19
+ future_dates:
20
+ type: object
21
+ description: Detect dates in future (e.g., hallucinations)
22
+ properties:
23
+ enabled:
24
+ type: boolean
25
+ description: Enable future dates detection
26
+ default: true
27
+ max_skew:
28
+ type: string
29
+ description: Max future allowance (Go duration format)
30
+ default: "24h"
31
+ pattern: "^\\d+[dhms]$"
32
+ examples:
33
+ - "24h"
34
+ - "1h"
35
+ - "30m"
36
+ - "5d"
37
+ severity:
38
+ type: string
39
+ description: Severity level for future dates
40
+ enum: ["critical", "high", "medium", "low", "info", "error"]
41
+ default: "error"
42
+ auto_fix:
43
+ type: boolean
44
+ description: Auto-replace with today (warn on ambiguity)
45
+ default: true
46
+ additionalProperties: false
47
+ stale_entries:
48
+ type: object
49
+ description: Warn on outdated entries (e.g., old changelogs)
50
+ properties:
51
+ enabled:
52
+ type: boolean
53
+ description: Enable stale entries detection
54
+ default: true
55
+ warn_days:
56
+ type: integer
57
+ description: Days before warning
58
+ minimum: 0
59
+ maximum: 3650
60
+ default: 180
61
+ severity:
62
+ type: string
63
+ description: Severity level for stale entries
64
+ enum: ["critical", "high", "medium", "low", "info", "warning"]
65
+ default: "warning"
66
+ additionalProperties: false
67
+ monotonic_order:
68
+ type: object
69
+ description: Ensure chronological order (e.g., changelog descending)
70
+ properties:
71
+ enabled:
72
+ type: boolean
73
+ description: Enable monotonic order checking
74
+ default: true
75
+ files:
76
+ type: array
77
+ description: Glob patterns for ordering checks
78
+ items:
79
+ type: string
80
+ default: ["CHANGELOG.md"]
81
+ examples:
82
+ - ["CHANGELOG.md", "**/HISTORY.md"]
83
+ severity:
84
+ type: string
85
+ description: Severity level for order violations
86
+ enum: ["critical", "high", "medium", "low", "info", "warning", "error"]
87
+ default: "warning"
88
+ check_top_n:
89
+ type: integer
90
+ description: Check only the top N entries (0 = check all)
91
+ minimum: 0
92
+ default: 0
93
+ ignore_files:
94
+ type: array
95
+ description: Files to ignore for monotonic checks
96
+ items:
97
+ type: string
98
+ default: []
99
+ additionalProperties: false
100
+ cross_file_consistency:
101
+ type: object
102
+ description: Coherence across files (e.g., dates match versions)
103
+ properties:
104
+ enabled:
105
+ type: boolean
106
+ description: Enable cross-file consistency checking
107
+ default: false
108
+ groups:
109
+ type: array
110
+ description: Arrays of files to cross-check
111
+ items:
112
+ type: array
113
+ items:
114
+ type: string
115
+ examples:
116
+ - [["CHANGELOG.md", "package.json"], ["VERSION", "Cargo.toml"]]
117
+ severity:
118
+ type: string
119
+ description: Severity level for consistency violations
120
+ enum: ["critical", "high", "medium", "low", "info", "error"]
121
+ default: "error"
122
+ additionalProperties: false
123
+ additionalProperties: false
124
+ required: []
125
+ files:
126
+ type: object
127
+ description: File selection and guards
128
+ properties:
129
+ include:
130
+ type: array
131
+ description: Globs to include (supports ** via doublestar). Opt-in approach - only specified files are checked.
132
+ items:
133
+ type: string
134
+ default: ["CHANGELOG.md", "**/CHANGELOG*.md", "**/HISTORY.md", "RELEASE_NOTES.md", "**/RELEASE*.md", "**/VERSION"]
135
+ exclude:
136
+ type: array
137
+ description: Globs to exclude (supports **)
138
+ items:
139
+ type: string
140
+ default: ["**/node_modules/**", "**/.git/**", "**/dist/**", "**/build/**"]
141
+ text_extensions:
142
+ type: array
143
+ description: Advisory extensions (binary sniff overrides)
144
+ items:
145
+ type: string
146
+ default: [".md", ".txt", ".yaml", ".yml", ".json", ".toml"]
147
+ max_file_size_bytes:
148
+ type: integer
149
+ description: Skip larger files (prevent OOM)
150
+ minimum: 0
151
+ default: 4194304
152
+ additionalProperties: false
153
+ required: []
154
+ date_patterns:
155
+ type: array
156
+ description: Order-aware patterns to avoid MM/DD vs DD/MM ambiguity
157
+ items:
158
+ type: object
159
+ properties:
160
+ regex:
161
+ type: string
162
+ description: Regex with 3 capture groups (year, month, day)
163
+ order:
164
+ type: string
165
+ description: Parse order specification
166
+ enum: ["YMD", "MDY", "DMY"]
167
+ description:
168
+ type: string
169
+ description: Human-readable description of the pattern
170
+ required: ["regex", "order"]
171
+ additionalProperties: false
172
+ default:
173
+ - regex: "(\\d{4})-(\\d{2})-(\\d{2})"
174
+ order: "YMD"
175
+ description: "ISO 8601 Standard"
176
+ - regex: "(\\d{1,2})/(\\d{1,2})/(\\d{4})"
177
+ order: "MDY"
178
+ description: "US Format"
179
+ - regex: "(\\d{1,2})\\.(\\d{1,2})\\.(\\d{4})"
180
+ order: "DMY"
181
+ description: "European Format"
182
+ timezone:
183
+ type: string
184
+ description: IANA TZ for parsing/comparison
185
+ default: "UTC"
186
+ examples:
187
+ - "UTC"
188
+ - "America/New_York"
189
+ now:
190
+ type: ["string", "null"]
191
+ description: RFC3339 string to override time.Now() (tests only)
192
+ format: date-time
193
+ default: null
194
+ ai_safety:
195
+ type: object
196
+ description: AI-specific checks (e.g., hallucinations, placeholders)
197
+ properties:
198
+ enabled:
199
+ type: boolean
200
+ description: Enable AI safety checks
201
+ default: true
202
+ detect_placeholders:
203
+ type: boolean
204
+ description: Detect placeholder dates like [DATE], YYYY-MM-DD
205
+ default: true
206
+ detect_impossible:
207
+ type: boolean
208
+ description: Detect impossible dates like Feb 30, invalid months
209
+ default: true
210
+ severity:
211
+ type: string
212
+ description: Severity level for AI safety violations
213
+ enum: ["critical", "high", "medium", "low", "info", "warning"]
214
+ default: "warning"
215
+ additionalProperties: false
216
+ required: []
217
+ output:
218
+ type: object
219
+ description: CLI output control
220
+ properties:
221
+ format:
222
+ type: string
223
+ description: Output format
224
+ enum: ["text", "json", "sarif", "markdown"]
225
+ default: "text"
226
+ fail_on:
227
+ type: string
228
+ description: Exit 1 on severity level
229
+ enum: ["error", "warning", "any"]
230
+ default: "error"
231
+ additionalProperties: false
232
+ required: []
233
+ additionalProperties: false
234
+ required: []