@sniper.ai/core 1.0.0 → 2.0.0
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 +122 -32
- package/framework/checklists/debug-review.md +34 -0
- package/framework/checklists/feature-review.md +42 -0
- package/framework/checklists/ingest-review.md +42 -0
- package/framework/checklists/memory-review.md +30 -0
- package/framework/checklists/perf-review.md +33 -0
- package/framework/checklists/refactor-review.md +33 -0
- package/framework/checklists/security-review.md +34 -0
- package/framework/checklists/test-review.md +32 -0
- package/framework/checklists/workspace-review.md +34 -0
- package/framework/commands/sniper-audit.md +1549 -0
- package/framework/commands/sniper-compose.md +88 -2
- package/framework/commands/sniper-debug.md +337 -0
- package/framework/commands/sniper-discover.md +41 -15
- package/framework/commands/sniper-feature.md +515 -0
- package/framework/commands/sniper-ingest.md +506 -0
- package/framework/commands/sniper-init.md +21 -5
- package/framework/commands/sniper-memory.md +219 -0
- package/framework/commands/sniper-plan.md +41 -19
- package/framework/commands/sniper-review.md +106 -42
- package/framework/commands/sniper-solve.md +47 -14
- package/framework/commands/sniper-sprint.md +132 -17
- package/framework/commands/sniper-status.md +240 -35
- package/framework/commands/sniper-workspace-feature.md +267 -0
- package/framework/commands/sniper-workspace-init.md +252 -0
- package/framework/commands/sniper-workspace-status.md +112 -0
- package/framework/commands/sniper-workspace-validate.md +138 -0
- package/framework/config.template.yaml +88 -9
- package/framework/personas/process/architecture-cartographer.md +25 -0
- package/framework/personas/process/code-archaeologist.md +22 -0
- package/framework/personas/process/code-investigator.md +29 -0
- package/framework/personas/process/code-reviewer.md +26 -0
- package/framework/personas/process/contract-designer.md +31 -0
- package/framework/personas/process/convention-miner.md +27 -0
- package/framework/personas/process/coverage-analyst.md +24 -0
- package/framework/personas/process/flake-hunter.md +30 -0
- package/framework/personas/process/impact-analyst.md +23 -0
- package/framework/personas/process/integration-validator.md +29 -0
- package/framework/personas/process/log-analyst.md +22 -0
- package/framework/personas/process/migration-architect.md +24 -0
- package/framework/personas/process/perf-profiler.md +27 -0
- package/framework/personas/process/release-manager.md +23 -0
- package/framework/personas/process/retro-analyst.md +30 -0
- package/framework/personas/process/threat-modeler.md +30 -0
- package/framework/personas/process/triage-lead.md +23 -0
- package/framework/personas/process/vuln-scanner.md +27 -0
- package/framework/personas/process/workspace-orchestrator.md +30 -0
- package/framework/spawn-prompts/_template.md +3 -0
- package/framework/teams/debug.yaml +56 -0
- package/framework/teams/feature-plan.yaml +61 -0
- package/framework/teams/ingest.yaml +85 -0
- package/framework/teams/perf.yaml +33 -0
- package/framework/teams/refactor.yaml +34 -0
- package/framework/teams/retro.yaml +30 -0
- package/framework/teams/review-pr.yaml +73 -0
- package/framework/teams/review-release.yaml +70 -0
- package/framework/teams/security.yaml +59 -0
- package/framework/teams/test.yaml +59 -0
- package/framework/teams/workspace-feature.yaml +69 -0
- package/framework/teams/workspace-validation.yaml +27 -0
- package/framework/templates/arch-delta.md +74 -0
- package/framework/templates/architecture.md +24 -1
- package/framework/templates/brief.md +22 -1
- package/framework/templates/bug-report.md +55 -0
- package/framework/templates/contract-validation-report.md +68 -0
- package/framework/templates/contract.yaml +60 -0
- package/framework/templates/conventions.md +59 -0
- package/framework/templates/coverage-report.md +67 -0
- package/framework/templates/epic.md +14 -0
- package/framework/templates/feature-brief.md +54 -0
- package/framework/templates/feature-spec.md +53 -0
- package/framework/templates/flaky-report.md +64 -0
- package/framework/templates/investigation.md +49 -0
- package/framework/templates/memory-anti-pattern.yaml +16 -0
- package/framework/templates/memory-convention.yaml +17 -0
- package/framework/templates/memory-decision.yaml +16 -0
- package/framework/templates/migration-plan.md +47 -0
- package/framework/templates/optimization-plan.md +59 -0
- package/framework/templates/performance-profile.md +64 -0
- package/framework/templates/postmortem.md +69 -0
- package/framework/templates/pr-review.md +50 -0
- package/framework/templates/prd.md +24 -1
- package/framework/templates/refactor-scope.md +52 -0
- package/framework/templates/release-readiness.md +66 -0
- package/framework/templates/retro.yaml +44 -0
- package/framework/templates/security.md +22 -1
- package/framework/templates/story.md +16 -0
- package/framework/templates/threat-model.md +71 -0
- package/framework/templates/ux-spec.md +18 -1
- package/framework/templates/vulnerability-report.md +56 -0
- package/framework/templates/workspace-brief.md +52 -0
- package/framework/templates/workspace-plan.md +50 -0
- package/framework/workflows/workspace-feature.md +71 -0
- package/package.json +2 -2
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# ─────────────────────────────────────────
|
|
2
|
+
# SNIPER Test & Coverage Audit Team
|
|
3
|
+
# Structured test quality analysis
|
|
4
|
+
# ─────────────────────────────────────────
|
|
5
|
+
|
|
6
|
+
# Phase 1 (Analysis) spawns 2 agents in parallel:
|
|
7
|
+
# - coverage-analyst: identifies coverage gaps ranked by risk
|
|
8
|
+
# - flake-hunter: investigates flaky tests and diagnoses root causes
|
|
9
|
+
#
|
|
10
|
+
# Phase 2 (Planning) is run by the lead to generate improvement stories.
|
|
11
|
+
# Phase 3 (Execution) uses the standard sprint infrastructure.
|
|
12
|
+
#
|
|
13
|
+
# This team YAML is used by /sniper-audit --target tests.
|
|
14
|
+
|
|
15
|
+
team_name: sniper-test-audit-{audit_id}
|
|
16
|
+
description: "Test & Coverage Audit: {audit_title}"
|
|
17
|
+
model_override: null
|
|
18
|
+
|
|
19
|
+
teammates:
|
|
20
|
+
- name: coverage-analyst
|
|
21
|
+
compose:
|
|
22
|
+
process: coverage-analyst
|
|
23
|
+
technical: null
|
|
24
|
+
cognitive: systems-thinker
|
|
25
|
+
tasks:
|
|
26
|
+
- id: coverage-analysis
|
|
27
|
+
name: "Coverage Gap Analysis"
|
|
28
|
+
description: >
|
|
29
|
+
Analyze test coverage across the codebase. Identify untested code paths,
|
|
30
|
+
rank coverage gaps by risk (business-critical paths first), and produce
|
|
31
|
+
a coverage report with prioritized recommendations for new tests.
|
|
32
|
+
output: coverage-report.md
|
|
33
|
+
blocked_by: []
|
|
34
|
+
plan_approval: false
|
|
35
|
+
|
|
36
|
+
- name: flake-hunter
|
|
37
|
+
compose:
|
|
38
|
+
process: flake-hunter
|
|
39
|
+
technical: null
|
|
40
|
+
cognitive: devils-advocate
|
|
41
|
+
tasks:
|
|
42
|
+
- id: flake-investigation
|
|
43
|
+
name: "Flaky Test Investigation"
|
|
44
|
+
description: >
|
|
45
|
+
Investigate flaky tests in the test suite. Identify tests with
|
|
46
|
+
non-deterministic behavior, diagnose root causes (timing, shared state,
|
|
47
|
+
external dependencies), and produce a report with specific fixes for
|
|
48
|
+
each flaky test.
|
|
49
|
+
output: flaky-report.md
|
|
50
|
+
blocked_by: []
|
|
51
|
+
plan_approval: false
|
|
52
|
+
|
|
53
|
+
# Phase 3 (Execution) reuses sprint teammates from sprint.yaml
|
|
54
|
+
|
|
55
|
+
coordination: []
|
|
56
|
+
|
|
57
|
+
review_gate:
|
|
58
|
+
checklist: .sniper/checklists/test-review.md
|
|
59
|
+
mode: flexible
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
team_name: sniper-workspace-feature
|
|
2
|
+
phase: workspace-feature
|
|
3
|
+
|
|
4
|
+
teammates:
|
|
5
|
+
- name: orchestrator
|
|
6
|
+
compose:
|
|
7
|
+
process: workspace-orchestrator
|
|
8
|
+
technical: null
|
|
9
|
+
cognitive: systems-thinker
|
|
10
|
+
domain: null
|
|
11
|
+
tasks:
|
|
12
|
+
- id: workspace-brief
|
|
13
|
+
name: "Workspace Feature Brief"
|
|
14
|
+
output: "features/WKSP-{XXXX}/brief.md"
|
|
15
|
+
template: ".sniper/templates/workspace-brief.md"
|
|
16
|
+
reads:
|
|
17
|
+
- "workspace.yaml"
|
|
18
|
+
- "repositories/*/docs/architecture.md"
|
|
19
|
+
plan_approval: true
|
|
20
|
+
description: >
|
|
21
|
+
Analyze the workspace to determine which repositories are affected by the
|
|
22
|
+
feature. Read each repo's architecture docs. Produce a workspace feature
|
|
23
|
+
brief that identifies affected repos, required interface changes, and
|
|
24
|
+
implementation wave ordering based on the dependency graph.
|
|
25
|
+
|
|
26
|
+
- id: cross-repo-plan
|
|
27
|
+
name: "Cross-Repo Implementation Plan"
|
|
28
|
+
output: "features/WKSP-{XXXX}/plan.md"
|
|
29
|
+
template: ".sniper/templates/workspace-plan.md"
|
|
30
|
+
reads:
|
|
31
|
+
- "features/WKSP-{XXXX}/brief.md"
|
|
32
|
+
- "contracts/"
|
|
33
|
+
blocked_by: [contract-generation]
|
|
34
|
+
plan_approval: true
|
|
35
|
+
description: >
|
|
36
|
+
After contracts are designed, produce the cross-repo implementation plan.
|
|
37
|
+
Break down work per repository, define sprint wave ordering, and specify
|
|
38
|
+
integration validation criteria between waves.
|
|
39
|
+
|
|
40
|
+
- name: contract-designer
|
|
41
|
+
compose:
|
|
42
|
+
process: contract-designer
|
|
43
|
+
technical: api-design
|
|
44
|
+
cognitive: systems-thinker
|
|
45
|
+
domain: null
|
|
46
|
+
tasks:
|
|
47
|
+
- id: contract-generation
|
|
48
|
+
name: "Interface Contract Design"
|
|
49
|
+
output: "contracts/"
|
|
50
|
+
template: ".sniper/templates/contract.yaml"
|
|
51
|
+
reads:
|
|
52
|
+
- "features/WKSP-{XXXX}/brief.md"
|
|
53
|
+
- "contracts/"
|
|
54
|
+
- "repositories/*/docs/architecture.md"
|
|
55
|
+
blocked_by: [workspace-brief]
|
|
56
|
+
plan_approval: true
|
|
57
|
+
description: >
|
|
58
|
+
Based on the workspace feature brief, design interface contracts for
|
|
59
|
+
all cross-repo communication. Define API endpoints with full schemas,
|
|
60
|
+
shared type specifications, and event contracts. Version appropriately
|
|
61
|
+
and ensure each side can be implemented independently.
|
|
62
|
+
|
|
63
|
+
coordination:
|
|
64
|
+
- between: [orchestrator, contract-designer]
|
|
65
|
+
topic: "Interface boundaries and contract scope — what needs formal contracts vs. what can be informal"
|
|
66
|
+
|
|
67
|
+
review_gate:
|
|
68
|
+
checklist: ".sniper/checklists/workspace-review.md"
|
|
69
|
+
mode: strict
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
team_name: sniper-workspace-validation
|
|
2
|
+
phase: workspace-validation
|
|
3
|
+
|
|
4
|
+
teammates:
|
|
5
|
+
- name: validator
|
|
6
|
+
compose:
|
|
7
|
+
process: integration-validator
|
|
8
|
+
technical: backend
|
|
9
|
+
cognitive: devils-advocate
|
|
10
|
+
domain: null
|
|
11
|
+
tasks:
|
|
12
|
+
- id: contract-validation
|
|
13
|
+
name: "Contract Compliance Validation"
|
|
14
|
+
output: "features/WKSP-{XXXX}/validation-wave-{N}.md"
|
|
15
|
+
template: ".sniper/templates/contract-validation-report.md"
|
|
16
|
+
reads:
|
|
17
|
+
- "contracts/"
|
|
18
|
+
- "repositories/*/src/"
|
|
19
|
+
description: >
|
|
20
|
+
Validate that each repository's implementation matches the agreed-upon
|
|
21
|
+
contracts. Check API endpoints, shared types, and event schemas. Report
|
|
22
|
+
pass/fail for each contract item with specific mismatch details. Generate
|
|
23
|
+
fix stories for any failures.
|
|
24
|
+
|
|
25
|
+
coordination: []
|
|
26
|
+
|
|
27
|
+
review_gate: null
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Architecture Delta: {title}
|
|
2
|
+
|
|
3
|
+
> **Feature ID:** SNPR-{XXXX}
|
|
4
|
+
> **Version:** 1
|
|
5
|
+
> **Status:** Draft
|
|
6
|
+
> **Date:** {date}
|
|
7
|
+
> **Author:** Feature Planning Team — Architect
|
|
8
|
+
> **Base Architecture:** `docs/architecture.md` (version {N})
|
|
9
|
+
> **Change Log:**
|
|
10
|
+
> - v1 ({date}): Initial version
|
|
11
|
+
|
|
12
|
+
## Summary of Changes
|
|
13
|
+
<!-- sniper:managed:summary:start -->
|
|
14
|
+
<!-- 2-3 sentence overview of what changes to the architecture -->
|
|
15
|
+
<!-- sniper:managed:summary:end -->
|
|
16
|
+
|
|
17
|
+
## New Components
|
|
18
|
+
<!-- sniper:managed:new-components:start -->
|
|
19
|
+
<!-- Components being added to the system -->
|
|
20
|
+
|
|
21
|
+
### {Component Name}
|
|
22
|
+
- **Responsibility:**
|
|
23
|
+
- **Interfaces:**
|
|
24
|
+
- **Dependencies:**
|
|
25
|
+
|
|
26
|
+
<!-- sniper:managed:new-components:end -->
|
|
27
|
+
|
|
28
|
+
## Modified Components
|
|
29
|
+
<!-- sniper:managed:modified-components:start -->
|
|
30
|
+
<!-- Existing components that need changes -->
|
|
31
|
+
|
|
32
|
+
### {Existing Component Name}
|
|
33
|
+
- **Current behavior:**
|
|
34
|
+
- **New behavior:**
|
|
35
|
+
- **Migration notes:**
|
|
36
|
+
|
|
37
|
+
<!-- sniper:managed:modified-components:end -->
|
|
38
|
+
|
|
39
|
+
## New Data Models
|
|
40
|
+
<!-- sniper:managed:new-data-models:start -->
|
|
41
|
+
<!-- New entities or modified schemas -->
|
|
42
|
+
|
|
43
|
+
| Field | Type | Constraints | Index | Notes |
|
|
44
|
+
|-------|------|------------|-------|-------|
|
|
45
|
+
| | | | | |
|
|
46
|
+
|
|
47
|
+
<!-- sniper:managed:new-data-models:end -->
|
|
48
|
+
|
|
49
|
+
## New/Modified API Endpoints
|
|
50
|
+
<!-- sniper:managed:api-endpoints:start -->
|
|
51
|
+
```
|
|
52
|
+
METHOD /api/v1/{resource}
|
|
53
|
+
Request: { }
|
|
54
|
+
Response: { }
|
|
55
|
+
Status Codes: 200, 400, 401, 404, 500
|
|
56
|
+
Auth: Required
|
|
57
|
+
```
|
|
58
|
+
<!-- sniper:managed:api-endpoints:end -->
|
|
59
|
+
|
|
60
|
+
## Infrastructure Changes
|
|
61
|
+
<!-- sniper:managed:infrastructure:start -->
|
|
62
|
+
<!-- Any new services, queues, caches, etc. -->
|
|
63
|
+
<!-- sniper:managed:infrastructure:end -->
|
|
64
|
+
|
|
65
|
+
## Patterns to Follow
|
|
66
|
+
<!-- sniper:managed:patterns:start -->
|
|
67
|
+
<!-- Reference existing architecture patterns that should be followed -->
|
|
68
|
+
<!-- From docs/conventions.md if available -->
|
|
69
|
+
<!-- sniper:managed:patterns:end -->
|
|
70
|
+
|
|
71
|
+
## Risks
|
|
72
|
+
<!-- sniper:managed:risks:start -->
|
|
73
|
+
<!-- Architecture risks specific to this feature -->
|
|
74
|
+
<!-- sniper:managed:risks:end -->
|
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
# System Architecture: {project_name}
|
|
2
2
|
|
|
3
|
+
> **Version:** 1
|
|
3
4
|
> **Status:** Draft
|
|
5
|
+
> **Last Updated:** {date}
|
|
4
6
|
> **Author:** Planning Team — Architect
|
|
5
|
-
> **Date:** {date}
|
|
6
7
|
> **Source:** `docs/prd.md`, `docs/brief.md`
|
|
8
|
+
> **Change Log:**
|
|
9
|
+
> - v1 ({date}): Initial version
|
|
7
10
|
|
|
8
11
|
## 1. Architecture Overview
|
|
12
|
+
<!-- sniper:managed:overview:start -->
|
|
9
13
|
<!-- High-level system description. Include an ASCII or Mermaid component diagram. -->
|
|
14
|
+
<!-- sniper:managed:overview:end -->
|
|
10
15
|
|
|
11
16
|
## 2. Technology Choices
|
|
17
|
+
<!-- sniper:managed:technology-choices:start -->
|
|
12
18
|
| Component | Choice | Why | Alternatives Considered |
|
|
13
19
|
|-----------|--------|-----|------------------------|
|
|
14
20
|
| Language | | | |
|
|
@@ -18,24 +24,30 @@
|
|
|
18
24
|
| Cache | | | |
|
|
19
25
|
| Queue | | | |
|
|
20
26
|
| Infrastructure | | | |
|
|
27
|
+
<!-- sniper:managed:technology-choices:end -->
|
|
21
28
|
|
|
22
29
|
## 3. Component Architecture
|
|
30
|
+
<!-- sniper:managed:components:start -->
|
|
23
31
|
<!-- Describe each major component, its responsibility, and its interfaces -->
|
|
24
32
|
|
|
25
33
|
### 3.1 {Component Name}
|
|
26
34
|
- **Responsibility:**
|
|
27
35
|
- **Interfaces:**
|
|
28
36
|
- **Dependencies:**
|
|
37
|
+
<!-- sniper:managed:components:end -->
|
|
29
38
|
|
|
30
39
|
## 4. Data Models
|
|
40
|
+
<!-- sniper:managed:data-models:start -->
|
|
31
41
|
<!-- Entity-relationship descriptions with field types, constraints, indexes -->
|
|
32
42
|
|
|
33
43
|
### 4.1 {Entity Name}
|
|
34
44
|
| Field | Type | Constraints | Index | Notes |
|
|
35
45
|
|-------|------|------------|-------|-------|
|
|
36
46
|
| | | | | |
|
|
47
|
+
<!-- sniper:managed:data-models:end -->
|
|
37
48
|
|
|
38
49
|
## 5. API Contracts
|
|
50
|
+
<!-- sniper:managed:api-contracts:start -->
|
|
39
51
|
<!-- RESTful endpoints with methods, paths, request/response payloads -->
|
|
40
52
|
|
|
41
53
|
### 5.1 {Resource}
|
|
@@ -46,27 +58,38 @@ Response: { }
|
|
|
46
58
|
Status Codes: 200, 400, 401, 404, 500
|
|
47
59
|
Auth: Required
|
|
48
60
|
```
|
|
61
|
+
<!-- sniper:managed:api-contracts:end -->
|
|
49
62
|
|
|
50
63
|
## 6. Infrastructure Topology
|
|
64
|
+
<!-- sniper:managed:infrastructure:start -->
|
|
51
65
|
<!-- Compute, storage, networking, scaling strategy -->
|
|
66
|
+
<!-- sniper:managed:infrastructure:end -->
|
|
52
67
|
|
|
53
68
|
## 7. Cross-Cutting Concerns
|
|
54
69
|
|
|
70
|
+
<!-- sniper:managed:cross-cutting:start -->
|
|
55
71
|
### 7.1 Authentication & Authorization
|
|
56
72
|
### 7.2 Logging & Monitoring
|
|
57
73
|
### 7.3 Error Handling
|
|
58
74
|
### 7.4 Configuration Management
|
|
75
|
+
<!-- sniper:managed:cross-cutting:end -->
|
|
59
76
|
|
|
60
77
|
## 8. Non-Functional Requirements
|
|
78
|
+
<!-- sniper:managed:nfr:start -->
|
|
61
79
|
| Requirement | Target | Strategy |
|
|
62
80
|
|-------------|--------|----------|
|
|
63
81
|
| Response time (p95) | | |
|
|
64
82
|
| Availability | | |
|
|
65
83
|
| Throughput | | |
|
|
66
84
|
| Data retention | | |
|
|
85
|
+
<!-- sniper:managed:nfr:end -->
|
|
67
86
|
|
|
68
87
|
## 9. Migration & Deployment Strategy
|
|
88
|
+
<!-- sniper:managed:deployment:start -->
|
|
69
89
|
<!-- How the system gets deployed. CI/CD, blue-green, rollback strategy. -->
|
|
90
|
+
<!-- sniper:managed:deployment:end -->
|
|
70
91
|
|
|
71
92
|
## 10. Security Architecture
|
|
93
|
+
<!-- sniper:managed:security:start -->
|
|
72
94
|
<!-- Reference docs/security.md for detailed security requirements -->
|
|
95
|
+
<!-- sniper:managed:security:end -->
|
|
@@ -1,17 +1,25 @@
|
|
|
1
1
|
# Project Brief: {project_name}
|
|
2
2
|
|
|
3
|
+
> **Version:** 1
|
|
3
4
|
> **Status:** Draft
|
|
5
|
+
> **Last Updated:** {date}
|
|
4
6
|
> **Author:** Discovery Team — Analyst
|
|
5
|
-
> **
|
|
7
|
+
> **Change Log:**
|
|
8
|
+
> - v1 ({date}): Initial version
|
|
6
9
|
|
|
7
10
|
## Executive Summary
|
|
11
|
+
<!-- sniper:managed:executive-summary:start -->
|
|
8
12
|
<!-- 2-3 sentence overview of the project and its value proposition -->
|
|
13
|
+
<!-- sniper:managed:executive-summary:end -->
|
|
9
14
|
|
|
10
15
|
## Problem Statement
|
|
16
|
+
<!-- sniper:managed:problem-statement:start -->
|
|
11
17
|
<!-- What problem does this solve? Who has this problem? How is it currently solved? -->
|
|
18
|
+
<!-- sniper:managed:problem-statement:end -->
|
|
12
19
|
|
|
13
20
|
## Market Landscape
|
|
14
21
|
|
|
22
|
+
<!-- sniper:managed:market-landscape:start -->
|
|
15
23
|
### Direct Competitors
|
|
16
24
|
| Competitor | Key Features | Pricing | Market Position | Weaknesses |
|
|
17
25
|
|-----------|-------------|---------|-----------------|------------|
|
|
@@ -19,25 +27,35 @@
|
|
|
19
27
|
|
|
20
28
|
### Indirect Competitors / Alternatives
|
|
21
29
|
<!-- How are users solving this problem today without a dedicated tool? -->
|
|
30
|
+
<!-- sniper:managed:market-landscape:end -->
|
|
22
31
|
|
|
23
32
|
## Target Market
|
|
33
|
+
<!-- sniper:managed:target-market:start -->
|
|
24
34
|
- **Primary segment:** <!-- Who is the ideal customer? -->
|
|
25
35
|
- **Market size:** <!-- TAM/SAM/SOM estimates if available -->
|
|
26
36
|
- **Growth trends:** <!-- Is this market growing? Why? -->
|
|
37
|
+
<!-- sniper:managed:target-market:end -->
|
|
27
38
|
|
|
28
39
|
## Unique Value Proposition
|
|
40
|
+
<!-- sniper:managed:value-proposition:start -->
|
|
29
41
|
<!-- What makes this product different from everything else? Be specific. -->
|
|
42
|
+
<!-- sniper:managed:value-proposition:end -->
|
|
30
43
|
|
|
31
44
|
## Key Assumptions
|
|
45
|
+
<!-- sniper:managed:assumptions:start -->
|
|
32
46
|
<!-- List assumptions that need validation. These are things you believe but haven't proven. -->
|
|
33
47
|
1.
|
|
34
48
|
2.
|
|
35
49
|
3.
|
|
50
|
+
<!-- sniper:managed:assumptions:end -->
|
|
36
51
|
|
|
37
52
|
## Technical Constraints
|
|
53
|
+
<!-- sniper:managed:technical-constraints:start -->
|
|
38
54
|
<!-- Known technical limitations, required integrations, regulatory requirements -->
|
|
55
|
+
<!-- sniper:managed:technical-constraints:end -->
|
|
39
56
|
|
|
40
57
|
## Initial Scope Recommendation
|
|
58
|
+
<!-- sniper:managed:scope:start -->
|
|
41
59
|
<!-- What should v1 include? What should it NOT include? -->
|
|
42
60
|
|
|
43
61
|
### In Scope (v1)
|
|
@@ -45,8 +63,11 @@
|
|
|
45
63
|
|
|
46
64
|
### Out of Scope (v1)
|
|
47
65
|
-
|
|
66
|
+
<!-- sniper:managed:scope:end -->
|
|
48
67
|
|
|
49
68
|
## Open Questions
|
|
69
|
+
<!-- sniper:managed:open-questions:start -->
|
|
50
70
|
<!-- Questions that need answers before planning can begin -->
|
|
51
71
|
1.
|
|
52
72
|
2.
|
|
73
|
+
<!-- sniper:managed:open-questions:end -->
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Bug Report: {title}
|
|
2
|
+
|
|
3
|
+
> **Bug ID:** BUG-{NNN}
|
|
4
|
+
> **Severity:** {critical/high/medium/low}
|
|
5
|
+
> **Status:** Triaging
|
|
6
|
+
> **Date:** {date}
|
|
7
|
+
> **Author:** Triage Lead
|
|
8
|
+
> **Source:** {user description / GitHub issue GH-{NNN}}
|
|
9
|
+
|
|
10
|
+
## Bug Summary
|
|
11
|
+
<!-- sniper:managed:summary:start -->
|
|
12
|
+
<!-- One-paragraph description of the observed behavior -->
|
|
13
|
+
<!-- sniper:managed:summary:end -->
|
|
14
|
+
|
|
15
|
+
## Severity Assessment
|
|
16
|
+
<!-- sniper:managed:severity:start -->
|
|
17
|
+
<!-- Severity level with justification based on user impact -->
|
|
18
|
+
<!-- sniper:managed:severity:end -->
|
|
19
|
+
|
|
20
|
+
## Affected Components
|
|
21
|
+
<!-- sniper:managed:affected-components:start -->
|
|
22
|
+
|
|
23
|
+
| Component | Impact | Notes |
|
|
24
|
+
|-----------|--------|-------|
|
|
25
|
+
| | Direct / Indirect | |
|
|
26
|
+
|
|
27
|
+
<!-- sniper:managed:affected-components:end -->
|
|
28
|
+
|
|
29
|
+
## Reproduction Steps
|
|
30
|
+
<!-- sniper:managed:reproduction:start -->
|
|
31
|
+
<!-- Inferred from bug description. Note "Unable to determine" for unknown steps -->
|
|
32
|
+
1.
|
|
33
|
+
<!-- sniper:managed:reproduction:end -->
|
|
34
|
+
|
|
35
|
+
## Error Context
|
|
36
|
+
<!-- sniper:managed:error-context:start -->
|
|
37
|
+
<!-- Error messages, stack traces, affected endpoints, HTTP status codes -->
|
|
38
|
+
<!-- sniper:managed:error-context:end -->
|
|
39
|
+
|
|
40
|
+
## Hypothesis
|
|
41
|
+
<!-- sniper:managed:hypothesis:start -->
|
|
42
|
+
<!-- Initial theory about what might be causing the issue -->
|
|
43
|
+
<!-- sniper:managed:hypothesis:end -->
|
|
44
|
+
|
|
45
|
+
## Investigation Plan
|
|
46
|
+
<!-- sniper:managed:investigation-plan:start -->
|
|
47
|
+
<!-- What the investigation team should look at -->
|
|
48
|
+
|
|
49
|
+
### For Log Analyst
|
|
50
|
+
-
|
|
51
|
+
|
|
52
|
+
### For Code Investigator
|
|
53
|
+
-
|
|
54
|
+
|
|
55
|
+
<!-- sniper:managed:investigation-plan:end -->
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Contract Validation Report
|
|
2
|
+
|
|
3
|
+
> **Feature:** WKSP-{XXXX}
|
|
4
|
+
> **Wave:** {N}
|
|
5
|
+
> **Date:** {date}
|
|
6
|
+
> **Validator:** Integration Validator
|
|
7
|
+
|
|
8
|
+
## Summary
|
|
9
|
+
<!-- sniper:managed:summary:start -->
|
|
10
|
+
| Metric | Count |
|
|
11
|
+
|--------|-------|
|
|
12
|
+
| Contracts validated | 0 |
|
|
13
|
+
| Endpoints checked | 0 |
|
|
14
|
+
| Shared types checked | 0 |
|
|
15
|
+
| Events checked | 0 |
|
|
16
|
+
| **Passed** | 0 |
|
|
17
|
+
| **Failed** | 0 |
|
|
18
|
+
| **Warnings** | 0 |
|
|
19
|
+
<!-- sniper:managed:summary:end -->
|
|
20
|
+
|
|
21
|
+
## Contract Results
|
|
22
|
+
<!-- sniper:managed:contract-results:start -->
|
|
23
|
+
|
|
24
|
+
### {contract-name} (v{version})
|
|
25
|
+
|
|
26
|
+
#### Endpoints
|
|
27
|
+
| Endpoint | Method | Status | Notes |
|
|
28
|
+
|----------|--------|--------|-------|
|
|
29
|
+
| | | ✅ / ❌ | |
|
|
30
|
+
|
|
31
|
+
#### Shared Types
|
|
32
|
+
| Type | Owner | Status | Notes |
|
|
33
|
+
|------|-------|--------|-------|
|
|
34
|
+
| | | ✅ / ❌ | |
|
|
35
|
+
|
|
36
|
+
#### Events
|
|
37
|
+
| Event | Producer | Status | Notes |
|
|
38
|
+
|-------|----------|--------|-------|
|
|
39
|
+
| | | ✅ / ❌ | |
|
|
40
|
+
|
|
41
|
+
<!-- sniper:managed:contract-results:end -->
|
|
42
|
+
|
|
43
|
+
## Mismatches
|
|
44
|
+
<!-- sniper:managed:mismatches:start -->
|
|
45
|
+
|
|
46
|
+
### {mismatch-title}
|
|
47
|
+
- **Contract:** {what the contract specifies}
|
|
48
|
+
- **Actual:** {what the implementation does}
|
|
49
|
+
- **Location:** `{repo}/{file}:{line}`
|
|
50
|
+
- **Severity:** Breaking / Non-Breaking
|
|
51
|
+
- **Fix:** {what needs to change}
|
|
52
|
+
|
|
53
|
+
<!-- sniper:managed:mismatches:end -->
|
|
54
|
+
|
|
55
|
+
## Fix Stories
|
|
56
|
+
<!-- sniper:managed:fix-stories:start -->
|
|
57
|
+
| Repo | Story Title | Priority |
|
|
58
|
+
|------|-------------|----------|
|
|
59
|
+
| | | |
|
|
60
|
+
<!-- sniper:managed:fix-stories:end -->
|
|
61
|
+
|
|
62
|
+
## Verdict
|
|
63
|
+
<!-- sniper:managed:verdict:start -->
|
|
64
|
+
**{PASS / FAIL}** — {summary statement}
|
|
65
|
+
|
|
66
|
+
{If FAIL: "The following must be resolved before Wave {N+1} can begin."}
|
|
67
|
+
{If PASS: "All contracts validated. Wave {N+1} may proceed."}
|
|
68
|
+
<!-- sniper:managed:verdict:end -->
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Interface Contract Template
|
|
2
|
+
# Produced by: contract-designer
|
|
3
|
+
# Consumed by: per-repo feature leads, integration-validator
|
|
4
|
+
|
|
5
|
+
contract:
|
|
6
|
+
name: "" # e.g., api-web, api-shared
|
|
7
|
+
between: [] # e.g., [api-service, web-app]
|
|
8
|
+
version: "1.0.0" # semver — breaking changes increment major
|
|
9
|
+
last_updated: "" # ISO 8601 date
|
|
10
|
+
updated_by: "" # WKSP-XXXX feature that created/modified this
|
|
11
|
+
|
|
12
|
+
# REST API endpoints
|
|
13
|
+
endpoints:
|
|
14
|
+
# - path: /api/v1/resource
|
|
15
|
+
# method: GET | POST | PUT | PATCH | DELETE
|
|
16
|
+
# description: ""
|
|
17
|
+
# request_body: # For POST/PUT/PATCH
|
|
18
|
+
# type: object
|
|
19
|
+
# properties:
|
|
20
|
+
# field_name:
|
|
21
|
+
# type: string | number | boolean | object | array
|
|
22
|
+
# required: true | false
|
|
23
|
+
# description: ""
|
|
24
|
+
# query_params: # For GET
|
|
25
|
+
# - name: ""
|
|
26
|
+
# type: string
|
|
27
|
+
# required: false
|
|
28
|
+
# response:
|
|
29
|
+
# 200:
|
|
30
|
+
# type: object
|
|
31
|
+
# properties: {}
|
|
32
|
+
# 400:
|
|
33
|
+
# type: object
|
|
34
|
+
# properties:
|
|
35
|
+
# error: { type: string }
|
|
36
|
+
# 404:
|
|
37
|
+
# type: object
|
|
38
|
+
# properties:
|
|
39
|
+
# error: { type: string }
|
|
40
|
+
[]
|
|
41
|
+
|
|
42
|
+
# Shared type definitions
|
|
43
|
+
shared_types:
|
|
44
|
+
# - name: TypeName
|
|
45
|
+
# repo: shared-lib # Which repo owns and exports this type
|
|
46
|
+
# path: src/types/type-name.ts # File path within the owning repo
|
|
47
|
+
# definition: # TypeScript-style type shape
|
|
48
|
+
# field: "type"
|
|
49
|
+
[]
|
|
50
|
+
|
|
51
|
+
# Asynchronous event contracts
|
|
52
|
+
events:
|
|
53
|
+
# - name: entity.action.completed # e.g., user.preferences.updated
|
|
54
|
+
# producer: api-service # Which repo emits this event
|
|
55
|
+
# consumers: [web-app] # Which repos listen for this event
|
|
56
|
+
# payload:
|
|
57
|
+
# field:
|
|
58
|
+
# type: string
|
|
59
|
+
# description: ""
|
|
60
|
+
[]
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Coding Conventions: {project_name}
|
|
2
|
+
|
|
3
|
+
> **Version:** 1
|
|
4
|
+
> **Status:** Draft
|
|
5
|
+
> **Last Updated:** {date}
|
|
6
|
+
> **Author:** Ingestion Team — Convention Miner
|
|
7
|
+
> **Source:** Extracted from codebase analysis
|
|
8
|
+
> **Change Log:**
|
|
9
|
+
> - v1 ({date}): Initial version
|
|
10
|
+
|
|
11
|
+
## Naming Conventions
|
|
12
|
+
<!-- sniper:managed:naming:start -->
|
|
13
|
+
<!-- Variable naming (camelCase/snake_case), file naming, directory naming, exported symbols -->
|
|
14
|
+
<!-- Include code examples from the actual codebase -->
|
|
15
|
+
<!-- sniper:managed:naming:end -->
|
|
16
|
+
|
|
17
|
+
## Code Organization
|
|
18
|
+
<!-- sniper:managed:code-org:start -->
|
|
19
|
+
<!-- How files are structured within directories, barrel exports, index files, feature-based vs layer-based -->
|
|
20
|
+
<!-- sniper:managed:code-org:end -->
|
|
21
|
+
|
|
22
|
+
## Error Handling Patterns
|
|
23
|
+
<!-- sniper:managed:error-handling:start -->
|
|
24
|
+
<!-- Custom error classes, error codes, error boundaries, try/catch patterns -->
|
|
25
|
+
<!-- Include code examples -->
|
|
26
|
+
<!-- sniper:managed:error-handling:end -->
|
|
27
|
+
|
|
28
|
+
## Testing Patterns
|
|
29
|
+
<!-- sniper:managed:testing:start -->
|
|
30
|
+
<!-- Test file location, test naming, mock patterns, fixtures, test utilities -->
|
|
31
|
+
<!-- Include code examples -->
|
|
32
|
+
<!-- sniper:managed:testing:end -->
|
|
33
|
+
|
|
34
|
+
## API Patterns
|
|
35
|
+
<!-- sniper:managed:api-patterns:start -->
|
|
36
|
+
<!-- Request validation, response formatting, middleware usage, auth checks -->
|
|
37
|
+
<!-- Include code examples -->
|
|
38
|
+
<!-- sniper:managed:api-patterns:end -->
|
|
39
|
+
|
|
40
|
+
## Import & Module Patterns
|
|
41
|
+
<!-- sniper:managed:imports:start -->
|
|
42
|
+
<!-- Absolute vs relative imports, import ordering, path aliases -->
|
|
43
|
+
<!-- Include code examples -->
|
|
44
|
+
<!-- sniper:managed:imports:end -->
|
|
45
|
+
|
|
46
|
+
## Configuration & Environment
|
|
47
|
+
<!-- sniper:managed:config:start -->
|
|
48
|
+
<!-- How env vars are accessed, config files, validation -->
|
|
49
|
+
<!-- Include code examples -->
|
|
50
|
+
<!-- sniper:managed:config:end -->
|
|
51
|
+
|
|
52
|
+
## Logging
|
|
53
|
+
<!-- sniper:managed:logging:start -->
|
|
54
|
+
<!-- Logging library, log levels, structured logging patterns -->
|
|
55
|
+
<!-- Include code examples -->
|
|
56
|
+
<!-- sniper:managed:logging:end -->
|
|
57
|
+
|
|
58
|
+
## Additional Conventions
|
|
59
|
+
<!-- Add project-specific conventions not covered above -->
|