@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,179 @@
|
|
|
1
|
+
# Fulmen helper module manifest (v2025.10.3)
|
|
2
|
+
version: "2025.10.3"
|
|
3
|
+
lastUpdated: "2025-10-23"
|
|
4
|
+
modules:
|
|
5
|
+
- id: config-path-api
|
|
6
|
+
tier: core
|
|
7
|
+
requirement: mandatory
|
|
8
|
+
description: Platform-aware helpers for Fulmen config/data/cache directories.
|
|
9
|
+
coverage:
|
|
10
|
+
- language: go
|
|
11
|
+
target: 95
|
|
12
|
+
- language: python
|
|
13
|
+
target: 90
|
|
14
|
+
- language: typescript
|
|
15
|
+
target: 85
|
|
16
|
+
- id: three-layer-config
|
|
17
|
+
tier: core
|
|
18
|
+
requirement: mandatory
|
|
19
|
+
description: Load configuration from defaults, user overrides, and runtime inputs.
|
|
20
|
+
coverage:
|
|
21
|
+
- language: go
|
|
22
|
+
target: 95
|
|
23
|
+
- language: python
|
|
24
|
+
target: 90
|
|
25
|
+
- language: typescript
|
|
26
|
+
target: 85
|
|
27
|
+
- id: schema-validation
|
|
28
|
+
tier: core
|
|
29
|
+
requirement: mandatory
|
|
30
|
+
description: Schema discovery, validation helpers, and goneat integrations.
|
|
31
|
+
coverage:
|
|
32
|
+
- language: go
|
|
33
|
+
target: 95
|
|
34
|
+
- language: python
|
|
35
|
+
target: 90
|
|
36
|
+
- language: typescript
|
|
37
|
+
target: 85
|
|
38
|
+
- id: crucible-shim
|
|
39
|
+
tier: core
|
|
40
|
+
requirement: mandatory
|
|
41
|
+
description: Accessors for embedded Crucible assets (schemas, docs, templates).
|
|
42
|
+
coverage:
|
|
43
|
+
- language: go
|
|
44
|
+
target: 95
|
|
45
|
+
- language: python
|
|
46
|
+
target: 90
|
|
47
|
+
- language: typescript
|
|
48
|
+
target: 85
|
|
49
|
+
- id: fuldx-bootstrap
|
|
50
|
+
tier: core
|
|
51
|
+
requirement: mandatory
|
|
52
|
+
description: FulDX installation workflow and tooling manifest helpers.
|
|
53
|
+
coverage:
|
|
54
|
+
- language: go
|
|
55
|
+
target: 90
|
|
56
|
+
- language: python
|
|
57
|
+
target: 90
|
|
58
|
+
- language: typescript
|
|
59
|
+
target: 80
|
|
60
|
+
- id: ssot-sync
|
|
61
|
+
tier: core
|
|
62
|
+
requirement: mandatory
|
|
63
|
+
description: FulDX-driven sync of Crucible assets and index regeneration.
|
|
64
|
+
coverage:
|
|
65
|
+
- language: go
|
|
66
|
+
target: 90
|
|
67
|
+
- language: python
|
|
68
|
+
target: 90
|
|
69
|
+
- language: typescript
|
|
70
|
+
target: 80
|
|
71
|
+
- id: observability-logging
|
|
72
|
+
tier: core
|
|
73
|
+
requirement: mandatory
|
|
74
|
+
description: Structured logging helpers aligned with Crucible logging standards.
|
|
75
|
+
coverage:
|
|
76
|
+
- language: go
|
|
77
|
+
target: 95
|
|
78
|
+
- language: python
|
|
79
|
+
target: 95
|
|
80
|
+
- language: typescript
|
|
81
|
+
target: 90
|
|
82
|
+
- id: foundry
|
|
83
|
+
tier: core
|
|
84
|
+
requirement: mandatory
|
|
85
|
+
description: >
|
|
86
|
+
Common reference data, patterns, and text utilities including pattern catalogs (regex/glob/literal), HTTP status groups, country codes, MIME types, text similarity (Levenshtein distance/scoring), and normalization (Unicode case folding, accent stripping).
|
|
87
|
+
|
|
88
|
+
capabilities:
|
|
89
|
+
- country_codes
|
|
90
|
+
- http_statuses
|
|
91
|
+
- mime_types
|
|
92
|
+
- patterns
|
|
93
|
+
- text_similarity
|
|
94
|
+
- text_normalization
|
|
95
|
+
coverage:
|
|
96
|
+
- language: go
|
|
97
|
+
target: 95
|
|
98
|
+
- language: python
|
|
99
|
+
target: 95
|
|
100
|
+
- language: typescript
|
|
101
|
+
target: 95
|
|
102
|
+
- id: error-handling-propagation
|
|
103
|
+
tier: core
|
|
104
|
+
requirement: mandatory
|
|
105
|
+
description: Uniform error wrapping built on the pathfinder envelope with optional telemetry fields.
|
|
106
|
+
coverage:
|
|
107
|
+
- language: go
|
|
108
|
+
target: 95
|
|
109
|
+
- language: python
|
|
110
|
+
target: 95
|
|
111
|
+
- language: typescript
|
|
112
|
+
target: 90
|
|
113
|
+
- id: docscribe
|
|
114
|
+
tier: core
|
|
115
|
+
requirement: mandatory
|
|
116
|
+
description: Standalone lightweight processing for markdown/YAML documentation from any source with frontmatter extraction and header parsing.
|
|
117
|
+
coverage:
|
|
118
|
+
- language: go
|
|
119
|
+
target: 90
|
|
120
|
+
- language: python
|
|
121
|
+
target: 95
|
|
122
|
+
- language: typescript
|
|
123
|
+
target: 90
|
|
124
|
+
- id: fulhash
|
|
125
|
+
tier: core
|
|
126
|
+
requirement: mandatory
|
|
127
|
+
description: Shared hashing API for block and streaming checksums supporting xxh3-128 (fast) and sha256 (secure) algorithms with consistent metadata formatting.
|
|
128
|
+
capabilities:
|
|
129
|
+
- block_hashing
|
|
130
|
+
- streaming_hashing
|
|
131
|
+
- metadata_formatting
|
|
132
|
+
- checksum_parsing
|
|
133
|
+
coverage:
|
|
134
|
+
- language: go
|
|
135
|
+
target: 95
|
|
136
|
+
- language: python
|
|
137
|
+
target: 95
|
|
138
|
+
- language: typescript
|
|
139
|
+
target: 95
|
|
140
|
+
- id: cloud-storage
|
|
141
|
+
tier: extension
|
|
142
|
+
requirement: optional
|
|
143
|
+
description: Unified helpers for S3, GCS, and Azure Blob operations.
|
|
144
|
+
- id: pathfinder
|
|
145
|
+
tier: extension
|
|
146
|
+
requirement: optional
|
|
147
|
+
description: Filesystem scanning utilities with include/exclude support.
|
|
148
|
+
- id: ascii-helpers
|
|
149
|
+
tier: extension
|
|
150
|
+
requirement: optional
|
|
151
|
+
description: Console formatting utilities (tables, boxes, progress displays).
|
|
152
|
+
- id: telemetry-metrics
|
|
153
|
+
tier: extension
|
|
154
|
+
requirement: recommended
|
|
155
|
+
description: Basic counter/histogram export aligned with the observability logging module.
|
|
156
|
+
coverage:
|
|
157
|
+
- language: go
|
|
158
|
+
target: 85
|
|
159
|
+
- language: python
|
|
160
|
+
target: 80
|
|
161
|
+
- language: typescript
|
|
162
|
+
target: 80
|
|
163
|
+
languageOverrides:
|
|
164
|
+
- language: rust
|
|
165
|
+
planned:
|
|
166
|
+
- config-path-api
|
|
167
|
+
- schema-validation
|
|
168
|
+
- crucible-shim
|
|
169
|
+
- foundry
|
|
170
|
+
notes: "rsfulmen planned post-logging stabilization; extensions deferred."
|
|
171
|
+
- language: csharp
|
|
172
|
+
planned:
|
|
173
|
+
- config-path-api
|
|
174
|
+
- schema-validation
|
|
175
|
+
- crucible-shim
|
|
176
|
+
- foundry
|
|
177
|
+
unsupported:
|
|
178
|
+
- ascii-helpers
|
|
179
|
+
notes: "Console helpers rely on ANSI assumptions not yet mapped for Windows terminals."
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Fulmen Application Identity - Complete Example
|
|
2
|
+
# Location: .fulmen/app.yaml
|
|
3
|
+
# Schema: schemas/config/repository/app-identity/v1.0.0/app-identity.schema.json
|
|
4
|
+
# Documentation: docs/standards/library/modules/app-identity.md
|
|
5
|
+
app:
|
|
6
|
+
# Binary/executable name (lowercase kebab-case, 2-64 chars)
|
|
7
|
+
binary_name: percheron
|
|
8
|
+
# Vendor namespace (lowercase alphanumeric, no hyphens)
|
|
9
|
+
vendor: fulmenhq
|
|
10
|
+
# Environment variable prefix (UPPERCASE, must end with underscore)
|
|
11
|
+
env_prefix: PERCHERON_
|
|
12
|
+
# Config directory name (usually matches binary_name)
|
|
13
|
+
config_name: percheron
|
|
14
|
+
# One-line description (10-200 chars)
|
|
15
|
+
description: Production-ready Python HTTP workhorse with observability
|
|
16
|
+
# Optional metadata (all fields optional, extensible)
|
|
17
|
+
metadata:
|
|
18
|
+
# Primary project URL
|
|
19
|
+
project_url: https://github.com/fulmenhq/forge-workhorse-percheron
|
|
20
|
+
# Support/contact email
|
|
21
|
+
support_email: support@fulmenhq.io
|
|
22
|
+
# SPDX license identifier
|
|
23
|
+
license: MIT
|
|
24
|
+
# Repository category from Fulmen taxonomy
|
|
25
|
+
repository_category: workhorse
|
|
26
|
+
# Telemetry namespace for metrics/logging (defaults to binary_name if omitted)
|
|
27
|
+
telemetry_namespace: percheron
|
|
28
|
+
# Python-specific packaging metadata (for PyPI projects)
|
|
29
|
+
python:
|
|
30
|
+
# PyPI distribution name (kebab-case allowed)
|
|
31
|
+
distribution_name: percheron
|
|
32
|
+
# Python import package name (underscores allowed)
|
|
33
|
+
package_name: percheron
|
|
34
|
+
# Console script entry points
|
|
35
|
+
console_scripts:
|
|
36
|
+
- name: percheron
|
|
37
|
+
entry_point: percheron.cli:main
|
|
38
|
+
- name: percheron-validate
|
|
39
|
+
entry_point: percheron.validation:cli
|
|
40
|
+
|
|
41
|
+
# Additional custom fields allowed for extensibility
|
|
42
|
+
# custom_field: value
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Complete application identity - all fields including metadata
|
|
2
|
+
app:
|
|
3
|
+
binary_name: percheron
|
|
4
|
+
vendor: fulmenhq
|
|
5
|
+
env_prefix: PERCHERON_
|
|
6
|
+
config_name: percheron
|
|
7
|
+
description: Production-ready Python HTTP workhorse with observability
|
|
8
|
+
metadata:
|
|
9
|
+
project_url: https://github.com/fulmenhq/forge-workhorse-percheron
|
|
10
|
+
support_email: support@fulmenhq.io
|
|
11
|
+
license: MIT
|
|
12
|
+
repository_category: workhorse
|
|
13
|
+
telemetry_namespace: percheron
|
|
14
|
+
python:
|
|
15
|
+
distribution_name: percheron
|
|
16
|
+
package_name: percheron
|
|
17
|
+
console_scripts:
|
|
18
|
+
- name: percheron
|
|
19
|
+
entry_point: percheron.cli:main
|
|
20
|
+
custom_field: allowed for extensibility
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Identity for API server in monorepo
|
|
2
|
+
app:
|
|
3
|
+
binary_name: myproject-api
|
|
4
|
+
vendor: acmecorp
|
|
5
|
+
env_prefix: MYPROJECT_API_
|
|
6
|
+
config_name: myproject-api
|
|
7
|
+
description: API server component of myproject monorepo
|
|
8
|
+
metadata:
|
|
9
|
+
repository_category: service
|
|
10
|
+
telemetry_namespace: myproject_api
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Identity for worker in monorepo
|
|
2
|
+
app:
|
|
3
|
+
binary_name: myproject-worker
|
|
4
|
+
vendor: acmecorp
|
|
5
|
+
env_prefix: MYPROJECT_WORKER_
|
|
6
|
+
config_name: myproject-worker
|
|
7
|
+
description: Background worker component of myproject monorepo
|
|
8
|
+
metadata:
|
|
9
|
+
repository_category: service
|
|
10
|
+
telemetry_namespace: myproject_worker
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "v1.0.0",
|
|
3
|
+
"description": "Canonical parity snapshot for app-identity parser behavior. All language implementations (Go, Python, TypeScript) must produce identical results for these test cases.",
|
|
4
|
+
"test_cases": {
|
|
5
|
+
"valid": {
|
|
6
|
+
"minimal": {
|
|
7
|
+
"input_file": "fixtures/valid/minimal.yaml",
|
|
8
|
+
"expected_output": {
|
|
9
|
+
"binary_name": "myapp",
|
|
10
|
+
"vendor": "acmecorp",
|
|
11
|
+
"env_prefix": "MYAPP_",
|
|
12
|
+
"config_name": "myapp",
|
|
13
|
+
"description": "Minimal valid application identity",
|
|
14
|
+
"metadata": {}
|
|
15
|
+
},
|
|
16
|
+
"validation_result": "pass"
|
|
17
|
+
},
|
|
18
|
+
"complete": {
|
|
19
|
+
"input_file": "fixtures/valid/complete.yaml",
|
|
20
|
+
"expected_output": {
|
|
21
|
+
"binary_name": "percheron",
|
|
22
|
+
"vendor": "fulmenhq",
|
|
23
|
+
"env_prefix": "PERCHERON_",
|
|
24
|
+
"config_name": "percheron",
|
|
25
|
+
"description": "Production-ready Python HTTP workhorse with observability",
|
|
26
|
+
"metadata": {
|
|
27
|
+
"project_url": "https://github.com/fulmenhq/forge-workhorse-percheron",
|
|
28
|
+
"support_email": "support@fulmenhq.io",
|
|
29
|
+
"license": "MIT",
|
|
30
|
+
"repository_category": "workhorse",
|
|
31
|
+
"telemetry_namespace": "percheron",
|
|
32
|
+
"python": {
|
|
33
|
+
"distribution_name": "percheron",
|
|
34
|
+
"package_name": "percheron",
|
|
35
|
+
"console_scripts": [
|
|
36
|
+
{
|
|
37
|
+
"name": "percheron",
|
|
38
|
+
"entry_point": "percheron.cli:main"
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
"custom_field": "allowed for extensibility"
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"validation_result": "pass"
|
|
46
|
+
},
|
|
47
|
+
"monorepo_api": {
|
|
48
|
+
"input_file": "fixtures/valid/monorepo-api.yaml",
|
|
49
|
+
"expected_output": {
|
|
50
|
+
"binary_name": "myproject-api",
|
|
51
|
+
"vendor": "acmecorp",
|
|
52
|
+
"env_prefix": "MYPROJECT_API_",
|
|
53
|
+
"config_name": "myproject-api",
|
|
54
|
+
"description": "API server component of myproject monorepo",
|
|
55
|
+
"metadata": {
|
|
56
|
+
"repository_category": "service",
|
|
57
|
+
"telemetry_namespace": "myproject_api"
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"validation_result": "pass"
|
|
61
|
+
},
|
|
62
|
+
"monorepo_worker": {
|
|
63
|
+
"input_file": "fixtures/valid/monorepo-worker.yaml",
|
|
64
|
+
"expected_output": {
|
|
65
|
+
"binary_name": "myproject-worker",
|
|
66
|
+
"vendor": "acmecorp",
|
|
67
|
+
"env_prefix": "MYPROJECT_WORKER_",
|
|
68
|
+
"config_name": "myproject-worker",
|
|
69
|
+
"description": "Background worker component of myproject monorepo",
|
|
70
|
+
"metadata": {
|
|
71
|
+
"repository_category": "service",
|
|
72
|
+
"telemetry_namespace": "myproject_worker"
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
"validation_result": "pass"
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"invalid": {
|
|
79
|
+
"missing_required": {
|
|
80
|
+
"input_file": "fixtures/invalid/missing-required.yaml",
|
|
81
|
+
"expected_error": {
|
|
82
|
+
"type": "ValidationError",
|
|
83
|
+
"field": "app.binary_name",
|
|
84
|
+
"message": "required field missing"
|
|
85
|
+
},
|
|
86
|
+
"validation_result": "fail"
|
|
87
|
+
},
|
|
88
|
+
"invalid_binary_name": {
|
|
89
|
+
"input_file": "fixtures/invalid/invalid-binary-name.yaml",
|
|
90
|
+
"expected_error": {
|
|
91
|
+
"type": "ValidationError",
|
|
92
|
+
"field": "app.binary_name",
|
|
93
|
+
"message": "must be lowercase"
|
|
94
|
+
},
|
|
95
|
+
"validation_result": "fail"
|
|
96
|
+
},
|
|
97
|
+
"invalid_env_prefix": {
|
|
98
|
+
"input_file": "fixtures/invalid/invalid-env-prefix.yaml",
|
|
99
|
+
"expected_error": {
|
|
100
|
+
"type": "ValidationError",
|
|
101
|
+
"field": "app.env_prefix",
|
|
102
|
+
"message": "must end with underscore"
|
|
103
|
+
},
|
|
104
|
+
"validation_result": "fail"
|
|
105
|
+
},
|
|
106
|
+
"invalid_vendor": {
|
|
107
|
+
"input_file": "fixtures/invalid/invalid-vendor.yaml",
|
|
108
|
+
"expected_error": {
|
|
109
|
+
"type": "ValidationError",
|
|
110
|
+
"field": "app.vendor",
|
|
111
|
+
"message": "must be alphanumeric only"
|
|
112
|
+
},
|
|
113
|
+
"validation_result": "fail"
|
|
114
|
+
},
|
|
115
|
+
"malformed_yaml": {
|
|
116
|
+
"input_file": "fixtures/invalid/malformed-yaml.yaml",
|
|
117
|
+
"expected_error": {
|
|
118
|
+
"type": "ParseError",
|
|
119
|
+
"message": "invalid YAML syntax"
|
|
120
|
+
},
|
|
121
|
+
"validation_result": "fail"
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
$schema: https://schemas.fulmenhq.dev/server/management/v1.0.0/server-management.schema.json
|
|
2
|
+
description: Default server management configuration for Fulmen web templates and applications
|
|
3
|
+
version: v1.0.0
|
|
4
|
+
# Environment variable prefix - typically derived from application identity
|
|
5
|
+
# Example: FULMEN_PULSAR for Forge Codex Pulsar
|
|
6
|
+
# Results in env vars like: FULMEN_PULSAR_DEV_PORT, FULMEN_PULSAR_A11Y_RANGE_MIN
|
|
7
|
+
envPrefix: FULMEN_APP
|
|
8
|
+
# Standard configuration classes for server orchestration
|
|
9
|
+
configurations:
|
|
10
|
+
# Local development server
|
|
11
|
+
dev:
|
|
12
|
+
preferredPort: 4321
|
|
13
|
+
range:
|
|
14
|
+
min: 4321
|
|
15
|
+
max: 4322
|
|
16
|
+
healthCheck:
|
|
17
|
+
method: GET
|
|
18
|
+
path: /
|
|
19
|
+
timeout: 5000
|
|
20
|
+
retries: 3
|
|
21
|
+
interval: 1000
|
|
22
|
+
exitBehavior:
|
|
23
|
+
portInUse: 11 # EXIT_PORT_IN_USE
|
|
24
|
+
healthCheckFailed: 50 # EXIT_HEALTH_CHECK_FAILED
|
|
25
|
+
startupTimeout: 52 # EXIT_TIMEOUT
|
|
26
|
+
envOverrides:
|
|
27
|
+
- FULMEN_APP_DEV_PORT
|
|
28
|
+
- FULMEN_APP_DEV_RANGE_MIN
|
|
29
|
+
- FULMEN_APP_DEV_RANGE_MAX
|
|
30
|
+
pidFile: .server/dev.pid
|
|
31
|
+
logFile: .server/dev.log
|
|
32
|
+
# Test/CI server
|
|
33
|
+
test:
|
|
34
|
+
preferredPort: 4380
|
|
35
|
+
range:
|
|
36
|
+
min: 4380
|
|
37
|
+
max: 4389
|
|
38
|
+
healthCheck:
|
|
39
|
+
method: GET
|
|
40
|
+
path: /health
|
|
41
|
+
timeout: 3000
|
|
42
|
+
retries: 2
|
|
43
|
+
interval: 500
|
|
44
|
+
exitBehavior:
|
|
45
|
+
portInUse: 11
|
|
46
|
+
healthCheckFailed: 50
|
|
47
|
+
startupTimeout: 52
|
|
48
|
+
envOverrides:
|
|
49
|
+
- FULMEN_APP_TEST_PORT
|
|
50
|
+
- FULMEN_APP_TEST_RANGE_MIN
|
|
51
|
+
- FULMEN_APP_TEST_RANGE_MAX
|
|
52
|
+
pidFile: .server/test.pid
|
|
53
|
+
logFile: .server/test.log
|
|
54
|
+
# Accessibility testing server
|
|
55
|
+
a11y:
|
|
56
|
+
preferredPort: 4323
|
|
57
|
+
range:
|
|
58
|
+
min: 4323
|
|
59
|
+
max: 4340
|
|
60
|
+
healthCheck:
|
|
61
|
+
method: GET
|
|
62
|
+
path: /
|
|
63
|
+
timeout: 5000
|
|
64
|
+
retries: 3
|
|
65
|
+
interval: 1000
|
|
66
|
+
exitBehavior:
|
|
67
|
+
portInUse: 11
|
|
68
|
+
healthCheckFailed: 50
|
|
69
|
+
startupTimeout: 52
|
|
70
|
+
envOverrides:
|
|
71
|
+
- FULMEN_APP_A11Y_PORT
|
|
72
|
+
- FULMEN_APP_A11Y_RANGE_MIN
|
|
73
|
+
- FULMEN_APP_A11Y_RANGE_MAX
|
|
74
|
+
pidFile: .server/a11y.pid
|
|
75
|
+
logFile: .server/a11y.log
|
|
76
|
+
# Preview/staging server
|
|
77
|
+
preview:
|
|
78
|
+
preferredPort: 4341
|
|
79
|
+
range:
|
|
80
|
+
min: 4341
|
|
81
|
+
max: 4350
|
|
82
|
+
healthCheck:
|
|
83
|
+
method: GET
|
|
84
|
+
path: /health
|
|
85
|
+
timeout: 10000
|
|
86
|
+
retries: 5
|
|
87
|
+
interval: 2000
|
|
88
|
+
exitBehavior:
|
|
89
|
+
portInUse: 11
|
|
90
|
+
healthCheckFailed: 50
|
|
91
|
+
startupTimeout: 52
|
|
92
|
+
envOverrides:
|
|
93
|
+
- FULMEN_APP_PREVIEW_PORT
|
|
94
|
+
- FULMEN_APP_PREVIEW_RANGE_MIN
|
|
95
|
+
- FULMEN_APP_PREVIEW_RANGE_MAX
|
|
96
|
+
pidFile: .server/preview.pid
|
|
97
|
+
logFile: .server/preview.log
|
|
98
|
+
# Production-like server for final verification
|
|
99
|
+
prod_like:
|
|
100
|
+
preferredPort: 4351
|
|
101
|
+
range:
|
|
102
|
+
min: 4351
|
|
103
|
+
max: 4360
|
|
104
|
+
healthCheck:
|
|
105
|
+
method: HEAD
|
|
106
|
+
path: /health
|
|
107
|
+
timeout: 10000
|
|
108
|
+
retries: 5
|
|
109
|
+
interval: 2000
|
|
110
|
+
exitBehavior:
|
|
111
|
+
portInUse: 11
|
|
112
|
+
healthCheckFailed: 50
|
|
113
|
+
startupTimeout: 52
|
|
114
|
+
envOverrides:
|
|
115
|
+
- FULMEN_APP_PROD_LIKE_PORT
|
|
116
|
+
- FULMEN_APP_PROD_LIKE_RANGE_MIN
|
|
117
|
+
- FULMEN_APP_PROD_LIKE_RANGE_MAX
|
|
118
|
+
pidFile: .server/prod_like.pid
|
|
119
|
+
logFile: .server/prod_like.log
|
|
120
|
+
|
|
121
|
+
# Example of additional custom configurations (must use x- prefix)
|
|
122
|
+
# additionalConfigurations:
|
|
123
|
+
# x-storybook:
|
|
124
|
+
# preferredPort: 6006
|
|
125
|
+
# range:
|
|
126
|
+
# min: 6006
|
|
127
|
+
# max: 6010
|
|
128
|
+
# healthCheck:
|
|
129
|
+
# method: GET
|
|
130
|
+
# path: /
|
|
131
|
+
# timeout: 5000
|
|
132
|
+
# retries: 3
|
|
133
|
+
# interval: 1000
|
|
134
|
+
# exitBehavior:
|
|
135
|
+
# portInUse: 11
|
|
136
|
+
# healthCheckFailed: 50
|
|
137
|
+
# startupTimeout: 52
|
|
138
|
+
# envOverrides:
|
|
139
|
+
# - FULMEN_APP_STORYBOOK_PORT
|
|
140
|
+
# pidFile: .server/x-storybook.pid
|
|
141
|
+
# logFile: .server/x-storybook.log
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Sync Keys Metadata"
|
|
3
|
+
description: "Canonical keys for sync manifests"
|
|
4
|
+
author: "Schema Cartographer"
|
|
5
|
+
date: "2025-10-03"
|
|
6
|
+
last_updated: "2025-10-03"
|
|
7
|
+
status: "draft"
|
|
8
|
+
tags: ["sync", "config", "metadata"]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
`sync-keys.yaml` publishes recommended keys for sync consumers. Each key describes a logical bundle of assets and carries tags (e.g., docs, schemas, language scopes) so tooling can filter appropriately.
|
|
12
|
+
|
|
13
|
+
See `docs/guides/sync-producers-guide.md` for publishing guidance.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
version: "2025.10.0"
|
|
2
|
+
keys:
|
|
3
|
+
- id: crucible.docs
|
|
4
|
+
description: "General documentation"
|
|
5
|
+
basePath: docs/
|
|
6
|
+
recommendedOutput: docs/crucible
|
|
7
|
+
tags: [docs]
|
|
8
|
+
- id: crucible.schemas.terminal
|
|
9
|
+
description: "Terminal schemas"
|
|
10
|
+
basePath: schemas/terminal/
|
|
11
|
+
recommendedOutput: schemas/terminal
|
|
12
|
+
tags: [schemas]
|
|
13
|
+
- id: crucible.schemas.observability.logging
|
|
14
|
+
description: "Logging schemas"
|
|
15
|
+
basePath: schemas/observability/logging/
|
|
16
|
+
recommendedOutput: schemas/observability/logging
|
|
17
|
+
tags: [schemas, logging]
|
|
18
|
+
- id: crucible.config.terminal
|
|
19
|
+
description: "Terminal config defaults"
|
|
20
|
+
basePath: config/terminal/
|
|
21
|
+
recommendedOutput: config/terminal
|
|
22
|
+
tags: [config]
|
|
23
|
+
- id: crucible.lang.go
|
|
24
|
+
description: "Go language wrapper assets"
|
|
25
|
+
basePath: lang/go/
|
|
26
|
+
recommendedOutput: lang/go
|
|
27
|
+
tags: [language, 'lang:go']
|
|
28
|
+
metadata:
|
|
29
|
+
sourceRepo: https://github.com/fulmenhq/crucible.git
|
|
30
|
+
sourcePathBase: lang/go
|
|
31
|
+
- id: crucible.lang.go.dev
|
|
32
|
+
description: "Go language wrapper assets (development convenience)"
|
|
33
|
+
basePath: lang/go
|
|
34
|
+
recommendedOutput: lang/go
|
|
35
|
+
tags: [language, 'lang:go', dev]
|
|
36
|
+
metadata:
|
|
37
|
+
sourceRepo: local
|
|
38
|
+
notes: "Use local replace directive during development; ensure CI fails if manifest references local paths."
|
|
39
|
+
- id: crucible.lang.ts
|
|
40
|
+
description: "TypeScript language wrapper assets"
|
|
41
|
+
basePath: lang/typescript/
|
|
42
|
+
recommendedOutput: lang/typescript
|
|
43
|
+
tags: [language, 'lang:ts']
|
|
44
|
+
metadata:
|
|
45
|
+
sourceRepo: https://github.com/fulmenhq/crucible.git
|
|
46
|
+
sourcePathBase: lang/typescript
|
|
47
|
+
- id: crucible.lang.ts.dev
|
|
48
|
+
description: "TypeScript language wrapper assets (development convenience)"
|
|
49
|
+
basePath: lang/typescript
|
|
50
|
+
recommendedOutput: lang/typescript
|
|
51
|
+
tags: [language, 'lang:ts', dev]
|
|
52
|
+
metadata:
|
|
53
|
+
sourceRepo: local
|
|
54
|
+
notes: "Use local path overrides during development; unit tests should prevent dev-only manifests from committing."
|
|
55
|
+
- id: crucible.content.binary-embed-manifest
|
|
56
|
+
description: "Binary embed manifest schemas"
|
|
57
|
+
basePath: schemas/content/binary-embed-manifest/
|
|
58
|
+
recommendedOutput: schemas/content/binary-embed-manifest
|
|
59
|
+
tags: [schemas, content]
|
|
60
|
+
- id: crucible.content.embed-manifest
|
|
61
|
+
description: "Advanced embed manifest schemas"
|
|
62
|
+
basePath: schemas/content/embed-manifest/
|
|
63
|
+
recommendedOutput: schemas/content/embed-manifest
|
|
64
|
+
tags: [schemas, content, advanced]
|
|
65
|
+
- id: crucible.schemas.config.repository.app-identity
|
|
66
|
+
description: "Application identity schema"
|
|
67
|
+
basePath: schemas/config/repository/app-identity/
|
|
68
|
+
recommendedOutput: schemas/config/repository/app-identity
|
|
69
|
+
tags: [schemas, config, app-identity]
|
|
70
|
+
- id: crucible.config.repository.app-identity
|
|
71
|
+
description: "Application identity config examples and fixtures"
|
|
72
|
+
basePath: config/repository/app-identity/
|
|
73
|
+
recommendedOutput: config/repository/app-identity
|
|
74
|
+
tags: [config, app-identity, fixtures]
|