@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.
- package/CHANGELOG.md +616 -0
- package/LICENSE +57 -0
- package/README.md +674 -0
- package/config/crucible-ts/README.md +38 -0
- package/config/crucible-ts/library/foundry/country-codes.yaml +29 -0
- package/config/crucible-ts/library/foundry/exit-codes.snapshot.json +351 -0
- package/config/crucible-ts/library/foundry/exit-codes.yaml +483 -0
- package/config/crucible-ts/library/foundry/fixtures/signals/invalid/invalid-behavior.yaml +45 -0
- package/config/crucible-ts/library/foundry/fixtures/signals/invalid/invalid-exit-code.yaml +51 -0
- package/config/crucible-ts/library/foundry/fixtures/signals/invalid/malformed.yaml +44 -0
- package/config/crucible-ts/library/foundry/fixtures/signals/invalid/missing-required.yaml +36 -0
- package/config/crucible-ts/library/foundry/fixtures/signals/parity-snapshot.json +162 -0
- package/config/crucible-ts/library/foundry/fixtures/signals/valid/complete.yaml +314 -0
- package/config/crucible-ts/library/foundry/fixtures/signals/valid/custom-behavior.yaml +96 -0
- package/config/crucible-ts/library/foundry/fixtures/signals/valid/minimal.yaml +55 -0
- package/config/crucible-ts/library/foundry/http-statuses.yaml +148 -0
- package/config/crucible-ts/library/foundry/mime-types.yaml +39 -0
- package/config/crucible-ts/library/foundry/patterns.yaml +185 -0
- package/config/crucible-ts/library/foundry/signals.yaml +331 -0
- package/config/crucible-ts/library/foundry/similarity-fixtures.yaml +432 -0
- package/config/crucible-ts/library/foundry/simplified-modes.snapshot.json +117 -0
- package/config/crucible-ts/library/fulhash/fixtures.yaml +160 -0
- package/config/crucible-ts/library/v1.0.0/module-manifest.yaml +179 -0
- package/config/crucible-ts/repository/app-identity/app-identity.example.yaml +42 -0
- package/config/crucible-ts/repository/app-identity/fixtures/invalid/invalid-binary-name.yaml +7 -0
- package/config/crucible-ts/repository/app-identity/fixtures/invalid/invalid-env-prefix.yaml +7 -0
- package/config/crucible-ts/repository/app-identity/fixtures/invalid/invalid-vendor.yaml +7 -0
- package/config/crucible-ts/repository/app-identity/fixtures/invalid/malformed-yaml.yaml +8 -0
- package/config/crucible-ts/repository/app-identity/fixtures/invalid/missing-required.yaml +6 -0
- package/config/crucible-ts/repository/app-identity/fixtures/valid/complete.yaml +20 -0
- package/config/crucible-ts/repository/app-identity/fixtures/valid/minimal.yaml +7 -0
- package/config/crucible-ts/repository/app-identity/fixtures/valid/monorepo-api.yaml +10 -0
- package/config/crucible-ts/repository/app-identity/fixtures/valid/monorepo-worker.yaml +10 -0
- package/config/crucible-ts/repository/app-identity/parity-snapshot.json +125 -0
- package/config/crucible-ts/server/management/server-management.yaml +141 -0
- package/config/crucible-ts/sync/README.md +13 -0
- package/config/crucible-ts/sync/sync-keys.yaml +74 -0
- package/config/crucible-ts/taxonomy/languages.yaml +33 -0
- package/config/crucible-ts/taxonomy/metrics.yaml +115 -0
- package/config/crucible-ts/taxonomy/repository-categories.yaml +66 -0
- package/config/crucible-ts/terminal/v1.0.0/terminal-overrides-defaults.yaml +38 -0
- package/config/crucible-ts/web/branding/site-branding.yaml +21 -0
- package/config/crucible-ts/web/styling/site-styling.yaml +104 -0
- package/dist/appidentity/index.d.ts +304 -0
- package/dist/appidentity/index.js +5519 -0
- package/dist/appidentity/index.js.map +1 -0
- package/dist/config/index.d.ts +144 -0
- package/dist/config/index.js +5752 -0
- package/dist/config/index.js.map +1 -0
- package/dist/crucible/index.d.ts +78 -0
- package/dist/crucible/index.js +6038 -0
- package/dist/crucible/index.js.map +1 -0
- package/dist/docscribe/index.d.ts +110 -0
- package/dist/docscribe/index.js +682 -0
- package/dist/docscribe/index.js.map +1 -0
- package/dist/errors/index.d.ts +150 -0
- package/dist/errors/index.js +5583 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/foundry/index.d.ts +1557 -0
- package/dist/foundry/index.js +5474 -0
- package/dist/foundry/index.js.map +1 -0
- package/dist/foundry/similarity/index.d.ts +17 -0
- package/dist/foundry/similarity/index.js +136 -0
- package/dist/foundry/similarity/index.js.map +1 -0
- package/dist/fulhash/index.d.ts +82 -0
- package/dist/fulhash/index.js +374 -0
- package/dist/fulhash/index.js.map +1 -0
- package/dist/fulmen-error-B_kX8jSC.d.ts +309 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.js +6197 -0
- package/dist/index.js.map +1 -0
- package/dist/logger-JU2jYitA.d.ts +171 -0
- package/dist/logging/index.d.ts +198 -0
- package/dist/logging/index.js +578 -0
- package/dist/logging/index.js.map +1 -0
- package/dist/pathfinder/index.d.ts +532 -0
- package/dist/pathfinder/index.js +6750 -0
- package/dist/pathfinder/index.js.map +1 -0
- package/dist/registry-x1-Qi_Tz.d.ts +349 -0
- package/dist/schema/index.d.ts +388 -0
- package/dist/schema/index.js +5522 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/suggest-CLqjLZ5L.d.ts +168 -0
- package/dist/telemetry/index.d.ts +161 -0
- package/dist/telemetry/index.js +5610 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/types-B_WtvQbS.d.ts +214 -0
- package/package.json +130 -0
- package/schemas/crucible-ts/api/http/v1.0.0/README.md +22 -0
- package/schemas/crucible-ts/api/http/v1.0.0/error-response.schema.json +54 -0
- package/schemas/crucible-ts/api/http/v1.0.0/health-response.schema.json +70 -0
- package/schemas/crucible-ts/api/http/v1.0.0/success-response.schema.json +51 -0
- package/schemas/crucible-ts/api/http/v1.0.0/version-response.schema.json +61 -0
- package/schemas/crucible-ts/ascii/v1.0.0/README.md +69 -0
- package/schemas/crucible-ts/ascii/v1.0.0/box-chars.schema.json +60 -0
- package/schemas/crucible-ts/ascii/v1.0.0/string-analysis.schema.json +45 -0
- package/schemas/crucible-ts/assessment/README.md +25 -0
- package/schemas/crucible-ts/assessment/v1.0.0/severity-definitions.schema.json +60 -0
- package/schemas/crucible-ts/config/fulmen-ecosystem/v1.0.0/README.md +11 -0
- package/schemas/crucible-ts/config/fulmen-ecosystem/v1.0.0/fulmen-config-paths.schema.json +61 -0
- package/schemas/crucible-ts/config/goneat/README.md +60 -0
- package/schemas/crucible-ts/config/goneat/v1.0.0/dates.yaml +234 -0
- package/schemas/crucible-ts/config/goneat/v1.0.0/goneat-config.yaml +344 -0
- package/schemas/crucible-ts/config/goneat/v1.0.0/lifecycle-phase.json +20 -0
- package/schemas/crucible-ts/config/goneat/v1.0.0/release-phase.json +17 -0
- package/schemas/crucible-ts/config/goneat/v1.0.0/security-policy.yaml +178 -0
- package/schemas/crucible-ts/config/goneat/v1.0.0/version-policy.schema.yaml +205 -0
- package/schemas/crucible-ts/config/repository/app-identity/v1.0.0/app-identity.schema.json +143 -0
- package/schemas/crucible-ts/config/repository/v1.0.0/lifecycle-phase.json +20 -0
- package/schemas/crucible-ts/config/repository-category/codex/v1.0.0/codex-config.schema.json +288 -0
- package/schemas/crucible-ts/config/standards/v1.0.0/adr-adoption-status.json +60 -0
- package/schemas/crucible-ts/config/standards/v1.0.0/adr-frontmatter.schema.json +225 -0
- package/schemas/crucible-ts/config/standards/v1.0.0/adr-lifecycle-status.json +62 -0
- package/schemas/crucible-ts/config/sync-consumer-config.yaml +51 -0
- package/schemas/crucible-ts/config/sync-keys.schema.yaml +37 -0
- package/schemas/crucible-ts/content/README.md +19 -0
- package/schemas/crucible-ts/content/binary-embed-manifest/v1.0.0/README.md +13 -0
- package/schemas/crucible-ts/content/binary-embed-manifest/v1.0.0/binary-embed-manifest.schema.yaml +36 -0
- package/schemas/crucible-ts/content/embed-manifest/v1.1.0/README.md +13 -0
- package/schemas/crucible-ts/content/embed-manifest/v1.1.0/embed-manifest.schema.yaml +78 -0
- package/schemas/crucible-ts/content/ssot-provenance/v1.0.0/README.md +200 -0
- package/schemas/crucible-ts/content/ssot-provenance/v1.0.0/ssot-provenance.schema.json +128 -0
- package/schemas/crucible-ts/error-handling/v1.0.0/error-response.schema.json +75 -0
- package/schemas/crucible-ts/library/foundry/v1.0.0/country-codes.schema.json +58 -0
- package/schemas/crucible-ts/library/foundry/v1.0.0/exit-codes.schema.json +300 -0
- package/schemas/crucible-ts/library/foundry/v1.0.0/http-status-groups.schema.json +74 -0
- package/schemas/crucible-ts/library/foundry/v1.0.0/mime-types.schema.json +60 -0
- package/schemas/crucible-ts/library/foundry/v1.0.0/patterns.schema.json +97 -0
- package/schemas/crucible-ts/library/foundry/v1.0.0/signals.schema.json +457 -0
- package/schemas/crucible-ts/library/foundry/v1.0.0/similarity.schema.json +260 -0
- package/schemas/crucible-ts/library/foundry/v2.0.0/similarity.schema.json +558 -0
- package/schemas/crucible-ts/library/fulhash/v1.0.0/README.md +6 -0
- package/schemas/crucible-ts/library/fulhash/v1.0.0/checksum-string.schema.json +8 -0
- package/schemas/crucible-ts/library/fulhash/v1.0.0/digest.schema.json +100 -0
- package/schemas/crucible-ts/library/fulhash/v1.0.0/fixtures.schema.json +227 -0
- package/schemas/crucible-ts/library/module-manifest/v1.0.0/README.md +31 -0
- package/schemas/crucible-ts/library/module-manifest/v1.0.0/module-manifest.schema.json +132 -0
- package/schemas/crucible-ts/meta/README.md +23 -0
- package/schemas/crucible-ts/meta/draft-07/schema.json +245 -0
- package/schemas/crucible-ts/meta/draft-2020-12/meta/applicator.json +81 -0
- package/schemas/crucible-ts/meta/draft-2020-12/meta/content.json +21 -0
- package/schemas/crucible-ts/meta/draft-2020-12/meta/core.json +64 -0
- package/schemas/crucible-ts/meta/draft-2020-12/meta/format-annotation.json +15 -0
- package/schemas/crucible-ts/meta/draft-2020-12/meta/meta-data.json +35 -0
- package/schemas/crucible-ts/meta/draft-2020-12/meta/unevaluated.json +18 -0
- package/schemas/crucible-ts/meta/draft-2020-12/meta/validation.json +119 -0
- package/schemas/crucible-ts/meta/draft-2020-12/schema.json +80 -0
- package/schemas/crucible-ts/observability/logging/v1.0.0/README.md +82 -0
- package/schemas/crucible-ts/observability/logging/v1.0.0/definitions.schema.json +140 -0
- package/schemas/crucible-ts/observability/logging/v1.0.0/log-event.schema.json +179 -0
- package/schemas/crucible-ts/observability/logging/v1.0.0/logger-config.schema.json +518 -0
- package/schemas/crucible-ts/observability/logging/v1.0.0/logging-policy.schema.json +225 -0
- package/schemas/crucible-ts/observability/logging/v1.0.0/middleware-config.schema.json +181 -0
- package/schemas/crucible-ts/observability/logging/v1.0.0/severity-filter.schema.json +38 -0
- package/schemas/crucible-ts/observability/metrics/v1.0.0/metrics-event.schema.json +86 -0
- package/schemas/crucible-ts/pathfinder/v1.0.0/README.md +104 -0
- package/schemas/crucible-ts/pathfinder/v1.0.0/error-response.schema.json +35 -0
- package/schemas/crucible-ts/pathfinder/v1.0.0/find-query.schema.json +49 -0
- package/schemas/crucible-ts/pathfinder/v1.0.0/finder-config.schema.json +91 -0
- package/schemas/crucible-ts/pathfinder/v1.0.0/metadata.schema.json +61 -0
- package/schemas/crucible-ts/pathfinder/v1.0.0/path-constraint.schema.json +50 -0
- package/schemas/crucible-ts/pathfinder/v1.0.0/path-result.schema.json +40 -0
- package/schemas/crucible-ts/protocol/http/v1.0.0/README.md +22 -0
- package/schemas/crucible-ts/protocol/http/v1.0.0/error-response.schema.json +54 -0
- package/schemas/crucible-ts/protocol/http/v1.0.0/health-response.schema.json +70 -0
- package/schemas/crucible-ts/protocol/http/v1.0.0/success-response.schema.json +51 -0
- package/schemas/crucible-ts/protocol/http/v1.0.0/version-response.schema.json +61 -0
- package/schemas/crucible-ts/schema-validation/v1.0.0/README.md +65 -0
- package/schemas/crucible-ts/schema-validation/v1.0.0/schema-registry.schema.json +31 -0
- package/schemas/crucible-ts/schema-validation/v1.0.0/validator-config.schema.json +36 -0
- package/schemas/crucible-ts/server/management/v1.0.0/server-management.schema.json +199 -0
- package/schemas/crucible-ts/taxonomy/language/v1.0.0/README.md +30 -0
- package/schemas/crucible-ts/taxonomy/language/v1.0.0/language-key.schema.json +17 -0
- package/schemas/crucible-ts/taxonomy/language/v1.0.0/language-metadata.schema.json +44 -0
- package/schemas/crucible-ts/taxonomy/repository-category/v1.0.0/README.md +31 -0
- package/schemas/crucible-ts/taxonomy/repository-category/v1.0.0/category-key.schema.json +19 -0
- package/schemas/crucible-ts/taxonomy/repository-category/v1.0.0/category-metadata.schema.json +39 -0
- package/schemas/crucible-ts/terminal/v1.0.0/README.md +45 -0
- package/schemas/crucible-ts/terminal/v1.0.0/catalog/apple-terminal.yaml +2 -0
- package/schemas/crucible-ts/terminal/v1.0.0/catalog/ghostty.yaml +13 -0
- package/schemas/crucible-ts/terminal/v1.0.0/catalog/iterm2.yaml +13 -0
- package/schemas/crucible-ts/terminal/v1.0.0/schema.json +40 -0
- package/schemas/crucible-ts/tooling/external-tools/v1.0.0/README.md +164 -0
- package/schemas/crucible-ts/tooling/external-tools/v1.0.0/external-tools-manifest.schema.yaml +83 -0
- package/schemas/crucible-ts/tooling/goneat-tools/v1.0.0/README.md +177 -0
- package/schemas/crucible-ts/tooling/goneat-tools/v1.0.0/goneat-tools-config.schema.yaml +146 -0
- package/schemas/crucible-ts/web/branding/v1.0.0/site-branding.schema.json +79 -0
- 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: []
|