@keighleykodric/weeve 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +75 -19
- package/bin/weeve.js +467 -2
- package/examples/core/CODEOWNERS.template +9 -0
- package/examples/core/README.md +63 -0
- package/examples/core/demo/README.md +38 -0
- package/examples/core/demo/weeve/ally/ally-intake.md +16 -0
- package/examples/core/demo/weeve/compass/compass-intake.md +15 -0
- package/examples/core/demo/weeve/layers-plus/figma-notes.md +31 -0
- package/examples/core/demo/weeve/layers-plus/layers-plus-intake.md +13 -0
- package/examples/core/demo/weeve/rubric/component-inventory.md +42 -0
- package/examples/core/demo/weeve/rubric/rubric-intake.md +14 -0
- package/examples/core/demo/weeve/shared/competitive.md +28 -0
- package/examples/core/demo/weeve/shared/roadmap.md +26 -0
- package/examples/core/demo/weeve/shared/weeve-guardrails.md +28 -0
- package/examples/core/demo/weeve/shared/weeve-intake.md +18 -0
- package/examples/core/demo/weeve/shared/weeve-project.md +33 -0
- package/examples/core/demo/weeve.yaml +15 -0
- package/examples/core/weeve.yaml +14 -0
- package/examples/engineering/CODEOWNERS.template +9 -0
- package/examples/engineering/README.md +61 -0
- package/examples/engineering/demo/README.md +20 -0
- package/examples/engineering/demo/weeve/forge/architecture.md +39 -0
- package/examples/engineering/demo/weeve/forge/ci-metrics.md +47 -0
- package/examples/engineering/demo/weeve/forge/forge-intake.md +41 -0
- package/examples/engineering/demo/weeve/guard/guard-intake.md +17 -0
- package/examples/engineering/demo/weeve/helm/helm-intake.md +16 -0
- package/examples/engineering/demo/weeve/helm/incidents.md +40 -0
- package/examples/engineering/demo/weeve/helm/on-call-runbook.md +33 -0
- package/examples/engineering/demo/weeve/shared/roadmap.md +25 -0
- package/examples/engineering/demo/weeve/shared/team.md +33 -0
- package/examples/engineering/demo/weeve/shared/weeve-guardrails.md +27 -0
- package/examples/engineering/demo/weeve/shared/weeve-intake.md +18 -0
- package/examples/engineering/demo/weeve/shared/weeve-project.md +29 -0
- package/examples/engineering/demo/weeve/verify/coverage-report.md +49 -0
- package/examples/engineering/demo/weeve/verify/verify-intake.md +16 -0
- package/examples/engineering/demo/weeve.yaml +15 -0
- package/examples/engineering/weeve.yaml +14 -0
- package/examples/gtm/CODEOWNERS.template +8 -0
- package/examples/gtm/README.md +59 -0
- package/examples/gtm/demo/README.md +19 -0
- package/examples/gtm/demo/weeve/compass/compass-intake.md +15 -0
- package/examples/gtm/demo/weeve/maven/maven-intake.md +35 -0
- package/examples/gtm/demo/weeve/maven/website-notes.md +33 -0
- package/examples/gtm/demo/weeve/pitch/pitch-intake.md +54 -0
- package/examples/gtm/demo/weeve/pitch/sales-deck-notes.md +28 -0
- package/examples/gtm/demo/weeve/pitch/win-loss-notes.md +40 -0
- package/examples/gtm/demo/weeve/shared/competitive.md +30 -0
- package/examples/gtm/demo/weeve/shared/roadmap.md +19 -0
- package/examples/gtm/demo/weeve/shared/weeve-guardrails.md +24 -0
- package/examples/gtm/demo/weeve/shared/weeve-intake.md +18 -0
- package/examples/gtm/demo/weeve/shared/weeve-project.md +25 -0
- package/examples/gtm/demo/weeve.yaml +22 -0
- package/examples/gtm/weeve.yaml +14 -0
- package/examples/product/CODEOWNERS.template +10 -0
- package/examples/product/README.md +67 -0
- package/examples/product/demo/README.md +21 -0
- package/examples/product/demo/weeve/ally/ally-intake.md +16 -0
- package/examples/product/demo/weeve/compass/compass-intake.md +15 -0
- package/examples/product/demo/weeve/felt/felt-intake.md +37 -0
- package/examples/product/demo/weeve/felt/user-research.md +68 -0
- package/examples/product/demo/weeve/layers-plus/layers-plus-intake.md +14 -0
- package/examples/product/demo/weeve/rubric/component-inventory.md +42 -0
- package/examples/product/demo/weeve/rubric/rubric-intake.md +14 -0
- package/examples/product/demo/weeve/shared/competitive.md +28 -0
- package/examples/product/demo/weeve/shared/roadmap.md +32 -0
- package/examples/product/demo/weeve/shared/weeve-guardrails.md +27 -0
- package/examples/product/demo/weeve/shared/weeve-intake.md +18 -0
- package/examples/product/demo/weeve/shared/weeve-project.md +29 -0
- package/examples/product/demo/weeve.yaml +21 -0
- package/examples/product/weeve.yaml +14 -0
- package/examples/strategy/CODEOWNERS.template +8 -0
- package/examples/strategy/README.md +59 -0
- package/examples/strategy/demo/README.md +19 -0
- package/examples/strategy/demo/weeve/compass/compass-intake.md +34 -0
- package/examples/strategy/demo/weeve/compass/customer-segments.md +34 -0
- package/examples/strategy/demo/weeve/layers-plus/layers-plus-intake.md +15 -0
- package/examples/strategy/demo/weeve/maven/maven-intake.md +33 -0
- package/examples/strategy/demo/weeve/shared/competitive.md +40 -0
- package/examples/strategy/demo/weeve/shared/roadmap.md +29 -0
- package/examples/strategy/demo/weeve/shared/weeve-guardrails.md +22 -0
- package/examples/strategy/demo/weeve/shared/weeve-intake.md +17 -0
- package/examples/strategy/demo/weeve/shared/weeve-project.md +25 -0
- package/examples/strategy/demo/weeve.yaml +15 -0
- package/examples/strategy/weeve.yaml +14 -0
- package/package.json +14 -3
- package/spec/contributing-template.md +109 -0
- package/spec/readme-template.md +55 -0
- package/{docs/shared/SHIP-GATE.md → spec/ship-gate.md} +7 -7
- package/spec/signals-schema.md +685 -0
- package/spec/weeve-yaml.md +274 -0
- package/.github/SECURITY.md +0 -22
- package/GOVERNANCE.md +0 -173
- package/WORKFLOW.md +0 -354
- package/docs/shared/engineering-pack-contract.md +0 -94
- package/docs/shared/id-prefix-reference.md +0 -235
- package/docs/shared/idea-intake-pattern.md +0 -99
- package/docs/shared/lane-conventions.md +0 -207
- package/docs/shared/recommendations-schema.md +0 -363
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# helm-intake — Volta
|
|
2
|
+
# Source: weeve/helm/incidents.md, PagerDuty, Datadog, team observations
|
|
3
|
+
|
|
4
|
+
_Feed to `/helm-intake`. Focus: deploys, monitoring, incidents, on-call._
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
- Rollback avg time: ~8 minutes. SLO target: 5 minutes.
|
|
9
|
+
- Staging cluster availability: 97.1% over the last 30 days. Target: 99.5%.
|
|
10
|
+
- 3 P1 incidents in 60 days — 2 from config drift, 1 from a dependency update.
|
|
11
|
+
- No automated rollback trigger. Rollback is always manual.
|
|
12
|
+
- On-call rotation includes 6 backend engineers who have never touched the Volta codebase.
|
|
13
|
+
- Alert fatigue: PagerDuty fires ~40 alerts/week. Engineers estimate ~30% are noise.
|
|
14
|
+
- No SLO dashboard visible to non-platform engineers. Staging health is invisible to the backend team on rotation.
|
|
15
|
+
- `config-watcher` has been patched 3 times for the same class of drift issue. Root cause unresolved.
|
|
16
|
+
- No deploy freeze windows — deploys happen 24/7 including Friday afternoons.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Incident log — Volta
|
|
2
|
+
|
|
3
|
+
_P1 and P2 incidents, last 90 days. P3s tracked in Jira._
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## P1 — April 14, 2026 · 3h 22m
|
|
8
|
+
|
|
9
|
+
**Title:** Config drift — env provisioning failure for 12 teams
|
|
10
|
+
**Impact:** 12 engineering teams unable to provision environments
|
|
11
|
+
**Root cause:** Terraform state file format changed after a version bump. `config-watcher` didn't detect the schema change.
|
|
12
|
+
**Resolved by:** Alex manually patched the state file parser.
|
|
13
|
+
**Postmortem:** No formal postmortem. Slack thread exists with notes.
|
|
14
|
+
**Follow-up:** "Add schema validation to config-watcher" — Jira ticket filed, not prioritized.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## P1 — March 3, 2026 · 1h 34m
|
|
19
|
+
|
|
20
|
+
**Title:** Deployment pipeline down
|
|
21
|
+
**Impact:** All deploys blocked across 80 engineers
|
|
22
|
+
**Root cause:** A Go dependency update introduced a breaking API change in the deploy orchestration layer.
|
|
23
|
+
**Resolved by:** Jordan rolled back the dependency manually.
|
|
24
|
+
**Postmortem:** Written. Recommendation: pin dependency versions. Implemented for this one dependency only.
|
|
25
|
+
**Follow-up:** Pin `go-deploy-sdk` to v2.1.3 — done. Other unpinned dependencies not reviewed.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## P2 — February 11, 2026 · 6h (4h undetected)
|
|
30
|
+
|
|
31
|
+
**Title:** Staging cluster degraded
|
|
32
|
+
**Impact:** Staging at 94% availability for 6 hours. 3 teams had broken test environments.
|
|
33
|
+
**Root cause:** Disk pressure on a staging node. No alert threshold set for disk usage.
|
|
34
|
+
**Resolved by:** Sam noticed it in Datadog while working on something else.
|
|
35
|
+
**Postmortem:** No.
|
|
36
|
+
**Follow-up:** Disk usage alert added at 85% threshold.
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
_Note: the Feb and April incidents have the same root cause class (undetected environmental change). No systemic fix has been made._
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# On-call runbook — Volta
|
|
2
|
+
|
|
3
|
+
_Last updated: Priya, October 2025 (before she left)_
|
|
4
|
+
|
|
5
|
+
## When you get paged
|
|
6
|
+
|
|
7
|
+
1. Check the Datadog dashboard (link in Slack #platform-alerts — note: this link may be stale)
|
|
8
|
+
2. If it's the deployment pipeline, look at the GitHub Actions logs
|
|
9
|
+
3. If it's env provisioning, check the Terraform state
|
|
10
|
+
4. If it's secrets, call Alex
|
|
11
|
+
|
|
12
|
+
## Common issues
|
|
13
|
+
|
|
14
|
+
- **Config drift:** restart the config-watcher service (`kubectl rollout restart deployment/config-watcher`)
|
|
15
|
+
- **Slow builds:** check if the runner disk is full — happened once in March
|
|
16
|
+
- **PagerDuty noise:** a lot of alerts are false positives, use judgment
|
|
17
|
+
|
|
18
|
+
## Escalation
|
|
19
|
+
|
|
20
|
+
- Alex knows most things (deployment pipeline, secrets)
|
|
21
|
+
- Jordan knows Terraform and Kubernetes
|
|
22
|
+
- If neither responds within 10 minutes, post in #platform-oncall
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
_TODO: Add runbook sections for the secrets module._
|
|
27
|
+
_TODO: Add runbook for scheduler and on-call rotation issues._
|
|
28
|
+
_TODO: Update the Datadog dashboard link — the one in Slack is broken._
|
|
29
|
+
_TODO: Document what the backend team engineers should do when they're paged for something they don't recognize._
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
_Note from Jordan, Feb 2026: "This runbook is pretty out of date. Tom and Priya wrote most of it. I've been meaning to update it."_
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Roadmap — Volta
|
|
2
|
+
|
|
3
|
+
_There isn't a real roadmap doc. Platform team tracks work in Jira under project VLT._
|
|
4
|
+
_This is a rough summary of what's known to be in progress._
|
|
5
|
+
|
|
6
|
+
## In progress
|
|
7
|
+
|
|
8
|
+
- CI caching — no ETA, Alex is working on it between other things
|
|
9
|
+
- Secrets management migration evaluation — considering AWS Secrets Manager vs staying on Vault
|
|
10
|
+
|
|
11
|
+
## Requested / backlog
|
|
12
|
+
|
|
13
|
+
- Better rollback UX — current CLI flow is awkward, engineers complain about it
|
|
14
|
+
- Staging environment self-service — currently requires a platform team ticket
|
|
15
|
+
- On-call runbook refresh — hasn't been touched since Tom and Priya left
|
|
16
|
+
|
|
17
|
+
## Not on the roadmap
|
|
18
|
+
|
|
19
|
+
- UI redesign
|
|
20
|
+
- Multi-cluster support
|
|
21
|
+
- Any external-facing features
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
_Ask Alex or Jordan for current sprint status. This doc reflects what's publicly known, not what's committed._
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Team — Volta platform team
|
|
2
|
+
|
|
3
|
+
_As of Q2 2026_
|
|
4
|
+
|
|
5
|
+
## Current team
|
|
6
|
+
|
|
7
|
+
| Name | Role | Tenure | Notes |
|
|
8
|
+
|---|---|---|---|
|
|
9
|
+
| Alex | Senior engineer | 3 years | Owns ~45% of codebase by commit count. Deployment pipeline and secrets module. |
|
|
10
|
+
| Jordan | Senior engineer | 18 months | Infra, Terraform, Kubernetes. Part-time on a separate initiative. |
|
|
11
|
+
| Sam | Mid-level engineer | 8 months | CI/CD tooling, on-call tooling. Still ramping. |
|
|
12
|
+
| Casey | Mid-level engineer | 6 months | Reviewing and fixing bugs. New to the platform domain. |
|
|
13
|
+
|
|
14
|
+
## Former team (relevant context)
|
|
15
|
+
|
|
16
|
+
| Name | Departed | Owned |
|
|
17
|
+
|---|---|---|
|
|
18
|
+
| Tom | 8 months ago | Architecture lead. Designed the env provisioning system. No handoff docs written. |
|
|
19
|
+
| Priya | 6 months ago | Secrets module and original on-call setup. Left the on-call runbook partially complete. |
|
|
20
|
+
|
|
21
|
+
## On-call rotation
|
|
22
|
+
|
|
23
|
+
Shared with the backend team (6 engineers). Backend engineers are on the rotation but have never touched the Volta codebase.
|
|
24
|
+
|
|
25
|
+
## Commit ownership (approximate, from git log)
|
|
26
|
+
|
|
27
|
+
- Alex: ~45%
|
|
28
|
+
- Tom (departed): ~25%
|
|
29
|
+
- Priya (departed): ~15%
|
|
30
|
+
- Jordan: ~10%
|
|
31
|
+
- Others: ~5%
|
|
32
|
+
|
|
33
|
+
About 40% of the active codebase was last touched by people who are no longer on the team.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# weeve-guardrails.md — Volta
|
|
2
|
+
|
|
3
|
+
## Hard limits
|
|
4
|
+
- Kubernetes only — no ECS, no Nomad; infra team has standardized
|
|
5
|
+
- GitHub Actions only — no migration to other CI providers
|
|
6
|
+
- Vault (HashiCorp) for secrets — cannot migrate without a 6-month project
|
|
7
|
+
- No downtime for the deployment pipeline — it runs 200+ deploys/day
|
|
8
|
+
|
|
9
|
+
## Technical constraints
|
|
10
|
+
- Go backend (no migration appetite), React frontend
|
|
11
|
+
- Multi-cluster: 3 clusters (dev, staging, prod); config changes must propagate to all
|
|
12
|
+
- On-prem + AWS hybrid; some services cannot move to cloud-only solutions
|
|
13
|
+
- PagerDuty + Datadog are the observability stack; no budget to change
|
|
14
|
+
|
|
15
|
+
## Resourcing
|
|
16
|
+
- 4 platform engineers — no dedicated QA, security, or SRE
|
|
17
|
+
- On-call is shared with backend team who have no Volta context
|
|
18
|
+
|
|
19
|
+
## Non-negotiables
|
|
20
|
+
- Deployment pipeline must not go below 99.5% availability
|
|
21
|
+
- No breaking changes to the environment provisioning CLI (engineers have scripts depending on it)
|
|
22
|
+
- All secrets changes must be auditable (full log retained for 90 days)
|
|
23
|
+
|
|
24
|
+
## Known risks (from last 3 incident retros)
|
|
25
|
+
- Config drift between clusters is a recurring root cause — no automated reconciliation
|
|
26
|
+
- Dependency updates applied without test validation caused a P1 in week 8
|
|
27
|
+
- The secrets module's last code review was 14 months ago
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# weeve-intake.md — Volta observations
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
## Captured observations
|
|
6
|
+
|
|
7
|
+
- CI average runtime is 18 minutes; p95 is 31 minutes — engineers are routinely skipping it on "small" PRs
|
|
8
|
+
- The deployment pipeline module has 9% test coverage; it processes ~200 deploys/day
|
|
9
|
+
- 3 P1 incidents in 60 days: 2 config drift, 1 dependency update gone wrong
|
|
10
|
+
- Secrets management module hasn't been reviewed or audited in 14 months
|
|
11
|
+
- No automated config reconciliation between clusters — drift is detected only after incidents
|
|
12
|
+
- The `volta env create` CLI has 3 undocumented flags that engineers have learned via Slack — not in docs
|
|
13
|
+
- Rollback takes ~8 minutes on average; SLO target is 5 minutes
|
|
14
|
+
- Two original authors left 8 months ago; no knowledge transfer docs
|
|
15
|
+
- The on-call rotation includes backend engineers who've never touched Volta's codebase
|
|
16
|
+
- Go module dependencies haven't been audited for CVEs in the current quarter
|
|
17
|
+
- One engineer is maintaining 70% of the codebase by commit count — single point of failure
|
|
18
|
+
- Staging cluster SLO dashboard shows 97.1% availability last 30 days vs 99.5% target
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Volta — project brief
|
|
2
|
+
|
|
3
|
+
**What it is:** Volta is an internal developer platform at a 120-person B2B SaaS company. It wraps Kubernetes, Terraform, and GitHub Actions into a self-service portal — engineers provision environments, manage deployments, and view SLO dashboards without touching infra directly.
|
|
4
|
+
|
|
5
|
+
**Stage:** In production. ~80 engineers using it daily. Maintained by a 4-person platform team. Not a product — internal tooling.
|
|
6
|
+
|
|
7
|
+
**Core surfaces:**
|
|
8
|
+
- Self-service environment provisioning (web UI + CLI)
|
|
9
|
+
- Deployment pipeline management (GitHub Actions, wrapped)
|
|
10
|
+
- SLO/SLA dashboard (pulls from Datadog + PagerDuty)
|
|
11
|
+
- Secrets management (Vault integration, web UI)
|
|
12
|
+
- On-call rotation management
|
|
13
|
+
|
|
14
|
+
**Current state:**
|
|
15
|
+
- The codebase is 3 years old; two original authors have left
|
|
16
|
+
- Test coverage is ~42% overall; the deployment pipeline module is at 9%
|
|
17
|
+
- CI runs take ~18 minutes on average; engineers have started skipping it on "small" changes
|
|
18
|
+
- Three P1 incidents in the last 60 days — two were traced to config drift, one to a dependency update
|
|
19
|
+
- Secrets management module has never had a security audit
|
|
20
|
+
|
|
21
|
+
**Team:**
|
|
22
|
+
- 4 platform engineers (2 senior, 2 mid)
|
|
23
|
+
- No dedicated QA or security engineer
|
|
24
|
+
- On-call rotation shared with the backend team (who don't maintain Volta)
|
|
25
|
+
|
|
26
|
+
**Open questions:**
|
|
27
|
+
- The deployment pipeline module is the most-used but least-tested area — rewrite or harden?
|
|
28
|
+
- CI time is killing developer experience; caching strategy is ad hoc
|
|
29
|
+
- Should secrets management be migrated to a managed service (e.g., AWS Secrets Manager)?
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Coverage report — Volta
|
|
2
|
+
|
|
3
|
+
_From `go test -coverprofile`, run April 28, 2026._
|
|
4
|
+
|
|
5
|
+
## Summary
|
|
6
|
+
|
|
7
|
+
| Module | Coverage | Trend | Risk |
|
|
8
|
+
|---|---|---|---|
|
|
9
|
+
| api/ | 71% | → stable | Low |
|
|
10
|
+
| provisioner/ | 58% | ↓ declining | Medium |
|
|
11
|
+
| deployer/ | 9% | ↓ declining | **Critical** |
|
|
12
|
+
| secrets/ | 34% | → stable | High |
|
|
13
|
+
| scheduler/ | 61% | ↑ improving | Low |
|
|
14
|
+
| config-watcher/ | 22% | → stable | High |
|
|
15
|
+
| web/ | 41% | → stable | Medium |
|
|
16
|
+
|
|
17
|
+
**Overall: ~42%**
|
|
18
|
+
|
|
19
|
+
## deployer/ detail — what's tested vs not
|
|
20
|
+
|
|
21
|
+
**Covered:**
|
|
22
|
+
- `NewDeployer()` constructor
|
|
23
|
+
- Basic deploy job creation
|
|
24
|
+
- Error type definitions
|
|
25
|
+
|
|
26
|
+
**Not covered:**
|
|
27
|
+
- Deploy execution logic
|
|
28
|
+
- Rollback logic
|
|
29
|
+
- Retry behavior on failure
|
|
30
|
+
- Concurrent deploy handling
|
|
31
|
+
- GitHub Actions API calls (mocked in all tests — never hit a real API)
|
|
32
|
+
|
|
33
|
+
## Known skipped tests
|
|
34
|
+
|
|
35
|
+
```go
|
|
36
|
+
// deployer/deploy_test.go:47
|
|
37
|
+
t.Skip("flaky, investigate - added Jan 15 2026")
|
|
38
|
+
|
|
39
|
+
// deployer/concurrent_test.go:23
|
|
40
|
+
t.Skip("race condition, needs fixing")
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Untested scenarios (no tests exist)
|
|
44
|
+
|
|
45
|
+
- Integration with live GitHub Actions
|
|
46
|
+
- Behavior under high deploy frequency (>5 concurrent)
|
|
47
|
+
- Rollback triggered during an active deploy
|
|
48
|
+
- Secrets decryption in the deploy pipeline path
|
|
49
|
+
- What happens when `config-watcher` and `deployer/` update the same environment simultaneously
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# verify-intake — Volta
|
|
2
|
+
# Source: weeve/verify/coverage-report.md, CI logs, team observations
|
|
3
|
+
|
|
4
|
+
_Feed to `/verify-intake`._
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
- Overall coverage: 42%. `deployer/` module (highest traffic): 9%.
|
|
9
|
+
- 2 known flaky tests skipped with `t.Skip()`. Neither has been investigated in 3+ months.
|
|
10
|
+
- CI is routinely skipped by engineers on "small" changes — no enforcement mechanism exists.
|
|
11
|
+
- No integration tests for `deployer/`. All tests mock the GitHub Actions API calls.
|
|
12
|
+
- Load testing: never run. No performance baselines exist.
|
|
13
|
+
- Staging is the only pre-prod environment. No canary or shadow deploys.
|
|
14
|
+
- Release process: code merges to main and deploys automatically. No gating step.
|
|
15
|
+
- No feature flags. Every change is a full rollout to all 80 engineers simultaneously.
|
|
16
|
+
- QA role: doesn't exist on the platform team or anywhere in the on-call structure.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# weeve.yaml — engineering preset demo project
|
|
2
|
+
schema_version: "0.4"
|
|
3
|
+
|
|
4
|
+
project:
|
|
5
|
+
name: Volta
|
|
6
|
+
tag: VLT
|
|
7
|
+
docs_root: ./weeve
|
|
8
|
+
|
|
9
|
+
roads:
|
|
10
|
+
- name: startup
|
|
11
|
+
path: roads/startup
|
|
12
|
+
|
|
13
|
+
# Lanes in this preset: forge, helm, verify, guard, pilot
|
|
14
|
+
# Demo project: Volta — internal developer platform
|
|
15
|
+
# Run /forge-intro to get started
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# weeve.yaml — engineering preset
|
|
2
|
+
# Generated by: weeve init engineering
|
|
3
|
+
schema_version: "0.4"
|
|
4
|
+
|
|
5
|
+
project:
|
|
6
|
+
name: My Project # Replace with your project name
|
|
7
|
+
tag: MYP # Short ID — matches vault Projects/<tag>/ folder
|
|
8
|
+
# docs_root: ./weeve # Uncomment to use a local path instead of vault
|
|
9
|
+
|
|
10
|
+
roads:
|
|
11
|
+
- name: startup
|
|
12
|
+
path: roads/startup
|
|
13
|
+
|
|
14
|
+
# Lanes in this preset: forge, helm, verify, guard, pilot
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Weeve lane ownership
|
|
2
|
+
# Copy to .github/CODEOWNERS and replace team handles with your org's teams
|
|
3
|
+
# Requires GitHub branch protection with "Require review from Code Owners" enabled
|
|
4
|
+
|
|
5
|
+
weeve/compass/ @leadership
|
|
6
|
+
weeve/maven/ @marketing
|
|
7
|
+
weeve/pitch/ @revenue
|
|
8
|
+
weeve/pilot/ @leadership
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# gtm preset
|
|
2
|
+
|
|
3
|
+
## Who this is for
|
|
4
|
+
|
|
5
|
+
The `gtm` (go-to-market) preset is for teams preparing a product launch, entering a new market segment, or standing up a sales motion for the first time. It connects strategic orientation directly to market narrative and revenue readiness — giving marketing, sales, and revenue leadership the structured artifacts they need to launch with confidence. Use this preset when the critical questions are about messaging, positioning, and whether the revenue motion is ready to execute, not about product or engineering quality.
|
|
6
|
+
|
|
7
|
+
## What you get
|
|
8
|
+
|
|
9
|
+
- **compass-signals.md** — market opportunity map: where demand is moving and what competitors are signaling
|
|
10
|
+
- **compass-context.md** — current position snapshot to anchor messaging and differentiation decisions
|
|
11
|
+
- **maven-brief.md** — go-to-market narrative and positioning brief with key messages and proof points
|
|
12
|
+
- **pitch-deck.md** — structured pitch framework: value proposition, objection handling, and proof story for sales and investors
|
|
13
|
+
- **pilot-brief.md** — launch readiness recommendation with go/no-go decision, key risks, and suggested timing
|
|
14
|
+
|
|
15
|
+
## Install
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npx weeve add gtm
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Equivalent individual lanes:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npx weeve add compass maven pitch pilot
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## First run sequence
|
|
28
|
+
|
|
29
|
+
Run these skills in order. Steps marked **(parallel)** can be run simultaneously once their prerequisites are complete.
|
|
30
|
+
|
|
31
|
+
1. **compass** — Maps market signals, competitor positioning, and demand shifts to identify where the launch has the highest chance of landing.
|
|
32
|
+
2. **maven** — Builds the go-to-market narrative from the compass signals: positioning, differentiation, key messages, and the story the market needs to hear.
|
|
33
|
+
3. **pitch** — Translates the maven narrative into a structured pitch framework with value proposition, proof points, and objection handling for sales and investor conversations.
|
|
34
|
+
4. **pilot** — Evaluates launch readiness across market timing, narrative quality, and revenue motion maturity; outputs a go/no-go brief with risk ranking.
|
|
35
|
+
|
|
36
|
+
## What you'll have at the end
|
|
37
|
+
|
|
38
|
+
| File | Description |
|
|
39
|
+
|---|---|
|
|
40
|
+
| `weeve/compass/compass-signals.md` | Market opportunity map with demand signals and competitor moves |
|
|
41
|
+
| `weeve/compass/compass-context.md` | Competitive position snapshot to anchor differentiation |
|
|
42
|
+
| `weeve/maven/maven-brief.md` | GTM narrative, positioning brief, and key messages with proof points |
|
|
43
|
+
| `weeve/pitch/pitch-deck.md` | Structured pitch framework with value proposition and objection handling |
|
|
44
|
+
| `weeve/pilot/pilot-brief.md` | Launch readiness brief with go/no-go recommendation and risk ranking |
|
|
45
|
+
|
|
46
|
+
## CODEOWNERS
|
|
47
|
+
|
|
48
|
+
Copy to `.github/CODEOWNERS`:
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
weeve/compass/ @leadership
|
|
52
|
+
weeve/maven/ @marketing
|
|
53
|
+
weeve/pitch/ @revenue
|
|
54
|
+
weeve/pilot/ @leadership
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Time estimate
|
|
58
|
+
|
|
59
|
+
First full run: **40–65 minutes**. Maven is the most intensive lane and benefits significantly from having sharp compass artifacts to work from — invest time in compass inputs (competitor briefs, market research, positioning hypotheses) for the best maven output. Pitch runs quickly once maven is complete. Subsequent runs before a launch: 15–25 minutes for incremental refinement.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Relay — GTM preset demo
|
|
2
|
+
|
|
3
|
+
An outbound sales automation SaaS with a noisy pipeline and inconsistent positioning. Use this demo to try the **GTM** preset (Compass, Maven, Pitch, Pilot).
|
|
4
|
+
|
|
5
|
+
## Run it
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
weeve add gtm
|
|
9
|
+
/compass-intro # strategic position — where Relay plays and why
|
|
10
|
+
/maven-intro # messaging, positioning, brand voice
|
|
11
|
+
/pitch-intro # pipeline health, ICP, conversion, pricing
|
|
12
|
+
/pilot-priorities
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Outputs land in `./weeve/<lane>/`.
|
|
16
|
+
|
|
17
|
+
## The project
|
|
18
|
+
|
|
19
|
+
Relay has grown fast but the GTM motion is inconsistent. Two reps win at 2× the rate of the others. The website doesn't say what the team says on sales calls. 60% of churned customers never set up a sequence. The positioning against Apollo isn't landing even though Relay should win that comparison on paper. Rich material for Compass (where to play), Maven (how to say it), and Pitch (why deals are being lost).
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# compass-intake — Relay
|
|
2
|
+
# Source: sales data, CRM, team conversations
|
|
3
|
+
|
|
4
|
+
_Feed to `/compass-intake`._
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
- Win rate: 21% overall. Two reps at 38–41%, two at 12–14%. Gap unexplained.
|
|
9
|
+
- Top loss reason: "evaluating Apollo" (38% of losses). Apollo is high-volume/low-quality — the opposite of Relay's pitch. Something is wrong with how the differentiation is being communicated.
|
|
10
|
+
- Churn pattern: 60% of churned customers never set up a sequence in 14 days. This is an onboarding gap, not a product gap.
|
|
11
|
+
- Referrals: 31% of new pipeline, growing organically. No formal referral program.
|
|
12
|
+
- PLG debate: team is split on free trial. Some worry it attracts wrong customers who won't set up sequences — the same profile as the high-churn cohort.
|
|
13
|
+
- ICP: 4 salespeople describe it differently when asked. No written ICP document.
|
|
14
|
+
- SOC 2 Type II gap: 2 enterprise deals lost for this reason in 90 days. Not on the current roadmap.
|
|
15
|
+
- Series A investors asking about net revenue retention. Not tracked consistently.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# maven-intake — Relay
|
|
2
|
+
# Source: weeve/maven/website-notes.md, sales deck review, team conversations
|
|
3
|
+
|
|
4
|
+
_Feed to `/maven-intake`._
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Messaging inconsistency
|
|
9
|
+
|
|
10
|
+
- Website: "The smarter outbound platform" — vague, no differentiation
|
|
11
|
+
- Sales deck: "Personalize at scale" — same phrase Apollo uses
|
|
12
|
+
- Top rep (Alex): "Precision over volume" — resonates, not in any asset
|
|
13
|
+
- Bottom reps: "It's like Apollo but easier" — positions us as a cheaper version, not a different thing
|
|
14
|
+
|
|
15
|
+
Four different answers to "what is Relay?"
|
|
16
|
+
|
|
17
|
+
## Website observations
|
|
18
|
+
|
|
19
|
+
- Hero doesn't mention quality, precision, or the Apollo differentiation
|
|
20
|
+
- AI personalization (key differentiator) is buried — one paragraph, third section
|
|
21
|
+
- Two case studies, both 14 months old, both predate AI personalization
|
|
22
|
+
- Social proof: "210+ teams" — feels small; no logos on homepage
|
|
23
|
+
- Pricing: 3 tiers, but reps say "we only ever sell the middle tier"
|
|
24
|
+
|
|
25
|
+
## Acquisition
|
|
26
|
+
|
|
27
|
+
- Main channel: outbound (ironic). Some inbound from comparison content.
|
|
28
|
+
- Referrals: 31% of pipeline, growing organically, no program supporting it.
|
|
29
|
+
- One "Apollo alternatives" article drives some inbound.
|
|
30
|
+
- No content strategy or SEO investment.
|
|
31
|
+
|
|
32
|
+
## Email / lifecycle
|
|
33
|
+
|
|
34
|
+
- Onboarding sequence exists but CS doesn't follow a standard playbook.
|
|
35
|
+
- No re-engagement or churn-prevention sequences.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Website notes — Relay
|
|
2
|
+
|
|
3
|
+
_Quick review, April 2026. Not comprehensive._
|
|
4
|
+
|
|
5
|
+
## Hero
|
|
6
|
+
|
|
7
|
+
"The smarter outbound platform. Build sequences, personalize at scale, close more deals."
|
|
8
|
+
|
|
9
|
+
- "Smarter" is undefined
|
|
10
|
+
- "Personalize at scale" is Apollo's phrase
|
|
11
|
+
- "Close more deals" is what every sales tool says
|
|
12
|
+
- No mention of quality, precision, or why Relay is different from Apollo
|
|
13
|
+
|
|
14
|
+
## Features section
|
|
15
|
+
|
|
16
|
+
Sequence builder — well explained. AI personalization — one paragraph, third. Inbox management — not mentioned. Analytics — one line.
|
|
17
|
+
|
|
18
|
+
## Social proof
|
|
19
|
+
|
|
20
|
+
- 2 case studies (14 months old)
|
|
21
|
+
- "210+ teams" as the social proof number
|
|
22
|
+
- No customer logos
|
|
23
|
+
|
|
24
|
+
## Pricing
|
|
25
|
+
|
|
26
|
+
- Starter / Growth / Scale at $49 / $99 / $199
|
|
27
|
+
- Reps say: "we only ever sell Growth"
|
|
28
|
+
- No "most popular" indicator
|
|
29
|
+
- Annual discount exists but not emphasized
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
_No changes made since the product launch 14 months ago._
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# pitch-intake — Relay
|
|
2
|
+
# Source: weeve/pitch/win-loss-notes.md, CRM notes, call shadowing, CS data
|
|
3
|
+
|
|
4
|
+
_Feed to `/pitch-intake`. Most actionable sales signal is here._
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Win rate by rep
|
|
9
|
+
|
|
10
|
+
- Alex (AE, 2 years): 41% — $180K last quarter
|
|
11
|
+
- Morgan (AE, 2 years): 38% — $160K last quarter
|
|
12
|
+
- Jordan (AE, 1 year): 14% — $52K last quarter
|
|
13
|
+
- Taylor (AE, 8 months): 12% — $38K last quarter
|
|
14
|
+
|
|
15
|
+
Gap between top and bottom reps is not explained by tenure alone. Jordan has been here a year.
|
|
16
|
+
|
|
17
|
+
## What Alex does differently (from call shadowing)
|
|
18
|
+
|
|
19
|
+
- Leads with AI personalization demo, not sequence builder
|
|
20
|
+
- Asks "what's your current reply rate?" before showing anything — anchors on quality
|
|
21
|
+
- Never uses "personalize at scale" — says "precision over volume"
|
|
22
|
+
- Qualifies against Apollo early: "what's your reply rate with Apollo?"
|
|
23
|
+
|
|
24
|
+
## What bottom reps do
|
|
25
|
+
|
|
26
|
+
- Lead with the sequence builder — feature parity with Apollo, not a differentiator
|
|
27
|
+
- Use "personalize at scale" from the sales deck (same phrase Apollo uses)
|
|
28
|
+
- Demo everything instead of the top 2-3 features
|
|
29
|
+
- Skip discovery questions
|
|
30
|
+
|
|
31
|
+
## Loss breakdown (last 60 lost deals, from CRM)
|
|
32
|
+
|
|
33
|
+
| Reason | Count |
|
|
34
|
+
|---|---|
|
|
35
|
+
| Evaluating Apollo | 23 |
|
|
36
|
+
| Price | 12 |
|
|
37
|
+
| No decision (went cold) | 9 |
|
|
38
|
+
| Chose Outreach | 8 |
|
|
39
|
+
| Missing feature | 5 |
|
|
40
|
+
| Other | 3 |
|
|
41
|
+
|
|
42
|
+
## Churn patterns (from CS data)
|
|
43
|
+
|
|
44
|
+
- 60% of churned customers never set up a sequence in the first 14 days
|
|
45
|
+
- No structured onboarding — every CSM runs it differently
|
|
46
|
+
- Time to first sequence: median 8 days, range 1–47 days
|
|
47
|
+
- Customers who set up a sequence within 3 days: 4% annual churn
|
|
48
|
+
- Customers who take >14 days: 34% annual churn
|
|
49
|
+
|
|
50
|
+
## Feature awareness gaps (from customer calls last month)
|
|
51
|
+
|
|
52
|
+
- 3 customers: "I didn't know it could do LinkedIn steps"
|
|
53
|
+
- 2 customers: "I didn't realize there was inbox management"
|
|
54
|
+
- These are differentiating features customers are paying for but not using
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Sales deck notes — Relay
|
|
2
|
+
|
|
3
|
+
_Quick review. Not a full audit._
|
|
4
|
+
|
|
5
|
+
## Current structure (22 slides)
|
|
6
|
+
|
|
7
|
+
1. Title: "The smarter outbound platform"
|
|
8
|
+
2. The problem: "Outbound is broken"
|
|
9
|
+
3. Solution: "Personalize at scale"
|
|
10
|
+
4. Sequence builder demo
|
|
11
|
+
5. AI personalization demo
|
|
12
|
+
6. Analytics demo
|
|
13
|
+
7. Integrations
|
|
14
|
+
8–9. Two case studies (both 14 months old, pre-AI personalization)
|
|
15
|
+
10–22. Pricing, security, FAQ
|
|
16
|
+
|
|
17
|
+
## Issues noticed
|
|
18
|
+
|
|
19
|
+
- Slide 3 uses "personalize at scale" — Apollo's phrase
|
|
20
|
+
- AI personalization is slide 5 (after the sequence builder). Top reps lead with this, not the deck.
|
|
21
|
+
- Both case studies predate the AI personalization feature — don't reflect current product
|
|
22
|
+
- No reply rate data or industry benchmarks
|
|
23
|
+
- No slide addressing the Apollo objection (38% of losses)
|
|
24
|
+
- No "quality vs volume" framing anywhere in the deck
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
_Deck hasn't been updated in 14 months. Most slides reflect the pre-AI-personalization product._
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Win/loss notes — Relay
|
|
2
|
+
|
|
3
|
+
_Selected deals, last 90 days. From CRM notes + brief follow-up calls._
|
|
4
|
+
|
|
5
|
+
## Wins
|
|
6
|
+
|
|
7
|
+
**W-01 — 22-person SaaS sales team · $1,200/mo · Rep: Alex · Beat Apollo**
|
|
8
|
+
Alex led with reply rate data. Prospect had used Apollo for 6 months with 1.2% reply rates. Alex showed Relay's benchmark (3.8% for similar sequences).
|
|
9
|
+
Prospect quote: "You led with the only thing I actually care about."
|
|
10
|
+
|
|
11
|
+
**W-02 — 15-person e-commerce brand · $99/mo · Rep: Morgan · No competitor**
|
|
12
|
+
Inbound from a referral. Never considered Apollo. Chose Relay because "it looked easier."
|
|
13
|
+
|
|
14
|
+
**W-03 — 35-person fintech · $1,200/mo · Rep: Alex · Beat Instantly**
|
|
15
|
+
Instantly is email-only. Alex knew this before the call and led with LinkedIn steps.
|
|
16
|
+
|
|
17
|
+
**W-04 — 8-person agency · $49/mo · Rep: Taylor · No real competitor**
|
|
18
|
+
Won on price. Hasn't set up a sequence yet (day 12). At-risk of churn.
|
|
19
|
+
|
|
20
|
+
## Losses
|
|
21
|
+
|
|
22
|
+
**L-01 — 60-person B2B SaaS · Went to Apollo · Rep: Jordan**
|
|
23
|
+
Jordan led with the sequence builder. Prospect said "Apollo does this too." No reply rate discussion. Apollo offered 6 months free.
|
|
24
|
+
|
|
25
|
+
**L-02 — 12-person startup · Went to Apollo free tier · Rep: Taylor**
|
|
26
|
+
Price objection, then Apollo free tier. Follow-up 3 months later: "Apollo's data isn't great but it's free."
|
|
27
|
+
|
|
28
|
+
**L-03 — 45-person SaaS · No decision · Rep: Morgan**
|
|
29
|
+
Champion left the company during the evaluation. Deal went cold. New contact unfamiliar with the evaluation history.
|
|
30
|
+
|
|
31
|
+
**L-04 — 80-person enterprise · Went to Outreach · Rep: Alex**
|
|
32
|
+
Lost despite best rep. Procurement required SOC 2 Type II. Relay doesn't have it.
|
|
33
|
+
Second deal lost for this reason in 90 days.
|
|
34
|
+
|
|
35
|
+
## Patterns
|
|
36
|
+
|
|
37
|
+
- Every win above $500/mo included a reply rate or quality conversation early in the cycle
|
|
38
|
+
- Alex and Morgan both disqualify fast if the prospect's primary need is contact data volume
|
|
39
|
+
- Apollo free tier is pulling in price-sensitive prospects who probably weren't right-fit anyway
|
|
40
|
+
- SOC 2 gap has surfaced twice at the enterprise tier — may be a real blocker worth scoping
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Competitive notes — Relay
|
|
2
|
+
|
|
3
|
+
_From sales calls and rep knowledge. Not a formal analysis._
|
|
4
|
+
|
|
5
|
+
## Competitors we lose to most
|
|
6
|
+
|
|
7
|
+
**Apollo.io** — top loss reason in the CRM (38% of losses)
|
|
8
|
+
- Apollo is higher-volume, lower-quality. Our pitch is the opposite.
|
|
9
|
+
- We lose because Apollo has a larger contact database and buyers conflate "more data" with "better outbound."
|
|
10
|
+
- Apollo has a free tier that pulls in price-sensitive prospects.
|
|
11
|
+
- Our counter-positioning ("quality over volume") is not on our website.
|
|
12
|
+
|
|
13
|
+
**Outreach / Salesloft** — enterprise, $50K+ contracts
|
|
14
|
+
- Win here when budget is the objection against enterprise tools.
|
|
15
|
+
- Rarely the direct competitor unless the company is also considering enterprise.
|
|
16
|
+
|
|
17
|
+
## Adjacent (not direct competition)
|
|
18
|
+
|
|
19
|
+
- **Instantly / Lemlist** — email-only, founder-led teams. Different motion.
|
|
20
|
+
- **Clay** — data enrichment and sequencing. Some power-user overlap.
|
|
21
|
+
|
|
22
|
+
## What we don't know
|
|
23
|
+
|
|
24
|
+
- Why we lose to Apollo when our quality positioning should be a clear differentiator
|
|
25
|
+
- Whether prospects understand the Apollo quality difference or just see us as "Apollo but smaller"
|
|
26
|
+
- Whether the SOC 2 gap (lost 2 enterprise deals) is a real pipeline blocker
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
_Win rate: 21% overall. Two reps win at 38–41%. Understanding the rep gap is more urgent than competitor research._
|