@fulmenhq/tsfulmen 0.2.0 → 0.2.3
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 +70 -0
- package/README.md +61 -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 +31 -109
- package/dist/appidentity/index.js +369 -60
- package/dist/appidentity/index.js.map +1 -1
- package/dist/config/index.d.ts +46 -1
- package/dist/config/index.js +427 -62
- package/dist/config/index.js.map +1 -1
- package/dist/crucible/index.js +367 -59
- package/dist/crucible/index.js.map +1 -1
- package/dist/errors/index.d.ts +1 -1
- package/dist/errors/index.js +367 -59
- package/dist/errors/index.js.map +1 -1
- package/dist/foundry/index.d.ts +2 -1
- package/dist/foundry/index.js +368 -60
- 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 +4 -3
- package/dist/index.js +370 -61
- package/dist/index.js.map +1 -1
- package/dist/pathfinder/index.d.ts +1 -1
- package/dist/pathfinder/index.js +367 -59
- package/dist/pathfinder/index.js.map +1 -1
- package/dist/reports/license-inventory.csv +31 -24
- package/dist/schema/index.d.ts +16 -3
- package/dist/schema/index.js +368 -60
- package/dist/schema/index.js.map +1 -1
- package/dist/signals/index.d.ts +483 -395
- package/dist/signals/index.js +368 -60
- package/dist/signals/index.js.map +1 -1
- package/dist/telemetry/http/index.js +368 -59
- package/dist/telemetry/http/index.js.map +1 -1
- package/dist/telemetry/index.d.ts +1 -1
- package/dist/telemetry/index.js +367 -59
- package/dist/telemetry/index.js.map +1 -1
- package/dist/telemetry/prometheus/index.d.ts +1 -1
- package/dist/telemetry/prometheus/index.js +369 -59
- package/dist/telemetry/prometheus/index.js.map +1 -1
- package/dist/{types-BJswWpQC.d.ts → types-DdoeE7F5.d.ts} +1 -1
- package/dist/types-Dv5TERCM.d.ts +108 -0
- package/package.json +13 -8
- 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,200 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Retention & Lifecycle Classification"
|
|
3
|
+
description: "Data retention period classification standard"
|
|
4
|
+
category: "standards"
|
|
5
|
+
status: "stable"
|
|
6
|
+
version: "1.0.0"
|
|
7
|
+
lastUpdated: "2026-01-22"
|
|
8
|
+
maintainer: "3leaps-core"
|
|
9
|
+
reviewers: ["compliance", "legal"]
|
|
10
|
+
approvers: ["3leapsdave"]
|
|
11
|
+
tags: ["classification", "retention", "lifecycle", "compliance", "data-governance"]
|
|
12
|
+
content_license: "CC0"
|
|
13
|
+
relatedDocs:
|
|
14
|
+
- "docs/standards/data-sensitivity-classification.md"
|
|
15
|
+
- "config/classifiers/dimensions/retention-lifecycle.dimension.json"
|
|
16
|
+
audience: "all"
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# Retention & Lifecycle Classification
|
|
20
|
+
|
|
21
|
+
This standard defines retention period classifications for data across all 3leaps ecosystems. It provides a consistent framework for:
|
|
22
|
+
|
|
23
|
+
- **Deletion SLAs** - When data must be deleted
|
|
24
|
+
- **Archival Policies** - When and how to archive
|
|
25
|
+
- **Compliance Requirements** - Regulatory retention obligations
|
|
26
|
+
- **Storage Optimization** - Tiered storage decisions
|
|
27
|
+
- **Legal Hold Procedures** - Preservation requirements
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Retention Levels
|
|
32
|
+
|
|
33
|
+
### Unknown
|
|
34
|
+
|
|
35
|
+
**Retention not yet classified; must be classified before storage provisioning.**
|
|
36
|
+
|
|
37
|
+
| Aspect | Requirement |
|
|
38
|
+
| ------------- | ----------------------------------------------- |
|
|
39
|
+
| **Retention** | Undefined; treat as indefinite until classified |
|
|
40
|
+
| **Backup** | Basic backup until policy determined |
|
|
41
|
+
| **Storage** | Staging/quarantine |
|
|
42
|
+
| **Deletion** | Prohibited until classified |
|
|
43
|
+
| **Use Cases** | New data sources, imported datasets |
|
|
44
|
+
|
|
45
|
+
**Operational Notes**: Gate storage tier decisions and deletion policies on explicit classification. Do not auto-delete `unknown` retention data.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
### Transient
|
|
50
|
+
|
|
51
|
+
**Short-lived data (≤7 days); auto-deleted, no backup required.**
|
|
52
|
+
|
|
53
|
+
| Aspect | Requirement |
|
|
54
|
+
| ------------- | ---------------------------------------- |
|
|
55
|
+
| **Retention** | ≤7 days |
|
|
56
|
+
| **Backup** | Not required |
|
|
57
|
+
| **Storage** | Hot/ephemeral |
|
|
58
|
+
| **Deletion** | Automatic expiry |
|
|
59
|
+
| **Use Cases** | Session cache, temp files, debug buffers |
|
|
60
|
+
|
|
61
|
+
**Operational Notes**:
|
|
62
|
+
|
|
63
|
+
- Use TTL-based storage (Redis, S3 lifecycle)
|
|
64
|
+
- No archive or backup pipelines needed
|
|
65
|
+
- Safe to delete without approval
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
### Short
|
|
70
|
+
|
|
71
|
+
**Short retention (≤90 days); routine cleanup, basic backup.**
|
|
72
|
+
|
|
73
|
+
| Aspect | Requirement |
|
|
74
|
+
| ------------- | --------------------------------------- |
|
|
75
|
+
| **Retention** | ≤90 days |
|
|
76
|
+
| **Backup** | Basic (daily snapshots) |
|
|
77
|
+
| **Storage** | Standard |
|
|
78
|
+
| **Deletion** | Scheduled cleanup jobs |
|
|
79
|
+
| **Use Cases** | Debug logs, dev environments, test data |
|
|
80
|
+
|
|
81
|
+
**Operational Notes**:
|
|
82
|
+
|
|
83
|
+
- Configure automated cleanup jobs
|
|
84
|
+
- Basic backup for recovery during retention window
|
|
85
|
+
- Review before deletion if business value uncertain
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
### Standard
|
|
90
|
+
|
|
91
|
+
**Standard retention (≤2 years); regular backup, tiered storage.**
|
|
92
|
+
|
|
93
|
+
| Aspect | Requirement |
|
|
94
|
+
| ------------- | ------------------------------------------------------- |
|
|
95
|
+
| **Retention** | ≤2 years |
|
|
96
|
+
| **Backup** | Regular (with point-in-time recovery) |
|
|
97
|
+
| **Storage** | Tiered (hot → warm → cold) |
|
|
98
|
+
| **Deletion** | Policy-driven with approval |
|
|
99
|
+
| **Use Cases** | Transaction history, operational data, business records |
|
|
100
|
+
|
|
101
|
+
**Operational Notes**:
|
|
102
|
+
|
|
103
|
+
- Default retention tier for most business data
|
|
104
|
+
- Implement storage tiering for cost optimization
|
|
105
|
+
- Document deletion policy and approval process
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
### Long
|
|
110
|
+
|
|
111
|
+
**Long retention (>2 years); archive storage, compliance backup.**
|
|
112
|
+
|
|
113
|
+
| Aspect | Requirement |
|
|
114
|
+
| ------------- | -------------------------------------------------- |
|
|
115
|
+
| **Retention** | >2 years (often 7+ years) |
|
|
116
|
+
| **Backup** | Compliance-grade (immutable, verified) |
|
|
117
|
+
| **Storage** | Archive/cold (Glacier, etc.) |
|
|
118
|
+
| **Deletion** | Regulatory approval required |
|
|
119
|
+
| **Use Cases** | Audit records, financial data, regulatory archives |
|
|
120
|
+
|
|
121
|
+
**Operational Notes**:
|
|
122
|
+
|
|
123
|
+
- Use archive storage classes for cost efficiency
|
|
124
|
+
- Ensure compliance with industry regulations (SOX, HIPAA, etc.)
|
|
125
|
+
- Implement integrity verification (checksums, attestation)
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
### Legal Hold
|
|
130
|
+
|
|
131
|
+
**Indefinite retention; immutable, protected from deletion.**
|
|
132
|
+
|
|
133
|
+
| Aspect | Requirement |
|
|
134
|
+
| ------------- | --------------------------------------------------------------- |
|
|
135
|
+
| **Retention** | Indefinite (until released) |
|
|
136
|
+
| **Backup** | Immutable, geographically redundant |
|
|
137
|
+
| **Storage** | WORM (Write-Once-Read-Many) |
|
|
138
|
+
| **Deletion** | Prohibited without legal release |
|
|
139
|
+
| **Use Cases** | Litigation evidence, regulatory investigation, breach forensics |
|
|
140
|
+
|
|
141
|
+
**Operational Notes**:
|
|
142
|
+
|
|
143
|
+
- Implement legal hold flag in data management systems
|
|
144
|
+
- Chain of custody documentation required
|
|
145
|
+
- Legal team controls release authorization
|
|
146
|
+
- Prevent any modification or deletion
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## Decision Guide
|
|
151
|
+
|
|
152
|
+
```
|
|
153
|
+
How long must we keep this data?
|
|
154
|
+
|
|
155
|
+
├── Only while actively needed (hours/days) → transient
|
|
156
|
+
├── Weeks to months (debugging, dev cycles) → short
|
|
157
|
+
├── 1-2 years (operational history) → standard
|
|
158
|
+
├── Years (regulatory, audit requirements) → long
|
|
159
|
+
└── Until legal/regulatory release → legal-hold
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## Compliance Mapping
|
|
165
|
+
|
|
166
|
+
| Regulation | Typical Retention | Recommended Tier |
|
|
167
|
+
| ---------- | ----------------- | ---------------- |
|
|
168
|
+
| SOX | 7 years | long |
|
|
169
|
+
| HIPAA | 6 years | long |
|
|
170
|
+
| GDPR | Varies (minimize) | standard or less |
|
|
171
|
+
| PCI DSS | 1 year minimum | standard |
|
|
172
|
+
| SEC 17a-4 | 6 years | long |
|
|
173
|
+
| Litigation | Until resolved | legal-hold |
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## Handling Matrix
|
|
178
|
+
|
|
179
|
+
| Retention Level | Storage Tier | Backup Strategy | Deletion Process | Cost Profile |
|
|
180
|
+
| --------------- | ------------- | ---------------- | ------------------- | ------------ |
|
|
181
|
+
| **transient** | Hot/ephemeral | None | Auto-expiry | Lowest |
|
|
182
|
+
| **short** | Standard | Daily snapshots | Scheduled jobs | Low |
|
|
183
|
+
| **standard** | Tiered | Regular + PITR | Policy + approval | Medium |
|
|
184
|
+
| **long** | Archive/cold | Compliance-grade | Regulatory approval | Higher |
|
|
185
|
+
| **legal-hold** | WORM | Immutable | Legal release only | Highest |
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## Machine-Readable Definition
|
|
190
|
+
|
|
191
|
+
- **Dimension Config**: `config/classifiers/dimensions/retention-lifecycle.dimension.json`
|
|
192
|
+
- **Schema**: `schemas/classifiers/v0/dimension-definition.schema.json`
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## Attribution
|
|
197
|
+
|
|
198
|
+
This standard is the canonical reference for retention classification across 3leaps ecosystems. Downstream consumers should reference or vendor this standard rather than maintaining independent copies.
|
|
199
|
+
|
|
200
|
+
**Review Cycle**: Semiannual with compliance and legal teams.
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Schema Stability Classification"
|
|
3
|
+
description: "Schema evolution and stability classification standard"
|
|
4
|
+
category: "standards"
|
|
5
|
+
status: "stable"
|
|
6
|
+
version: "1.0.0"
|
|
7
|
+
lastUpdated: "2026-01-22"
|
|
8
|
+
maintainer: "3leaps-core"
|
|
9
|
+
reviewers: ["platform", "api-standards"]
|
|
10
|
+
approvers: ["3leapsdave"]
|
|
11
|
+
tags: ["classification", "schema", "versioning", "api", "stability"]
|
|
12
|
+
content_license: "CC0"
|
|
13
|
+
relatedDocs:
|
|
14
|
+
- "docs/decisions/ADR-0001-schema-config-versioning.md"
|
|
15
|
+
- "config/classifiers/dimensions/schema-stability.dimension.json"
|
|
16
|
+
audience: "all"
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# Schema Stability Classification
|
|
20
|
+
|
|
21
|
+
This standard defines stability levels for schemas, APIs, and configuration formats across all 3leaps ecosystems. It provides a consistent framework for:
|
|
22
|
+
|
|
23
|
+
- **Compatibility Expectations** - What consumers can rely on
|
|
24
|
+
- **Versioning Cadence** - How often changes occur
|
|
25
|
+
- **Deprecation Windows** - How much notice before breaking changes
|
|
26
|
+
- **Consumer Guidance** - Whether to adopt and how to track changes
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Stability Levels
|
|
31
|
+
|
|
32
|
+
### Unknown
|
|
33
|
+
|
|
34
|
+
**Stability not yet classified; must be classified before consumers adopt.**
|
|
35
|
+
|
|
36
|
+
| Aspect | Requirement |
|
|
37
|
+
| -------------------- | ------------------------------------- |
|
|
38
|
+
| **Compatibility** | Unknown; assume none |
|
|
39
|
+
| **Breaking Changes** | Possible at any time |
|
|
40
|
+
| **Versioning** | Not yet versioned |
|
|
41
|
+
| **Deprecation** | N/A |
|
|
42
|
+
| **Consumer Advice** | Do not adopt; wait for classification |
|
|
43
|
+
|
|
44
|
+
**Use Cases**: New schemas under initial development, imported definitions pending review.
|
|
45
|
+
|
|
46
|
+
**Operational Notes**: Block production adoption of `unknown` stability schemas. Require explicit classification before publishing to consumers.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
### Experimental
|
|
51
|
+
|
|
52
|
+
**No stability guarantees; may change without notice.**
|
|
53
|
+
|
|
54
|
+
| Aspect | Requirement |
|
|
55
|
+
| -------------------- | -------------------------------------------- |
|
|
56
|
+
| **Compatibility** | None guaranteed |
|
|
57
|
+
| **Breaking Changes** | Any time, no notice required |
|
|
58
|
+
| **Versioning** | v0.x or -alpha/-preview suffix |
|
|
59
|
+
| **Deprecation** | None required |
|
|
60
|
+
| **Consumer Advice** | For evaluation only; expect breaking changes |
|
|
61
|
+
|
|
62
|
+
**Use Cases**: Early prototypes, alpha features, proof-of-concept APIs, `v0/` schema directories.
|
|
63
|
+
|
|
64
|
+
**Naming Conventions**:
|
|
65
|
+
|
|
66
|
+
- Version: `v0.x.x`, `0.x`, or `vX-alpha`
|
|
67
|
+
- Path: `/v0/`, `/preview/`, `/alpha/`
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
### Evolving
|
|
72
|
+
|
|
73
|
+
**Active development; additive changes expected, breaking changes with notice.**
|
|
74
|
+
|
|
75
|
+
| Aspect | Requirement |
|
|
76
|
+
| -------------------- | ------------------------------------------- |
|
|
77
|
+
| **Compatibility** | Additive changes backward-compatible |
|
|
78
|
+
| **Breaking Changes** | With notice (changelog, deprecation period) |
|
|
79
|
+
| **Versioning** | v0.x with clear changelog |
|
|
80
|
+
| **Deprecation** | Minimum 1 minor version warning |
|
|
81
|
+
| **Consumer Advice** | Safe for development; track changelog |
|
|
82
|
+
|
|
83
|
+
**Use Cases**: Beta features, active development APIs, schemas under iteration.
|
|
84
|
+
|
|
85
|
+
**Naming Conventions**:
|
|
86
|
+
|
|
87
|
+
- Version: `v0.x.x` or `vX-beta`
|
|
88
|
+
- Path: `/v0/`, `/beta/`
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
### Stable
|
|
93
|
+
|
|
94
|
+
**Production-ready; breaking changes require major version bump and deprecation period.**
|
|
95
|
+
|
|
96
|
+
| Aspect | Requirement |
|
|
97
|
+
| -------------------- | ------------------------------------------------ |
|
|
98
|
+
| **Compatibility** | Full backward compatibility within major version |
|
|
99
|
+
| **Breaking Changes** | Major version bump required |
|
|
100
|
+
| **Versioning** | Semantic versioning (v1.x.x, v2.x.x) |
|
|
101
|
+
| **Deprecation** | Minimum 6 months or 2 minor versions |
|
|
102
|
+
| **Consumer Advice** | Production safe; follow semver guidelines |
|
|
103
|
+
|
|
104
|
+
**Use Cases**: Production APIs, released schemas, public interfaces.
|
|
105
|
+
|
|
106
|
+
**Naming Conventions**:
|
|
107
|
+
|
|
108
|
+
- Version: `v1.x.x`, `v2.x.x` (semver)
|
|
109
|
+
- Path: `/v1/`, `/v2/`
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
### Frozen
|
|
114
|
+
|
|
115
|
+
**No changes expected; security patches only.**
|
|
116
|
+
|
|
117
|
+
| Aspect | Requirement |
|
|
118
|
+
| -------------------- | ------------------------------------------- |
|
|
119
|
+
| **Compatibility** | No changes (security-only exceptions) |
|
|
120
|
+
| **Breaking Changes** | Only for critical security fixes |
|
|
121
|
+
| **Versioning** | Patch versions only (vX.Y.Z → vX.Y.Z+1) |
|
|
122
|
+
| **Deprecation** | N/A (may transition to deprecated) |
|
|
123
|
+
| **Consumer Advice** | Maximum stability; plan for eventual sunset |
|
|
124
|
+
|
|
125
|
+
**Use Cases**: Legacy APIs maintained for compatibility, long-term support versions.
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
### Deprecated
|
|
130
|
+
|
|
131
|
+
**Scheduled for removal; migration path documented.**
|
|
132
|
+
|
|
133
|
+
| Aspect | Requirement |
|
|
134
|
+
| -------------------- | ------------------------------------------------ |
|
|
135
|
+
| **Compatibility** | Maintained until removal date |
|
|
136
|
+
| **Breaking Changes** | None (frozen until removal) |
|
|
137
|
+
| **Versioning** | No new versions |
|
|
138
|
+
| **Deprecation** | Removal date published, migration guide provided |
|
|
139
|
+
| **Consumer Advice** | Migrate immediately; removal imminent |
|
|
140
|
+
|
|
141
|
+
**Use Cases**: Sunset APIs, replaced schemas, legacy versions.
|
|
142
|
+
|
|
143
|
+
**Required Documentation**:
|
|
144
|
+
|
|
145
|
+
- Removal date
|
|
146
|
+
- Replacement/migration path
|
|
147
|
+
- Migration guide
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## Lifecycle Transitions
|
|
152
|
+
|
|
153
|
+
```
|
|
154
|
+
experimental → evolving → stable → frozen → deprecated → removed
|
|
155
|
+
↑ |
|
|
156
|
+
└───────────┘ (reactivation rare)
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### Typical Progression
|
|
160
|
+
|
|
161
|
+
1. **experimental**: Initial development, rapid iteration
|
|
162
|
+
2. **evolving**: Beta users onboarded, stabilizing
|
|
163
|
+
3. **stable**: GA release, production use
|
|
164
|
+
4. **frozen**: Maintenance mode, new version available
|
|
165
|
+
5. **deprecated**: Sunset announced, migration period
|
|
166
|
+
6. **removed**: No longer available
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## Versioning Guidelines
|
|
171
|
+
|
|
172
|
+
| Stability Level | Version Pattern | Example |
|
|
173
|
+
| --------------- | --------------- | ------------ |
|
|
174
|
+
| experimental | v0.x.x | v0.3.0-alpha |
|
|
175
|
+
| evolving | v0.x.x | v0.8.0-beta |
|
|
176
|
+
| stable | vX.Y.Z | v1.2.3 |
|
|
177
|
+
| frozen | vX.Y.Z (patch) | v1.2.4 |
|
|
178
|
+
| deprecated | vX.Y.Z (frozen) | v1.2.4 |
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## Consumer Guidance Matrix
|
|
183
|
+
|
|
184
|
+
| If you need... | Use stability level |
|
|
185
|
+
| --------------------------- | ------------------- |
|
|
186
|
+
| Bleeding edge features | experimental |
|
|
187
|
+
| New features with some risk | evolving |
|
|
188
|
+
| Production reliability | stable |
|
|
189
|
+
| Maximum stability | frozen |
|
|
190
|
+
| (Don't use) | deprecated |
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## Machine-Readable Definition
|
|
195
|
+
|
|
196
|
+
- **Dimension Config**: `config/classifiers/dimensions/schema-stability.dimension.json`
|
|
197
|
+
- **Schema**: `schemas/classifiers/v0/dimension-definition.schema.json`
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## Attribution
|
|
202
|
+
|
|
203
|
+
This standard is the canonical reference for schema stability classification across 3leaps ecosystems. Downstream consumers should reference or vendor this standard rather than maintaining independent copies.
|
|
204
|
+
|
|
205
|
+
**Review Cycle**: Quarterly with platform and API standards teams.
|
package/schemas/crucible-ts/upstream/3leaps/crucible/docs/standards/velocity-mode-classification.md
ADDED
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Velocity Mode Classification"
|
|
3
|
+
description: "Data processing velocity pattern classification standard"
|
|
4
|
+
category: "standards"
|
|
5
|
+
status: "stable"
|
|
6
|
+
version: "1.0.0"
|
|
7
|
+
lastUpdated: "2026-01-22"
|
|
8
|
+
maintainer: "3leaps-core"
|
|
9
|
+
reviewers: ["platform", "data-engineering"]
|
|
10
|
+
approvers: ["3leapsdave"]
|
|
11
|
+
tags: ["classification", "velocity", "streaming", "batch", "data-engineering"]
|
|
12
|
+
content_license: "CC0"
|
|
13
|
+
relatedDocs:
|
|
14
|
+
- "docs/standards/volatility-classification.md"
|
|
15
|
+
- "docs/standards/volume-tier-classification.md"
|
|
16
|
+
- "config/classifiers/dimensions/velocity-mode.dimension.json"
|
|
17
|
+
audience: "all"
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Velocity Mode Classification
|
|
21
|
+
|
|
22
|
+
This standard defines velocity mode classifications for data processing across all 3leaps ecosystems. It provides a consistent framework for:
|
|
23
|
+
|
|
24
|
+
- **Pipeline Topology** - Choosing batch vs. streaming architecture
|
|
25
|
+
- **Infrastructure Requirements** - Selecting appropriate platforms
|
|
26
|
+
- **Processing Semantics** - At-least-once, exactly-once, etc.
|
|
27
|
+
- **Latency Expectations** - Setting SLAs for data freshness
|
|
28
|
+
- **Cost Planning** - Understanding operational cost profiles
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Relationship to Volatility
|
|
33
|
+
|
|
34
|
+
Velocity mode and volatility are complementary:
|
|
35
|
+
|
|
36
|
+
- **Volatility** describes _how often data changes_ (update cadence)
|
|
37
|
+
- **Velocity mode** describes _how data is processed_ (processing pattern)
|
|
38
|
+
|
|
39
|
+
Common pairings:
|
|
40
|
+
|
|
41
|
+
| Volatility | Typical Velocity Mode |
|
|
42
|
+
| ---------- | ------------------------ |
|
|
43
|
+
| static | batch |
|
|
44
|
+
| monthly | batch |
|
|
45
|
+
| weekly | batch |
|
|
46
|
+
| daily | batch |
|
|
47
|
+
| hourly | micro-batch or batch |
|
|
48
|
+
| streaming | streaming or micro-batch |
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Velocity Modes
|
|
53
|
+
|
|
54
|
+
### Unknown
|
|
55
|
+
|
|
56
|
+
**Velocity mode not yet classified; must be classified before pipeline design.**
|
|
57
|
+
|
|
58
|
+
| Aspect | Characteristic |
|
|
59
|
+
| ---------------- | ---------------------- |
|
|
60
|
+
| **Latency** | Unknown |
|
|
61
|
+
| **Processing** | Cannot design pipeline |
|
|
62
|
+
| **Data State** | Unknown |
|
|
63
|
+
| **Semantics** | Cannot determine |
|
|
64
|
+
| **Cost Profile** | Cannot estimate |
|
|
65
|
+
|
|
66
|
+
**Use Cases**: New data sources, requirements gathering phase.
|
|
67
|
+
|
|
68
|
+
**Operational Notes**: Gate pipeline design and infrastructure provisioning on explicit classification. Analyze source characteristics and latency requirements to determine appropriate mode.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
### Batch
|
|
73
|
+
|
|
74
|
+
**Scheduled batch processing; data at rest, periodic execution.**
|
|
75
|
+
|
|
76
|
+
| Aspect | Characteristic |
|
|
77
|
+
| ---------------- | ------------------------------------ |
|
|
78
|
+
| **Latency** | Hours to days |
|
|
79
|
+
| **Processing** | Scheduled jobs (cron, Airflow, etc.) |
|
|
80
|
+
| **Data State** | At rest (complete dataset available) |
|
|
81
|
+
| **Semantics** | Full reprocessing possible |
|
|
82
|
+
| **Cost Profile** | Lowest (compute only when running) |
|
|
83
|
+
|
|
84
|
+
**Use Cases**: ETL pipelines, nightly aggregations, reporting, data warehouse loads.
|
|
85
|
+
|
|
86
|
+
**Infrastructure**: Airflow, dbt, Spark batch, serverless functions.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
### Micro-batch
|
|
91
|
+
|
|
92
|
+
**Frequent small batches (minutes); near-real-time with batch semantics.**
|
|
93
|
+
|
|
94
|
+
| Aspect | Characteristic |
|
|
95
|
+
| ---------------- | -------------------------------------- |
|
|
96
|
+
| **Latency** | Minutes (1-15 min typical) |
|
|
97
|
+
| **Processing** | Triggered batches, windowed processing |
|
|
98
|
+
| **Data State** | Recent windows (tumbling/sliding) |
|
|
99
|
+
| **Semantics** | Windowed exactly-once achievable |
|
|
100
|
+
| **Cost Profile** | Moderate (frequent compute cycles) |
|
|
101
|
+
|
|
102
|
+
**Use Cases**: Dashboard metrics, near-real-time analytics, alerting with delay tolerance.
|
|
103
|
+
|
|
104
|
+
**Infrastructure**: Spark Structured Streaming, Flink (batch mode), scheduled lambdas.
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
### Streaming
|
|
109
|
+
|
|
110
|
+
**Event-driven continuous processing; data in motion, sub-second latency.**
|
|
111
|
+
|
|
112
|
+
| Aspect | Characteristic |
|
|
113
|
+
| ---------------- | ------------------------------------ |
|
|
114
|
+
| **Latency** | Sub-second to seconds |
|
|
115
|
+
| **Processing** | Continuous (always-on) |
|
|
116
|
+
| **Data State** | In motion (event at a time) |
|
|
117
|
+
| **Semantics** | Exactly-once requires careful design |
|
|
118
|
+
| **Cost Profile** | Highest (always-on compute) |
|
|
119
|
+
|
|
120
|
+
**Use Cases**: Real-time fraud detection, live dashboards, event sourcing, IoT processing.
|
|
121
|
+
|
|
122
|
+
**Infrastructure**: Kafka Streams, Flink, Kinesis, Pulsar.
|
|
123
|
+
|
|
124
|
+
**Considerations**:
|
|
125
|
+
|
|
126
|
+
- Requires streaming infrastructure (message brokers)
|
|
127
|
+
- Complex exactly-once semantics
|
|
128
|
+
- Backpressure and scaling considerations
|
|
129
|
+
- Higher operational complexity
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
### Hybrid
|
|
134
|
+
|
|
135
|
+
**Combined batch and streaming; lambda/kappa architecture patterns.**
|
|
136
|
+
|
|
137
|
+
| Aspect | Characteristic |
|
|
138
|
+
| ---------------- | ---------------------------------- |
|
|
139
|
+
| **Latency** | Mixed (real-time + historical) |
|
|
140
|
+
| **Processing** | Parallel batch and streaming paths |
|
|
141
|
+
| **Data State** | Both at rest and in motion |
|
|
142
|
+
| **Semantics** | Varies by path |
|
|
143
|
+
| **Cost Profile** | High (maintaining both systems) |
|
|
144
|
+
|
|
145
|
+
**Use Cases**: Analytics platforms needing both historical and real-time, ML feature stores.
|
|
146
|
+
|
|
147
|
+
**Architecture Patterns**:
|
|
148
|
+
|
|
149
|
+
**Lambda Architecture**:
|
|
150
|
+
|
|
151
|
+
```
|
|
152
|
+
Events → [Streaming Layer] → Real-time Views
|
|
153
|
+
↘ [Batch Layer] → Batch Views
|
|
154
|
+
→ [Serving Layer] → Query
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**Kappa Architecture**:
|
|
158
|
+
|
|
159
|
+
```
|
|
160
|
+
Events → [Streaming Layer] → Views
|
|
161
|
+
→ [Reprocessing] (replay from log)
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## Decision Guide
|
|
167
|
+
|
|
168
|
+
```
|
|
169
|
+
How quickly must data be processed after arrival?
|
|
170
|
+
|
|
171
|
+
├── Hours/days acceptable → batch
|
|
172
|
+
├── Minutes acceptable → micro-batch
|
|
173
|
+
├── Seconds/sub-second required → streaming
|
|
174
|
+
└── Need both real-time and historical → hybrid
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Cost-Latency Tradeoff
|
|
178
|
+
|
|
179
|
+
| Velocity Mode | Latency | Cost | Complexity |
|
|
180
|
+
| ------------- | ---------- | -------- | ---------- |
|
|
181
|
+
| batch | Hours-days | Lowest | Simplest |
|
|
182
|
+
| micro-batch | Minutes | Moderate | Low |
|
|
183
|
+
| streaming | Sub-second | High | High |
|
|
184
|
+
| hybrid | Mixed | Highest | Highest |
|
|
185
|
+
|
|
186
|
+
**Guidance**: Start with batch unless latency requirements demand otherwise. Micro-batch is often a good compromise.
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## Processing Semantics
|
|
191
|
+
|
|
192
|
+
| Velocity Mode | At-least-once | Exactly-once | At-most-once |
|
|
193
|
+
| --------------- | ------------- | ------------ | ------------ |
|
|
194
|
+
| **batch** | Easy | Easy | Easy |
|
|
195
|
+
| **micro-batch** | Easy | Achievable | Easy |
|
|
196
|
+
| **streaming** | Default | Complex | Possible |
|
|
197
|
+
| **hybrid** | By path | By path | By path |
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## Combining with Other Dimensions
|
|
202
|
+
|
|
203
|
+
| Combination | Implication |
|
|
204
|
+
| ------------------------------------------------ | ----------------------------------------- |
|
|
205
|
+
| `velocity: streaming` + `volume: large` | Requires streaming at scale (Kafka+Flink) |
|
|
206
|
+
| `velocity: batch` + `volatility: streaming` | Mismatch—reconsider architecture |
|
|
207
|
+
| `velocity: micro-batch` + `retention: transient` | Good for dashboards with short history |
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## Machine-Readable Definition
|
|
212
|
+
|
|
213
|
+
- **Dimension Config**: `config/classifiers/dimensions/velocity-mode.dimension.json`
|
|
214
|
+
- **Schema**: `schemas/classifiers/v0/dimension-definition.schema.json`
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## Attribution
|
|
219
|
+
|
|
220
|
+
This standard is the canonical reference for velocity mode classification across 3leaps ecosystems. Downstream consumers should reference or vendor this standard rather than maintaining independent copies.
|
|
221
|
+
|
|
222
|
+
**Review Cycle**: Semiannual with platform and data engineering teams.
|