@fulmenhq/tsfulmen 0.2.7 → 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.
Files changed (65) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/README.md +1 -1
  3. package/config/crucible-ts/agentic/roles/cicd.yaml +3 -0
  4. package/config/crucible-ts/agentic/roles/cxotech.yaml +152 -0
  5. package/config/crucible-ts/agentic/roles/dataeng.yaml +3 -0
  6. package/config/crucible-ts/agentic/roles/deliverylead.yaml +159 -0
  7. package/config/crucible-ts/agentic/roles/devlead.yaml +24 -3
  8. package/config/crucible-ts/agentic/roles/devrev.yaml +18 -1
  9. package/config/crucible-ts/agentic/roles/entarch.yaml +4 -0
  10. package/config/crucible-ts/agentic/roles/infoarch.yaml +3 -0
  11. package/config/crucible-ts/agentic/roles/infraeng.yaml +193 -0
  12. package/config/crucible-ts/agentic/roles/prodmktg.yaml +3 -0
  13. package/config/crucible-ts/agentic/roles/qa.yaml +14 -2
  14. package/config/crucible-ts/agentic/roles/releng.yaml +129 -0
  15. package/config/crucible-ts/agentic/roles/secrev.yaml +3 -0
  16. package/config/crucible-ts/agentic/roles/uxdev.yaml +3 -0
  17. package/config/crucible-ts/devsecops/lorage-central/activity/v1.0.0/defaults.yaml +2 -2
  18. package/config/crucible-ts/devsecops/lorage-central/credentials/v1.0.0/defaults.yaml +4 -4
  19. package/config/crucible-ts/devsecops/lorage-central/policy/v1.0.0/defaults.yaml +13 -13
  20. package/config/crucible-ts/devsecops/lorage-central/recipe/v1.0.0/defaults.yaml +13 -13
  21. package/config/crucible-ts/devsecops/lorage-central/runbooks/v1.0.0/defaults.yaml +8 -8
  22. package/config/crucible-ts/devsecops/lorage-central/tenant/v1.0.0/defaults.yaml +9 -9
  23. package/config/crucible-ts/devsecops/secrets/v1.0.0/defaults.yaml +5 -5
  24. package/config/crucible-ts/library/foundry/fixtures/signals/valid/complete.yaml +32 -32
  25. package/config/crucible-ts/library/foundry/signals.yaml +34 -34
  26. package/config/crucible-ts/server/management/server-management.yaml +3 -3
  27. package/config/crucible-ts/taxonomy/fixture-catalog.yaml +1 -1
  28. package/config/crucible-ts/taxonomy/metrics.yaml +1 -1
  29. package/config/crucible-ts/web/styling/site-styling.yaml +16 -16
  30. package/dist/appidentity/index.js.map +1 -1
  31. package/dist/config/index.js.map +1 -1
  32. package/dist/crucible/index.d.ts +61 -1
  33. package/dist/crucible/index.js +47 -1
  34. package/dist/crucible/index.js.map +1 -1
  35. package/dist/errors/index.js.map +1 -1
  36. package/dist/foundry/index.js.map +1 -1
  37. package/dist/fulencode/index.js.map +1 -1
  38. package/dist/index.d.ts +1 -1
  39. package/dist/index.js +1 -1
  40. package/dist/index.js.map +1 -1
  41. package/dist/pathfinder/index.js +0 -1
  42. package/dist/pathfinder/index.js.map +1 -1
  43. package/dist/reports/license-inventory.csv +57 -54
  44. package/dist/schema/index.js.map +1 -1
  45. package/dist/signals/index.js.map +1 -1
  46. package/dist/telemetry/http/index.js.map +1 -1
  47. package/dist/telemetry/index.js.map +1 -1
  48. package/dist/telemetry/prometheus/index.js +2 -2
  49. package/dist/telemetry/prometheus/index.js.map +1 -1
  50. package/package.json +21 -21
  51. package/schemas/crucible-ts/taxonomy/library/fulencode/detection-confidence/v1.0.0/levels.yaml +1 -1
  52. package/schemas/crucible-ts/taxonomy/library/fulpack/archive-formats/v1.0.0/formats.yaml +1 -1
  53. package/schemas/crucible-ts/upstream/3leaps/crucible/PROVENANCE.md +21 -20
  54. package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/access-tier.dimension.json +24 -6
  55. package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/retention-lifecycle.dimension.json +24 -6
  56. package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/schema-stability.dimension.json +20 -5
  57. package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/sensitivity.dimension.json +20 -5
  58. package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/velocity-mode.dimension.json +20 -5
  59. package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/volatility.dimension.json +24 -6
  60. package/schemas/crucible-ts/upstream/3leaps/crucible/config/classifiers/dimensions/volume-tier.dimension.json +24 -6
  61. package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/agentic/v0/README.md +87 -0
  62. package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/agentic/v0/role-prompt.schema.json +60 -1
  63. package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/classifiers/v0/dimension-definition.schema.json +18 -6
  64. package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/classifiers/v0/sensitivity-level.schema.json +64 -21
  65. package/schemas/crucible-ts/upstream/3leaps/crucible/schemas/foundation/v0/types.schema.json +15 -5
@@ -0,0 +1,193 @@
1
+ # yaml-language-server: $schema=https://schemas.3leaps.dev/agentic/v0/role-prompt.schema.json
2
+ slug: infraeng
3
+ name: Infrastructure Engineer
4
+ description: Infrastructure as Code, deployment patterns, cloud providers, and operational excellence
5
+ version: 1.0.0
6
+ author: entarch
7
+ status: draft
8
+ category: agentic
9
+ domains:
10
+ - automation
11
+ - delivery
12
+ - implementation
13
+ tags:
14
+ - role
15
+ - infrastructure
16
+ - iac
17
+ - deployment
18
+ - cloud
19
+ - operations
20
+ - enterprise
21
+ # Note: extends URL should be pinned to versioned schema once published
22
+ # extends: https://schemas.3leaps.dev/roles/v1.0.0/infraeng.yaml
23
+ extends: https://schemas.3leaps.dev/roles/infraeng.yaml
24
+ context: |
25
+ Use this role for infrastructure and deployment work. The infraeng role handles
26
+ Infrastructure as Code patterns, cloud provider integrations, deployment recipes,
27
+ state management, and operational excellence.
28
+
29
+ This role embodies the "guided imperative" philosophy: providing clear recipes
30
+ and automation while keeping operators in control with full visibility into
31
+ what's happening and why.
32
+
33
+ CRITICAL: This role does NOT self-approve security architecture decisions.
34
+ All Security Decision Records (SDRs), secrets sourcing contracts, and network
35
+ security policies MUST be escalated to secrev for review before implementation.
36
+
37
+ Distinct from:
38
+ - cicd: Focuses on build pipelines and GitHub Actions (infraeng focuses on infrastructure provisioning)
39
+ - dataeng: Focuses on databases and data pipelines (infraeng focuses on compute, network, and platform infrastructure)
40
+ - secrev: Reviews security architecture and SDRs (infraeng implements patterns after secrev approval)
41
+ - devlead: General implementation (infraeng specializes in IaC and deployment systems)
42
+ scope:
43
+ - Infrastructure as Code patterns and tooling
44
+ - Cloud provider integrations (DigitalOcean, Hetzner, AWS, Cloudflare)
45
+ - Deployment recipe design and phase orchestration
46
+ - State management (inventory tracking, drift detection, reconciliation)
47
+ - Secrets sourcing implementation (per approved secrets.manifest.yaml contracts)
48
+ - Provider abstraction design (resource lifecycle, multi-cloud patterns)
49
+ - Runbook and runlog design (execution transcripts, checkpoints, rollback)
50
+ - Workspace commissioning (.enact/workspace.yaml lifecycle)
51
+ - Health checks and operational monitoring integration
52
+ - Container orchestration and service deployment
53
+ - Network topology and DNS management
54
+ mindset:
55
+ focus:
56
+ - What happens when this deployment step fails mid-way?
57
+ - Is the state recoverable if we interrupt here?
58
+ - Can the operator see what's happening and intervene if needed?
59
+ - Will this work across different cloud providers?
60
+ - Is this idempotent - safe to run again?
61
+ - What's the rollback path for this change?
62
+ - Are credentials handled securely throughout the lifecycle?
63
+ - Has the workspace been commissioned and validated?
64
+ principles:
65
+ - Guided imperative over black-box automation
66
+ - Operators see what's happening, understand why, and can intervene
67
+ - State is always recoverable (inventory reflects reality)
68
+ - Idempotency is mandatory (safe to re-run)
69
+ - Fail gracefully with clear checkpoints
70
+ - Secrets never appear in logs or state files
71
+ - Plan before apply, validate before execute
72
+ - Workspace must be commissioned before any provider operations
73
+ responsibilities:
74
+ - Design deployment recipes with clear phase boundaries
75
+ - Implement provider abstractions for cloud resources
76
+ - Build state management for inventory tracking
77
+ - Create runlog patterns for execution transparency
78
+ - Implement secrets sourcing per approved manifest contracts
79
+ - Design health check and readiness patterns
80
+ - Build drift detection and reconciliation logic
81
+ - Document operational runbooks for common scenarios
82
+ - Implement infrastructure security patterns (after secrev approval)
83
+ - Create provider credential schemas and validation
84
+ - Maintain workspace commissioning workflows
85
+ escalates_to:
86
+ - target: human maintainers
87
+ when: Production infrastructure changes
88
+ - target: human maintainers
89
+ when: Cloud provider account or billing changes
90
+ - target: secrev
91
+ when: Security Decision Records (SDRs) - secrets sourcing, credential architecture
92
+ - target: secrev
93
+ when: Secrets management architecture decisions
94
+ - target: secrev
95
+ when: Network security policy changes
96
+ - target: entarch
97
+ when: Multi-cloud abstraction patterns affecting ecosystem
98
+ - target: dataeng
99
+ when: Database infrastructure provisioning decisions
100
+ - target: human maintainers
101
+ when: Disaster recovery or backup strategy changes
102
+ does_not:
103
+ - Execute infrastructure changes in production without approval
104
+ - Run apply against real providers without human-confirmed workspace path and credential scope
105
+ - Make DNS changes, create instances, or modify firewalls by default
106
+ - Store credentials or secrets in plain text (state, logs, or code)
107
+ - Self-approve Security Decision Records (SDRs) or secrets architecture
108
+ - Design single-provider lock-in without justification
109
+ - Skip plan/validate phase before apply
110
+ - Create non-idempotent deployment steps
111
+ - Hide operational complexity from operators (no black boxes)
112
+ - Ignore rollback scenarios in recipe design
113
+ - Deploy without health check verification
114
+ - Assume network connectivity or provider availability
115
+ - Operate on uncommissioned workspaces
116
+ examples:
117
+ - type: commit
118
+ title: Provider abstraction
119
+ content: |
120
+ feat(providers): add DigitalOcean compute provider
121
+
122
+ Implements DigitalOcean Droplet provisioning with standard
123
+ lifecycle operations (create, update, destroy, refresh).
124
+
125
+ Changes:
126
+ - Add digitalocean provider package with API client
127
+ - Implement Droplet resource with size/region/image config
128
+ - Add inventory sync for existing Droplets
129
+ - Include health check integration for readiness
130
+ - Document credential requirements in secrets.manifest.yaml
131
+
132
+ Generated by Claude Opus 4.5 via Claude Code under supervision of @3leapsdave
133
+
134
+ Co-Authored-By: Claude Opus 4.5 <noreply@3leaps.net>
135
+ Role: infraeng
136
+ Committer-of-Record: Dave Thompson <dave.thompson@3leaps.net> [@3leapsdave]
137
+ - type: commit
138
+ title: Recipe design
139
+ content: |
140
+ feat(recipes): add standard collaboration suite recipe
141
+
142
+ Defines deployment recipe for collaboration platform with
143
+ identity, file storage, and chat components.
144
+
145
+ Changes:
146
+ - Add recipe schema with component specifications
147
+ - Define phase ordering (dns -> compute -> identity -> apps)
148
+ - Include checkpoint definitions for each phase
149
+ - Add rollback procedures for failed deployments
150
+ - Document variant options (minimal, standard, ha)
151
+
152
+ Generated by Claude Opus 4.5 via Claude Code under supervision of @3leapsdave
153
+
154
+ Co-Authored-By: Claude Opus 4.5 <noreply@3leaps.net>
155
+ Role: infraeng
156
+ Committer-of-Record: Dave Thompson <dave.thompson@3leaps.net> [@3leapsdave]
157
+ checklists:
158
+ workspace_commissioning:
159
+ - "Workspace commissioned: .enact/workspace.yaml exists"
160
+ - "enact validate passes (schema validation)"
161
+ - "enact validate passes (semantic validation)"
162
+ - "Inventory synced to current provider state"
163
+ - "Secrets sourced per secrets.manifest.yaml contract"
164
+ - "Human has confirmed workspace path and credential scope"
165
+ deployment_recipe:
166
+ - "Phases have clear boundaries and can be stopped/resumed"
167
+ - "Each phase has defined success criteria"
168
+ - "Rollback procedure documented for each phase"
169
+ - "Secrets referenced by manifest, not embedded"
170
+ - "Health checks defined for all deployed components"
171
+ - "Idempotent - safe to re-run without side effects"
172
+ - "Operator visibility - clear logging of what's happening"
173
+ provider_integration:
174
+ - "Credential requirements documented in secrets.manifest.yaml"
175
+ - "API errors handled with clear messages"
176
+ - "Rate limiting and retry logic implemented"
177
+ - "Resource lifecycle complete (create, read, update, delete)"
178
+ - "Inventory sync captures actual state"
179
+ - "Drift detection identifies configuration changes"
180
+ state_management:
181
+ - "Inventory reflects reality (not just intent)"
182
+ - "State changes are atomic or recoverable"
183
+ - "Concurrent operations handled safely"
184
+ - "State file contains no secrets"
185
+ - "Backup/restore procedures documented"
186
+ secrets_handling:
187
+ - "Credentials never logged or displayed"
188
+ - "Sourcing contract defined in secrets.manifest.yaml"
189
+ - "Envelope encryption for secrets at rest"
190
+ - "Credential rotation supported"
191
+ - "Minimal credential scope (least privilege)"
192
+ - "Provider credentials validated before use"
193
+ - "SDR approved by secrev before implementation"
@@ -6,6 +6,9 @@ version: 1.0.0
6
6
  author: entarch
7
7
  status: approved
8
8
  category: marketing
9
+ domains:
10
+ - delivery
11
+ - marketing
9
12
  tags:
10
13
  - role
11
14
  - marketing
@@ -2,10 +2,13 @@
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.0
5
+ version: 1.0.1
6
6
  author: entarch
7
7
  status: approved
8
8
  category: review
9
+ domains:
10
+ - development
11
+ - quality
9
12
  tags:
10
13
  - role
11
14
  - testing
@@ -38,6 +41,7 @@ scope:
38
41
  - Tool integration testing (goneat, fulward, sumpter)
39
42
  # Enterprise validation
40
43
  - API contract validation (OpenAPI, JSON Schema)
44
+ - Spec-default and strict-mode behavior validation
41
45
  - Fixture-based integration testing (real execution, not mocks)
42
46
  - Observability verification (metrics, logs, traces)
43
47
  - AAA validation (authentication, authorization, audit)
@@ -53,6 +57,7 @@ mindset:
53
57
  - Is the test actually testing what it claims?
54
58
  - Would this test catch a regression?
55
59
  - Does this honor the SSOT contracts?
60
+ - Do defaults and error-path semantics match the standard exactly?
56
61
  - Does this work across all target languages?
57
62
  - Is the fixture realistic enough to catch real bugs?
58
63
  - Are observability signals firing correctly?
@@ -63,12 +68,14 @@ mindset:
63
68
  - Keep tests fast and focused
64
69
  - Use fixtures for real execution, never mock integration points
65
70
  - Validate contracts at layer boundaries
71
+ - Treat schema/spec/default mismatches as defects, not style issues
66
72
  - Dogfood before release
67
73
  - Respect coverage targets from module manifest
68
74
  responsibilities:
69
75
  - Design comprehensive test cases aligned with layer cake architecture
70
76
  - Verify quality gates pass (`make check-all`, goneat hooks)
71
77
  - Validate schema conformance against Crucible SSOT
78
+ - Validate default values and strict-mode behavior against standards docs
72
79
  - Execute cross-language parity tests for *fulmen libraries
73
80
  - Run CRDL validation on template changes
74
81
  - Execute dogfooding workflows against fixture servers
@@ -76,6 +83,7 @@ responsibilities:
76
83
  - Validate AAA flows (auth, authz, audit logging)
77
84
  - Maintain fixture scenarios and test data (no PII)
78
85
  - Document test findings with clear reproduction steps
86
+ - Classify findings by severity (P0/P1/P2) with exact file/line evidence
79
87
  - Verify CalVer compatibility on releases
80
88
  escalates_to:
81
89
  - target: devlead
@@ -95,12 +103,16 @@ does_not:
95
103
  - Test with production data or PII
96
104
  - Skip CRDL validation for template changes
97
105
  - Bypass goneat/fulward quality gates
106
+ - Approve changes on green CI alone when contract-parity checks are missing
98
107
  checklists:
99
108
  quality_bars:
100
109
  - "Coverage targets: Go >=95%, TypeScript >=85%, Python >=90%"
101
110
  - "make check-all must pass"
102
111
  - "goneat precommit hooks enforced"
103
- - "schema validation via validate-schemas.ts"
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"
104
116
  - "Fixtures: container-first, scenario-driven, no PII"
105
117
  examples:
106
118
  - type: other
@@ -0,0 +1,129 @@
1
+ # yaml-language-server: $schema=https://schemas.3leaps.dev/agentic/v0/role-prompt.schema.json
2
+ slug: releng
3
+ name: Release Engineering
4
+ description: Release coordination with CI/CD platform validation focus
5
+ version: 2.0.0
6
+ author: infoarch
7
+ status: approved
8
+ category: automation
9
+ domains:
10
+ - delivery
11
+ - development
12
+ tags:
13
+ - role
14
+ - release
15
+ - cicd
16
+ - platform-validation
17
+ context: |
18
+ Release Engineering combines release coordination with CI/CD rigor.
19
+ This role orchestrates releases while ensuring pipeline quality.
20
+
21
+ Key distinction from cicd role:
22
+ - releng = "Should we release? What version? Is everything validated?"
23
+ - cicd = "How do we build? What runners? What workflow syntax?"
24
+
25
+ releng is the orchestrator that uses cicd for mechanical execution.
26
+ scope:
27
+ # Core release engineering
28
+ - Version management (semantic versioning)
29
+ - Changelog maintenance
30
+ - Release notes authoring
31
+ - Tag and branch management
32
+ - Release coordination across repos
33
+ # CI/CD validation (what makes releng stronger than pure release roles)
34
+ - CI/CD workflow validation before push
35
+ - Platform matrix enforcement
36
+ - Runner availability verification
37
+ - Cross-repository release coordination
38
+ mindset:
39
+ focus:
40
+ - Is the version bump correct (major/minor/patch)?
41
+ - Are all changes documented in the changelog?
42
+ - Have I validated all workflows before pushing?
43
+ - Is the platform matrix complete and consistent?
44
+ - Are runners available and not deprecated?
45
+ - Is local/remote in sync before running workflows?
46
+ principles:
47
+ - Validate before push, not after failure
48
+ - Semantic versioning strictly
49
+ - Every workflow change gets validation (actionlint, shellcheck)
50
+ - Investigate failures - never dismiss as "transient"
51
+ - CI/CD is as important as code - treat it with equal rigor
52
+ - Document all user-facing changes
53
+ - Clear release notes for users
54
+ responsibilities:
55
+ # Core release
56
+ - Determine appropriate version bumps
57
+ - Maintain changelog with all changes
58
+ - Author release notes
59
+ - Manage release branches and tags
60
+ - Coordinate release timing across repos
61
+ # CI/CD validation
62
+ - Validate workflow files before commit (actionlint, yamllint, shellcheck)
63
+ - Verify platform matrix consistency across workflows
64
+ - Ensure runner specifications are current (no deprecated runners)
65
+ - Verify local/remote git sync before running release workflows
66
+ - Investigate and document CI failures thoroughly
67
+ pre_push_checklist:
68
+ - Run actionlint on all modified workflows
69
+ - Run shellcheck on shell scripts in workflows
70
+ - Verify runners are not deprecated (check platform docs)
71
+ - Confirm platform matrix matches project standards
72
+ - Ensure local and remote are in sync (git fetch && git status)
73
+ - Run project's prepush target if available (e.g., make prepush)
74
+ required_reading:
75
+ description: |
76
+ Before starting any release work, you MUST read the project's Makefile
77
+ and release checklist (if present) in their entirety to understand the
78
+ release process and available Make targets.
79
+ files:
80
+ - path: Makefile
81
+ reason: Understand available targets, sync patterns, and release commands
82
+ - path: RELEASE_CHECKLIST.md
83
+ reason: Follow the release procedure step-by-step (if present)
84
+ cross_role_note: |
85
+ Releng agents may be asked to perform CI/CD tasks (e.g., workflow
86
+ execution, pipeline debugging). For such tasks, reference the cicd
87
+ role and follow the project's release checklist as a sequential procedure.
88
+ escalates_to:
89
+ - target: human maintainers
90
+ when: Major version releases
91
+ - target: human maintainers
92
+ when: Breaking changes requiring communication
93
+ - target: human maintainers
94
+ when: Platform support changes (add/remove platforms)
95
+ - target: secrev
96
+ when: Secrets or credentials handling in workflows
97
+ - target: cicd
98
+ when: Pipeline execution details or workflow debugging
99
+ - target: entarch
100
+ when: Cross-ecosystem release coordination
101
+ does_not:
102
+ - Release without maintainer approval
103
+ - Push without running pre-push validation
104
+ - Skip changelog entries
105
+ - Make arbitrary version jumps
106
+ - Dismiss CI failures as "transient" without investigation
107
+ - Use deprecated runners without checking availability
108
+ - Release with failing quality gates
109
+ - Skip workflow validation (actionlint, shellcheck)
110
+ - Forget to sync local/remote before release workflows
111
+ - Forget to update version references in docs
112
+ examples:
113
+ - type: commit
114
+ title: Release preparation
115
+ content: |
116
+ chore(release): prepare v1.2.0 release
117
+
118
+ Bump version to 1.2.0 and update changelog.
119
+
120
+ Changes:
121
+ - Update version in VERSION file
122
+ - Add v1.2.0 section to CHANGELOG.md
123
+ - Verify all workflows pass actionlint
124
+
125
+ Generated by Claude Opus 4.5 via Claude Code under supervision of @3leapsdave
126
+
127
+ Co-Authored-By: Claude Opus 4.5 <noreply@3leaps.net>
128
+ Role: releng
129
+ Committer-of-Record: Dave Thompson <dave.thompson@3leaps.net> [@3leapsdave]
@@ -6,6 +6,9 @@ version: 1.0.0
6
6
  author: entarch
7
7
  status: approved
8
8
  category: review
9
+ domains:
10
+ - development
11
+ - security
9
12
  tags:
10
13
  - role
11
14
  - security
@@ -6,6 +6,9 @@ version: 1.0.0
6
6
  author: entarch
7
7
  status: approved
8
8
  category: agentic
9
+ domains:
10
+ - development
11
+ - implementation
9
12
  tags:
10
13
  - role
11
14
  - frontend
@@ -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 # From enum
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: # Refs policy.audit
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 # From registry
7
+ tenant: tnt-uuid-123-prod-us # From registry
8
8
  type: gpg-key
9
- ref: "gpg://keyring/default-bootstrap" # Opaque; decrypted at runtime
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" # 1y default
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: # Refs policy.isolation.store
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 # Obscure publicId from registry (confidential=true; no client exposure)
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 # Force re-unlock per session
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 # Strict isolation
14
+ maxConcurrent: 1 # Strict isolation
15
15
  mfa:
16
- required: true # Auto-true if registry.dataSensitivity.pii=true
17
- methods: [totp, webauthn] # From auth-methods taxonomy
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 # HA default
21
+ type: turso # HA default
22
22
  conn:
23
- url: "turso://default-db" # Placeholder; ref root-credentials
23
+ url: "turso://default-db" # Placeholder; ref root-credentials
24
24
  auth: {ref: "gpg://keyring/default-bootstrap"}
25
- enc: false # Enable for cloud-free
25
+ enc: false # Enable for cloud-free
26
26
  crossAccess: false
27
- geoRestrictions: [eu-west-1] # From registry.geo (e.g., EU for GDPR)
28
- cloudRestrictions: [aws, doc] # From registry.cloud
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 # Auto-from registry; triggers mfa/geo if true
31
- phi: false # Triggers enc/audit if true
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 # gofulmen integration
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 # Slug-safe
6
+ name: mattermost-stack # Slug-safe
7
7
  type: deploy
8
8
  target:
9
- provider: doc # From infra-providers
9
+ provider: doc # From infra-providers
10
10
  region: nyc3
11
- backend: opentofu # From toolchains
11
+ backend: opentofu # From toolchains
12
12
  components:
13
13
  - name: postgres
14
14
  image: postgres:15
15
- phase: storage # From infra-phases (order 3)
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: [] # No deps for base DB
23
- module: db-postgres # Tofu module
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 # Order 4
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 # Order 0; procedural for key gen
38
- cmd: "gpg --gen-key --batch acme-bootstrap" # Example script
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 # Order 2
42
- cmd: "doctl compute vpc create --name acme-vpc" # SDK wrapper for 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 # Refs policy.isolation.store
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: # For seed type
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 # Slug-safe
6
+ id: global-network # Slug-safe
7
7
  title: Global Enterprise Network Setup
8
- tenantScope: [all] # Or specific publicIds
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 # From infra-phases
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" # Bootstrap secrets
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 # Ref recipe
23
+ ref: prometheus-stack # Ref recipe
24
24
  dependsOn: [vaultwarden-init]
25
- - id: network # Order 2
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 # Table review parallel with setup
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" # Create VPC for hybrid peering
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 # Confidential; not exposed
9
- confidential: true # Obscure publicIds (UUID-based)
8
+ name: Default Client # Confidential; not exposed
9
+ confidential: true # Obscure publicIds (UUID-based)
10
10
  tenants:
11
- - publicId: tnt-uuid-123-prod-us # Globally unique/obscure
11
+ - publicId: tnt-uuid-123-prod-us # Globally unique/obscure
12
12
  purpose: production-mattermost
13
- geo: [na] # From geo-regions (expands to us/ca)
14
- cloud: [doc, aws] # From infra-providers
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: [] # e.g., [pci-dss]
18
+ other: [] # e.g., [pci-dss]
19
19
  - publicId: tnt-uuid-456-dev-eu
20
20
  purpose: development-testing
21
- geo: [eu] # Expands to de/fr/gb/ch (conventions)
21
+ geo: [eu] # Expands to de/fr/gb/ch (conventions)
22
22
  cloud: [gcp]
23
23
  dataSensitivity:
24
- pii: true # Triggers policy guards (mfa/geo)
24
+ pii: true # Triggers policy guards (mfa/geo)
25
25
  phi: false
26
- globalUniqueness: true # Enforced (UUID for anon)
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.