@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.
- package/CHANGELOG.md +42 -0
- package/README.md +60 -7
- package/config/crucible-ts/agentic/roles/README.md +3 -3
- package/config/crucible-ts/library/fulencode/fixtures/README.md +18 -0
- package/config/crucible-ts/library/fulencode/fixtures/bom/bom.yaml +14 -0
- package/config/crucible-ts/library/fulencode/fixtures/detection/detection.yaml +12 -0
- package/config/crucible-ts/library/fulencode/fixtures/invalid-encodings/base64.yaml +10 -0
- package/config/crucible-ts/library/fulencode/fixtures/normalization/text-safe.yaml +10 -0
- package/config/crucible-ts/library/fulencode/fixtures/telemetry/telemetry-test-cases.yaml +24 -0
- package/config/crucible-ts/library/fulencode/fixtures/valid-encodings/base64.yaml +11 -0
- package/config/crucible-ts/taxonomy/library/platform-modules/v1.0.0/modules.yaml +2 -2
- package/config/crucible-ts/taxonomy/metrics.yaml +79 -1
- package/dist/appidentity/index.d.ts +1 -1
- package/dist/appidentity/index.js +122 -56
- package/dist/appidentity/index.js.map +1 -1
- package/dist/config/index.js +122 -56
- package/dist/config/index.js.map +1 -1
- package/dist/crucible/index.js +122 -56
- package/dist/crucible/index.js.map +1 -1
- package/dist/errors/index.d.ts +1 -1
- package/dist/errors/index.js +122 -56
- package/dist/errors/index.js.map +1 -1
- package/dist/foundry/index.js +122 -56
- package/dist/foundry/index.js.map +1 -1
- package/dist/fulencode/index.d.ts +102 -0
- package/dist/fulencode/index.js +806 -0
- package/dist/fulencode/index.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +123 -57
- package/dist/index.js.map +1 -1
- package/dist/pathfinder/index.d.ts +1 -1
- package/dist/pathfinder/index.js +122 -56
- package/dist/pathfinder/index.js.map +1 -1
- package/dist/reports/license-inventory.csv +7 -6
- package/dist/schema/index.d.ts +2 -2
- package/dist/schema/index.js +122 -56
- package/dist/schema/index.js.map +1 -1
- package/dist/signals/index.js +122 -56
- package/dist/signals/index.js.map +1 -1
- package/dist/telemetry/http/index.js +122 -56
- package/dist/telemetry/http/index.js.map +1 -1
- package/dist/telemetry/index.d.ts +1 -1
- package/dist/telemetry/index.js +122 -56
- package/dist/telemetry/index.js.map +1 -1
- package/dist/telemetry/prometheus/index.d.ts +1 -1
- package/dist/telemetry/prometheus/index.js +122 -56
- package/dist/telemetry/prometheus/index.js.map +1 -1
- package/dist/{types-BJswWpQC.d.ts → types-DdoeE7F5.d.ts} +1 -1
- package/package.json +7 -2
- package/schemas/crucible-ts/library/fulencode/v1.0.0/README.md +37 -0
- package/schemas/crucible-ts/library/fulencode/v1.0.0/bom-result.schema.json +48 -0
- package/schemas/crucible-ts/library/fulencode/v1.0.0/decode-options.schema.json +60 -0
- package/schemas/crucible-ts/library/fulencode/v1.0.0/decoding-result.schema.json +70 -0
- package/schemas/crucible-ts/library/fulencode/v1.0.0/detect-options.schema.json +25 -0
- package/schemas/crucible-ts/library/fulencode/v1.0.0/detection-result.schema.json +57 -0
- package/schemas/crucible-ts/library/fulencode/v1.0.0/encode-options.schema.json +71 -0
- package/schemas/crucible-ts/library/fulencode/v1.0.0/encoding-result.schema.json +57 -0
- package/schemas/crucible-ts/library/fulencode/v1.0.0/fulencode-config.schema.json +8 -4
- package/schemas/crucible-ts/library/fulencode/v1.0.0/fulencode-error.schema.json +66 -0
- package/schemas/crucible-ts/library/fulencode/v1.0.0/normalization-result.schema.json +73 -0
- package/schemas/crucible-ts/library/fulencode/v1.0.0/normalize-options.schema.json +44 -0
- package/schemas/crucible-ts/meta/README.md +38 -2
- package/schemas/crucible-ts/meta/draft-04/schema.json +222 -0
- package/schemas/crucible-ts/meta/draft-06/schema.json +218 -0
- package/schemas/crucible-ts/meta/draft-2019-09/meta/applicator.json +93 -0
- package/schemas/crucible-ts/meta/draft-2019-09/meta/content.json +21 -0
- package/schemas/crucible-ts/meta/draft-2019-09/meta/core.json +58 -0
- package/schemas/crucible-ts/meta/draft-2019-09/meta/format.json +15 -0
- package/schemas/crucible-ts/meta/draft-2019-09/meta/meta-data.json +35 -0
- package/schemas/crucible-ts/meta/draft-2019-09/meta/validation.json +119 -0
- package/schemas/crucible-ts/meta/draft-2019-09/offline.schema.json +148 -0
- package/schemas/crucible-ts/meta/draft-2019-09/schema.json +62 -0
- package/schemas/crucible-ts/meta/fixtures/draft-04-sample.json +16 -0
- package/schemas/crucible-ts/meta/fixtures/draft-06-sample.json +16 -0
- package/schemas/crucible-ts/meta/fixtures/draft-07-sample.json +34 -0
- package/schemas/crucible-ts/meta/fixtures/draft-2019-09-sample.json +21 -0
- package/schemas/crucible-ts/meta/fixtures/draft-2020-12-sample.json +21 -0
- package/schemas/crucible-ts/taxonomy/library/fulencode/normalization-profiles/v1.0.0/profiles.yaml +16 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/PROVENANCE.md +64 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/access-tier.dimension.json +103 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/retention-lifecycle.dimension.json +103 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/schema-stability.dimension.json +100 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/sensitivity.dimension.json +130 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/velocity-mode.dimension.json +79 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/volatility.dimension.json +72 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/volume-tier.dimension.json +66 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/docs/catalog/classifiers/README.md +29 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/access-tier-classification.md +163 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/classifiers-framework.md +157 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/data-sensitivity-classification.md +259 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/retention-lifecycle-classification.md +200 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/schema-stability-classification.md +205 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/velocity-mode-classification.md +222 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/volatility-classification.md +209 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/volume-tier-classification.md +200 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/ailink/v0/README.md +48 -0
- package/schemas/crucible-ts/upstream/3leaps/{ailink → crucible/schemas/ailink}/v0/prompt.schema.json +4 -18
- package/schemas/crucible-ts/upstream/3leaps/{ailink → crucible/schemas/ailink}/v0/search-response.schema.json +7 -37
- package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/classifiers/v0/dimension-definition.schema.json +247 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/classifiers/v0/sensitivity-level.schema.json +67 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/foundation/v0/error-response.schema.json +59 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/foundation/v0/lifecycle-phases.data.json +102 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/foundation/v0/lifecycle-phases.schema.json +101 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/foundation/v0/release-phase.schema.json +18 -0
- package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/foundation/v0/types.schema.json +177 -0
- package/schemas/crucible-ts/upstream/3leaps/PROVENANCE.md +0 -43
- /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.
|
package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/access-tier-classification.md
ADDED
|
@@ -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.
|