@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,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,7 @@
1
+ # Invalid: binary_name contains uppercase (must be lowercase)
2
+ app:
3
+ binary_name: MyApp
4
+ vendor: acmecorp
5
+ env_prefix: MYAPP_
6
+ config_name: myapp
7
+ description: Binary name has invalid uppercase characters
@@ -0,0 +1,7 @@
1
+ # Invalid: env_prefix missing trailing underscore
2
+ app:
3
+ binary_name: myapp
4
+ vendor: acmecorp
5
+ env_prefix: MYAPP
6
+ config_name: myapp
7
+ description: Environment prefix missing required trailing underscore
@@ -0,0 +1,7 @@
1
+ # Invalid: vendor contains hyphens (must be alphanumeric only)
2
+ app:
3
+ binary_name: myapp
4
+ vendor: acme-corp
5
+ env_prefix: MYAPP_
6
+ config_name: myapp
7
+ description: Vendor contains invalid hyphen characters
@@ -0,0 +1,8 @@
1
+ # Invalid: Malformed YAML syntax
2
+ app:
3
+ binary_name: myapp
4
+ vendor: acmecorp
5
+ env_prefix: MYAPP_
6
+ config_name: myapp
7
+ description: This line is missing closing quote and will cause parse error
8
+ invalid_key without colon
@@ -0,0 +1,6 @@
1
+ # Invalid: Missing required field (binary_name)
2
+ app:
3
+ vendor: acmecorp
4
+ env_prefix: MYAPP_
5
+ config_name: myapp
6
+ description: Missing binary_name field
@@ -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,7 @@
1
+ # Minimal valid application identity - bare minimum required fields
2
+ app:
3
+ binary_name: myapp
4
+ vendor: acmecorp
5
+ env_prefix: MYAPP_
6
+ config_name: myapp
7
+ description: Minimal valid application identity
@@ -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]