@fulmenhq/tsfulmen 0.1.14 → 0.2.0

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 (161) hide show
  1. package/CHANGELOG.md +59 -504
  2. package/README.md +111 -28
  3. package/config/crucible-ts/agentic/roles/README.md +76 -0
  4. package/config/crucible-ts/agentic/roles/cicd.yaml +82 -0
  5. package/config/crucible-ts/agentic/roles/dataeng.yaml +104 -0
  6. package/config/crucible-ts/agentic/roles/devlead.yaml +84 -0
  7. package/config/crucible-ts/agentic/roles/devrev.yaml +105 -0
  8. package/config/crucible-ts/agentic/roles/entarch.yaml +101 -0
  9. package/config/crucible-ts/agentic/roles/infoarch.yaml +95 -0
  10. package/config/crucible-ts/agentic/roles/prodmktg.yaml +92 -0
  11. package/config/crucible-ts/agentic/roles/qa.yaml +148 -0
  12. package/config/crucible-ts/agentic/roles/secrev.yaml +101 -0
  13. package/config/crucible-ts/agentic/roles/uxdev.yaml +168 -0
  14. package/config/crucible-ts/branding/ecosystem.yaml +26 -0
  15. package/config/crucible-ts/library/foundry/exit-codes.snapshot.json +26 -0
  16. package/config/crucible-ts/library/foundry/exit-codes.yaml +28 -3
  17. package/config/crucible-ts/library/foundry/patterns.yaml +2 -2
  18. package/config/crucible-ts/library/foundry/signal-resolution-fixtures.yaml +207 -0
  19. package/config/crucible-ts/library/foundry/signals.yaml +21 -0
  20. package/config/crucible-ts/library/foundry/simplified-modes.snapshot.json +9 -1
  21. package/config/crucible-ts/library/{foundry/similarity-fixtures.yaml → similarity/fixtures.yaml} +1 -1
  22. package/config/crucible-ts/library/v1.0.0/module-manifest.yaml +1 -2
  23. package/config/crucible-ts/taxonomy/fixture-catalog.yaml +145 -0
  24. package/config/crucible-ts/taxonomy/languages.yaml +2 -2
  25. package/config/crucible-ts/taxonomy/library/foundry-catalogs/v1.1.0/catalogs.yaml +77 -0
  26. package/config/crucible-ts/taxonomy/library/platform-modules/v1.1.0/modules.yaml +722 -0
  27. package/config/crucible-ts/taxonomy/metrics.yaml +1 -1
  28. package/config/crucible-ts/taxonomy/repository-categories.yaml +134 -1
  29. package/dist/appidentity/index.d.ts +117 -35
  30. package/dist/appidentity/index.js +752 -592
  31. package/dist/appidentity/index.js.map +1 -1
  32. package/dist/config/index.js +118 -6
  33. package/dist/config/index.js.map +1 -1
  34. package/dist/crucible/index.js +118 -6
  35. package/dist/crucible/index.js.map +1 -1
  36. package/dist/errors/index.js +118 -6
  37. package/dist/errors/index.js.map +1 -1
  38. package/dist/foundry/index.d.ts +13 -676
  39. package/dist/foundry/index.js +118 -6
  40. package/dist/foundry/index.js.map +1 -1
  41. package/dist/foundry/similarity/index.d.ts +2 -2
  42. package/dist/index.d.ts +2 -2
  43. package/dist/index.js +753 -593
  44. package/dist/index.js.map +1 -1
  45. package/dist/{manager-D27vrdaS.d.ts → manager-CH3fX7zO.d.ts} +1 -1
  46. package/dist/pathfinder/index.js +118 -6
  47. package/dist/pathfinder/index.js.map +1 -1
  48. package/dist/reports/license-inventory.csv +302 -0
  49. package/dist/schema/index.js +118 -6
  50. package/dist/schema/index.js.map +1 -1
  51. package/dist/signals/index.d.ts +675 -0
  52. package/dist/signals/index.js +5790 -0
  53. package/dist/signals/index.js.map +1 -0
  54. package/dist/similarity/index.d.ts +2 -0
  55. package/dist/similarity/index.js +136 -0
  56. package/dist/similarity/index.js.map +1 -0
  57. package/dist/{suggest-Cv7SVQRu.d.ts → suggest-D8LbwtPV.d.ts} +1 -1
  58. package/dist/telemetry/http/index.js +704 -591
  59. package/dist/telemetry/http/index.js.map +1 -1
  60. package/dist/telemetry/index.js +118 -6
  61. package/dist/telemetry/index.js.map +1 -1
  62. package/dist/telemetry/prometheus/index.d.ts +1 -1
  63. package/dist/telemetry/prometheus/index.js +175 -11
  64. package/dist/telemetry/prometheus/index.js.map +1 -1
  65. package/package.json +13 -5
  66. package/schemas/crucible-ts/assessment/v1.0.0/severity-definitions.schema.json +1 -1
  67. package/schemas/crucible-ts/config/fulmen-ecosystem/v1.0.0/fulmen-config-paths.schema.json +1 -1
  68. package/schemas/crucible-ts/config/repository/app-identity/v1.0.0/app-identity.schema.json +3 -3
  69. package/schemas/crucible-ts/config/repository/v1.0.0/lifecycle-phase.json +1 -1
  70. package/schemas/crucible-ts/config/repository-category/codex/v1.0.0/codex-config.schema.json +1 -1
  71. package/schemas/crucible-ts/config/standards/v1.0.0/adr-adoption-status.json +1 -1
  72. package/schemas/crucible-ts/config/standards/v1.0.0/adr-frontmatter.schema.json +3 -3
  73. package/schemas/crucible-ts/config/standards/v1.0.0/adr-lifecycle-status.json +1 -1
  74. package/schemas/crucible-ts/config/sync-keys.schema.yaml +14 -0
  75. package/schemas/crucible-ts/content/ssot-provenance/v1.0.0/ssot-provenance.schema.json +1 -1
  76. package/schemas/crucible-ts/design/README.md +159 -0
  77. package/schemas/crucible-ts/design/core/v1.0.0/component-states.schema.json +204 -0
  78. package/schemas/crucible-ts/design/core/v1.0.0/semantic-colors.schema.json +179 -0
  79. package/schemas/crucible-ts/design/core/v1.0.0/spacing-scale.schema.json +165 -0
  80. package/schemas/crucible-ts/design/core/v1.0.0/typography-roles.schema.json +195 -0
  81. package/schemas/crucible-ts/design/tui/v1.0.0/color-palette.schema.json +303 -0
  82. package/schemas/crucible-ts/design/tui/v1.0.0/component.schema.json +374 -0
  83. package/schemas/crucible-ts/design/tui/v1.0.0/layout.schema.json +272 -0
  84. package/schemas/crucible-ts/design/tui/v1.0.0/theme.schema.json +205 -0
  85. package/schemas/crucible-ts/design/tui/v1.0.0/typography.schema.json +316 -0
  86. package/schemas/crucible-ts/devsecops/lorage-central/activity/v1.0.0/activity.schema.json +1 -1
  87. package/schemas/crucible-ts/devsecops/lorage-central/credentials/v1.0.0/credentials.schema.json +1 -1
  88. package/schemas/crucible-ts/devsecops/lorage-central/policy/v1.0.0/policy.schema.json +1 -1
  89. package/schemas/crucible-ts/devsecops/lorage-central/recipe/v1.0.0/recipe.schema.json +1 -1
  90. package/schemas/crucible-ts/devsecops/lorage-central/runbooks/v1.0.0/runbook.schema.json +1 -1
  91. package/schemas/crucible-ts/devsecops/lorage-central/tenant/v1.0.0/tenant.schema.json +1 -1
  92. package/schemas/crucible-ts/devsecops/secrets/v1.0.0/secrets.schema.json +1 -1
  93. package/schemas/crucible-ts/error-handling/v1.0.0/error-response.schema.json +1 -1
  94. package/schemas/crucible-ts/library/foundry/v1.0.0/country-codes.schema.json +1 -1
  95. package/schemas/crucible-ts/library/foundry/v1.0.0/exit-codes.schema.json +1 -1
  96. package/schemas/crucible-ts/library/foundry/v1.0.0/http-status-groups.schema.json +1 -1
  97. package/schemas/crucible-ts/library/foundry/v1.0.0/mime-types.schema.json +1 -1
  98. package/schemas/crucible-ts/library/foundry/v1.0.0/patterns.schema.json +1 -1
  99. package/schemas/crucible-ts/library/foundry/v1.0.0/signal-resolution-fixtures.schema.json +140 -0
  100. package/schemas/crucible-ts/library/foundry/v1.0.0/signals.schema.json +6 -1
  101. package/schemas/crucible-ts/library/fulencode/v1.0.0/fulencode-config.schema.json +1 -1
  102. package/schemas/crucible-ts/library/fulhash/v1.0.0/checksum-string.schema.json +2 -2
  103. package/schemas/crucible-ts/library/fulhash/v1.0.0/digest.schema.json +61 -1
  104. package/schemas/crucible-ts/library/fulhash/v1.0.0/fixtures.schema.json +1 -1
  105. package/schemas/crucible-ts/library/fulpack/v1.0.0/archive-entry.schema.json +1 -1
  106. package/schemas/crucible-ts/library/fulpack/v1.0.0/archive-info.schema.json +1 -1
  107. package/schemas/crucible-ts/library/fulpack/v1.0.0/archive-manifest.schema.json +2 -2
  108. package/schemas/crucible-ts/library/fulpack/v1.0.0/create-options.schema.json +1 -1
  109. package/schemas/crucible-ts/library/fulpack/v1.0.0/extract-options.schema.json +1 -1
  110. package/schemas/crucible-ts/library/fulpack/v1.0.0/extract-result.schema.json +1 -1
  111. package/schemas/crucible-ts/library/fulpack/v1.0.0/scan-options.schema.json +1 -1
  112. package/schemas/crucible-ts/library/fulpack/v1.0.0/validation-result.schema.json +1 -1
  113. package/schemas/crucible-ts/library/module-manifest/v1.0.0/module-manifest.schema.json +1 -1
  114. package/schemas/crucible-ts/library/{foundry → similarity}/v1.0.0/similarity.schema.json +2 -2
  115. package/schemas/crucible-ts/library/{foundry → similarity}/v2.0.0/similarity.schema.json +2 -2
  116. package/schemas/crucible-ts/observability/metrics/v1.0.0/metrics-event.schema.json +1 -1
  117. package/schemas/crucible-ts/pathfinder/v1.0.0/find-query.schema.json +1 -1
  118. package/schemas/crucible-ts/pathfinder/v1.0.0/finder-config.schema.json +1 -1
  119. package/schemas/crucible-ts/pathfinder/v1.0.0/path-result.schema.json +1 -1
  120. package/schemas/crucible-ts/protocol/http/v1.0.0/error-response.schema.json +1 -1
  121. package/schemas/crucible-ts/protocol/http/v1.0.0/health-response.schema.json +1 -1
  122. package/schemas/crucible-ts/protocol/http/v1.0.0/success-response.schema.json +1 -1
  123. package/schemas/crucible-ts/protocol/http/v1.0.0/version-response.schema.json +1 -1
  124. package/schemas/crucible-ts/server/management/v1.0.0/server-management.schema.json +1 -1
  125. package/schemas/crucible-ts/standards/publishing/v1.0.0/spec-catalog.schema.json +134 -0
  126. package/schemas/crucible-ts/taxonomy/devsecops/auth-methods/v1.0.0/auth-methods-key.schema.json +1 -1
  127. package/schemas/crucible-ts/taxonomy/devsecops/auth-methods/v1.0.0/auth-methods-metadata.schema.json +1 -1
  128. package/schemas/crucible-ts/taxonomy/devsecops/geo/v1.0.0/geo-key.schema.json +1 -1
  129. package/schemas/crucible-ts/taxonomy/devsecops/geo/v1.0.0/geo-metadata.schema.json +1 -1
  130. package/schemas/crucible-ts/taxonomy/devsecops/infra-phases/v1.0.0/infra-phases-key.schema.json +1 -1
  131. package/schemas/crucible-ts/taxonomy/devsecops/infra-phases/v1.0.0/infra-phases-metadata.schema.json +1 -1
  132. package/schemas/crucible-ts/taxonomy/devsecops/infra-providers/v1.0.0/infra-providers-key.schema.json +1 -1
  133. package/schemas/crucible-ts/taxonomy/devsecops/infra-providers/v1.0.0/infra-providers-metadata.schema.json +1 -1
  134. package/schemas/crucible-ts/taxonomy/devsecops/modules/v1.0.0/devsecops-module-entry.schema.json +1 -1
  135. package/schemas/crucible-ts/taxonomy/fixture/v1.0.0/fixture-catalog.schema.json +166 -0
  136. package/schemas/crucible-ts/taxonomy/language/v1.0.0/language-key.schema.json +1 -1
  137. package/schemas/crucible-ts/taxonomy/language/v1.0.0/language-metadata.schema.json +1 -1
  138. package/schemas/crucible-ts/taxonomy/library/foundry-catalogs/v1.1.0/catalog-entry.schema.json +98 -0
  139. package/schemas/crucible-ts/taxonomy/library/fulencode/detection-confidence/v1.0.0/levels.schema.json +1 -1
  140. package/schemas/crucible-ts/taxonomy/library/fulencode/encoding-families/v1.0.0/families.schema.json +1 -1
  141. package/schemas/crucible-ts/taxonomy/library/fulencode/normalization-profiles/v1.0.0/profiles.schema.json +1 -1
  142. package/schemas/crucible-ts/taxonomy/library/modules/v1.0.0/module-entry.schema.json +1 -1
  143. package/schemas/crucible-ts/taxonomy/library/modules/v1.1.0/module-entry.schema.json +436 -0
  144. package/schemas/crucible-ts/taxonomy/repository-category/v1.0.0/category-key.schema.json +16 -8
  145. package/schemas/crucible-ts/taxonomy/repository-category/v1.0.0/category-metadata.schema.json +1 -1
  146. package/schemas/crucible-ts/upstream/3leaps/PROVENANCE.md +43 -0
  147. package/schemas/crucible-ts/upstream/3leaps/agentic/v0/role-prompt.schema.json +183 -0
  148. package/schemas/crucible-ts/upstream/3leaps/ailink/v0/prompt.schema.json +204 -0
  149. package/schemas/crucible-ts/upstream/3leaps/ailink/v0/search-response.schema.json +152 -0
  150. package/schemas/crucible-ts/upstream/README.md +50 -0
  151. package/schemas/crucible-ts/web/branding/v1.0.0/site-branding.schema.json +1 -1
  152. package/schemas/crucible-ts/web/styling/v1.0.0/site-styling.schema.json +1 -1
  153. package/schemas/crucible-ts/config/goneat/README.md +0 -60
  154. package/schemas/crucible-ts/config/goneat/v1.0.0/dates.yaml +0 -234
  155. package/schemas/crucible-ts/config/goneat/v1.0.0/goneat-config.yaml +0 -344
  156. package/schemas/crucible-ts/config/goneat/v1.0.0/lifecycle-phase.json +0 -20
  157. package/schemas/crucible-ts/config/goneat/v1.0.0/release-phase.json +0 -17
  158. package/schemas/crucible-ts/config/goneat/v1.0.0/security-policy.yaml +0 -178
  159. package/schemas/crucible-ts/config/goneat/v1.0.0/version-policy.schema.yaml +0 -205
  160. package/schemas/crucible-ts/tooling/goneat-tools/v1.0.0/README.md +0 -177
  161. package/schemas/crucible-ts/tooling/goneat-tools/v1.0.0/goneat-tools-config.schema.yaml +0 -146
package/CHANGELOG.md CHANGED
@@ -5,8 +5,66 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ <!-- RETENTION POLICY: This file maintains the last 10 releases in reverse chronological order.
9
+ Older releases are archived in docs/releases/v{version}.md -->
10
+
8
11
  ## [Unreleased]
9
12
 
13
+ _No unreleased changes._
14
+
15
+ ## [0.2.0] - 2026-01-13
16
+
17
+ ### Added
18
+
19
+ - **Trust Anchor Bootstrap** - New `scripts/make-bootstrap.sh` implementing sfetch → goneat trust pyramid
20
+ - Cryptographic verification of toolchain via minisign signatures
21
+ - Foundation scope tools installation via `goneat doctor tools --scope foundation`
22
+ - Consistent with pyfulmen/rsfulmen bootstrap patterns
23
+
24
+ - **Package Cooling Policy** (`.goneat/dependencies.yaml`) - Supply chain security controls
25
+ - 7-day cooling period for new packages
26
+ - Minimum download thresholds (100 total, 10 recent)
27
+ - Exception for `@fulmenhq/*` organization packages
28
+ - License compliance: forbidden GPL/LGPL/AGPL/MPL/CDDL
29
+
30
+ - **License Audit Target** (`make license-audit`) - Automated forbidden license detection
31
+ - Generates `dist/reports/license-inventory.csv`
32
+ - Integrated into `make check-all` and pre-push hooks
33
+
34
+ - **Signals Module Entry Point** - New `@fulmenhq/tsfulmen/signals` for direct signal handling access
35
+
36
+ - **Embedded App Identity Fallback** - Resilient identity discovery when `.fulmen/app.yaml` not in ancestor path
37
+
38
+ ### Changed
39
+
40
+ - **Role-Based Agent Model** - Migrated from named identities to functional roles
41
+ - AGENTS.md rewritten for devlead/devrev/infoarch/entarch/secrev roles
42
+ - MAINTAINERS.md updated (removed AI Co-Maintainers section)
43
+ - ADR frontmatter updated to use role slugs
44
+ - Attribution format: `Generated by <Model> via <Interface>` with `Role:` trailer
45
+
46
+ - **Crucible SSOT** - Updated to v0.4.8
47
+ - Role catalog expanded: devlead, devrev, infoarch, entarch, secrev, cicd, dataeng, prodmktg, uxdev, qa
48
+ - Signal resolution standard with cross-language fixtures
49
+ - TUI design system schemas (`schemas/crucible-ts/design/`)
50
+ - OpenAPI spec coverage standard (ADR-0014)
51
+ - Ecosystem branding configuration (`config/crucible-ts/branding/`)
52
+ - Similarity module promoted to dedicated path (`config/crucible-ts/library/similarity/`)
53
+ - Canonical URI resolution standard for spec publishing
54
+
55
+ - **Makefile Refactoring** - Adopted GONEAT_RESOLVE/SFETCH_RESOLVE patterns
56
+ - Bumped GONEAT_VERSION to v0.5.1
57
+ - Pre-push hooks now include `dependencies` category assessment
58
+ - All goneat invocations use consistent resolution logic
59
+
60
+ - **Tools Configuration** (`.goneat/tools.yaml`) - Added foundation scope
61
+ - Tools: actionlint, ripgrep, jq, yq, bun, yamlfmt
62
+ - Platform-specific installer priorities
63
+
64
+ - **YAML Formatting** - Added `.yamlfmt` configuration for consistent YAML styling
65
+
66
+ ---
67
+
10
68
  ## [0.1.14] - 2025-11-28
11
69
 
12
70
  ### Added
@@ -376,507 +434,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
376
434
 
377
435
  ---
378
436
 
379
- ## [0.1.3] - 2025-11-01
380
-
381
- **Foundry Similarity v2.0.0** - Major upgrade to similarity module with multiple distance metrics, normalization presets, WASM-backed performance, and Turkish locale support.
382
-
383
- ### Added
384
-
385
- - **Similarity v2.0.0**: Complete implementation of Crucible Foundry Similarity Standard v2.0.0
386
- - **Multiple Metrics**: Five distance/similarity algorithms
387
- - Levenshtein distance (Wagner-Fischer)
388
- - Damerau-Levenshtein OSA (Optimal String Alignment)
389
- - Damerau-Levenshtein unrestricted (true Damerau)
390
- - Jaro-Winkler similarity with prefix scaling
391
- - Longest common substring (LCS)
392
- - **Normalization Presets**: Four standardized text normalization levels
393
- - `none`: No transformation
394
- - `minimal`: NFC + trim
395
- - `default`: NFC + casefold + trim
396
- - `aggressive`: NFKD + casefold + strip accents + remove punctuation
397
- - **Turkish Locale Support**: Proper İ/i handling via `@3leaps/string-metrics-wasm` v0.3.8
398
- - **Rich Suggestion API**: Enhanced metadata in suggestion results
399
- - `matchedRange`: Character positions for substring matches
400
- - `reason`: Score explanation strings
401
- - `normalizedValue`: Post-normalization text
402
- - **WASM Performance**: 4x faster than pure TypeScript implementation
403
- - Levenshtein: 0.0028ms avg (was 0.059ms)
404
- - Score: 0.0022ms avg (was 0.058ms)
405
- - <1ms p95 target exceeded: 0.004ms p95
406
- - **Comprehensive Testing**: 143 tests including fixture-driven validation
407
- - 76 fixture tests against Crucible v2.0.0 standard
408
- - 67 unit and integration tests
409
- - Build artifacts test prevents WASM bundling
410
-
411
- ### Changed
412
-
413
- - **Similarity API**: Metric parameter added to distance/score functions
414
- - `distance(a, b, metric?)` - specify algorithm
415
- - `score(a, b, metric?)` - normalized similarity with metric selection
416
- - Backward compatible: defaults to `"levenshtein"`
417
- - **Normalization API**: Preset-based interface with backward compatibility
418
- - `normalize(value, preset?, locale?)` - preset string parameter
419
- - Legacy `normalize(value, options)` still supported
420
- - Enhanced with locale parameter for Turkish/Lithuanian/Azeri
421
- - **Suggestion Options**: Extended with v2 parameters
422
- - `metric`: Algorithm selection
423
- - `normalizePreset`: Preset-based normalization
424
- - `preferPrefix`: Jaro-Winkler prefix boost
425
- - Legacy `normalize` boolean still supported
426
-
427
- ### Dependencies
428
-
429
- - Added `@3leaps/string-metrics-wasm` v0.3.8 (WASM-backed algorithms)
430
- - Upgraded normalization to support locale-aware casefolding
431
-
432
- ### Fixed
433
-
434
- - Turkish dotted İ now correctly normalized to lowercase i with `locale: "tr"`
435
- - Build artifacts test prevents accidental WASM bundling (tsup externalization verified)
436
-
437
- ### Documentation
438
-
439
- - Updated `src/foundry/similarity/README.md` with v2 API documentation
440
- - Migration guide for v1 to v2 upgrade
441
- - Performance benchmarks and Unicode support details
442
- - Turkish locale support memo in `.plans/memos/`
443
-
444
- ### Added
445
-
446
- - **Pathfinder Module**: Enterprise filesystem traversal with observability and checksums
447
- - **Core Traversal**: Recursive directory scanning with glob pattern matching
448
- - `includePatterns` and `excludePatterns` for flexible file selection
449
- - `maxDepth` control for traversal depth limiting
450
- - `followSymlinks` and `includeHidden` for advanced filesystem access
451
- - Streaming results via `findIterable()` for memory-efficient large directory processing
452
- - **Ignore File Support**: `.fulmenignore` and `.gitignore` with nested precedence
453
- - Hierarchical ignore pattern loading from directory tree
454
- - Child directory patterns override parent directory rules
455
- - Configurable via `honorIgnoreFiles: boolean`
456
- - **FulHash Integration**: Optional streaming checksum calculation
457
- - Algorithms: `xxh3-128` (default) and `sha256` support
458
- - Streaming implementation prevents memory exhaustion on large files
459
- - Checksum errors handled gracefully with error metadata preservation
460
- - `<10% performance overhead` verified via benchmarks
461
- - **Path Constraints**: Security-focused path validation with enforcement levels
462
- - `EnforcementLevel.STRICT`: Reject violations with FulmenError
463
- - `EnforcementLevel.WARN`: Log warnings and continue operation
464
- - `EnforcementLevel.PERMISSIVE`: No enforcement (default)
465
- - Path traversal attack prevention with root boundary enforcement
466
- - `allowedPrefixes` and `forbiddenPatterns` for fine-grained control
467
- - **Enterprise Observability**: Full integration with TSFulmen infrastructure
468
- - Structured `FulmenError` with correlation IDs and severity levels
469
- - Telemetry metrics: `pathfinder_find_ms`, `pathfinder_security_warnings`
470
- - Progressive logging integration with policy-driven profiles
471
- - Schema validation via existing TSFulmen schema module
472
- - **Convenience Helpers**: Pre-configured finders for common use cases
473
- - `findConfigFiles()`: Discover YAML/JSON configuration files
474
- - `findSchemaFiles()`: Find `.schema.json` and `.schema.yaml` files
475
- - `findByExtensions()`: Generic extension-based file discovery
476
- - **Cross-Platform Support**: Linux, macOS, Windows compatibility
477
- - Path normalization and separator handling
478
- - Symlink resolution consistent across platforms
479
- - Windows-specific path length and character constraints
480
- - **Comprehensive Testing**: 44 tests with 111 assertions
481
- - Unit tests for all core functionality
482
- - Integration tests with real filesystem operations
483
- - Cross-platform fixture validation
484
- - Performance benchmark verification
485
-
486
- ---
487
-
488
- ## [0.1.2] - 2025-10-25
489
-
490
- **Error Handling, Telemetry, and Core Utilities** - Comprehensive error handling with FulmenError, telemetry instrumentation across modules, FulHash for integrity verification, Similarity utilities, DocScribe for document processing, Progressive Logging, and complete Crucible Shim.
491
-
492
- ### Added
493
-
494
- - **Error Handling Module**: Schema-backed error handling with FulmenError
495
- - `FulmenError` class with immutable data structure and schema validation
496
- - Static constructors: `fromError()`, `wrap()`, `fromData()`
497
- - Schema-compliant JSON serialization via `toJSON()`
498
- - Correlation ID support for distributed tracing
499
- - Severity levels with numeric mapping (critical: 1000, high: 750, medium: 500, low: 250, info: 100)
500
- - Exit code guidance for CLI applications
501
- - Context preservation from wrapped errors
502
- - Type guards: `isFulmenError()`, `isFulmenErrorData()`
503
- - Validator integration for schema compliance checking
504
- - 43 tests covering construction, wrapping, serialization, and validation
505
-
506
- - **Telemetry Module**: Metrics collection and aggregation with OTLP export support
507
- - **Counter**: Monotonically increasing values (`inc()`)
508
- - **Gauge**: Arbitrary point-in-time values (`set()`, `inc()`, `dec()`)
509
- - **Histogram**: Distribution tracking with automatic bucketing
510
- - ADR-0007 compliant buckets for `_ms` metrics: [1, 5, 10, 50, 100, 500, 1000, 5000, 10000]
511
- - Percentile calculations (p50, p95, p99)
512
- - Count, sum, min, max aggregations
513
- - **Global Registry**: Singleton registry accessible via `metrics.counter()`, `metrics.gauge()`, `metrics.histogram()`
514
- - **Export Formats**: OTLP-compatible JSON with RFC3339 timestamps
515
- - **Taxonomy Integration**: Loads metric definitions from `config/crucible-ts/taxonomy/metrics.yaml`
516
- - **Lifecycle Management**: `export()`, `flush()`, `clear()` for metric lifecycle
517
- - **Type Safety**: Full TypeScript types for all metric operations
518
- - 85 tests covering counters, gauges, histograms, registry, and taxonomy
519
-
520
- - **Telemetry Instrumentation**: Observability across config, schema, and crucible modules
521
- - **Config Module Metrics**:
522
- - `config_load_ms` histogram - Directory/file operation timing
523
- - `config_load_errors` counter - Failed operations
524
- - Instrumented: `ensureDirExists()`, `resolveConfigPath()`
525
- - 7 telemetry integration tests
526
- - **Schema Module Metrics**:
527
- - `schema_validations` counter - Successful validations
528
- - `schema_validation_errors` counter - Failed validations
529
- - Instrumented: `validateData()`, `compileSchemaById()`, `validateDataBySchemaId()`, `validateFileBySchemaId()`
530
- - 9 telemetry integration tests
531
- - **Crucible Module Metrics**:
532
- - `foundry_lookup_count` counter - Successful asset loads
533
- - Instrumented: `loadSchemaById()`, `getDocumentation()`, `getConfigDefaults()`
534
- - 8 telemetry integration tests
535
- - **Zero Breaking Changes**: All error types unchanged, telemetry is transparent observation layer
536
- - **Taxonomy Compliance**: All metrics defined in Crucible taxonomy
537
- - 24 total telemetry tests, all existing tests pass
538
-
539
- - **FulHash Module**: Fast, cross-language compatible hashing for integrity verification and checksums
540
- - **Block Hashing API**: One-shot hashing for in-memory data
541
- - `hash()` - Hash strings or byte arrays with configurable algorithm
542
- - `hashString()` - Convenience wrapper for string inputs
543
- - `hashBytes()` - Convenience wrapper for Uint8Array inputs
544
- - Async API supporting both SHA-256 and XXH3-128
545
- - Default algorithm: XXH3-128 (7.5 GB/s throughput, non-cryptographic)
546
- - SHA-256 option for cryptographic integrity (2.4 GB/s throughput)
547
- - **Streaming API**: Incremental hashing for large files without memory pressure
548
- - `createStreamHasher()` - Factory for streaming hash operations
549
- - `update()` - Chainable method for incremental data feeding
550
- - `digest()` - Finalize and return hash digest
551
- - `reset()` - Reuse hasher for multiple operations
552
- - State management preventing incorrect usage patterns
553
- - Concurrency-safe with factory pattern (each hasher owns WASM instance)
554
- - **Digest Operations**: Parse, verify, and compare hash checksums
555
- - `Digest.parse()` - Parse formatted checksums (`algorithm:hex`)
556
- - `Digest.verify()` - Verify data against checksum
557
- - `digest.equals()` - Compare digests for equality
558
- - `digest.formatted` - Standard `algorithm:hex` format
559
- - Immutable digest objects with defensive copying
560
- - **Cross-Language Compatibility**: Matches gofulmen/pyfulmen implementations
561
- - Standard checksum format: `algorithm:lowercase-hex`
562
- - Shared fixture validation (12 fixtures: 6 hash, 4 format, 2 error)
563
- - Consistent error naming across ecosystem
564
- - **High Performance**: Exceeds standard targets by 7-24x
565
- - XXH3-128: 7.5 GB/s on 100MB (target: 1 GB/s)
566
- - SHA-256: 2.4 GB/s on 100MB (target: 100 MB/s)
567
- - Streaming overhead: -33% (faster than block hashing!)
568
- - Small string hashing: <0.5ms per operation (10K ops)
569
- - Concurrent hashing: 1 GB/s aggregate throughput (100 ops)
570
- - **Concurrency Safety**: Factory pattern prevents race conditions
571
- - Each hash operation gets fresh WASM instance
572
- - No shared state between concurrent operations
573
- - Deterministic results under high concurrency
574
- - Stream hashers maintain independent state
575
- - **Error Handling**: Clear, actionable error messages
576
- - `UnsupportedAlgorithmError` - Lists supported algorithms
577
- - `InvalidChecksumFormatError` - Describes expected format
578
- - `InvalidChecksumError` - Explains validation failure
579
- - `DigestStateError` - Prevents incorrect hasher reuse
580
- - All errors extend `FulHashError` base class
581
- - **Package Exports**: Added `@fulmenhq/tsfulmen/fulhash` subpath
582
- - **Comprehensive Testing**: 157 tests across 11 test suites
583
- - Block hashing: 21 tests (SHA-256, XXH3-128, fixtures)
584
- - Streaming API: 20 tests (state management, reset, chaining)
585
- - Digest operations: 30 tests (parse, verify, compare, format)
586
- - Concurrency safety: 17 tests (race conditions, isolation)
587
- - Integration examples: 17 tests (real-world usage patterns)
588
- - Performance benchmarks: 10 tests (throughput, overhead)
589
- - Fixture validation: 12 tests (cross-language parity)
590
- - Error handling: 15 tests (all error conditions)
591
- - Type contracts: 15 tests (TypeScript interface validation)
592
- - **Documentation**: Complete API reference in `src/fulhash/README.md`
593
- - Quick start examples
594
- - Block and streaming usage patterns
595
- - Checksum validation workflows
596
- - Performance characteristics
597
- - Security considerations (crypto vs non-crypto)
598
- - Error handling guide
599
- - Cross-language compatibility notes
600
- - **Type Safety**: Full TypeScript strict mode with exported types
601
- - `Algorithm` enum (SHA256, XXH3_128)
602
- - `Digest` interface (immutable hash result)
603
- - `HashOptions` interface (algorithm, encoding)
604
- - `StreamHasher` interface (update, digest, reset)
605
- - `StreamHasherOptions` interface (algorithm configuration)
606
-
607
- - **Foundry Similarity Module**: Text similarity and normalization utilities implementing Crucible 2025.10.2 standard
608
- - **Levenshtein Distance**: Wagner-Fischer algorithm with O(min(m,n)) space complexity
609
- - `distance()` - Calculate edit distance between strings
610
- - Grapheme cluster support via spread operator
611
- - Handles Unicode, emoji, combining marks correctly
612
- - **Similarity Scoring**: Normalized 0.0-1.0 similarity scores
613
- - `score()` - Calculate normalized similarity (1 - distance/maxLen)
614
- - Empty string handling (returns 1.0 for identical empty strings)
615
- - **Unicode Normalization**: Text normalization with configurable options
616
- - `normalize()` - Trim, case folding, optional accent stripping
617
- - `casefold()` - Unicode-aware lowercase with locale support
618
- - `stripAccents()` - NFD decomposition + combining mark removal
619
- - `equalsIgnoreCase()` - Normalized string comparison
620
- - Turkish locale support (dotted/dotless i handling)
621
- - **Suggestion API**: Ranked suggestions with configurable thresholds
622
- - `suggest()` - Get ranked suggestions with score filtering
623
- - Configurable minScore (default: 0.6), maxSuggestions (default: 3)
624
- - Optional normalization (default: true)
625
- - Score-based sorting with alphabetical tie-breaking
626
- - **High Performance**: <0.1ms p95 latency for 128-character strings (11x faster than <1ms target)
627
- - **Package Exports**: Added `@fulmenhq/tsfulmen/foundry` and `@fulmenhq/tsfulmen/foundry/similarity` subpaths
628
- - **Comprehensive Testing**: 127 tests with fixture-driven validation
629
- - **Type Safety**: Full TypeScript strict mode with exported types (Suggestion, SuggestOptions, NormalizeOptions)
630
- - **Documentation**: Complete API reference in `src/foundry/similarity/README.md`
631
-
632
- - **Progressive Logging Module**: Policy-based logging with profile support (Phase 2 complete)
633
- - **Logging Profiles**: Simple, Standard, Detailed, Audit with automatic policy enforcement
634
- - **Policy Engine**: Enforces allowed fields, metadata, and severity levels per profile
635
- - **Pino Integration**: High-performance structured logging with 9.5.0
636
- - **Middleware System**: Transform events before emission
637
- - **Type Safety**: Full TypeScript types with discriminated unions
638
- - **Package Exports**: Added `@fulmenhq/tsfulmen/logging` subpath
639
- - **Comprehensive Testing**: 83 tests across 6 test suites
640
- - **Documentation**: Complete API reference in `src/logging/README.md`
641
-
642
- - **Crucible Shim Module**: Complete implementation (Phases 1-4)
643
- - **Asset Discovery**: Fast discovery across schemas, docs, config with glob-based filtering
644
- - **Schema Access**: `listSchemas()`, `loadSchemaById()` with kind filtering (api, config, meta, etc.)
645
- - **Documentation Access**: `listDocumentation()`, `getDocumentation()` with metadata extraction
646
- - **Config Defaults**: `listConfigDefaults()`, `getConfigDefaults()` with version matching
647
- - **Version Parsing**: Intelligent version extraction from asset IDs
648
- - **Normalization**: Asset ID to path conversion with category awareness
649
- - **Error Handling**: AssetNotFoundError with similarity-based suggestions (3 suggestions, 60% threshold)
650
- - **Performance**: <250ms full discovery, <5ms individual category discovery
651
- - **Type Safety**: Full TypeScript types for all asset categories
652
- - **Comprehensive Testing**: 96 tests including integration and performance benchmarks
653
-
654
- - **DocScribe Module**: Complete document processing pipeline
655
- - **Format Detection**: Identifies markdown, YAML, JSON, TOML, YAML-stream, and plain text
656
- - Magic number detection (JSON: `{`/`[`, YAML: `---`)
657
- - Heuristic analysis for ambiguous formats
658
- - Frontmatter-aware (distinguishes markdown with YAML from pure YAML)
659
- - YAML stream detection (multiple `---` separators)
660
- - **Frontmatter Processing**: YAML frontmatter parsing with schema awareness
661
- - `parseFrontmatter()` - Extract metadata and body with line tracking
662
- - `stripFrontmatter()` - Remove frontmatter, return body only
663
- - `extractMetadata()` - Metadata extraction only
664
- - Schema-aware normalization (title, author, date, tags, version, etc.)
665
- - Error handling with line/column position information
666
- - Handles empty frontmatter gracefully
667
- - **Header Extraction**: Markdown header parsing with slug generation
668
- - `extractHeaders()` - Extract all headers with level, text, slug, line number
669
- - ATX-style headers (`# Header`) with configurable depth limit
670
- - Customizable slugification function
671
- - Line number tracking for each header
672
- - **Document Splitting**: Multi-document splitting for YAML streams and markdown
673
- - `splitDocuments()` - Split content into individual documents
674
- - YAML stream support (multiple `---` separators)
675
- - Markdown splitting with heuristic detection
676
- - Fence-aware (respects code blocks: ```/~~~)
677
- - Configurable document limit with automatic merging
678
- - Line range tracking for each split
679
- - **Document Inspection**: Comprehensive document analysis
680
- - `inspectDocument()` - Full document metadata, format, headers, sections
681
- - Returns format, frontmatter status, metadata, header count, line count, size
682
- - Estimated section count based on headers
683
- - **Polymorphic Input**: Accepts `string | Uint8Array | ArrayBufferLike`
684
- - UTF-8 decoding with TextDecoder
685
- - Consistent normalization via `normalizeInput()`
686
- - **Type Safety**: Readonly types, discriminated unions, comprehensive error hierarchy
687
- - **Test Coverage**: 4 test suites with fixtures (frontmatter, format, headers, split)
688
-
689
- - **Updated SSOT Dependencies**: Synced artifacts from Crucible
690
- - New schemas: `error-handling/v1.0.0/error-response.schema.json`
691
- - New schemas: `observability/metrics/v1.0.0/metrics-event.schema.json`
692
- - New standards: `library/modules/docscribe.md`, `library/modules/error-handling-propagation.md`, `library/modules/telemetry-metrics.md`
693
- - Updated standards: `devsecops/pre-commit-processes.md`, observability/logging enhancements
694
- - Updated ecosystem docs: Fulmen Forge Workhorse Standard, ecosystem guide
695
-
696
- ### Changed
697
-
698
- - Version bump to 0.1.2
699
- - Updated `docs/tsfulmen_overview.md` with all module statuses
700
- - Updated `package.json` with error, telemetry, fulhash, logging, and docscribe export paths
701
- - Updated README.md with comprehensive usage examples for new modules
702
- - Enhanced test coverage to 981/991 tests passing (98.4% pass rate)
703
-
704
- ### Fixed
705
-
706
- - Linting issues in format.ts and foundry modules
707
- - Performance test thresholds adjusted to realistic values
708
- - YAML detection and stream splitting improvements in docscribe and foundry
709
- - Crucible schemas discovery performance threshold adjustment
710
-
711
- ---
712
-
713
- ## [0.1.1] - 2025-10-20
714
-
715
- **Enterprise Module Implementation** - Implements Config Path API, Schema Validation, and complete Foundry module with pattern catalogs, HTTP status helpers, MIME type detection, and country codes.
716
-
717
- ### Added
718
-
719
- - **Config Path API**: XDG-compliant configuration directory resolution
720
- - `getAppConfigDir()`, `getAppDataDir()`, `getAppCacheDir()` for application directories
721
- - `getFulmenConfigDir()`, `getFulmenDataDir()`, `getFulmenCacheDir()` for ecosystem directories
722
- - Platform-aware path resolution (Linux/XDG, macOS, Windows)
723
- - Security validation for absolute paths and traversal protection
724
- - Comprehensive cross-platform test coverage
725
-
726
- - **Schema Validation Module**: JSON Schema 2020-12 validation with AJV
727
- - `validateDataBySchemaId()` for validating data against Crucible schemas
728
- - `validateFileBySchemaId()` for validating JSON/YAML files
729
- - `getGlobalRegistry()` for accessing schema registry
730
- - `compileSchemaById()` for pre-compiling schemas
731
- - `normalizeSchema()` for schema comparison and validation
732
- - Optional goneat bridge for cross-tool validation parity
733
- - Schema validation CLI (`bunx tsfulmen-schema`) for development
734
- - Draft 2020-12 support with meta-schema loading from Crucible
735
- - 45+ tests covering validation, registry, and goneat bridge
736
-
737
- - **Foundry Module**: Complete pattern catalog implementation
738
- - **Pattern Catalog**: 21 regex/glob patterns with language-specific flags
739
- - `getPattern()`, `getPatternRegex()`, `matchPattern()` for pattern access
740
- - `listPatterns()`, `describePattern()` for catalog exploration
741
- - Deep immutability with frozen objects and defensive copying
742
- - Lazy regex compilation with caching
743
- - Glob pattern support via picomatch
744
- - **HTTP Status Catalog**: 58 HTTP status codes across 5 groups
745
- - `getHttpStatus()` for status lookup
746
- - `isInformational()`, `isSuccess()`, `isRedirection()`, `isClientError()`, `isServerError()` helpers
747
- - `getStatusReason()` for reason phrase lookup
748
- - `listHttpStatuses()` for catalog exploration
749
- - **MIME Type Catalog**: Content-based detection with magic numbers
750
- - Magic number pattern database for JSON, XML, YAML (exact byte matching)
751
- - Heuristic detection for NDJSON, CSV, Protocol Buffers, plain text
752
- - Priority-based detection engine with UTF-8 BOM handling
753
- - Streaming support for Buffer, ReadableStream, Node.js Readable, and file paths
754
- - `detectMimeType()` polymorphic function for all input types
755
- - `detectMimeTypeFromBuffer()` for direct buffer analysis
756
- - `detectMimeTypeFromFile()` with Bun.file() optimization and Node.js fallback
757
- - `detectMimeTypeFromStream()` for Web and Node.js streams
758
- - `matchMagicNumber()` utility for pattern verification
759
- - `getMimeTypeByExtension()` for fast extension-based lookup
760
- - DetectionOptions interface for configurable byte reading and fallback
761
- - 60+ tests for magic number detection across all formats
762
- - Test fixtures for integration testing
763
- - **Country Code Catalog**: ISO 3166 country codes with normalization
764
- - `getCountryByAlpha2()`, `getCountryByAlpha3()`, `getCountryByNumeric()` lookups
765
- - Case-insensitive alpha code matching (US, us, Us all work)
766
- - Numeric code normalization with left-padding (76 → "076")
767
- - `listCountries()` for catalog exploration
768
- - Precomputed indexes for O(1) lookups
769
- - 5 countries in MVP (US, CA, JP, DE, BR)
770
-
771
- - **Foundry Infrastructure**:
772
- - YAML catalog loading with schema validation via AJV
773
- - Fail-fast error handling with descriptive FoundryCatalogError
774
- - Bun-first file loading with Node.js fallback
775
- - `loadAllCatalogs()` for parallel catalog initialization
776
- - Comprehensive test coverage (193 tests across all catalogs)
777
- - Zero runtime dependencies (uses yaml, ajv, picomatch)
778
-
779
- ### Changed
780
-
781
- - Updated README with comprehensive usage examples for all modules
782
- - Enhanced test coverage from 30%+ to 70%+ (292 total tests)
783
- - Improved documentation with API examples and detection strategies
784
-
785
- ### Fixed
786
-
787
- - Foundry loader test regression with readonly Bun global property
788
- - Import ordering and linting issues across all new modules
789
-
790
- ---
791
-
792
- ## [0.1.0] - 2025-10-15
793
-
794
- **Bootstrap Scaffold Release** - Establishes project foundation, governance, and tooling infrastructure. No working module implementations yet.
795
-
796
- **Release Strategy**: TSFulmen follows a progressive upscaling approach:
797
-
798
- - **v0.1.0**: Bootstrap scaffold (this release)
799
- - **v0.1.1 - v0.1.x**: Progressive module implementations (Config Path API, Crucible Shim, Logging, Schema Validation)
800
- - **v0.2.0**: First public release with complete Fulmen Helper Library Standard compliance
801
-
802
- **Not Production Ready**: This release is for maintainer coordination and ecosystem alignment only. First usable release will be v0.2.0.
803
-
804
- ### Added
805
-
806
- - **Project Foundation**: Initial repository structure and governance
807
- - TypeScript library scaffold with src/ layout
808
- - Bun-based dependency management and build tooling
809
- - tsup bundler configuration for ESM/CJS dual exports
810
- - Vitest testing framework with coverage support
811
- - Biome for linting and formatting
812
-
813
- - **Repository Governance**: Complete project governance framework
814
- - AGENTS.md with Module Weaver identity (@module-weaver)
815
- - MAINTAINERS.md with human maintainer roster
816
- - REPOSITORY_SAFETY_PROTOCOLS.md for operational safety
817
- - CONTRIBUTING.md with development guidelines
818
- - MIT LICENSE
819
-
820
- - **Makefile Standard**: FulmenHQ-compliant Makefile with all required standard targets
821
- - Core targets: `bootstrap`, `tools`, `sync-ssot`, `test`, `build`, `build-all`, `clean`
822
- - Quality targets: `lint` (Biome + goneat assess), `fmt` (Biome + goneat format), `typecheck` (tsc)
823
- - Version targets: `version`, `version-set`, `version-bump-{major,minor,patch,calver}`
824
- - Release targets: `release-check`, `release-prepare`, `release-build`
825
- - Hook targets: `precommit`, `prepush`
826
- - ADR targets: `adr-validate`, `adr-new`
827
- - Additional: `test-watch`, `test-coverage`, `bootstrap-force`
828
- - **Split linting approach**: Biome for TS/JS source, goneat for JSON/YAML/Markdown (matches pyfulmen/gofulmen pattern)
829
-
830
- - **SSOT Integration**: Crucible asset synchronization via goneat
831
- - .goneat/ssot-consumer.yaml configuration
832
- - docs/crucible-ts/ for synced documentation
833
- - schemas/crucible-ts/ for synced JSON schemas
834
- - config/crucible-ts/ for synced config defaults
835
- - .crucible/metadata/ for sync metadata
836
-
837
- - **Documentation**: Comprehensive project documentation
838
- - README.md with quick start and architecture overview
839
- - docs/tsfulmen_overview.md with module catalog and roadmap
840
- - docs/development/ with operations, bootstrap, and ADR documentation
841
- - docs/development/adr/ for Architecture Decision Records
842
- - Local ADR index and guidelines
843
- - Ecosystem ADR adoption tracking
844
- - ADR validation and creation tooling via Makefile
845
- - **ADR-0001**: Split linting approach (Biome for TS/JS, goneat for config/docs)
846
- - VSCode workspace configuration for development
847
- - Cross-references to ecosystem standards
848
-
849
- - **Package Configuration**: Modern TypeScript package setup
850
- - package.json with proper exports and scripts
851
- - tsconfig.json with strict TypeScript configuration
852
- - ESM/CJS dual module support
853
- - Type definitions for all exports
854
-
855
- - **Development Tools**: Quality assurance tooling
856
- - Biome configuration (biome.json)
857
- - Vitest configuration (vitest.config.ts)
858
- - Git hooks preparation
859
- - EditorConfig for consistent formatting
860
-
861
- - **Version Management**: Initial versioning infrastructure
862
- - VERSION file (0.1.0)
863
- - LIFECYCLE_PHASE file (alpha)
864
- - Semantic versioning support via Makefile
865
-
866
- ### Changed
867
-
868
- - **Agent Documentation**: Enhanced AGENTS.md with improvements from sibling repos
869
- - Added DO NOT Rules section with TypeScript-specific guidelines
870
- - Enhanced agent identity section with Mission, Capabilities, Communication Channels
871
- - Improved commit attribution examples
872
- - Added Safety Protocols and Development Philosophy sections
873
- - Added Getting Started section for agent interaction
874
-
875
- ### Fixed
876
-
877
- - Repository structure aligned with Fulmen Helper Library Standard
878
- - Cross-language consistency with gofulmen and pyfulmen governance
879
-
880
- ---
881
-
882
- _Note: This changelog tracks the progressive upscaling of TSFulmen through v0.1.x releases._
437
+ <!-- Older releases (v0.1.3 and earlier) archived in docs/releases/ -->