@fulmenhq/tsfulmen 0.1.13 → 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.
- package/CHANGELOG.md +73 -512
- package/README.md +111 -28
- package/config/crucible-ts/agentic/roles/README.md +76 -0
- package/config/crucible-ts/agentic/roles/cicd.yaml +82 -0
- package/config/crucible-ts/agentic/roles/dataeng.yaml +104 -0
- package/config/crucible-ts/agentic/roles/devlead.yaml +84 -0
- package/config/crucible-ts/agentic/roles/devrev.yaml +105 -0
- package/config/crucible-ts/agentic/roles/entarch.yaml +101 -0
- package/config/crucible-ts/agentic/roles/infoarch.yaml +95 -0
- package/config/crucible-ts/agentic/roles/prodmktg.yaml +92 -0
- package/config/crucible-ts/agentic/roles/qa.yaml +148 -0
- package/config/crucible-ts/agentic/roles/secrev.yaml +101 -0
- package/config/crucible-ts/agentic/roles/uxdev.yaml +168 -0
- package/config/crucible-ts/branding/ecosystem.yaml +26 -0
- package/config/crucible-ts/library/foundry/exit-codes.snapshot.json +26 -0
- package/config/crucible-ts/library/foundry/exit-codes.yaml +28 -3
- package/config/crucible-ts/library/foundry/patterns.yaml +2 -2
- package/config/crucible-ts/library/foundry/signal-resolution-fixtures.yaml +207 -0
- package/config/crucible-ts/library/foundry/signals.yaml +21 -0
- package/config/crucible-ts/library/foundry/simplified-modes.snapshot.json +9 -1
- package/config/crucible-ts/library/{foundry/similarity-fixtures.yaml → similarity/fixtures.yaml} +1 -1
- package/config/crucible-ts/library/v1.0.0/module-manifest.yaml +1 -2
- package/config/crucible-ts/taxonomy/fixture-catalog.yaml +145 -0
- package/config/crucible-ts/taxonomy/languages.yaml +2 -2
- package/config/crucible-ts/taxonomy/library/foundry-catalogs/v1.1.0/catalogs.yaml +77 -0
- package/config/crucible-ts/taxonomy/library/platform-modules/v1.1.0/modules.yaml +722 -0
- package/config/crucible-ts/taxonomy/metrics.yaml +1 -1
- package/config/crucible-ts/taxonomy/repository-categories.yaml +134 -1
- package/dist/appidentity/index.d.ts +117 -35
- package/dist/appidentity/index.js +752 -592
- package/dist/appidentity/index.js.map +1 -1
- package/dist/config/index.js +118 -6
- package/dist/config/index.js.map +1 -1
- package/dist/crucible/index.js +118 -6
- package/dist/crucible/index.js.map +1 -1
- package/dist/errors/index.js +118 -6
- package/dist/errors/index.js.map +1 -1
- package/dist/foundry/index.d.ts +13 -676
- package/dist/foundry/index.js +118 -6
- package/dist/foundry/index.js.map +1 -1
- package/dist/foundry/similarity/index.d.ts +2 -2
- package/dist/fulhash/index.d.ts +64 -12
- package/dist/fulhash/index.js +292 -53
- package/dist/fulhash/index.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +753 -593
- package/dist/index.js.map +1 -1
- package/dist/{manager-D27vrdaS.d.ts → manager-CH3fX7zO.d.ts} +1 -1
- package/dist/pathfinder/index.js +368 -59
- package/dist/pathfinder/index.js.map +1 -1
- package/dist/reports/license-inventory.csv +302 -0
- package/dist/schema/index.js +118 -6
- package/dist/schema/index.js.map +1 -1
- package/dist/signals/index.d.ts +675 -0
- package/dist/signals/index.js +5790 -0
- package/dist/signals/index.js.map +1 -0
- package/dist/similarity/index.d.ts +2 -0
- package/dist/similarity/index.js +136 -0
- package/dist/similarity/index.js.map +1 -0
- package/dist/{suggest-Cv7SVQRu.d.ts → suggest-D8LbwtPV.d.ts} +1 -1
- package/dist/telemetry/http/index.js +704 -591
- package/dist/telemetry/http/index.js.map +1 -1
- package/dist/telemetry/index.js +118 -6
- package/dist/telemetry/index.js.map +1 -1
- package/dist/telemetry/prometheus/index.d.ts +1 -1
- package/dist/telemetry/prometheus/index.js +175 -11
- package/dist/telemetry/prometheus/index.js.map +1 -1
- package/package.json +15 -6
- package/schemas/crucible-ts/assessment/v1.0.0/severity-definitions.schema.json +1 -1
- package/schemas/crucible-ts/config/fulmen-ecosystem/v1.0.0/fulmen-config-paths.schema.json +1 -1
- package/schemas/crucible-ts/config/repository/app-identity/v1.0.0/app-identity.schema.json +3 -3
- package/schemas/crucible-ts/config/repository/v1.0.0/lifecycle-phase.json +1 -1
- package/schemas/crucible-ts/config/repository-category/codex/v1.0.0/codex-config.schema.json +1 -1
- package/schemas/crucible-ts/config/standards/v1.0.0/adr-adoption-status.json +1 -1
- package/schemas/crucible-ts/config/standards/v1.0.0/adr-frontmatter.schema.json +3 -3
- package/schemas/crucible-ts/config/standards/v1.0.0/adr-lifecycle-status.json +1 -1
- package/schemas/crucible-ts/config/sync-keys.schema.yaml +14 -0
- package/schemas/crucible-ts/content/ssot-provenance/v1.0.0/ssot-provenance.schema.json +1 -1
- package/schemas/crucible-ts/design/README.md +159 -0
- package/schemas/crucible-ts/design/core/v1.0.0/component-states.schema.json +204 -0
- package/schemas/crucible-ts/design/core/v1.0.0/semantic-colors.schema.json +179 -0
- package/schemas/crucible-ts/design/core/v1.0.0/spacing-scale.schema.json +165 -0
- package/schemas/crucible-ts/design/core/v1.0.0/typography-roles.schema.json +195 -0
- package/schemas/crucible-ts/design/tui/v1.0.0/color-palette.schema.json +303 -0
- package/schemas/crucible-ts/design/tui/v1.0.0/component.schema.json +374 -0
- package/schemas/crucible-ts/design/tui/v1.0.0/layout.schema.json +272 -0
- package/schemas/crucible-ts/design/tui/v1.0.0/theme.schema.json +205 -0
- package/schemas/crucible-ts/design/tui/v1.0.0/typography.schema.json +316 -0
- package/schemas/crucible-ts/devsecops/lorage-central/activity/v1.0.0/activity.schema.json +1 -1
- package/schemas/crucible-ts/devsecops/lorage-central/credentials/v1.0.0/credentials.schema.json +1 -1
- package/schemas/crucible-ts/devsecops/lorage-central/policy/v1.0.0/policy.schema.json +1 -1
- package/schemas/crucible-ts/devsecops/lorage-central/recipe/v1.0.0/recipe.schema.json +1 -1
- package/schemas/crucible-ts/devsecops/lorage-central/runbooks/v1.0.0/runbook.schema.json +1 -1
- package/schemas/crucible-ts/devsecops/lorage-central/tenant/v1.0.0/tenant.schema.json +1 -1
- package/schemas/crucible-ts/devsecops/secrets/v1.0.0/secrets.schema.json +1 -1
- package/schemas/crucible-ts/error-handling/v1.0.0/error-response.schema.json +1 -1
- package/schemas/crucible-ts/library/foundry/v1.0.0/country-codes.schema.json +1 -1
- package/schemas/crucible-ts/library/foundry/v1.0.0/exit-codes.schema.json +1 -1
- package/schemas/crucible-ts/library/foundry/v1.0.0/http-status-groups.schema.json +1 -1
- package/schemas/crucible-ts/library/foundry/v1.0.0/mime-types.schema.json +1 -1
- package/schemas/crucible-ts/library/foundry/v1.0.0/patterns.schema.json +1 -1
- package/schemas/crucible-ts/library/foundry/v1.0.0/signal-resolution-fixtures.schema.json +140 -0
- package/schemas/crucible-ts/library/foundry/v1.0.0/signals.schema.json +6 -1
- package/schemas/crucible-ts/library/fulencode/v1.0.0/fulencode-config.schema.json +1 -1
- package/schemas/crucible-ts/library/fulhash/v1.0.0/checksum-string.schema.json +2 -2
- package/schemas/crucible-ts/library/fulhash/v1.0.0/digest.schema.json +61 -1
- package/schemas/crucible-ts/library/fulhash/v1.0.0/fixtures.schema.json +1 -1
- package/schemas/crucible-ts/library/fulpack/v1.0.0/archive-entry.schema.json +1 -1
- package/schemas/crucible-ts/library/fulpack/v1.0.0/archive-info.schema.json +1 -1
- package/schemas/crucible-ts/library/fulpack/v1.0.0/archive-manifest.schema.json +2 -2
- package/schemas/crucible-ts/library/fulpack/v1.0.0/create-options.schema.json +1 -1
- package/schemas/crucible-ts/library/fulpack/v1.0.0/extract-options.schema.json +1 -1
- package/schemas/crucible-ts/library/fulpack/v1.0.0/extract-result.schema.json +1 -1
- package/schemas/crucible-ts/library/fulpack/v1.0.0/scan-options.schema.json +1 -1
- package/schemas/crucible-ts/library/fulpack/v1.0.0/validation-result.schema.json +1 -1
- package/schemas/crucible-ts/library/module-manifest/v1.0.0/module-manifest.schema.json +1 -1
- package/schemas/crucible-ts/library/{foundry → similarity}/v1.0.0/similarity.schema.json +2 -2
- package/schemas/crucible-ts/library/{foundry → similarity}/v2.0.0/similarity.schema.json +2 -2
- package/schemas/crucible-ts/observability/metrics/v1.0.0/metrics-event.schema.json +1 -1
- package/schemas/crucible-ts/pathfinder/v1.0.0/find-query.schema.json +1 -1
- package/schemas/crucible-ts/pathfinder/v1.0.0/finder-config.schema.json +1 -1
- package/schemas/crucible-ts/pathfinder/v1.0.0/path-result.schema.json +1 -1
- package/schemas/crucible-ts/protocol/http/v1.0.0/error-response.schema.json +1 -1
- package/schemas/crucible-ts/protocol/http/v1.0.0/health-response.schema.json +1 -1
- package/schemas/crucible-ts/protocol/http/v1.0.0/success-response.schema.json +1 -1
- package/schemas/crucible-ts/protocol/http/v1.0.0/version-response.schema.json +1 -1
- package/schemas/crucible-ts/server/management/v1.0.0/server-management.schema.json +1 -1
- package/schemas/crucible-ts/standards/publishing/v1.0.0/spec-catalog.schema.json +134 -0
- package/schemas/crucible-ts/taxonomy/devsecops/auth-methods/v1.0.0/auth-methods-key.schema.json +1 -1
- package/schemas/crucible-ts/taxonomy/devsecops/auth-methods/v1.0.0/auth-methods-metadata.schema.json +1 -1
- package/schemas/crucible-ts/taxonomy/devsecops/geo/v1.0.0/geo-key.schema.json +1 -1
- package/schemas/crucible-ts/taxonomy/devsecops/geo/v1.0.0/geo-metadata.schema.json +1 -1
- package/schemas/crucible-ts/taxonomy/devsecops/infra-phases/v1.0.0/infra-phases-key.schema.json +1 -1
- package/schemas/crucible-ts/taxonomy/devsecops/infra-phases/v1.0.0/infra-phases-metadata.schema.json +1 -1
- package/schemas/crucible-ts/taxonomy/devsecops/infra-providers/v1.0.0/infra-providers-key.schema.json +1 -1
- package/schemas/crucible-ts/taxonomy/devsecops/infra-providers/v1.0.0/infra-providers-metadata.schema.json +1 -1
- package/schemas/crucible-ts/taxonomy/devsecops/modules/v1.0.0/devsecops-module-entry.schema.json +1 -1
- package/schemas/crucible-ts/taxonomy/fixture/v1.0.0/fixture-catalog.schema.json +166 -0
- package/schemas/crucible-ts/taxonomy/language/v1.0.0/language-key.schema.json +1 -1
- package/schemas/crucible-ts/taxonomy/language/v1.0.0/language-metadata.schema.json +1 -1
- package/schemas/crucible-ts/taxonomy/library/foundry-catalogs/v1.1.0/catalog-entry.schema.json +98 -0
- package/schemas/crucible-ts/taxonomy/library/fulencode/detection-confidence/v1.0.0/levels.schema.json +1 -1
- package/schemas/crucible-ts/taxonomy/library/fulencode/encoding-families/v1.0.0/families.schema.json +1 -1
- package/schemas/crucible-ts/taxonomy/library/fulencode/normalization-profiles/v1.0.0/profiles.schema.json +1 -1
- package/schemas/crucible-ts/taxonomy/library/fulhash/algorithms/v1.0.0/algorithms.yaml +16 -0
- package/schemas/crucible-ts/taxonomy/library/modules/v1.0.0/module-entry.schema.json +1 -1
- package/schemas/crucible-ts/taxonomy/library/modules/v1.1.0/module-entry.schema.json +436 -0
- package/schemas/crucible-ts/taxonomy/repository-category/v1.0.0/category-key.schema.json +16 -8
- package/schemas/crucible-ts/taxonomy/repository-category/v1.0.0/category-metadata.schema.json +1 -1
- package/schemas/crucible-ts/upstream/3leaps/PROVENANCE.md +43 -0
- package/schemas/crucible-ts/upstream/3leaps/agentic/v0/role-prompt.schema.json +183 -0
- package/schemas/crucible-ts/upstream/3leaps/ailink/v0/prompt.schema.json +204 -0
- package/schemas/crucible-ts/upstream/3leaps/ailink/v0/search-response.schema.json +152 -0
- package/schemas/crucible-ts/upstream/README.md +50 -0
- package/schemas/crucible-ts/web/branding/v1.0.0/site-branding.schema.json +1 -1
- package/schemas/crucible-ts/web/styling/v1.0.0/site-styling.schema.json +1 -1
- package/schemas/crucible-ts/config/goneat/README.md +0 -60
- package/schemas/crucible-ts/config/goneat/v1.0.0/dates.yaml +0 -234
- package/schemas/crucible-ts/config/goneat/v1.0.0/goneat-config.yaml +0 -344
- package/schemas/crucible-ts/config/goneat/v1.0.0/lifecycle-phase.json +0 -20
- package/schemas/crucible-ts/config/goneat/v1.0.0/release-phase.json +0 -17
- package/schemas/crucible-ts/config/goneat/v1.0.0/security-policy.yaml +0 -178
- package/schemas/crucible-ts/config/goneat/v1.0.0/version-policy.schema.yaml +0 -205
- package/schemas/crucible-ts/tooling/goneat-tools/v1.0.0/README.md +0 -177
- package/schemas/crucible-ts/tooling/goneat-tools/v1.0.0/goneat-tools-config.schema.yaml +0 -146
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
# yaml-language-server: $schema=https://schemas.3leaps.dev/agentic/v0/role-prompt.schema.json
|
|
2
|
+
slug: uxdev
|
|
3
|
+
name: UX Developer
|
|
4
|
+
description: User experience, frontend interfaces, TUI and web development
|
|
5
|
+
version: 1.0.0
|
|
6
|
+
author: entarch
|
|
7
|
+
status: approved
|
|
8
|
+
category: agentic
|
|
9
|
+
tags:
|
|
10
|
+
- role
|
|
11
|
+
- frontend
|
|
12
|
+
- ux
|
|
13
|
+
- tui
|
|
14
|
+
- web
|
|
15
|
+
- accessibility
|
|
16
|
+
- user-interface
|
|
17
|
+
context: |
|
|
18
|
+
Use this role for user-facing interface work across terminals and browsers.
|
|
19
|
+
The uxdev role bridges design thinking with implementation, ensuring interfaces
|
|
20
|
+
are intuitive, accessible, and performant.
|
|
21
|
+
|
|
22
|
+
Covers both:
|
|
23
|
+
- Terminal User Interfaces (TUI): tview (Go), textual (Python), ink/opentui (Node), ratatui (Rust)
|
|
24
|
+
- Web frontends: React, Vue, Svelte, vanilla JS/TS, HTMX
|
|
25
|
+
|
|
26
|
+
Key patterns:
|
|
27
|
+
- TUI: Model-View-Update, command pattern for async, viewport/resize handling
|
|
28
|
+
- Web: Component composition, controlled vs uncontrolled, optimistic updates
|
|
29
|
+
- Accessibility: Semantic HTML first, focus management, live regions, color independence
|
|
30
|
+
|
|
31
|
+
Recommended tools by language:
|
|
32
|
+
- Go TUI: tview, tcell
|
|
33
|
+
- Python TUI: textual, rich
|
|
34
|
+
- TypeScript TUI: ink, opentui
|
|
35
|
+
- Rust TUI: ratatui, crossterm
|
|
36
|
+
- Web styling: Tailwind, CSS Modules, vanilla-extract
|
|
37
|
+
- Web state: zustand (React), pinia (Vue), svelte-stores
|
|
38
|
+
- Testing: vitest, playwright, storybook
|
|
39
|
+
|
|
40
|
+
Distinct from:
|
|
41
|
+
- devlead: Focuses on backend/full-stack (uxdev specializes in user-facing layers)
|
|
42
|
+
- infoarch: Focuses on documentation (uxdev focuses on interactive interfaces)
|
|
43
|
+
- dataeng: Focuses on data pipelines (uxdev consumes APIs, doesn't design them)
|
|
44
|
+
scope:
|
|
45
|
+
- Terminal user interface design and implementation
|
|
46
|
+
- Web frontend architecture and components
|
|
47
|
+
- User interaction patterns and flows
|
|
48
|
+
- Accessibility (a11y) compliance and testing
|
|
49
|
+
- Responsive design and layout systems
|
|
50
|
+
- State management patterns
|
|
51
|
+
- Component library development
|
|
52
|
+
- CSS/styling architecture (Tailwind, CSS-in-JS, vanilla CSS)
|
|
53
|
+
- Frontend performance optimization
|
|
54
|
+
- Cross-browser/cross-terminal compatibility
|
|
55
|
+
mindset:
|
|
56
|
+
focus:
|
|
57
|
+
- How will users actually interact with this?
|
|
58
|
+
- Is the interface discoverable without documentation?
|
|
59
|
+
- Does this work for users with different abilities?
|
|
60
|
+
- Is the feedback immediate and clear?
|
|
61
|
+
- Does the layout scale across screen sizes/terminal dimensions?
|
|
62
|
+
- Is the state management predictable?
|
|
63
|
+
principles:
|
|
64
|
+
- User needs drive interface decisions
|
|
65
|
+
- Progressive enhancement over graceful degradation
|
|
66
|
+
- Accessibility is not optional
|
|
67
|
+
- Minimize cognitive load
|
|
68
|
+
- Consistent patterns reduce learning curve
|
|
69
|
+
- Performance is a feature
|
|
70
|
+
- Test on real devices and terminals
|
|
71
|
+
responsibilities:
|
|
72
|
+
- Design and implement user interfaces (TUI and web)
|
|
73
|
+
- Ensure WCAG 2.1 AA accessibility compliance for web
|
|
74
|
+
- Implement keyboard navigation and screen reader support
|
|
75
|
+
- Create responsive layouts that adapt to viewport/terminal size
|
|
76
|
+
- Build reusable component libraries with clear APIs
|
|
77
|
+
- Optimize frontend performance (bundle size, render time, FPS)
|
|
78
|
+
- Implement proper loading states, error states, and empty states
|
|
79
|
+
- Write component tests (unit, visual regression, e2e)
|
|
80
|
+
- Document component APIs and usage patterns
|
|
81
|
+
- Coordinate with devlead on API contracts and data shapes
|
|
82
|
+
escalates_to:
|
|
83
|
+
- target: devlead
|
|
84
|
+
when: API changes needed to support UI requirements
|
|
85
|
+
- target: human maintainers
|
|
86
|
+
when: Major UX pattern changes affecting user workflows
|
|
87
|
+
- target: secrev
|
|
88
|
+
when: Security-sensitive UI (auth flows, PII display, input sanitization)
|
|
89
|
+
- target: entarch
|
|
90
|
+
when: Design system decisions affecting multiple repositories
|
|
91
|
+
- target: human maintainers
|
|
92
|
+
when: Third-party dependency additions (new frameworks, component libraries)
|
|
93
|
+
does_not:
|
|
94
|
+
- Skip accessibility requirements
|
|
95
|
+
- Implement custom solutions when native elements suffice
|
|
96
|
+
- Add heavy dependencies without justification
|
|
97
|
+
- Ignore loading, error, and empty states
|
|
98
|
+
- Break keyboard navigation
|
|
99
|
+
- Create interfaces that require mouse/touch (TUI must be keyboard-first)
|
|
100
|
+
- Skip visual testing for component changes
|
|
101
|
+
- Modify backend code beyond API consumption
|
|
102
|
+
checklists:
|
|
103
|
+
component:
|
|
104
|
+
- "Keyboard navigable: All interactions work without mouse"
|
|
105
|
+
- "Screen reader: Proper labels, roles, and announcements"
|
|
106
|
+
- "Focus visible: Clear focus indicators on all interactive elements"
|
|
107
|
+
- "Error handling: Clear error messages with recovery guidance"
|
|
108
|
+
- "Loading states: Skeleton or spinner for async operations"
|
|
109
|
+
- "Empty states: Helpful message when no data"
|
|
110
|
+
- "Responsive: Works across viewport sizes / terminal dimensions"
|
|
111
|
+
- "Tests: Unit tests for logic, visual tests for appearance"
|
|
112
|
+
tui_specific:
|
|
113
|
+
- "Resize handling: Adapts to terminal size changes"
|
|
114
|
+
- "Exit handling: Clean shutdown on Ctrl+C, q, or Escape"
|
|
115
|
+
- "Help: Discoverable keybindings (? or F1)"
|
|
116
|
+
- "Status line: Current state and available actions visible"
|
|
117
|
+
- "Color fallback: Works in 16-color and no-color modes"
|
|
118
|
+
web_specific:
|
|
119
|
+
- "Lighthouse: Performance score > 90"
|
|
120
|
+
- "Core Web Vitals: LCP < 2.5s, FID < 100ms, CLS < 0.1"
|
|
121
|
+
- "Bundle size: Justified, code-split where possible"
|
|
122
|
+
- "SEO: Proper meta tags, semantic structure"
|
|
123
|
+
- "Progressive: Works with JS disabled (where applicable)"
|
|
124
|
+
examples:
|
|
125
|
+
- type: commit
|
|
126
|
+
title: TUI component implementation
|
|
127
|
+
content: |
|
|
128
|
+
feat(cli): add interactive file picker component
|
|
129
|
+
|
|
130
|
+
Implements keyboard-navigable file picker using bubbletea
|
|
131
|
+
with filtering, preview, and multi-select support.
|
|
132
|
+
|
|
133
|
+
Changes:
|
|
134
|
+
- Add internal/tui/filepicker component
|
|
135
|
+
- Implement j/k navigation, Enter to select, / to filter
|
|
136
|
+
- Add file preview panel with syntax highlighting
|
|
137
|
+
- Handle terminal resize events
|
|
138
|
+
- Include unit tests for model updates
|
|
139
|
+
|
|
140
|
+
Tested on: iTerm2, Terminal.app, Windows Terminal, VS Code terminal
|
|
141
|
+
|
|
142
|
+
Generated by Claude Opus 4.5 via Claude Code under supervision of @3leapsdave
|
|
143
|
+
|
|
144
|
+
Co-Authored-By: Claude Opus 4.5 <noreply@3leaps.net>
|
|
145
|
+
Role: uxdev
|
|
146
|
+
Committer-of-Record: Dave Thompson <dave.thompson@3leaps.net> [@3leapsdave]
|
|
147
|
+
- type: commit
|
|
148
|
+
title: Web component implementation
|
|
149
|
+
content: |
|
|
150
|
+
feat(web): add accessible data table component
|
|
151
|
+
|
|
152
|
+
Implements sortable, filterable data table with full
|
|
153
|
+
keyboard navigation and screen reader support.
|
|
154
|
+
|
|
155
|
+
Changes:
|
|
156
|
+
- Add components/DataTable with column sorting
|
|
157
|
+
- Implement arrow key navigation between cells
|
|
158
|
+
- Add ARIA labels and live region announcements
|
|
159
|
+
- Include Storybook stories with a11y addon
|
|
160
|
+
- Add Playwright tests for keyboard navigation
|
|
161
|
+
|
|
162
|
+
Accessibility: WCAG 2.1 AA compliant, tested with VoiceOver and NVDA
|
|
163
|
+
|
|
164
|
+
Generated by Claude Sonnet via Claude Code under supervision of @3leapsdave
|
|
165
|
+
|
|
166
|
+
Co-Authored-By: Claude Sonnet <noreply@3leaps.net>
|
|
167
|
+
Role: uxdev
|
|
168
|
+
Committer-of-Record: Dave Thompson <dave.thompson@3leaps.net> [@3leapsdave]
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Fulmen Ecosystem Brand Summary
|
|
2
|
+
#
|
|
3
|
+
# Accessible via helper libraries: crucible.GetBrandSummary()
|
|
4
|
+
#
|
|
5
|
+
# Display options (tools implement one or both):
|
|
6
|
+
# - CLI: `<binary> version --extended` or `<binary> about`
|
|
7
|
+
# - Server: GET /about endpoint
|
|
8
|
+
#
|
|
9
|
+
# Keep summaries factual and informative, not marketing-speak.
|
|
10
|
+
$schema: "https://schemas.fulmenhq.dev/crucible/branding/v1.0.0/ecosystem.schema.json"
|
|
11
|
+
version: "1.0.0"
|
|
12
|
+
# One-line motto for /about and version --extended
|
|
13
|
+
motto: "Fulmen - Thrive on Scale"
|
|
14
|
+
# Extended motto (alternative)
|
|
15
|
+
motto_extended: "Fulmen - Start Fast. Thrive on Scale."
|
|
16
|
+
# Attribution line
|
|
17
|
+
built_by: "Built by 3 Leaps, LLC"
|
|
18
|
+
# Primary URL (will add codex URL when available)
|
|
19
|
+
url: "https://3leaps.net"
|
|
20
|
+
# Structured metadata for programmatic access
|
|
21
|
+
metadata:
|
|
22
|
+
org: "fulmenhq"
|
|
23
|
+
maintainer: "3 Leaps, LLC"
|
|
24
|
+
url: "https://3leaps.net"
|
|
25
|
+
source: "https://github.com/fulmenhq"
|
|
26
|
+
tagline: "Thrive on Scale"
|
|
@@ -280,6 +280,32 @@
|
|
|
280
280
|
"description": "Test coverage below required threshold",
|
|
281
281
|
"context": "Code coverage validation, quality gate failure"
|
|
282
282
|
},
|
|
283
|
+
"124": {
|
|
284
|
+
"name": "EXIT_TIMEOUT",
|
|
285
|
+
"category": "shell",
|
|
286
|
+
"description": "Command timed out before completion",
|
|
287
|
+
"context": "GNU timeout or similar utility terminated command after deadline"
|
|
288
|
+
},
|
|
289
|
+
"125": {
|
|
290
|
+
"name": "EXIT_TIMEOUT_INTERNAL",
|
|
291
|
+
"category": "shell",
|
|
292
|
+
"description": "Timeout utility itself failed",
|
|
293
|
+
"context": "Error in timeout tool before or during command execution (not command failure)"
|
|
294
|
+
},
|
|
295
|
+
"126": {
|
|
296
|
+
"name": "EXIT_CANNOT_EXECUTE",
|
|
297
|
+
"category": "shell",
|
|
298
|
+
"description": "Command found but could not be executed",
|
|
299
|
+
"context": "Permission denied, not executable, exec format error",
|
|
300
|
+
"bsd_equivalent": "EX_NOPERM (partial)"
|
|
301
|
+
},
|
|
302
|
+
"127": {
|
|
303
|
+
"name": "EXIT_NOT_FOUND",
|
|
304
|
+
"category": "shell",
|
|
305
|
+
"description": "Command not found",
|
|
306
|
+
"context": "Executable not found in PATH or specified path does not exist",
|
|
307
|
+
"bsd_equivalent": "EX_UNAVAILABLE (partial)"
|
|
308
|
+
},
|
|
283
309
|
"129": {
|
|
284
310
|
"name": "EXIT_SIGNAL_HUP",
|
|
285
311
|
"category": "signals",
|
|
@@ -285,6 +285,31 @@ categories:
|
|
|
285
285
|
name: EXIT_COVERAGE_THRESHOLD_NOT_MET
|
|
286
286
|
description: Test coverage below required threshold
|
|
287
287
|
context: Code coverage validation, quality gate failure
|
|
288
|
+
- id: shell
|
|
289
|
+
name: Shell & Process Control
|
|
290
|
+
description: Exit codes from shell conventions and process control utilities (timeout, exec)
|
|
291
|
+
range:
|
|
292
|
+
min: 124
|
|
293
|
+
max: 127
|
|
294
|
+
codes:
|
|
295
|
+
- code: 124
|
|
296
|
+
name: EXIT_TIMEOUT
|
|
297
|
+
description: Command timed out before completion
|
|
298
|
+
context: GNU timeout or similar utility terminated command after deadline
|
|
299
|
+
- code: 125
|
|
300
|
+
name: EXIT_TIMEOUT_INTERNAL
|
|
301
|
+
description: Timeout utility itself failed
|
|
302
|
+
context: Error in timeout tool before or during command execution (not command failure)
|
|
303
|
+
- code: 126
|
|
304
|
+
name: EXIT_CANNOT_EXECUTE
|
|
305
|
+
description: Command found but could not be executed
|
|
306
|
+
context: Permission denied, not executable, exec format error
|
|
307
|
+
bsd_equivalent: EX_NOPERM (partial)
|
|
308
|
+
- code: 127
|
|
309
|
+
name: EXIT_NOT_FOUND
|
|
310
|
+
description: Command not found
|
|
311
|
+
context: Executable not found in PATH or specified path does not exist
|
|
312
|
+
bsd_equivalent: EX_UNAVAILABLE (partial)
|
|
288
313
|
- id: signals
|
|
289
314
|
name: Signal-Induced Exits
|
|
290
315
|
description: |-
|
|
@@ -449,7 +474,7 @@ simplified_modes:
|
|
|
449
474
|
maps_from: [0]
|
|
450
475
|
- simplified_code: 1
|
|
451
476
|
simplified_name: ERROR
|
|
452
|
-
maps_from: [1, 10, 11, 12, 13, 14, 15, 20, 21, 22, 23, 24, 30, 31, 32, 33, 34, 40, 41, 50, 51, 52, 53, 54, 60, 61, 62, 63, 70, 71, 72, 73, 80, 81, 82, 83, 84, 91, 92, 93, 94, 95, 96, 129, 130, 131, 137, 138, 140, 141, 142, 143]
|
|
477
|
+
maps_from: [1, 10, 11, 12, 13, 14, 15, 20, 21, 22, 23, 24, 30, 31, 32, 33, 34, 40, 41, 50, 51, 52, 53, 54, 60, 61, 62, 63, 70, 71, 72, 73, 80, 81, 82, 83, 84, 91, 92, 93, 94, 95, 96, 124, 125, 126, 127, 129, 130, 131, 137, 138, 140, 141, 142, 143]
|
|
453
478
|
- simplified_code: 2
|
|
454
479
|
simplified_name: USAGE_ERROR
|
|
455
480
|
maps_from: [64]
|
|
@@ -468,10 +493,10 @@ simplified_modes:
|
|
|
468
493
|
maps_from: [20, 21, 22, 23, 24]
|
|
469
494
|
- simplified_code: 3
|
|
470
495
|
simplified_name: RUNTIME_ERROR
|
|
471
|
-
maps_from: [30, 31, 32, 33, 34, 60, 61, 62, 63]
|
|
496
|
+
maps_from: [30, 31, 32, 33, 34, 60, 61, 62, 63, 124]
|
|
472
497
|
- simplified_code: 4
|
|
473
498
|
simplified_name: SYSTEM_ERROR
|
|
474
|
-
maps_from: [10, 11, 12, 13, 14, 15, 50, 51, 52, 53, 54, 129, 130, 131, 137, 138, 140, 141, 142, 143]
|
|
499
|
+
maps_from: [10, 11, 12, 13, 14, 15, 50, 51, 52, 53, 54, 125, 126, 127, 129, 130, 131, 137, 138, 140, 141, 142, 143]
|
|
475
500
|
- simplified_code: 5
|
|
476
501
|
simplified_name: SECURITY_ERROR
|
|
477
502
|
maps_from: [70, 71, 72, 73]
|
|
@@ -135,7 +135,7 @@ patterns:
|
|
|
135
135
|
pattern: '^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+$'
|
|
136
136
|
description: 'JWT compact serialization (header.payload.signature).'
|
|
137
137
|
examples:
|
|
138
|
-
- 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
|
|
138
|
+
- 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.dozjgNryP4J3jVmNHl0w5N_XgL0n3I9PlFUP0THsR8U'
|
|
139
139
|
- id: strict-iso-date
|
|
140
140
|
name: ISO Date (YYYY-MM-DD)
|
|
141
141
|
kind: regex
|
|
@@ -157,7 +157,7 @@ patterns:
|
|
|
157
157
|
pattern: '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$'
|
|
158
158
|
description: 'RFC 4122 version 4 UUID.'
|
|
159
159
|
examples:
|
|
160
|
-
- '123e4567-e89b-
|
|
160
|
+
- '123e4567-e89b-42d3-a456-426614174000'
|
|
161
161
|
- id: ulid
|
|
162
162
|
name: ULID
|
|
163
163
|
kind: regex
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
$schema: https://schemas.fulmenhq.dev/library/foundry/v1.0.0/signal-resolution-fixtures.schema.json
|
|
2
|
+
description: Cross-language test vectors for signal name resolution
|
|
3
|
+
version: v1.0.0
|
|
4
|
+
# Origin: rsfulmen memo 2026-01-08, standardized for ecosystem-wide adoption
|
|
5
|
+
# See: docs/standards/library/foundry/interfaces.md#signal-resolution
|
|
6
|
+
|
|
7
|
+
resolve_signal_tests:
|
|
8
|
+
# Exact match (step 3)
|
|
9
|
+
- input: "SIGTERM"
|
|
10
|
+
expect_name: "SIGTERM"
|
|
11
|
+
description: Exact catalog name match
|
|
12
|
+
- input: "SIGINT"
|
|
13
|
+
expect_name: "SIGINT"
|
|
14
|
+
description: Exact catalog name match
|
|
15
|
+
- input: "SIGHUP"
|
|
16
|
+
expect_name: "SIGHUP"
|
|
17
|
+
description: Exact catalog name match
|
|
18
|
+
# Numeric match (step 4)
|
|
19
|
+
- input: "15"
|
|
20
|
+
expect_name: "SIGTERM"
|
|
21
|
+
description: Numeric lookup by unix_number
|
|
22
|
+
- input: "2"
|
|
23
|
+
expect_name: "SIGINT"
|
|
24
|
+
description: Numeric lookup by unix_number
|
|
25
|
+
- input: "1"
|
|
26
|
+
expect_name: "SIGHUP"
|
|
27
|
+
description: Numeric lookup by unix_number
|
|
28
|
+
- input: "9"
|
|
29
|
+
expect_name: "SIGKILL"
|
|
30
|
+
description: Numeric lookup by unix_number
|
|
31
|
+
- input: " 15 "
|
|
32
|
+
expect_name: "SIGTERM"
|
|
33
|
+
description: Numeric with whitespace trimmed
|
|
34
|
+
# Lowercase with prefix (step 5)
|
|
35
|
+
- input: "sigterm"
|
|
36
|
+
expect_name: "SIGTERM"
|
|
37
|
+
description: Lowercase full name
|
|
38
|
+
- input: "sigint"
|
|
39
|
+
expect_name: "SIGINT"
|
|
40
|
+
description: Lowercase full name
|
|
41
|
+
# Without SIG prefix - uppercase (step 5)
|
|
42
|
+
- input: "TERM"
|
|
43
|
+
expect_name: "SIGTERM"
|
|
44
|
+
description: Without SIG prefix (uppercase)
|
|
45
|
+
- input: "INT"
|
|
46
|
+
expect_name: "SIGINT"
|
|
47
|
+
description: Without SIG prefix (uppercase)
|
|
48
|
+
- input: "HUP"
|
|
49
|
+
expect_name: "SIGHUP"
|
|
50
|
+
description: Without SIG prefix (uppercase)
|
|
51
|
+
- input: "KILL"
|
|
52
|
+
expect_name: "SIGKILL"
|
|
53
|
+
description: Without SIG prefix (uppercase)
|
|
54
|
+
# Without SIG prefix - lowercase (step 5)
|
|
55
|
+
- input: "term"
|
|
56
|
+
expect_name: "SIGTERM"
|
|
57
|
+
description: Without SIG prefix (lowercase)
|
|
58
|
+
- input: "int"
|
|
59
|
+
expect_name: "SIGINT"
|
|
60
|
+
description: Without SIG prefix (lowercase)
|
|
61
|
+
- input: "kill"
|
|
62
|
+
expect_name: "SIGKILL"
|
|
63
|
+
description: Without SIG prefix (lowercase)
|
|
64
|
+
# Mixed case (step 5)
|
|
65
|
+
- input: "SigTerm"
|
|
66
|
+
expect_name: "SIGTERM"
|
|
67
|
+
description: Mixed case with prefix
|
|
68
|
+
- input: "Term"
|
|
69
|
+
expect_name: "SIGTERM"
|
|
70
|
+
description: Mixed case without prefix
|
|
71
|
+
- input: "SigInt"
|
|
72
|
+
expect_name: "SIGINT"
|
|
73
|
+
description: Mixed case with prefix
|
|
74
|
+
# Whitespace trimmed (step 1)
|
|
75
|
+
- input: " SIGTERM "
|
|
76
|
+
expect_name: "SIGTERM"
|
|
77
|
+
description: Leading/trailing whitespace
|
|
78
|
+
- input: "\tterm\n"
|
|
79
|
+
expect_name: "SIGTERM"
|
|
80
|
+
description: Tab and newline whitespace
|
|
81
|
+
- input: " sigint "
|
|
82
|
+
expect_name: "SIGINT"
|
|
83
|
+
description: Whitespace with lowercase
|
|
84
|
+
# ID fallback (step 6)
|
|
85
|
+
- input: "hup"
|
|
86
|
+
expect_name: "SIGHUP"
|
|
87
|
+
description: ID lookup fallback
|
|
88
|
+
- input: "usr1"
|
|
89
|
+
expect_name: "SIGUSR1"
|
|
90
|
+
description: ID lookup fallback
|
|
91
|
+
- input: "usr2"
|
|
92
|
+
expect_name: "SIGUSR2"
|
|
93
|
+
description: ID lookup fallback
|
|
94
|
+
- input: "quit"
|
|
95
|
+
expect_name: "SIGQUIT"
|
|
96
|
+
description: ID lookup fallback
|
|
97
|
+
- input: "pipe"
|
|
98
|
+
expect_name: "SIGPIPE"
|
|
99
|
+
description: ID lookup fallback
|
|
100
|
+
- input: "alrm"
|
|
101
|
+
expect_name: "SIGALRM"
|
|
102
|
+
description: ID lookup fallback
|
|
103
|
+
# Unknown returns null (step 7)
|
|
104
|
+
- input: "SIGFOO"
|
|
105
|
+
expect_name: null
|
|
106
|
+
description: Unknown signal name
|
|
107
|
+
- input: "FOO"
|
|
108
|
+
expect_name: null
|
|
109
|
+
description: Unknown signal without prefix
|
|
110
|
+
- input: "999"
|
|
111
|
+
expect_name: null
|
|
112
|
+
description: Unknown numeric signal
|
|
113
|
+
# Negative numbers not supported (step 4)
|
|
114
|
+
- input: "-15"
|
|
115
|
+
expect_name: null
|
|
116
|
+
description: Negative numbers not supported
|
|
117
|
+
- input: "-1"
|
|
118
|
+
expect_name: null
|
|
119
|
+
description: Negative numbers not supported
|
|
120
|
+
# Empty returns null (step 2)
|
|
121
|
+
- input: ""
|
|
122
|
+
expect_name: null
|
|
123
|
+
description: Empty string
|
|
124
|
+
- input: " "
|
|
125
|
+
expect_name: null
|
|
126
|
+
description: Whitespace-only string
|
|
127
|
+
list_signal_names_tests:
|
|
128
|
+
# Note: expect_contains verifies required signals; expect_min_count is a sanity check.
|
|
129
|
+
# If catalog grows, add new signals to expect_contains rather than bumping min_count.
|
|
130
|
+
- description: Returns all catalog signal names
|
|
131
|
+
expect_contains:
|
|
132
|
+
- "SIGTERM"
|
|
133
|
+
- "SIGINT"
|
|
134
|
+
- "SIGHUP"
|
|
135
|
+
- "SIGKILL"
|
|
136
|
+
- "SIGQUIT"
|
|
137
|
+
- "SIGPIPE"
|
|
138
|
+
- "SIGALRM"
|
|
139
|
+
- "SIGUSR1"
|
|
140
|
+
- "SIGUSR2"
|
|
141
|
+
expect_min_count: 1
|
|
142
|
+
match_signal_names_tests:
|
|
143
|
+
# Wildcard all
|
|
144
|
+
- pattern: "*"
|
|
145
|
+
description: Match all signals
|
|
146
|
+
expect_equals_list_signal_names: true
|
|
147
|
+
# Prefix match
|
|
148
|
+
- pattern: "SIG*"
|
|
149
|
+
description: All signals start with SIG
|
|
150
|
+
expect_contains:
|
|
151
|
+
- "SIGTERM"
|
|
152
|
+
- "SIGINT"
|
|
153
|
+
- "SIGHUP"
|
|
154
|
+
expect_min_count: 1
|
|
155
|
+
# Suffix match
|
|
156
|
+
- pattern: "*TERM"
|
|
157
|
+
description: Suffix match for TERM
|
|
158
|
+
expect_contains:
|
|
159
|
+
- "SIGTERM"
|
|
160
|
+
# Contains match
|
|
161
|
+
- pattern: "*USR*"
|
|
162
|
+
description: Contains USR
|
|
163
|
+
expect_contains:
|
|
164
|
+
- "SIGUSR1"
|
|
165
|
+
- "SIGUSR2"
|
|
166
|
+
expect_count: 2
|
|
167
|
+
# Single char wildcard
|
|
168
|
+
- pattern: "SIG???"
|
|
169
|
+
description: SIG followed by exactly 3 characters
|
|
170
|
+
expect_contains:
|
|
171
|
+
- "SIGINT"
|
|
172
|
+
- "SIGHUP"
|
|
173
|
+
expect_not_contains:
|
|
174
|
+
- "SIGTERM"
|
|
175
|
+
- "SIGKILL"
|
|
176
|
+
- "SIGUSR1"
|
|
177
|
+
- pattern: "SIG????"
|
|
178
|
+
description: SIG followed by exactly 4 characters
|
|
179
|
+
expect_contains:
|
|
180
|
+
- "SIGTERM"
|
|
181
|
+
- "SIGKILL"
|
|
182
|
+
- "SIGQUIT"
|
|
183
|
+
- "SIGPIPE"
|
|
184
|
+
- "SIGALRM"
|
|
185
|
+
expect_not_contains:
|
|
186
|
+
- "SIGINT"
|
|
187
|
+
- "SIGHUP"
|
|
188
|
+
# Case insensitive
|
|
189
|
+
- pattern: "sig*"
|
|
190
|
+
description: Case insensitive - lowercase pattern
|
|
191
|
+
expect_contains:
|
|
192
|
+
- "SIGTERM"
|
|
193
|
+
- "SIGINT"
|
|
194
|
+
expect_min_count: 1
|
|
195
|
+
- pattern: "Sig*"
|
|
196
|
+
description: Case insensitive - mixed case pattern
|
|
197
|
+
expect_contains:
|
|
198
|
+
- "SIGTERM"
|
|
199
|
+
- "SIGINT"
|
|
200
|
+
expect_min_count: 1
|
|
201
|
+
# No match
|
|
202
|
+
- pattern: "XYZZY*"
|
|
203
|
+
description: Pattern with no matches
|
|
204
|
+
expect_empty: true
|
|
205
|
+
- pattern: "FOO???"
|
|
206
|
+
description: Pattern with no matches (single char wildcards)
|
|
207
|
+
expect_empty: true
|
|
@@ -153,6 +153,20 @@ signals:
|
|
|
153
153
|
signal: SIGUSR2
|
|
154
154
|
platform: windows
|
|
155
155
|
fallback_behavior: http_admin_endpoint
|
|
156
|
+
- id: kill
|
|
157
|
+
name: SIGKILL
|
|
158
|
+
unix_number: 9
|
|
159
|
+
windows_event: null
|
|
160
|
+
description: Force immediate termination - cannot be caught, blocked, or ignored
|
|
161
|
+
default_behavior: immediate_exit
|
|
162
|
+
exit_code: 137 # 128 + 9
|
|
163
|
+
timeout_seconds: 0
|
|
164
|
+
cleanup_actions: []
|
|
165
|
+
usage_notes: |
|
|
166
|
+
SIGKILL terminates a process immediately without allowing cleanup.
|
|
167
|
+
Use only as a last resort after SIGTERM grace period expires. The process
|
|
168
|
+
has no opportunity to save state, close files, or release resources.
|
|
169
|
+
On Windows, use TerminateProcess() for single process or TerminateJobObject() for groups.
|
|
156
170
|
behaviors:
|
|
157
171
|
- id: graceful_shutdown
|
|
158
172
|
name: Graceful Shutdown
|
|
@@ -318,12 +332,19 @@ platform_support:
|
|
|
318
332
|
windows: unsupported
|
|
319
333
|
fallback: http_admin_endpoint
|
|
320
334
|
notes: Signal number varies by platform. On Windows, use HTTP POST /admin/signal with signal=USR2
|
|
335
|
+
- signal: SIGKILL
|
|
336
|
+
linux: native
|
|
337
|
+
macos: native
|
|
338
|
+
freebsd: native
|
|
339
|
+
windows: mapped
|
|
340
|
+
notes: Cannot be caught or ignored. Windows uses TerminateProcess/TerminateJobObject.
|
|
321
341
|
# Exit code mappings (128+N pattern per POSIX)
|
|
322
342
|
exit_codes:
|
|
323
343
|
SIGTERM: 143 # 128 + 15
|
|
324
344
|
SIGINT: 130 # 128 + 2
|
|
325
345
|
SIGHUP: 129 # 128 + 1
|
|
326
346
|
SIGQUIT: 131 # 128 + 3
|
|
347
|
+
SIGKILL: 137 # 128 + 9
|
|
327
348
|
SIGPIPE: 141 # 128 + 13
|
|
328
349
|
SIGALRM: 142 # 128 + 14
|
|
329
350
|
SIGUSR1: 138 # 128 + 10
|
|
@@ -49,6 +49,10 @@
|
|
|
49
49
|
94,
|
|
50
50
|
95,
|
|
51
51
|
96,
|
|
52
|
+
124,
|
|
53
|
+
125,
|
|
54
|
+
126,
|
|
55
|
+
127,
|
|
52
56
|
129,
|
|
53
57
|
130,
|
|
54
58
|
131,
|
|
@@ -88,7 +92,8 @@
|
|
|
88
92
|
60,
|
|
89
93
|
61,
|
|
90
94
|
62,
|
|
91
|
-
63
|
|
95
|
+
63,
|
|
96
|
+
124
|
|
92
97
|
],
|
|
93
98
|
"4": [
|
|
94
99
|
10,
|
|
@@ -102,6 +107,9 @@
|
|
|
102
107
|
52,
|
|
103
108
|
53,
|
|
104
109
|
54,
|
|
110
|
+
125,
|
|
111
|
+
126,
|
|
112
|
+
127,
|
|
105
113
|
129,
|
|
106
114
|
130,
|
|
107
115
|
131,
|
package/config/crucible-ts/library/{foundry/similarity-fixtures.yaml → similarity/fixtures.yaml}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
$schema: https://schemas.fulmenhq.dev/library/
|
|
1
|
+
$schema: https://schemas.fulmenhq.dev/library/similarity/v2.0.0/similarity.schema.json
|
|
2
2
|
version: 2025.10.3
|
|
3
3
|
notes: |
|
|
4
4
|
Fixture values computed by pyfulmen using Rust strsim 0.11.x (canonical)
|
|
@@ -166,8 +166,7 @@ languageOverrides:
|
|
|
166
166
|
- config-path-api
|
|
167
167
|
- schema-validation
|
|
168
168
|
- crucible-shim
|
|
169
|
-
|
|
170
|
-
notes: "rsfulmen planned post-logging stabilization; extensions deferred."
|
|
169
|
+
notes: "rsfulmen foundation enabled v0.2.21; codegen artifacts active."
|
|
171
170
|
- language: csharp
|
|
172
171
|
planned:
|
|
173
172
|
- config-path-api
|