@fulmenhq/tsfulmen 0.2.8 → 0.2.10
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 +18 -0
- package/README.md +1 -1
- package/config/crucible-ts/agentic/roles/devlead.yaml +21 -3
- package/config/crucible-ts/agentic/roles/devrev.yaml +15 -1
- package/config/crucible-ts/agentic/roles/qa.yaml +11 -2
- package/config/crucible-ts/devsecops/lorage-central/activity/v1.0.0/defaults.yaml +2 -2
- package/config/crucible-ts/devsecops/lorage-central/credentials/v1.0.0/defaults.yaml +4 -4
- package/config/crucible-ts/devsecops/lorage-central/policy/v1.0.0/defaults.yaml +13 -13
- package/config/crucible-ts/devsecops/lorage-central/recipe/v1.0.0/defaults.yaml +13 -13
- package/config/crucible-ts/devsecops/lorage-central/runbooks/v1.0.0/defaults.yaml +8 -8
- package/config/crucible-ts/devsecops/lorage-central/tenant/v1.0.0/defaults.yaml +9 -9
- package/config/crucible-ts/devsecops/secrets/v1.0.0/defaults.yaml +5 -5
- package/config/crucible-ts/library/foundry/fixtures/signals/valid/complete.yaml +32 -32
- package/config/crucible-ts/library/foundry/signals.yaml +34 -34
- package/config/crucible-ts/server/management/server-management.yaml +3 -3
- package/config/crucible-ts/taxonomy/fixture-catalog.yaml +1 -1
- package/config/crucible-ts/taxonomy/metrics.yaml +1 -1
- package/config/crucible-ts/web/styling/site-styling.yaml +16 -16
- package/dist/appidentity/index.js.map +1 -1
- package/dist/config/index.js.map +1 -1
- package/dist/crucible/index.js.map +1 -1
- package/dist/errors/index.js.map +1 -1
- package/dist/foundry/index.js.map +1 -1
- package/dist/fulencode/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/pathfinder/index.js +0 -1
- package/dist/pathfinder/index.js.map +1 -1
- package/dist/reports/license-inventory.csv +49 -38
- package/dist/schema/index.js.map +1 -1
- package/dist/signals/index.js.map +1 -1
- package/dist/telemetry/http/index.js.map +1 -1
- package/dist/telemetry/index.js.map +1 -1
- package/dist/telemetry/prometheus/index.js.map +1 -1
- package/package.json +16 -16
- package/schemas/crucible-ts/taxonomy/library/fulencode/detection-confidence/v1.0.0/levels.yaml +1 -1
- package/schemas/crucible-ts/taxonomy/library/fulpack/archive-formats/v1.0.0/formats.yaml +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -14,6 +14,24 @@ _No unreleased changes._
|
|
|
14
14
|
|
|
15
15
|
---
|
|
16
16
|
|
|
17
|
+
## [0.2.10] - 2026-06-05
|
|
18
|
+
|
|
19
|
+
### Security
|
|
20
|
+
|
|
21
|
+
- **vitest 4.0.18 → 4.1.8** — clears **CRITICAL** GHSA-5xrq-8626-4rwp (vitest UI-server arbitrary file read/exec). The dependency wave also clears direct-dep advisories in ajv (8.20.0), picomatch (4.0.4), yaml (2.9.0), and fastify (5.8.5). Remaining `bun audit` findings are all transitive (archiver→lodash, vitest→vite/postcss, plus residual ajv/fast-uri/picomatch slots pulled by other deps) — tracked for a follow-up wave.
|
|
22
|
+
|
|
23
|
+
### Changed
|
|
24
|
+
|
|
25
|
+
- **Synced Crucible SSOT to v0.4.13** (`ssot-consumer` ref v0.4.12 → v0.4.13): agentic role catalog `devlead`/`devrev`/`qa` → v1.0.1 (contract-parity), plus goneat v0.5.12 YAML formatting alignment across the synced `config/crucible-ts` and `schemas/crucible-ts` assets.
|
|
26
|
+
- **CI hardening**: `actions/download-artifact@v4 → @v4.1.3` (clears GHSA-cxww-7g56-2vh6 zip-slip), `oven-sh/setup-bun@v1 → @v2`, and `BUN_VERSION 1.2.22 → 1.3.9` (aligned with the local toolchain) in `ci.yml` + `release.yml`; **goneat pin v0.5.12 → v0.5.13** (Makefile + workflow `GONEAT_VERSION`) — picks up the `goneat format --check` YAML false-positive fix.
|
|
27
|
+
- **Dependency wave (v0.2.10, minor/patch — no majors)**: vitest / @vitest/coverage-v8 / @vitest/ui → 4.1.8; @biomejs/biome → 2.4.16 (+ `biome.json` `$schema`); tsx → 4.22.4; prettier → 3.8.3; @types/node → 25.9.1; @types/bun → 1.3.14; @types/picomatch → 4.0.3; fastify → 5.8.5; ajv → 8.20.0; picomatch → 4.0.4; tar-stream → 3.2.0; yaml → 2.9.0; pino → 9.14.0 (held on 9.x). Deferred majors: TypeScript 6, pino 10, commander 15, archiver 8.
|
|
28
|
+
|
|
29
|
+
### Fixed
|
|
30
|
+
|
|
31
|
+
- **picomatch options**: dropped the no-op `posixSlashes` option in `pathfinder/ignore.ts` (removed from `@types/picomatch` 4.0.3; picomatch never honored it at runtime — zero behavior change), plus biome 2.4.16 import-ordering auto-fixes.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
17
35
|
## [0.2.8] - 2026-02-20
|
|
18
36
|
|
|
19
37
|
### Added
|
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ Every team writes their own HTTP status helpers, exit code enums, and country co
|
|
|
8
8
|
- **Cross-language parity**: Same exit codes, signals, and schemas as gofulmen, rsfulmen, pyfulmen
|
|
9
9
|
- **Type-safe**: Full TypeScript types with strict mode throughout
|
|
10
10
|
|
|
11
|
-
**Lifecycle Phase**: `beta` | **Version**: 0.2.
|
|
11
|
+
**Lifecycle Phase**: `beta` | **Version**: 0.2.10 | **Test Coverage**: 71%
|
|
12
12
|
|
|
13
13
|
**Install**: `bun add @fulmenhq/tsfulmen` (or `npm install @fulmenhq/tsfulmen`)
|
|
14
14
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
slug: devlead
|
|
3
3
|
name: Development Lead
|
|
4
4
|
description: Architecture, implementation, and code review for FulmenHQ ecosystem
|
|
5
|
-
version: 1.0.
|
|
5
|
+
version: 1.0.1
|
|
6
6
|
author: entarch
|
|
7
7
|
status: approved
|
|
8
8
|
category: agentic
|
|
@@ -22,11 +22,11 @@ context: |
|
|
|
22
22
|
Distinct from:
|
|
23
23
|
- devrev: Reviews for correctness (devlead writes the implementation)
|
|
24
24
|
- infoarch: Focuses on documentation (devlead focuses on code)
|
|
25
|
+
- qa: Validates end-to-end behavior and test strategy (devlead ships implementation-ready code)
|
|
25
26
|
scope:
|
|
26
27
|
- Feature implementation and bug fixes
|
|
27
28
|
- Code architecture and design patterns
|
|
28
29
|
- Integration across components
|
|
29
|
-
- Code review and PR oversight
|
|
30
30
|
- Release preparation
|
|
31
31
|
- FulmenHQ ecosystem patterns (gofulmen, tsfulmen, pyfulmen)
|
|
32
32
|
mindset:
|
|
@@ -36,19 +36,26 @@ mindset:
|
|
|
36
36
|
- Will this be maintainable in 6 months?
|
|
37
37
|
- Are there edge cases I'm missing?
|
|
38
38
|
- Does this align with FulmenHQ patterns?
|
|
39
|
+
- Which contract/default/error-path decision would a devrev call out as P1?
|
|
39
40
|
principles:
|
|
40
41
|
- Build incrementally with working checkpoints
|
|
41
42
|
- Prefer standard library over dependencies
|
|
42
43
|
- Write tests alongside implementation
|
|
43
44
|
- Keep changes focused on the task
|
|
44
45
|
- Follow existing codebase patterns
|
|
46
|
+
- Implement strict/contract-compliant behavior first, then add tolerant modes explicitly
|
|
47
|
+
- Verify schema + fixtures + standards before declaring implementation complete
|
|
48
|
+
- "Default precedence: schema silent -> standards doc authoritative; schema vs standards conflict -> escalate before merge"
|
|
45
49
|
responsibilities:
|
|
46
50
|
- Implement features according to specifications
|
|
47
51
|
- Maintain code quality and consistency
|
|
48
|
-
- Run quality gates before commits (make
|
|
52
|
+
- Run quality gates before commits (make check-all)
|
|
49
53
|
- Document architectural decisions in code and ADRs
|
|
50
54
|
- Coordinate with other roles on cross-cutting concerns
|
|
51
55
|
- Ensure API consistency with FulmenHQ ecosystem patterns
|
|
56
|
+
- Validate public API shape and defaults against synced schemas and standards
|
|
57
|
+
- Add fixture-backed parity tests for canonical happy-path and failure-path behavior
|
|
58
|
+
- Escalate intentional deviations from SSOT contracts before merge
|
|
52
59
|
escalates_to:
|
|
53
60
|
- target: human maintainers
|
|
54
61
|
when: Releases, version tags, breaking changes
|
|
@@ -65,6 +72,17 @@ does_not:
|
|
|
65
72
|
- Commit secrets or credentials
|
|
66
73
|
- Modify files outside task scope without justification
|
|
67
74
|
- Create inconsistent APIs across language implementations
|
|
75
|
+
- Assume defaults; all defaults must be sourced from spec/schema
|
|
76
|
+
- Treat passing happy-path tests as sufficient for contract correctness
|
|
77
|
+
checklists:
|
|
78
|
+
implementation:
|
|
79
|
+
- "Contract parity: Do types/fields/enums match synced schemas exactly? (missing test: regression for each mismatch)"
|
|
80
|
+
- "Defaults parity: Are default values and behaviors explicitly aligned with standards? (missing test: default-value assertions)"
|
|
81
|
+
- "Error paths: Are strict-mode and malformed-input behaviors tested? (missing test: failure-path coverage)"
|
|
82
|
+
- "Deferred scope: Are unsupported features returning canonical explicit errors? (missing test: explicit error assertions)"
|
|
83
|
+
- "Fixture parity: Are canonical fixtures wired and passing? (missing test: fixture case not yet implemented)"
|
|
84
|
+
- "Cross-language parity: Does behavior align with gofulmen/tsfulmen/pyfulmen intent? (missing test: cross-language equivalence suite)"
|
|
85
|
+
- "Quality gates: Has make check-all passed locally? (missing test: any new lint/type failures)"
|
|
68
86
|
examples:
|
|
69
87
|
- type: commit
|
|
70
88
|
title: Feature implementation
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
slug: devrev
|
|
3
3
|
name: Development Reviewer
|
|
4
4
|
description: Code review, bug finding, and four-eyes audit
|
|
5
|
-
version: 1.0.
|
|
5
|
+
version: 1.0.1
|
|
6
6
|
author: entarch
|
|
7
7
|
status: approved
|
|
8
8
|
category: review
|
|
@@ -24,6 +24,7 @@ context: |
|
|
|
24
24
|
Distinct from:
|
|
25
25
|
- devlead: Writes the implementation (devrev reviews it)
|
|
26
26
|
- secrev: Focuses on security vulnerabilities (devrev focuses on correctness)
|
|
27
|
+
- qa: Validates broader test strategy and user-level behavior (devrev focuses on implementation correctness)
|
|
27
28
|
scope:
|
|
28
29
|
- Code review for correctness and maintainability
|
|
29
30
|
- Bug finding and edge case identification
|
|
@@ -31,6 +32,7 @@ scope:
|
|
|
31
32
|
- Error handling verification
|
|
32
33
|
- Performance concern identification
|
|
33
34
|
- Consistency with codebase patterns
|
|
35
|
+
- Contract conformance against synced schemas, fixtures, and standards
|
|
34
36
|
mindset:
|
|
35
37
|
focus:
|
|
36
38
|
- What assumptions is this code making that might be wrong?
|
|
@@ -39,12 +41,15 @@ mindset:
|
|
|
39
41
|
- Will this fail gracefully or catastrophically?
|
|
40
42
|
- Are the tests actually testing the right things?
|
|
41
43
|
- Would I understand this code in 6 months?
|
|
44
|
+
- Does this implementation match spec defaults and strict-mode behavior exactly?
|
|
42
45
|
principles:
|
|
43
46
|
- Challenge happy path thinking
|
|
44
47
|
- Question implicit assumptions
|
|
45
48
|
- Verify error paths are handled
|
|
46
49
|
- Ensure tests cover edge cases
|
|
47
50
|
- Be constructively critical, not adversarial
|
|
51
|
+
- Treat schema/spec/default mismatches as defects, not style preferences
|
|
52
|
+
- "Default precedence: schema silent -> standards doc authoritative; schema vs standards conflict -> escalate"
|
|
48
53
|
responsibilities:
|
|
49
54
|
- Review code changes for correctness
|
|
50
55
|
- Identify bugs, edge cases, and logic errors
|
|
@@ -53,6 +58,9 @@ responsibilities:
|
|
|
53
58
|
- Assess code maintainability and readability
|
|
54
59
|
- Confirm consistency with existing patterns
|
|
55
60
|
- Provide actionable feedback with specific suggestions
|
|
61
|
+
- Verify contract parity for public APIs (types, fields, enums, defaults)
|
|
62
|
+
- Verify strict-mode behavior and malformed-input paths are covered by tests
|
|
63
|
+
- Flag fixture/spec mismatches early and recommend escalation path
|
|
56
64
|
escalates_to:
|
|
57
65
|
- target: human maintainers
|
|
58
66
|
when: Fundamental design disagreements
|
|
@@ -69,6 +77,7 @@ does_not:
|
|
|
69
77
|
- Rubber-stamp changes from senior contributors
|
|
70
78
|
- Rewrite the implementation (suggest changes instead)
|
|
71
79
|
- Block on style preferences (focus on correctness)
|
|
80
|
+
- Approve on green CI alone when contract-parity checks are missing
|
|
72
81
|
examples:
|
|
73
82
|
- type: review
|
|
74
83
|
title: Good review comment
|
|
@@ -106,3 +115,8 @@ checklists:
|
|
|
106
115
|
- "Performance: Any obvious O(n²) or memory issues?"
|
|
107
116
|
- "Maintainability: Will someone understand this in 6 months?"
|
|
108
117
|
- "Consistency: Does it match existing patterns in the codebase?"
|
|
118
|
+
- "Schema parity: Do public fields/types/enums match synced JSON schemas? (missing test: regression for each mismatch)"
|
|
119
|
+
- "Spec defaults: Are default values/behaviors aligned with standards text? (missing test: default-value assertions)"
|
|
120
|
+
- "Strict-mode behavior: Do strict settings reject malformed input as required? (missing test: strict-mode rejection cases)"
|
|
121
|
+
- "Fixture parity: Are canonical fixture cases wired and passing? (missing test: fixture case not yet implemented)"
|
|
122
|
+
- "Deferred scope handling: Are out-of-phase features explicitly and canonically rejected? (missing test: explicit rejection assertions)"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
slug: qa
|
|
3
3
|
name: Quality Assurance
|
|
4
4
|
description: Testing, validation, and quality gate enforcement for enterprise-scale Fulmen systems
|
|
5
|
-
version: 1.0.
|
|
5
|
+
version: 1.0.1
|
|
6
6
|
author: entarch
|
|
7
7
|
status: approved
|
|
8
8
|
category: review
|
|
@@ -41,6 +41,7 @@ scope:
|
|
|
41
41
|
- Tool integration testing (goneat, fulward, sumpter)
|
|
42
42
|
# Enterprise validation
|
|
43
43
|
- API contract validation (OpenAPI, JSON Schema)
|
|
44
|
+
- Spec-default and strict-mode behavior validation
|
|
44
45
|
- Fixture-based integration testing (real execution, not mocks)
|
|
45
46
|
- Observability verification (metrics, logs, traces)
|
|
46
47
|
- AAA validation (authentication, authorization, audit)
|
|
@@ -56,6 +57,7 @@ mindset:
|
|
|
56
57
|
- Is the test actually testing what it claims?
|
|
57
58
|
- Would this test catch a regression?
|
|
58
59
|
- Does this honor the SSOT contracts?
|
|
60
|
+
- Do defaults and error-path semantics match the standard exactly?
|
|
59
61
|
- Does this work across all target languages?
|
|
60
62
|
- Is the fixture realistic enough to catch real bugs?
|
|
61
63
|
- Are observability signals firing correctly?
|
|
@@ -66,12 +68,14 @@ mindset:
|
|
|
66
68
|
- Keep tests fast and focused
|
|
67
69
|
- Use fixtures for real execution, never mock integration points
|
|
68
70
|
- Validate contracts at layer boundaries
|
|
71
|
+
- Treat schema/spec/default mismatches as defects, not style issues
|
|
69
72
|
- Dogfood before release
|
|
70
73
|
- Respect coverage targets from module manifest
|
|
71
74
|
responsibilities:
|
|
72
75
|
- Design comprehensive test cases aligned with layer cake architecture
|
|
73
76
|
- Verify quality gates pass (`make check-all`, goneat hooks)
|
|
74
77
|
- Validate schema conformance against Crucible SSOT
|
|
78
|
+
- Validate default values and strict-mode behavior against standards docs
|
|
75
79
|
- Execute cross-language parity tests for *fulmen libraries
|
|
76
80
|
- Run CRDL validation on template changes
|
|
77
81
|
- Execute dogfooding workflows against fixture servers
|
|
@@ -79,6 +83,7 @@ responsibilities:
|
|
|
79
83
|
- Validate AAA flows (auth, authz, audit logging)
|
|
80
84
|
- Maintain fixture scenarios and test data (no PII)
|
|
81
85
|
- Document test findings with clear reproduction steps
|
|
86
|
+
- Classify findings by severity (P0/P1/P2) with exact file/line evidence
|
|
82
87
|
- Verify CalVer compatibility on releases
|
|
83
88
|
escalates_to:
|
|
84
89
|
- target: devlead
|
|
@@ -98,12 +103,16 @@ does_not:
|
|
|
98
103
|
- Test with production data or PII
|
|
99
104
|
- Skip CRDL validation for template changes
|
|
100
105
|
- Bypass goneat/fulward quality gates
|
|
106
|
+
- Approve changes on green CI alone when contract-parity checks are missing
|
|
101
107
|
checklists:
|
|
102
108
|
quality_bars:
|
|
103
109
|
- "Coverage targets: Go >=95%, TypeScript >=85%, Python >=90%"
|
|
104
110
|
- "make check-all must pass"
|
|
105
111
|
- "goneat precommit hooks enforced"
|
|
106
|
-
- "
|
|
112
|
+
- "Schema + standard parity validated (types, enums, required fields, defaults)"
|
|
113
|
+
- "Strict-mode behavior validated for malformed/ambiguous inputs"
|
|
114
|
+
- "Fixture parity validated (happy path + failure fixtures)"
|
|
115
|
+
- "Findings reported with severity and reproduction steps"
|
|
107
116
|
- "Fixtures: container-first, scenario-driven, no PII"
|
|
108
117
|
examples:
|
|
109
118
|
- type: other
|
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
# Version: v1.0.0 (Ties to schema; integrates gofulmen).
|
|
6
6
|
# Example Event Template (auto-populated in REPL)
|
|
7
7
|
eventTemplate:
|
|
8
|
-
eventType: unlock
|
|
8
|
+
eventType: unlock # From enum
|
|
9
9
|
outcome: success
|
|
10
10
|
metadata:
|
|
11
11
|
sessionId: "sess-default-001"
|
|
12
12
|
userId: "user-anon-123"
|
|
13
13
|
duration: "5s"
|
|
14
14
|
details: {method: totp}
|
|
15
|
-
backend:
|
|
15
|
+
backend: # Refs policy.audit
|
|
16
16
|
level: structured
|
|
17
17
|
retain: 30d
|
|
18
18
|
# Usage: REPL emits: {id: evt-default-unlock-001, timestamp: now, tenant: tnt-uuid-123-prod-us, ...}
|
|
@@ -4,17 +4,17 @@
|
|
|
4
4
|
# Rationale: Secure defaults (1y expiry); used in seeding/actions.
|
|
5
5
|
# Version: v1.0.0 (Ties to schema; backend from policy).
|
|
6
6
|
id: default-bootstrap-key
|
|
7
|
-
tenant: tnt-uuid-123-prod-us
|
|
7
|
+
tenant: tnt-uuid-123-prod-us # From registry
|
|
8
8
|
type: gpg-key
|
|
9
|
-
ref: "gpg://keyring/default-bootstrap"
|
|
9
|
+
ref: "gpg://keyring/default-bootstrap" # Opaque; decrypted at runtime
|
|
10
10
|
metadata:
|
|
11
11
|
created: "2025-11-09T12:00:00Z"
|
|
12
|
-
expires: "2026-11-09T12:00:00Z"
|
|
12
|
+
expires: "2026-11-09T12:00:00Z" # 1y default
|
|
13
13
|
purpose: tenant-bootstrap
|
|
14
14
|
rotation:
|
|
15
15
|
interval: 365d
|
|
16
16
|
method: manual
|
|
17
|
-
backend:
|
|
17
|
+
backend: # Refs policy.isolation.store
|
|
18
18
|
type: gpg-file
|
|
19
19
|
enc: true
|
|
20
20
|
# Usage: In recipe.actions or seeding: ref this for bootstrap; REPL checks expiry.
|
|
@@ -3,34 +3,34 @@
|
|
|
3
3
|
# Description: Default policy for new tenants (loaded via three-layer config; overrides in .fulmen/lorage.yaml).
|
|
4
4
|
# Rationale: Secure MVP defaults (short TTL, MFA required, Turso backend); confidential example (obscure publicId).
|
|
5
5
|
# Version: v1.0.0 (Ties to schema; auto-applies dataSensitivity guards from registry).
|
|
6
|
-
tenant: tnt-uuid-123-prod-us
|
|
6
|
+
tenant: tnt-uuid-123-prod-us # Obscure publicId from registry (confidential=true; no client exposure)
|
|
7
7
|
session:
|
|
8
8
|
ttl:
|
|
9
|
-
default: 15m
|
|
9
|
+
default: 15m # Force re-unlock per session
|
|
10
10
|
ops:
|
|
11
11
|
deploy: 1h
|
|
12
12
|
query: 5m
|
|
13
13
|
seed: 30m
|
|
14
|
-
maxConcurrent: 1
|
|
14
|
+
maxConcurrent: 1 # Strict isolation
|
|
15
15
|
mfa:
|
|
16
|
-
required: true
|
|
17
|
-
methods: [totp, webauthn]
|
|
16
|
+
required: true # Auto-true if registry.dataSensitivity.pii=true
|
|
17
|
+
methods: [totp, webauthn] # From auth-methods taxonomy
|
|
18
18
|
fallback: cli-prompt
|
|
19
19
|
isolation:
|
|
20
20
|
store:
|
|
21
|
-
type: turso
|
|
21
|
+
type: turso # HA default
|
|
22
22
|
conn:
|
|
23
|
-
url: "turso://default-db"
|
|
23
|
+
url: "turso://default-db" # Placeholder; ref root-credentials
|
|
24
24
|
auth: {ref: "gpg://keyring/default-bootstrap"}
|
|
25
|
-
enc: false
|
|
25
|
+
enc: false # Enable for cloud-free
|
|
26
26
|
crossAccess: false
|
|
27
|
-
geoRestrictions: [eu-west-1]
|
|
28
|
-
cloudRestrictions: [aws, doc]
|
|
27
|
+
geoRestrictions: [eu-west-1] # From registry.geo (e.g., EU for GDPR)
|
|
28
|
+
cloudRestrictions: [aws, doc] # From registry.cloud
|
|
29
29
|
dataSensitivityGuards:
|
|
30
|
-
pii: false
|
|
31
|
-
phi: false
|
|
30
|
+
pii: false # Auto-from registry; triggers mfa/geo if true
|
|
31
|
+
phi: false # Triggers enc/audit if true
|
|
32
32
|
audit:
|
|
33
|
-
level: structured
|
|
33
|
+
level: structured # gofulmen integration
|
|
34
34
|
retain: 30d
|
|
35
35
|
# Usage: REPL loads defaults + overrides; validates against schema/registry.
|
|
36
36
|
# Example Override: For PHI tenant, set dataSensitivityGuards.phi: true → auto-enc=true.
|
|
@@ -3,27 +3,27 @@
|
|
|
3
3
|
# Description: Default recipe config (e.g., for Mattermost MVP); loaded via three-layer.
|
|
4
4
|
# Rationale: Declarative base (components/phases); procedural actions for bootstrap.
|
|
5
5
|
# Version: v1.0.0 (Ties to schema; refs taxonomies for provider/backend/phase).
|
|
6
|
-
name: mattermost-stack
|
|
6
|
+
name: mattermost-stack # Slug-safe
|
|
7
7
|
type: deploy
|
|
8
8
|
target:
|
|
9
|
-
provider: doc
|
|
9
|
+
provider: doc # From infra-providers
|
|
10
10
|
region: nyc3
|
|
11
|
-
backend: opentofu
|
|
11
|
+
backend: opentofu # From toolchains
|
|
12
12
|
components:
|
|
13
13
|
- name: postgres
|
|
14
14
|
image: postgres:15
|
|
15
|
-
phase: storage
|
|
15
|
+
phase: storage # From infra-phases (order 3)
|
|
16
16
|
ports: [5432]
|
|
17
17
|
env:
|
|
18
18
|
POSTGRES_DB: mattermost
|
|
19
19
|
secrets:
|
|
20
20
|
- ref: "gpg://keyring/acme/db-pass"
|
|
21
21
|
injectAs: POSTGRES_PASSWORD
|
|
22
|
-
dependsOn: []
|
|
23
|
-
module: db-postgres
|
|
22
|
+
dependsOn: [] # No deps for base DB
|
|
23
|
+
module: db-postgres # Tofu module
|
|
24
24
|
- name: mattermost
|
|
25
25
|
image: mattermost/mattermost-team:latest
|
|
26
|
-
phase: compute
|
|
26
|
+
phase: compute # Order 4
|
|
27
27
|
ports: [8065]
|
|
28
28
|
env:
|
|
29
29
|
MM_POSTGRES_URL: "postgres://user:pass@localhost:5432/mattermost"
|
|
@@ -34,15 +34,15 @@ components:
|
|
|
34
34
|
module: app-mattermost
|
|
35
35
|
actions:
|
|
36
36
|
- type: bootstrap
|
|
37
|
-
phase: bootstrap
|
|
38
|
-
cmd: "gpg --gen-key --batch acme-bootstrap"
|
|
37
|
+
phase: bootstrap # Order 0; procedural for key gen
|
|
38
|
+
cmd: "gpg --gen-key --batch acme-bootstrap" # Example script
|
|
39
39
|
dependsOn: []
|
|
40
40
|
- type: script
|
|
41
|
-
phase: network
|
|
42
|
-
cmd: "doctl compute vpc create --name acme-vpc"
|
|
41
|
+
phase: network # Order 2
|
|
42
|
+
cmd: "doctl compute vpc create --name acme-vpc" # SDK wrapper for VPC
|
|
43
43
|
dependsOn: [bootstrap]
|
|
44
44
|
secrets:
|
|
45
|
-
backend: gpg-keyring
|
|
45
|
+
backend: gpg-keyring # Refs policy.isolation.store
|
|
46
46
|
globalRefs:
|
|
47
47
|
- ref: "turso://shared-network-key"
|
|
48
48
|
validate:
|
|
@@ -50,7 +50,7 @@ validate:
|
|
|
50
50
|
endpoint: "http://localhost:8065/health"
|
|
51
51
|
- type: connect
|
|
52
52
|
endpoint: "postgres://localhost:5432/mattermost"
|
|
53
|
-
diff:
|
|
53
|
+
diff: # For seed type
|
|
54
54
|
from: v1-0
|
|
55
55
|
to: v1-1
|
|
56
56
|
changes:
|
|
@@ -3,26 +3,26 @@
|
|
|
3
3
|
# Description: Default runbook config (e.g., global-network prototype); loaded via three-layer.
|
|
4
4
|
# Rationale: Serializes Markdown prototypes (e.g., from .plans/research/); executable in REPL.
|
|
5
5
|
# Version: v1.0.0 (Ties to schema; refs phases/recipe for steps).
|
|
6
|
-
id: global-network
|
|
6
|
+
id: global-network # Slug-safe
|
|
7
7
|
title: Global Enterprise Network Setup
|
|
8
|
-
tenantScope: [all]
|
|
8
|
+
tenantScope: [all] # Or specific publicIds
|
|
9
9
|
description: >-
|
|
10
10
|
Beginnings of the Runbook: Global Enterprise Picture with Tenants. Our runbook will live in the IDE... (from prototypes).
|
|
11
11
|
phases:
|
|
12
|
-
- id: bootstrap
|
|
12
|
+
- id: bootstrap # From infra-phases
|
|
13
13
|
title: Initial Setup
|
|
14
14
|
description: "Core Components: Provision monitoring first."
|
|
15
15
|
steps:
|
|
16
16
|
- id: vaultwarden-init
|
|
17
17
|
type: script
|
|
18
|
-
content: "docker run -d --name vaultwarden vaultwarden/server:latest"
|
|
18
|
+
content: "docker run -d --name vaultwarden vaultwarden/server:latest" # Bootstrap secrets
|
|
19
19
|
dependsOn: []
|
|
20
20
|
parallel: false
|
|
21
21
|
- id: prometheus-setup
|
|
22
22
|
type: action
|
|
23
|
-
ref: prometheus-stack
|
|
23
|
+
ref: prometheus-stack # Ref recipe
|
|
24
24
|
dependsOn: [vaultwarden-init]
|
|
25
|
-
- id: network
|
|
25
|
+
- id: network # Order 2
|
|
26
26
|
title: Networking Backbone
|
|
27
27
|
description: "Zero-trust backbone (Cloudflare Gateway); VPC peering for hybrids."
|
|
28
28
|
steps:
|
|
@@ -35,10 +35,10 @@ phases:
|
|
|
35
35
|
| 3 Leaps Sponsored | Internal | Sponsored OSS | Cloudflare (Workers/DNS), Azure (AI), Hetzner (compute) | API tokens, DB creds | Worker deployments, basic storage |
|
|
36
36
|
| 3 Leaps Commercial | External | Client-specific | Client-dictated (AWS/Azure/GCP) | Isolated vaults | Hybrid connectivity, compliance-heavy |
|
|
37
37
|
dependsOn: []
|
|
38
|
-
parallel: true
|
|
38
|
+
parallel: true # Table review parallel with setup
|
|
39
39
|
- id: vpc-peering-setup
|
|
40
40
|
type: script
|
|
41
|
-
content: "doctl compute vpc create --name global-vpc"
|
|
41
|
+
content: "doctl compute vpc create --name global-vpc" # Create VPC for hybrid peering
|
|
42
42
|
dependsOn: [tenant-table]
|
|
43
43
|
validate:
|
|
44
44
|
type: custom
|
|
@@ -5,24 +5,24 @@
|
|
|
5
5
|
# Version: v1.0.0 (Ties to schema; geo/cloud from taxonomies).
|
|
6
6
|
client:
|
|
7
7
|
id: default-client-internal
|
|
8
|
-
name: Default Client
|
|
9
|
-
confidential: true
|
|
8
|
+
name: Default Client # Confidential; not exposed
|
|
9
|
+
confidential: true # Obscure publicIds (UUID-based)
|
|
10
10
|
tenants:
|
|
11
|
-
- publicId: tnt-uuid-123-prod-us
|
|
11
|
+
- publicId: tnt-uuid-123-prod-us # Globally unique/obscure
|
|
12
12
|
purpose: production-mattermost
|
|
13
|
-
geo: [na]
|
|
14
|
-
cloud: [doc, aws]
|
|
13
|
+
geo: [na] # From geo-regions (expands to us/ca)
|
|
14
|
+
cloud: [doc, aws] # From infra-providers
|
|
15
15
|
dataSensitivity:
|
|
16
16
|
pii: false
|
|
17
17
|
phi: false
|
|
18
|
-
other: []
|
|
18
|
+
other: [] # e.g., [pci-dss]
|
|
19
19
|
- publicId: tnt-uuid-456-dev-eu
|
|
20
20
|
purpose: development-testing
|
|
21
|
-
geo: [eu]
|
|
21
|
+
geo: [eu] # Expands to de/fr/gb/ch (conventions)
|
|
22
22
|
cloud: [gcp]
|
|
23
23
|
dataSensitivity:
|
|
24
|
-
pii: true
|
|
24
|
+
pii: true # Triggers policy guards (mfa/geo)
|
|
25
25
|
phi: false
|
|
26
|
-
globalUniqueness: true
|
|
26
|
+
globalUniqueness: true # Enforced (UUID for anon)
|
|
27
27
|
# Usage: REPL loads defaults + client overrides; validates publicId uniqueness.
|
|
28
28
|
# Example: For confidential client, generate UUID publicIds; pii=true → policy.mfa.required=true.
|
|
@@ -42,7 +42,7 @@ projects:
|
|
|
42
42
|
type: password
|
|
43
43
|
value: debug
|
|
44
44
|
policies:
|
|
45
|
-
allow_plain_secrets: true
|
|
45
|
+
allow_plain_secrets: true # OK for development
|
|
46
46
|
|
|
47
47
|
# Example 2: Full-Featured Credentials with Metadata & Rotation
|
|
48
48
|
# Use case: Production secrets with lifecycle tracking and rotation policies
|
|
@@ -142,7 +142,7 @@ projects:
|
|
|
142
142
|
credentials:
|
|
143
143
|
DATABASE_URL:
|
|
144
144
|
type: password
|
|
145
|
-
ref: vault://secrets/staging/db-url
|
|
145
|
+
ref: vault://secrets/staging/db-url # Shared reference
|
|
146
146
|
QUEUE_URL:
|
|
147
147
|
type: password
|
|
148
148
|
value: amqp://staging-queue.internal:5672
|
|
@@ -153,7 +153,7 @@ projects:
|
|
|
153
153
|
type: password
|
|
154
154
|
value: https://fake@sentry.io/staging
|
|
155
155
|
- project_slug: frontend_staging
|
|
156
|
-
env_prefix: VITE_
|
|
156
|
+
env_prefix: VITE_ # Override global prefix for frontend
|
|
157
157
|
credentials:
|
|
158
158
|
API_URL:
|
|
159
159
|
type: password
|
|
@@ -181,7 +181,7 @@ projects:
|
|
|
181
181
|
schema_version: v1.0.0
|
|
182
182
|
encryption:
|
|
183
183
|
method: gpg
|
|
184
|
-
key_id: 7A8B9C0D1E2F3A4B
|
|
184
|
+
key_id: 7A8B9C0D1E2F3A4B # GPG key fingerprint
|
|
185
185
|
encrypted_at: "2025-11-15T10:00:00Z"
|
|
186
186
|
cipher: AES-256-GCM
|
|
187
187
|
# The 'projects' array is encrypted inside this ciphertext blob
|
|
@@ -207,7 +207,7 @@ ciphertext: |
|
|
|
207
207
|
...real encrypted payload would be here...
|
|
208
208
|
-----END PGP MESSAGE-----
|
|
209
209
|
policies:
|
|
210
|
-
allow_plain_secrets: false
|
|
210
|
+
allow_plain_secrets: false # Enforce encryption for production
|
|
211
211
|
|
|
212
212
|
# Example 5: Production Environment (Encrypted - age)
|
|
213
213
|
# Use case: Modern encryption with age instead of GPG
|