@fulmenhq/tsfulmen 0.2.0 → 0.2.2

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 (107) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.md +60 -7
  3. package/config/crucible-ts/agentic/roles/README.md +3 -3
  4. package/config/crucible-ts/library/fulencode/fixtures/README.md +18 -0
  5. package/config/crucible-ts/library/fulencode/fixtures/bom/bom.yaml +14 -0
  6. package/config/crucible-ts/library/fulencode/fixtures/detection/detection.yaml +12 -0
  7. package/config/crucible-ts/library/fulencode/fixtures/invalid-encodings/base64.yaml +10 -0
  8. package/config/crucible-ts/library/fulencode/fixtures/normalization/text-safe.yaml +10 -0
  9. package/config/crucible-ts/library/fulencode/fixtures/telemetry/telemetry-test-cases.yaml +24 -0
  10. package/config/crucible-ts/library/fulencode/fixtures/valid-encodings/base64.yaml +11 -0
  11. package/config/crucible-ts/taxonomy/library/platform-modules/v1.0.0/modules.yaml +2 -2
  12. package/config/crucible-ts/taxonomy/metrics.yaml +79 -1
  13. package/dist/appidentity/index.d.ts +1 -1
  14. package/dist/appidentity/index.js +122 -56
  15. package/dist/appidentity/index.js.map +1 -1
  16. package/dist/config/index.js +122 -56
  17. package/dist/config/index.js.map +1 -1
  18. package/dist/crucible/index.js +122 -56
  19. package/dist/crucible/index.js.map +1 -1
  20. package/dist/errors/index.d.ts +1 -1
  21. package/dist/errors/index.js +122 -56
  22. package/dist/errors/index.js.map +1 -1
  23. package/dist/foundry/index.js +122 -56
  24. package/dist/foundry/index.js.map +1 -1
  25. package/dist/fulencode/index.d.ts +102 -0
  26. package/dist/fulencode/index.js +806 -0
  27. package/dist/fulencode/index.js.map +1 -0
  28. package/dist/index.d.ts +2 -2
  29. package/dist/index.js +123 -57
  30. package/dist/index.js.map +1 -1
  31. package/dist/pathfinder/index.d.ts +1 -1
  32. package/dist/pathfinder/index.js +122 -56
  33. package/dist/pathfinder/index.js.map +1 -1
  34. package/dist/reports/license-inventory.csv +7 -6
  35. package/dist/schema/index.d.ts +2 -2
  36. package/dist/schema/index.js +122 -56
  37. package/dist/schema/index.js.map +1 -1
  38. package/dist/signals/index.js +122 -56
  39. package/dist/signals/index.js.map +1 -1
  40. package/dist/telemetry/http/index.js +122 -56
  41. package/dist/telemetry/http/index.js.map +1 -1
  42. package/dist/telemetry/index.d.ts +1 -1
  43. package/dist/telemetry/index.js +122 -56
  44. package/dist/telemetry/index.js.map +1 -1
  45. package/dist/telemetry/prometheus/index.d.ts +1 -1
  46. package/dist/telemetry/prometheus/index.js +122 -56
  47. package/dist/telemetry/prometheus/index.js.map +1 -1
  48. package/dist/{types-BJswWpQC.d.ts → types-DdoeE7F5.d.ts} +1 -1
  49. package/package.json +7 -2
  50. package/schemas/crucible-ts/library/fulencode/v1.0.0/README.md +37 -0
  51. package/schemas/crucible-ts/library/fulencode/v1.0.0/bom-result.schema.json +48 -0
  52. package/schemas/crucible-ts/library/fulencode/v1.0.0/decode-options.schema.json +60 -0
  53. package/schemas/crucible-ts/library/fulencode/v1.0.0/decoding-result.schema.json +70 -0
  54. package/schemas/crucible-ts/library/fulencode/v1.0.0/detect-options.schema.json +25 -0
  55. package/schemas/crucible-ts/library/fulencode/v1.0.0/detection-result.schema.json +57 -0
  56. package/schemas/crucible-ts/library/fulencode/v1.0.0/encode-options.schema.json +71 -0
  57. package/schemas/crucible-ts/library/fulencode/v1.0.0/encoding-result.schema.json +57 -0
  58. package/schemas/crucible-ts/library/fulencode/v1.0.0/fulencode-config.schema.json +8 -4
  59. package/schemas/crucible-ts/library/fulencode/v1.0.0/fulencode-error.schema.json +66 -0
  60. package/schemas/crucible-ts/library/fulencode/v1.0.0/normalization-result.schema.json +73 -0
  61. package/schemas/crucible-ts/library/fulencode/v1.0.0/normalize-options.schema.json +44 -0
  62. package/schemas/crucible-ts/meta/README.md +38 -2
  63. package/schemas/crucible-ts/meta/draft-04/schema.json +222 -0
  64. package/schemas/crucible-ts/meta/draft-06/schema.json +218 -0
  65. package/schemas/crucible-ts/meta/draft-2019-09/meta/applicator.json +93 -0
  66. package/schemas/crucible-ts/meta/draft-2019-09/meta/content.json +21 -0
  67. package/schemas/crucible-ts/meta/draft-2019-09/meta/core.json +58 -0
  68. package/schemas/crucible-ts/meta/draft-2019-09/meta/format.json +15 -0
  69. package/schemas/crucible-ts/meta/draft-2019-09/meta/meta-data.json +35 -0
  70. package/schemas/crucible-ts/meta/draft-2019-09/meta/validation.json +119 -0
  71. package/schemas/crucible-ts/meta/draft-2019-09/offline.schema.json +148 -0
  72. package/schemas/crucible-ts/meta/draft-2019-09/schema.json +62 -0
  73. package/schemas/crucible-ts/meta/fixtures/draft-04-sample.json +16 -0
  74. package/schemas/crucible-ts/meta/fixtures/draft-06-sample.json +16 -0
  75. package/schemas/crucible-ts/meta/fixtures/draft-07-sample.json +34 -0
  76. package/schemas/crucible-ts/meta/fixtures/draft-2019-09-sample.json +21 -0
  77. package/schemas/crucible-ts/meta/fixtures/draft-2020-12-sample.json +21 -0
  78. package/schemas/crucible-ts/taxonomy/library/fulencode/normalization-profiles/v1.0.0/profiles.yaml +16 -0
  79. package/schemas/crucible-ts/upstream/3leaps/crucible/PROVENANCE.md +64 -0
  80. package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/access-tier.dimension.json +103 -0
  81. package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/retention-lifecycle.dimension.json +103 -0
  82. package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/schema-stability.dimension.json +100 -0
  83. package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/sensitivity.dimension.json +130 -0
  84. package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/velocity-mode.dimension.json +79 -0
  85. package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/volatility.dimension.json +72 -0
  86. package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/volume-tier.dimension.json +66 -0
  87. package/schemas/crucible-ts/upstream/3leaps/crucible/docs/catalog/classifiers/README.md +29 -0
  88. package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/access-tier-classification.md +163 -0
  89. package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/classifiers-framework.md +157 -0
  90. package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/data-sensitivity-classification.md +259 -0
  91. package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/retention-lifecycle-classification.md +200 -0
  92. package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/schema-stability-classification.md +205 -0
  93. package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/velocity-mode-classification.md +222 -0
  94. package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/volatility-classification.md +209 -0
  95. package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/volume-tier-classification.md +200 -0
  96. package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/ailink/v0/README.md +48 -0
  97. package/schemas/crucible-ts/upstream/3leaps/{ailink → crucible/schemas/ailink}/v0/prompt.schema.json +4 -18
  98. package/schemas/crucible-ts/upstream/3leaps/{ailink → crucible/schemas/ailink}/v0/search-response.schema.json +7 -37
  99. package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/classifiers/v0/dimension-definition.schema.json +247 -0
  100. package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/classifiers/v0/sensitivity-level.schema.json +67 -0
  101. package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/foundation/v0/error-response.schema.json +59 -0
  102. package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/foundation/v0/lifecycle-phases.data.json +102 -0
  103. package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/foundation/v0/lifecycle-phases.schema.json +101 -0
  104. package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/foundation/v0/release-phase.schema.json +18 -0
  105. package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/foundation/v0/types.schema.json +177 -0
  106. package/schemas/crucible-ts/upstream/3leaps/PROVENANCE.md +0 -43
  107. /package/schemas/crucible-ts/upstream/3leaps/{agentic → crucible/schemas/agentic}/v0/role-prompt.schema.json +0 -0
@@ -0,0 +1,29 @@
1
+ # Classifiers Catalog
2
+
3
+ **Canonical URL**: `https://crucible.3leaps.dev/catalog/classifiers`
4
+
5
+ Index of Crucible classifier dimensions and their canonical sources.
6
+
7
+ ## How To Use This Catalog
8
+
9
+ - Use the narrative standards to decide what a value means.
10
+ - Use the dimension definition JSON for machine validation, UI dropdowns, and automation.
11
+ - Vendor `config/classifiers/` alongside `schemas/classifiers/` when you need offline or pinned behavior.
12
+
13
+ Missing classification is a policy error. Use explicit `unknown` until classification is complete.
14
+
15
+ ## Dimensions
16
+
17
+ | Dimension | Key | Standard | Definition |
18
+ | --------------------------- | --------------------- | ------------------------------------------------------ | ------------------------------------------------------------------ |
19
+ | Data Sensitivity | `sensitivity` | `docs/standards/data-sensitivity-classification.md` | `config/classifiers/dimensions/sensitivity.dimension.json` |
20
+ | Volatility & Update Cadence | `volatility` | `docs/standards/volatility-classification.md` | `config/classifiers/dimensions/volatility.dimension.json` |
21
+ | Access Tier | `access-tier` | `docs/standards/access-tier-classification.md` | `config/classifiers/dimensions/access-tier.dimension.json` |
22
+ | Retention & Lifecycle | `retention-lifecycle` | `docs/standards/retention-lifecycle-classification.md` | `config/classifiers/dimensions/retention-lifecycle.dimension.json` |
23
+ | Schema Stability | `schema-stability` | `docs/standards/schema-stability-classification.md` | `config/classifiers/dimensions/schema-stability.dimension.json` |
24
+ | Volume Tier | `volume-tier` | `docs/standards/volume-tier-classification.md` | `config/classifiers/dimensions/volume-tier.dimension.json` |
25
+ | Velocity Mode | `velocity-mode` | `docs/standards/velocity-mode-classification.md` | `config/classifiers/dimensions/velocity-mode.dimension.json` |
26
+
27
+ ## Framework Overview
28
+
29
+ See `docs/standards/classifiers-framework.md` for how the pieces fit together.
@@ -0,0 +1,163 @@
1
+ ---
2
+ title: "Access Tier Classification"
3
+ description: "Distribution and access control classification standard"
4
+ category: "standards"
5
+ status: "stable"
6
+ version: "1.0.0"
7
+ lastUpdated: "2026-01-22"
8
+ maintainer: "3leaps-core"
9
+ reviewers: ["security", "compliance"]
10
+ approvers: ["3leapsdave"]
11
+ tags: ["classification", "access-control", "distribution", "acl"]
12
+ content_license: "CC0"
13
+ relatedDocs:
14
+ - "docs/standards/data-sensitivity-classification.md"
15
+ - "config/classifiers/dimensions/access-tier.dimension.json"
16
+ audience: "all"
17
+ ---
18
+
19
+ # Access Tier Classification
20
+
21
+ This standard defines access tier levels for distribution and access control across all 3leaps ecosystems. Access tier is often derived from sensitivity but can be overridden to further restrict distribution.
22
+
23
+ ## Relationship to Sensitivity
24
+
25
+ Access tier complements sensitivity classification:
26
+
27
+ - **Sensitivity** determines _what the data is_ (how sensitive)
28
+ - **Access tier** determines _who can access it_ (distribution scope)
29
+
30
+ Common pattern: Access tier ≥ Sensitivity level (you can restrict further but not loosen)
31
+
32
+ | Sensitivity Level | Minimum Access Tier |
33
+ | --------------------- | ------------------- |
34
+ | 0-Public | public |
35
+ | 1-Confidential | internal |
36
+ | 2-Blinded | internal |
37
+ | 3-Proprietary | restricted |
38
+ | 4-Personal/Secret | privileged |
39
+ | 5-Privileged/Sysadmin | privileged |
40
+ | 6-Eyes Only | eyes-only |
41
+
42
+ ---
43
+
44
+ ## Access Tiers
45
+
46
+ ### Unknown
47
+
48
+ **Access tier not yet classified; must be classified before sharing or distribution.**
49
+
50
+ | Aspect | Requirement |
51
+ | ---------------- | ------------------------------------------ |
52
+ | **Access** | Restricted to classification pipeline only |
53
+ | **Distribution** | Prohibited until classified |
54
+ | **Audit** | All access logged |
55
+ | **Use Cases** | Newly uploaded content, unreviewed imports |
56
+
57
+ **Operational Notes**: Gate all sharing and distribution operations on explicit classification. Systems should reject requests to share `unknown` tier content.
58
+
59
+ ---
60
+
61
+ ### Public
62
+
63
+ **Unrestricted access; suitable for public distribution.**
64
+
65
+ | Aspect | Requirement |
66
+ | ---------------- | --------------------------------------- |
67
+ | **Access** | No authentication required |
68
+ | **Distribution** | CDN, public repos, external APIs |
69
+ | **Audit** | Optional |
70
+ | **Use Cases** | Open source, public docs, public status |
71
+
72
+ ---
73
+
74
+ ### Internal
75
+
76
+ **Organization-wide access; authentication required.**
77
+
78
+ | Aspect | Requirement |
79
+ | ---------------- | --------------------------------------- |
80
+ | **Access** | Authenticated org members |
81
+ | **Distribution** | Internal repos, intranet, VPN-protected |
82
+ | **Audit** | Access logging recommended |
83
+ | **Use Cases** | Internal docs, runbooks, dev resources |
84
+
85
+ ---
86
+
87
+ ### Restricted
88
+
89
+ **Team or project-level access; explicit authorization required.**
90
+
91
+ | Aspect | Requirement |
92
+ | ---------------- | ------------------------------------------ |
93
+ | **Access** | Explicitly authorized team members |
94
+ | **Distribution** | Access-controlled repos, gated APIs |
95
+ | **Audit** | Access logging required |
96
+ | **Use Cases** | Project roadmaps, team configs, pilot data |
97
+
98
+ ---
99
+
100
+ ### Privileged
101
+
102
+ **Named individuals only; documented business need.**
103
+
104
+ | Aspect | Requirement |
105
+ | ---------------- | ---------------------------------------------- |
106
+ | **Access** | Named individuals with documented need |
107
+ | **Distribution** | Direct share only, no group access |
108
+ | **Audit** | Comprehensive logging, periodic review |
109
+ | **Use Cases** | Security findings, exec comms, sensitive plans |
110
+
111
+ ---
112
+
113
+ ### Eyes Only
114
+
115
+ **Executive/legal authorization required; immutable audit trail.**
116
+
117
+ | Aspect | Requirement |
118
+ | ---------------- | ----------------------------------------------------- |
119
+ | **Access** | Executive or legal authorization |
120
+ | **Distribution** | Controlled handoff with chain of custody |
121
+ | **Audit** | Immutable audit trail, legal compliance |
122
+ | **Use Cases** | Legal discovery, breach evidence, regulatory response |
123
+
124
+ ---
125
+
126
+ ## Decision Guide
127
+
128
+ ```
129
+ Who needs access to this?
130
+
131
+ ├── Anyone (public internet) → public
132
+ ├── Anyone in the organization → internal
133
+ ├── Specific teams/projects → restricted
134
+ ├── Named individuals with documented need → privileged
135
+ └── Executive/legal approval required → eyes-only
136
+ ```
137
+
138
+ ---
139
+
140
+ ## Handling Matrix
141
+
142
+ | Access Tier | Storage | Sharing | Audit Level | Review Cycle |
143
+ | -------------- | -------------------- | ----------------- | ------------- | ------------ |
144
+ | **public** | Any | Unrestricted | Optional | None |
145
+ | **internal** | Private repos | Org-wide | Recommended | Annual |
146
+ | **restricted** | Access-controlled | Explicit grants | Required | Quarterly |
147
+ | **privileged** | Isolated | Named individuals | Comprehensive | Monthly |
148
+ | **eyes-only** | Legal-grade controls | Executive handoff | Immutable | Per-access |
149
+
150
+ ---
151
+
152
+ ## Machine-Readable Definition
153
+
154
+ - **Dimension Config**: `config/classifiers/dimensions/access-tier.dimension.json`
155
+ - **Schema**: `schemas/classifiers/v0/dimension-definition.schema.json`
156
+
157
+ ---
158
+
159
+ ## Attribution
160
+
161
+ This standard is the canonical reference for access tier classification across 3leaps ecosystems. Downstream consumers should reference or vendor this standard rather than maintaining independent copies.
162
+
163
+ **Review Cycle**: Quarterly with security and compliance teams.
@@ -0,0 +1,157 @@
1
+ ---
2
+ title: "Classifiers Framework"
3
+ description: "How 3leaps defines and uses orthogonal classification dimensions (docs + config + schemas)"
4
+ category: "standards"
5
+ status: "stable"
6
+ version: "1.0.0"
7
+ lastUpdated: "2026-01-22"
8
+ maintainer: "3leaps-core"
9
+ reviewers: ["platform", "security", "data-engineering"]
10
+ approvers: ["3leapsdave"]
11
+ tags: ["classification", "classifiers", "metadata", "governance", "schemas"]
12
+ content_license: "CC0"
13
+ relatedDocs:
14
+ - "schemas/classifiers/v0/dimension-definition.schema.json"
15
+ - "docs/standards/data-sensitivity-classification.md"
16
+ - "docs/standards/volatility-classification.md"
17
+ - "docs/standards/access-tier-classification.md"
18
+ - "docs/standards/retention-lifecycle-classification.md"
19
+ - "docs/standards/schema-stability-classification.md"
20
+ - "docs/standards/volume-tier-classification.md"
21
+ - "docs/standards/velocity-mode-classification.md"
22
+ - "docs/operations/upstream-sync-guide.md"
23
+ audience: "all"
24
+ ---
25
+
26
+ # Classifiers Framework
27
+
28
+ Crucible classifiers are a lightweight framework for describing data and artifacts using **orthogonal dimensions**. The goal is to make classification:
29
+
30
+ - **Consistent** across projects and ecosystems
31
+ - **Machine-readable** for automation and policy enforcement
32
+ - **Reference-friendly** (linkable docs, vendorable config)
33
+
34
+ This framework is intentionally composable: consumers can adopt a single dimension (e.g., `sensitivity`) or a full set.
35
+
36
+ ---
37
+
38
+ ## What Lives Where
39
+
40
+ Each dimension is expressed in three forms:
41
+
42
+ 1. **Standard (narrative)**: the human policy and examples (`docs/standards/*.md`)
43
+ 2. **Dimension definition (machine)**: a canonical list of values and metadata (`config/classifiers/dimensions/*.dimension.json`)
44
+ 3. **Meta-schema (validation)**: how dimension definitions are structured (`schemas/classifiers/v0/*.schema.json`)
45
+
46
+ If you vendor anything, vendor **dimension configs + schemas together** so validation stays aligned.
47
+
48
+ ---
49
+
50
+ ## Current Dimension Set
51
+
52
+ | Dimension Key | Tier | Narrative Standard | Machine Definition |
53
+ | --------------------- | ---- | ------------------------------------------------------ | ------------------------------------------------------------------ |
54
+ | `sensitivity` | 1 | `docs/standards/data-sensitivity-classification.md` | `config/classifiers/dimensions/sensitivity.dimension.json` |
55
+ | `volatility` | 1 | `docs/standards/volatility-classification.md` | `config/classifiers/dimensions/volatility.dimension.json` |
56
+ | `access-tier` | 1 | `docs/standards/access-tier-classification.md` | `config/classifiers/dimensions/access-tier.dimension.json` |
57
+ | `retention-lifecycle` | 1 | `docs/standards/retention-lifecycle-classification.md` | `config/classifiers/dimensions/retention-lifecycle.dimension.json` |
58
+ | `schema-stability` | 1 | `docs/standards/schema-stability-classification.md` | `config/classifiers/dimensions/schema-stability.dimension.json` |
59
+ | `volume-tier` | 2 | `docs/standards/volume-tier-classification.md` | `config/classifiers/dimensions/volume-tier.dimension.json` |
60
+ | `velocity-mode` | 2 | `docs/standards/velocity-mode-classification.md` | `config/classifiers/dimensions/velocity-mode.dimension.json` |
61
+
62
+ Tier meaning:
63
+
64
+ - **Tier 1**: universal infrastructure dimensions (applies almost everywhere)
65
+ - **Tier 2**: data platform fundamentals (useful for pipelines and systems design)
66
+
67
+ ---
68
+
69
+ ## Minimal Data Model
70
+
71
+ Crucible does not currently impose a single universal “classification object” schema. A common, portable pattern is:
72
+
73
+ ```json
74
+ {
75
+ "classifiers": {
76
+ "sensitivity": "3-proprietary",
77
+ "access-tier": "restricted",
78
+ "retention-lifecycle": "standard",
79
+ "volatility": "daily",
80
+ "volume-tier": "medium",
81
+ "velocity-mode": "batch",
82
+ "schema-stability": "stable"
83
+ }
84
+ }
85
+ ```
86
+
87
+ Guidance:
88
+
89
+ - Use **dimension keys** exactly as declared in the dimension definition JSON (`key`).
90
+ - Treat classifier values as **opaque identifiers** (compare as strings, don’t parse them).
91
+ - Do not rely on numeric ordinals or level numbers in docs; they may shift when new values (like `unknown`) are introduced.
92
+ - Prefer **single source of truth** per artifact (don’t duplicate the same classification in multiple places).
93
+
94
+ ---
95
+
96
+ ## UNKNOWN and Missing Values
97
+
98
+ Classification is safe-by-default—**missing classification is a policy error**.
99
+
100
+ All dimensions include an explicit `unknown` value:
101
+
102
+ | Dimension | Unknown Meaning |
103
+ | --------------------- | -------------------------------------------------------------------- |
104
+ | `sensitivity` | Unclassified; isolate until classified within 24h |
105
+ | `volatility` | Not yet classified; must classify before operational use |
106
+ | `access-tier` | Not yet classified; must classify before sharing |
107
+ | `retention-lifecycle` | Not yet classified; must classify before storage provisioning |
108
+ | `schema-stability` | Not yet classified; must classify before consumers adopt |
109
+ | `volume-tier` | Not yet classified; must classify before infrastructure provisioning |
110
+ | `velocity-mode` | Not yet classified; must classify before pipeline design |
111
+
112
+ For categorical dimensions, configs set `index_strategy.missing_handling: "error"` to enforce explicit classification. For sortable dimensions, treat missing values as invalid by policy—require explicit `unknown` or a concrete value.
113
+
114
+ ## Indexing Metadata (Non-Policy)
115
+
116
+ Dimension configs include metadata intended for indexing and user interfaces:
117
+
118
+ - `ordinal_mapping` and `default_order`: sorting and ordering hints
119
+ - `sentinel`: an ordering/indexing placeholder (often `0` for `unknown`)
120
+ - `is_none`: UI hint for a commonly selected “baseline” value (not a permission to omit classification)
121
+
122
+ These fields MUST NOT be interpreted as policy defaults. Classification remains required even when a value is marked `is_none: true`.
123
+
124
+ **Pattern**: When ingesting unclassified data, explicitly set `unknown` and gate downstream operations on classification completion.
125
+
126
+ ---
127
+
128
+ ## Volatility vs Velocity
129
+
130
+ These dimensions are intentionally separate:
131
+
132
+ - **Volatility**: how often the underlying data changes (freshness / cadence)
133
+ - **Velocity mode**: how you process the data (batch / micro-batch / streaming / hybrid)
134
+
135
+ See `docs/standards/velocity-mode-classification.md` for the relationship table and common pairings.
136
+
137
+ ---
138
+
139
+ ## Stability and Versioning
140
+
141
+ During Crucible’s alpha phase:
142
+
143
+ - Dimension definitions and docs may be marked `status: stable` to indicate the team’s intent that the meaning is not expected to churn.
144
+ - Schemas live under `schemas/**/v0/` which signals the interface may still change.
145
+
146
+ If you need strong stability guarantees, pin to a specific Crucible git commit (and document provenance) rather than relying on a moving `v0` URL.
147
+
148
+ ---
149
+
150
+ ## Extending the Framework
151
+
152
+ When adding a new dimension:
153
+
154
+ 1. Add a narrative standard in `docs/standards/`
155
+ 2. Add a machine definition in `config/classifiers/dimensions/` validated by `schemas/classifiers/v0/dimension-definition.schema.json`
156
+ 3. Add examples and governance metadata (owner, reviewers, review cycle)
157
+ 4. Ensure the dimension is **orthogonal** (avoid overlapping meanings with existing dimensions)
@@ -0,0 +1,259 @@
1
+ ---
2
+ title: "Data Sensitivity Classification Standard"
3
+ description: "Comprehensive data sensitivity levels for all 3leaps ecosystems"
4
+ category: "standards"
5
+ status: "stable"
6
+ version: "1.0.0"
7
+ lastUpdated: "2026-01-22"
8
+ maintainer: "3leaps-core"
9
+ reviewers: ["security", "compliance"]
10
+ approvers: ["3leapsdave"]
11
+ tags: ["classification", "sensitivity", "security", "data-handling"]
12
+ content_license: "CC0"
13
+ relatedDocs:
14
+ - "schemas/classifiers/v0/sensitivity-level.schema.json"
15
+ - "config/classifiers/dimensions/sensitivity.dimension.json"
16
+ audience: "all"
17
+ ---
18
+
19
+ # Data Sensitivity Classification Standard
20
+
21
+ This standard defines sensitivity levels for data across all 3leaps ecosystems. It provides a consistent framework for:
22
+
23
+ - **Automated Security Controls** - Classification-driven access and audit requirements
24
+ - **Risk Assessment** - Clear understanding of data handling implications
25
+ - **Compliance Management** - Structured approach to regulatory requirements
26
+ - **Operational Safety** - Appropriate handling procedures by sensitivity level
27
+
28
+ Missing classification is a policy error. At ingestion boundaries, explicitly set `unknown` until classification is complete.
29
+
30
+ ## Sensitivity Levels
31
+
32
+ ### UNKNOWN - Unclassified
33
+
34
+ **Data classification unknown; must be isolated until classified.**
35
+
36
+ | Aspect | Requirement |
37
+ | -------------- | -------------------------------------------------------- |
38
+ | **Handling** | Isolate at data ingestion boundaries |
39
+ | **Processing** | Use classification functions before storage/transmission |
40
+ | **Access** | Restricted to classification pipeline components only |
41
+ | **Audit** | All handling logged until proper classification assigned |
42
+ | **Timeline** | Reclassify within 24 hours |
43
+
44
+ **Examples**: Secrets discovered during scanning without context, config files from external sources, API keys without classification, logs that may contain credentials or PII.
45
+
46
+ ---
47
+
48
+ ### Level 0 - Public
49
+
50
+ **Information known or intended to be in the public domain.**
51
+
52
+ | Aspect | Requirement |
53
+ | ------------------- | ------------- |
54
+ | **Access Controls** | None required |
55
+ | **Audit** | None required |
56
+ | **Retention** | Unlimited |
57
+
58
+ **Examples**: Open source dependencies, public API documentation, published config templates, public status pages.
59
+
60
+ **Permitted Operations**: Public repository storage, unrestricted sharing, external integration without controls, logging without redaction.
61
+
62
+ ---
63
+
64
+ ### Level 1 - Confidential
65
+
66
+ **Information not available unrestricted; NDA or confidential marking required.**
67
+
68
+ | Aspect | Requirement |
69
+ | ------------------- | ------------------------------------------ |
70
+ | **Access Controls** | Authentication required, role-based access |
71
+ | **Audit** | Access logging recommended |
72
+ | **Retention** | Follow organizational retention policies |
73
+
74
+ **Examples**: Internal documentation and runbooks, non-production configs, development procedures, internal correspondence, business logic details.
75
+
76
+ **Security Requirements**: Private repositories with access controls, encrypted storage at rest, VPN/secure network for remote access, team-based access with regular review.
77
+
78
+ ---
79
+
80
+ ### Level 2 - Blinded
81
+
82
+ **Information obfuscated to protect identity of persons and enterprises.**
83
+
84
+ | Aspect | Requirement |
85
+ | ------------------- | ------------------------------------------------------ |
86
+ | **Access Controls** | Authenticated access with blinding verification |
87
+ | **Audit** | Audit blinding processes and access attempts |
88
+ | **Retention** | Verify blinding effectiveness before long-term storage |
89
+
90
+ **Examples**: Anonymized telemetry, sanitized logs with PII redaction, test data with real structure but fake identities, debugging info with customer data obfuscated.
91
+
92
+ **Processing Requirements**:
93
+
94
+ 1. Use consistent, auditable obfuscation processes
95
+ 2. Regularly validate blinding effectiveness
96
+ 3. Document blinding methods used
97
+ 4. Ensure blinding cannot be easily reversed
98
+
99
+ ---
100
+
101
+ ### Level 3 - Proprietary
102
+
103
+ **Enterprise information including MNPI, trade secrets, financial data.**
104
+
105
+ | Aspect | Requirement |
106
+ | ------------------- | -------------------------------------------------- |
107
+ | **Access Controls** | Firewall-protected regions, need-to-know basis |
108
+ | **Audit** | All access attempts logged and reviewed |
109
+ | **Retention** | Business retention with secure deletion procedures |
110
+
111
+ **Examples**: Production configs with business logic, database schemas with proprietary structures, enterprise client integration details, financial/performance data, strategic roadmaps.
112
+
113
+ **Security Requirements**: Dedicated secure environments, multi-factor authentication, encrypted storage and transmission, regular access reviews, incident response procedures.
114
+
115
+ ---
116
+
117
+ ### Level 4 - Personal/Secret
118
+
119
+ **Information containing NPPII or requiring specialized access controls.**
120
+
121
+ | Aspect | Requirement |
122
+ | ------------------- | ------------------------------------------------------- |
123
+ | **Access Controls** | Specialized auditing, limited authorized personnel only |
124
+ | **Audit** | All access logged, success/failure monitoring |
125
+ | **Retention** | Minimum retention, secure deletion with verification |
126
+
127
+ **Examples**: Production database credentials, encryption/signing keys, service account tokens with admin access, OAuth client secrets, personal information (emails, names, addresses), authentication tokens, password hashes.
128
+
129
+ **Critical Security Requirements**:
130
+
131
+ 1. **Secrets Management**: Never store in code repositories or logs
132
+ 2. **Access Auditing**: Real-time monitoring of all access attempts
133
+ 3. **Rotation Policies**: Regular credential rotation with automation
134
+ 4. **Breach Response**: Immediate revocation and rotation if compromised
135
+ 5. **Environmental Isolation**: Separate from lower-sensitivity data
136
+
137
+ ---
138
+
139
+ ### Level 5 - Privileged/Sysadmin
140
+
141
+ **Information pertaining to platform operations with attack potential.**
142
+
143
+ | Aspect | Requirement |
144
+ | ------------------- | -------------------------------------------------------- |
145
+ | **Access Controls** | Information security team only, documented business need |
146
+ | **Audit** | Comprehensive logging, anomaly detection |
147
+ | **Retention** | Security-driven retention, tamper-proof logging |
148
+
149
+ **Examples**: System administration credentials (root, admin), infrastructure access keys (cloud admin), security monitoring data, vulnerability assessments, penetration test reports, backup encryption keys, network security configs.
150
+
151
+ **Operational Security Requirements**: Air-gapped or highly isolated storage, hardware security modules (HSM), break-glass emergency procedures, continuous security monitoring, regular security audits.
152
+
153
+ ---
154
+
155
+ ### Level 6 - Eyes Only/Legal Hold
156
+
157
+ **Information with extreme access restrictions and deletion protection.**
158
+
159
+ | Aspect | Requirement |
160
+ | ------------------- | ------------------------------------------------------------- |
161
+ | **Access Controls** | Executive/legal authorization required, immutable audit trail |
162
+ | **Audit** | Complete access logging, legal compliance tracking |
163
+ | **Retention** | Legal hold procedures, protected against alteration/deletion |
164
+
165
+ **Examples**: Incident response data under investigation, security breach evidence, regulatory compliance data subject to discovery, executive communications on security matters, legal counsel privileged information.
166
+
167
+ **Legal and Compliance Requirements**:
168
+
169
+ 1. **Immutable Storage**: Write-once, read-many systems
170
+ 2. **Legal Authorization**: Written approval for all access
171
+ 3. **Chain of Custody**: Complete audit trail for legal proceedings
172
+ 4. **Compliance Documentation**: Full regulatory compliance tracking
173
+ 5. **Executive Oversight**: Board/CEO level awareness and control
174
+
175
+ ---
176
+
177
+ ## Classification Decision Tree
178
+
179
+ ```
180
+ Does the data contain credentials, keys, or authentication tokens?
181
+ ├── YES → Level 4+ (Personal/Secret or higher based on scope)
182
+ └── NO → Does it contain personal or enterprise-identifying information?
183
+ ├── YES → Can identity be safely removed/blinded?
184
+ │ ├── YES → Level 2 (Blinded)
185
+ │ └── NO → Level 3+ (Proprietary or higher)
186
+ └── NO → Is it available publicly or intended for public use?
187
+ ├── YES → Level 0 (Public)
188
+ └── NO → Level 1 (Confidential)
189
+ ```
190
+
191
+ ---
192
+
193
+ ## Handling Matrix
194
+
195
+ | Level | Storage | Transmission | Logging | Backup | Sharing |
196
+ | -------------------- | ----------------- | ------------------ | ----------------- | ------------------- | -------------------- |
197
+ | **UNKNOWN** | Isolated staging | Encrypted only | Full audit | Encrypted | Prohibited |
198
+ | **0 - Public** | Any location | Any method | Optional | Any method | Unrestricted |
199
+ | **1 - Confidential** | Private repos | VPN/TLS | Access logs | Encrypted | Team only |
200
+ | **2 - Blinded** | Secure storage | Encrypted | Blinding audit | Verified encryption | Authorized only |
201
+ | **3 - Proprietary** | Isolated regions | Dedicated channels | Comprehensive | Secure deletion | Need-to-know |
202
+ | **4 - Personal** | HSM/Vault | Zero-trust | Real-time monitor | Immutable backup | Authorized personnel |
203
+ | **5 - Privileged** | Air-gapped | Secure channels | Anomaly detection | Disaster recovery | Security team only |
204
+ | **6 - Eyes Only** | Immutable storage | Legal channels | Legal compliance | Legal hold | Executive/legal only |
205
+
206
+ ---
207
+
208
+ ## Transitions
209
+
210
+ ### Downgrade Paths
211
+
212
+ | From | To | Requirements |
213
+ | -------------- | -------------- | -------------------------------------------------------------- |
214
+ | 4-Personal | 2-Blinded | Tokenization/masking/synthetic surrogates; verification report |
215
+ | 5-Privileged | 3-Proprietary | Security review and approval |
216
+ | 6-Eyes Only | 3-Proprietary | Legal release authorization |
217
+ | 2-Blinded | 1-Confidential | Statistical privacy checks (k-anonymity, membership inference) |
218
+ | 1-Confidential | 0-Public | Publication review and approval |
219
+
220
+ ### Upgrade Triggers
221
+
222
+ | Condition | Action |
223
+ | ---------------------- | ------------------------------------------------- |
224
+ | Secrets/PII discovered | Immediate upgrade to Level 4+ |
225
+ | Legal hold imposed | Upgrade to Level 6 |
226
+ | Risk indicators found | Trigger incident playbook, reclassify immediately |
227
+
228
+ ---
229
+
230
+ ## Incident Response
231
+
232
+ ### Level 4+ Breach Response
233
+
234
+ 1. **Immediate** (< 5 minutes): Revoke/rotate all potentially compromised credentials
235
+ 2. **Assessment** (< 30 minutes): Determine scope and potential impact
236
+ 3. **Notification** (< 1 hour): Inform security team and stakeholders
237
+ 4. **Remediation**: Deploy patches, update procedures, conduct post-mortem
238
+
239
+ ### Level 6 Breach Response
240
+
241
+ 1. **Executive Notification**: Immediate contact to CEO/legal counsel
242
+ 2. **Legal Assessment**: Determine regulatory and legal implications
243
+ 3. **Forensic Preservation**: Preserve evidence with chain of custody
244
+ 4. **Regulatory Compliance**: Follow notification and reporting requirements
245
+
246
+ ---
247
+
248
+ ## Machine-Readable Definitions
249
+
250
+ - **Schema**: `schemas/classifiers/v0/sensitivity-level.schema.json`
251
+ - **Dimension Config**: `config/classifiers/dimensions/sensitivity.dimension.json`
252
+
253
+ ---
254
+
255
+ ## Attribution
256
+
257
+ This standard is the canonical reference for data sensitivity across 3leaps ecosystems. Downstream consumers (fulmenhq, practicingdata, etc.) should reference or vendor this standard rather than maintaining independent copies.
258
+
259
+ **Review Cycle**: Quarterly with security and compliance teams.