shipwright-cli 3.2.0 → 3.3.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/.claude/agents/code-reviewer.md +2 -0
- package/.claude/agents/devops-engineer.md +2 -0
- package/.claude/agents/doc-fleet-agent.md +2 -0
- package/.claude/agents/pipeline-agent.md +2 -0
- package/.claude/agents/shell-script-specialist.md +2 -0
- package/.claude/agents/test-specialist.md +2 -0
- package/.claude/hooks/agent-crash-capture.sh +32 -0
- package/.claude/hooks/post-tool-use.sh +3 -2
- package/.claude/hooks/pre-tool-use.sh +35 -3
- package/README.md +4 -4
- package/claude-code/hooks/config-change.sh +18 -0
- package/claude-code/hooks/instructions-reloaded.sh +7 -0
- package/claude-code/hooks/worktree-create.sh +25 -0
- package/claude-code/hooks/worktree-remove.sh +20 -0
- package/config/code-constitution.json +130 -0
- package/dashboard/middleware/auth.ts +134 -0
- package/dashboard/middleware/constants.ts +21 -0
- package/dashboard/public/index.html +2 -6
- package/dashboard/public/styles.css +100 -97
- package/dashboard/routes/auth.ts +38 -0
- package/dashboard/server.ts +66 -25
- package/dashboard/services/config.ts +26 -0
- package/dashboard/services/db.ts +118 -0
- package/dashboard/src/canvas/pixel-agent.ts +298 -0
- package/dashboard/src/canvas/pixel-sprites.ts +440 -0
- package/dashboard/src/canvas/shipyard-effects.ts +367 -0
- package/dashboard/src/canvas/shipyard-scene.ts +616 -0
- package/dashboard/src/canvas/submarine-layout.ts +267 -0
- package/dashboard/src/components/header.ts +8 -7
- package/dashboard/src/core/router.ts +1 -0
- package/dashboard/src/design/submarine-theme.ts +253 -0
- package/dashboard/src/main.ts +2 -0
- package/dashboard/src/types/api.ts +2 -1
- package/dashboard/src/views/activity.ts +2 -1
- package/dashboard/src/views/shipyard.ts +39 -0
- package/dashboard/types/index.ts +166 -0
- package/docs/plans/2026-02-28-compound-audit-and-shipyard-design.md +186 -0
- package/docs/plans/2026-02-28-skipper-shipwright-implementation-plan.md +1182 -0
- package/docs/plans/2026-02-28-skipper-shipwright-integration-design.md +531 -0
- package/docs/plans/2026-03-01-ai-powered-skill-injection-design.md +298 -0
- package/docs/plans/2026-03-01-ai-powered-skill-injection-plan.md +1109 -0
- package/docs/plans/2026-03-01-capabilities-cleanup-plan.md +658 -0
- package/docs/plans/2026-03-01-clean-architecture-plan.md +924 -0
- package/docs/plans/2026-03-01-compound-audit-cascade-design.md +191 -0
- package/docs/plans/2026-03-01-compound-audit-cascade-plan.md +921 -0
- package/docs/plans/2026-03-01-deep-integration-plan.md +851 -0
- package/docs/plans/2026-03-01-pipeline-audit-trail-design.md +145 -0
- package/docs/plans/2026-03-01-pipeline-audit-trail-plan.md +770 -0
- package/docs/plans/2026-03-01-refined-depths-brand-design.md +382 -0
- package/docs/plans/2026-03-01-refined-depths-implementation.md +599 -0
- package/docs/plans/2026-03-01-skipper-kernel-integration-design.md +203 -0
- package/docs/plans/2026-03-01-unified-platform-design.md +272 -0
- package/docs/plans/2026-03-07-claude-code-feature-integration-design.md +189 -0
- package/docs/plans/2026-03-07-claude-code-feature-integration-plan.md +1165 -0
- package/docs/research/BACKLOG_QUICK_REFERENCE.md +352 -0
- package/docs/research/CUTTING_EDGE_RESEARCH_2026.md +546 -0
- package/docs/research/RESEARCH_INDEX.md +439 -0
- package/docs/research/RESEARCH_SOURCES.md +440 -0
- package/docs/research/RESEARCH_SUMMARY.txt +275 -0
- package/docs/superpowers/specs/2026-03-10-pipeline-quality-revolution-design.md +341 -0
- package/package.json +2 -2
- package/scripts/lib/adaptive-model.sh +427 -0
- package/scripts/lib/adaptive-timeout.sh +316 -0
- package/scripts/lib/audit-trail.sh +309 -0
- package/scripts/lib/auto-recovery.sh +471 -0
- package/scripts/lib/bandit-selector.sh +431 -0
- package/scripts/lib/bootstrap.sh +104 -2
- package/scripts/lib/causal-graph.sh +455 -0
- package/scripts/lib/compat.sh +126 -0
- package/scripts/lib/compound-audit.sh +337 -0
- package/scripts/lib/constitutional.sh +454 -0
- package/scripts/lib/context-budget.sh +359 -0
- package/scripts/lib/convergence.sh +594 -0
- package/scripts/lib/cost-optimizer.sh +634 -0
- package/scripts/lib/daemon-adaptive.sh +10 -0
- package/scripts/lib/daemon-dispatch.sh +106 -17
- package/scripts/lib/daemon-failure.sh +34 -4
- package/scripts/lib/daemon-patrol.sh +23 -2
- package/scripts/lib/daemon-poll-github.sh +361 -0
- package/scripts/lib/daemon-poll-health.sh +299 -0
- package/scripts/lib/daemon-poll.sh +27 -611
- package/scripts/lib/daemon-state.sh +112 -66
- package/scripts/lib/daemon-triage.sh +10 -0
- package/scripts/lib/dod-scorecard.sh +442 -0
- package/scripts/lib/error-actionability.sh +300 -0
- package/scripts/lib/formal-spec.sh +461 -0
- package/scripts/lib/helpers.sh +177 -4
- package/scripts/lib/intent-analysis.sh +409 -0
- package/scripts/lib/loop-convergence.sh +350 -0
- package/scripts/lib/loop-iteration.sh +682 -0
- package/scripts/lib/loop-progress.sh +48 -0
- package/scripts/lib/loop-restart.sh +185 -0
- package/scripts/lib/memory-effectiveness.sh +506 -0
- package/scripts/lib/mutation-executor.sh +352 -0
- package/scripts/lib/outcome-feedback.sh +521 -0
- package/scripts/lib/pipeline-cli.sh +336 -0
- package/scripts/lib/pipeline-commands.sh +1216 -0
- package/scripts/lib/pipeline-detection.sh +100 -2
- package/scripts/lib/pipeline-execution.sh +897 -0
- package/scripts/lib/pipeline-github.sh +28 -3
- package/scripts/lib/pipeline-intelligence-compound.sh +431 -0
- package/scripts/lib/pipeline-intelligence-scoring.sh +407 -0
- package/scripts/lib/pipeline-intelligence-skip.sh +181 -0
- package/scripts/lib/pipeline-intelligence.sh +100 -1136
- package/scripts/lib/pipeline-quality-bash-compat.sh +182 -0
- package/scripts/lib/pipeline-quality-checks.sh +17 -715
- package/scripts/lib/pipeline-quality-gates.sh +563 -0
- package/scripts/lib/pipeline-stages-build.sh +730 -0
- package/scripts/lib/pipeline-stages-delivery.sh +965 -0
- package/scripts/lib/pipeline-stages-intake.sh +1133 -0
- package/scripts/lib/pipeline-stages-monitor.sh +407 -0
- package/scripts/lib/pipeline-stages-review.sh +1022 -0
- package/scripts/lib/pipeline-stages.sh +59 -2929
- package/scripts/lib/pipeline-state.sh +36 -5
- package/scripts/lib/pipeline-util.sh +487 -0
- package/scripts/lib/policy-learner.sh +438 -0
- package/scripts/lib/process-reward.sh +493 -0
- package/scripts/lib/project-detect.sh +649 -0
- package/scripts/lib/quality-profile.sh +334 -0
- package/scripts/lib/recruit-commands.sh +885 -0
- package/scripts/lib/recruit-learning.sh +739 -0
- package/scripts/lib/recruit-roles.sh +648 -0
- package/scripts/lib/reward-aggregator.sh +458 -0
- package/scripts/lib/rl-optimizer.sh +362 -0
- package/scripts/lib/root-cause.sh +427 -0
- package/scripts/lib/scope-enforcement.sh +445 -0
- package/scripts/lib/session-restart.sh +493 -0
- package/scripts/lib/skill-memory.sh +300 -0
- package/scripts/lib/skill-registry.sh +775 -0
- package/scripts/lib/spec-driven.sh +476 -0
- package/scripts/lib/test-helpers.sh +18 -7
- package/scripts/lib/test-holdout.sh +429 -0
- package/scripts/lib/test-optimizer.sh +511 -0
- package/scripts/shipwright-file-suggest.sh +45 -0
- package/scripts/skills/adversarial-quality.md +61 -0
- package/scripts/skills/api-design.md +44 -0
- package/scripts/skills/architecture-design.md +50 -0
- package/scripts/skills/brainstorming.md +43 -0
- package/scripts/skills/data-pipeline.md +44 -0
- package/scripts/skills/deploy-safety.md +64 -0
- package/scripts/skills/documentation.md +38 -0
- package/scripts/skills/frontend-design.md +45 -0
- package/scripts/skills/generated/.gitkeep +0 -0
- package/scripts/skills/generated/_refinements/.gitkeep +0 -0
- package/scripts/skills/generated/_refinements/adversarial-quality.patch.md +3 -0
- package/scripts/skills/generated/_refinements/architecture-design.patch.md +3 -0
- package/scripts/skills/generated/_refinements/brainstorming.patch.md +3 -0
- package/scripts/skills/generated/cli-version-management.md +29 -0
- package/scripts/skills/generated/collection-system-validation.md +99 -0
- package/scripts/skills/generated/large-scale-c-refactoring-coordination.md +97 -0
- package/scripts/skills/generated/pattern-matching-similarity-scoring.md +195 -0
- package/scripts/skills/generated/test-parallelization-detection.md +65 -0
- package/scripts/skills/observability.md +79 -0
- package/scripts/skills/performance.md +48 -0
- package/scripts/skills/pr-quality.md +49 -0
- package/scripts/skills/product-thinking.md +43 -0
- package/scripts/skills/security-audit.md +49 -0
- package/scripts/skills/systematic-debugging.md +40 -0
- package/scripts/skills/testing-strategy.md +47 -0
- package/scripts/skills/two-stage-review.md +52 -0
- package/scripts/skills/validation-thoroughness.md +55 -0
- package/scripts/sw +9 -3
- package/scripts/sw-activity.sh +9 -2
- package/scripts/sw-adaptive.sh +2 -1
- package/scripts/sw-adversarial.sh +2 -1
- package/scripts/sw-architecture-enforcer.sh +3 -1
- package/scripts/sw-auth.sh +12 -2
- package/scripts/sw-autonomous.sh +5 -1
- package/scripts/sw-changelog.sh +4 -1
- package/scripts/sw-checkpoint.sh +2 -1
- package/scripts/sw-ci.sh +5 -1
- package/scripts/sw-cleanup.sh +4 -26
- package/scripts/sw-code-review.sh +10 -4
- package/scripts/sw-connect.sh +2 -1
- package/scripts/sw-context.sh +2 -1
- package/scripts/sw-cost.sh +48 -3
- package/scripts/sw-daemon.sh +66 -9
- package/scripts/sw-dashboard.sh +3 -1
- package/scripts/sw-db.sh +59 -16
- package/scripts/sw-decide.sh +8 -2
- package/scripts/sw-decompose.sh +360 -17
- package/scripts/sw-deps.sh +4 -1
- package/scripts/sw-developer-simulation.sh +4 -1
- package/scripts/sw-discovery.sh +325 -2
- package/scripts/sw-doc-fleet.sh +4 -1
- package/scripts/sw-docs-agent.sh +3 -1
- package/scripts/sw-docs.sh +2 -1
- package/scripts/sw-doctor.sh +453 -2
- package/scripts/sw-dora.sh +4 -1
- package/scripts/sw-durable.sh +4 -3
- package/scripts/sw-e2e-orchestrator.sh +17 -16
- package/scripts/sw-eventbus.sh +7 -1
- package/scripts/sw-evidence.sh +364 -12
- package/scripts/sw-feedback.sh +550 -9
- package/scripts/sw-fix.sh +20 -1
- package/scripts/sw-fleet-discover.sh +6 -2
- package/scripts/sw-fleet-viz.sh +4 -1
- package/scripts/sw-fleet.sh +5 -1
- package/scripts/sw-github-app.sh +16 -3
- package/scripts/sw-github-checks.sh +3 -2
- package/scripts/sw-github-deploy.sh +3 -2
- package/scripts/sw-github-graphql.sh +18 -7
- package/scripts/sw-guild.sh +5 -1
- package/scripts/sw-heartbeat.sh +5 -30
- package/scripts/sw-hello.sh +67 -0
- package/scripts/sw-hygiene.sh +6 -1
- package/scripts/sw-incident.sh +265 -1
- package/scripts/sw-init.sh +18 -2
- package/scripts/sw-instrument.sh +10 -2
- package/scripts/sw-intelligence.sh +42 -6
- package/scripts/sw-jira.sh +5 -1
- package/scripts/sw-launchd.sh +2 -1
- package/scripts/sw-linear.sh +4 -1
- package/scripts/sw-logs.sh +4 -1
- package/scripts/sw-loop.sh +432 -1128
- package/scripts/sw-memory.sh +356 -2
- package/scripts/sw-mission-control.sh +6 -1
- package/scripts/sw-model-router.sh +481 -26
- package/scripts/sw-otel.sh +13 -4
- package/scripts/sw-oversight.sh +14 -5
- package/scripts/sw-patrol-meta.sh +334 -0
- package/scripts/sw-pipeline-composer.sh +5 -1
- package/scripts/sw-pipeline-vitals.sh +2 -1
- package/scripts/sw-pipeline.sh +53 -2664
- package/scripts/sw-pm.sh +12 -5
- package/scripts/sw-pr-lifecycle.sh +2 -1
- package/scripts/sw-predictive.sh +7 -1
- package/scripts/sw-prep.sh +185 -2
- package/scripts/sw-ps.sh +5 -25
- package/scripts/sw-public-dashboard.sh +15 -3
- package/scripts/sw-quality.sh +2 -1
- package/scripts/sw-reaper.sh +8 -25
- package/scripts/sw-recruit.sh +156 -2303
- package/scripts/sw-regression.sh +19 -12
- package/scripts/sw-release-manager.sh +3 -1
- package/scripts/sw-release.sh +4 -1
- package/scripts/sw-remote.sh +3 -1
- package/scripts/sw-replay.sh +7 -1
- package/scripts/sw-retro.sh +158 -1
- package/scripts/sw-review-rerun.sh +3 -1
- package/scripts/sw-scale.sh +10 -3
- package/scripts/sw-security-audit.sh +6 -1
- package/scripts/sw-self-optimize.sh +6 -3
- package/scripts/sw-session.sh +9 -3
- package/scripts/sw-setup.sh +3 -1
- package/scripts/sw-stall-detector.sh +406 -0
- package/scripts/sw-standup.sh +15 -7
- package/scripts/sw-status.sh +3 -1
- package/scripts/sw-strategic.sh +4 -1
- package/scripts/sw-stream.sh +7 -1
- package/scripts/sw-swarm.sh +18 -6
- package/scripts/sw-team-stages.sh +13 -6
- package/scripts/sw-templates.sh +5 -29
- package/scripts/sw-testgen.sh +7 -1
- package/scripts/sw-tmux-pipeline.sh +4 -1
- package/scripts/sw-tmux-role-color.sh +2 -0
- package/scripts/sw-tmux-status.sh +1 -1
- package/scripts/sw-tmux.sh +3 -1
- package/scripts/sw-trace.sh +3 -1
- package/scripts/sw-tracker-github.sh +3 -0
- package/scripts/sw-tracker-jira.sh +3 -0
- package/scripts/sw-tracker-linear.sh +3 -0
- package/scripts/sw-tracker.sh +3 -1
- package/scripts/sw-triage.sh +2 -1
- package/scripts/sw-upgrade.sh +3 -1
- package/scripts/sw-ux.sh +5 -2
- package/scripts/sw-webhook.sh +3 -1
- package/scripts/sw-widgets.sh +3 -1
- package/scripts/sw-worktree.sh +15 -3
- package/scripts/test-skill-injection.sh +1233 -0
- package/templates/pipelines/autonomous.json +27 -3
- package/templates/pipelines/cost-aware.json +34 -8
- package/templates/pipelines/deployed.json +12 -0
- package/templates/pipelines/enterprise.json +12 -0
- package/templates/pipelines/fast.json +6 -0
- package/templates/pipelines/full.json +27 -3
- package/templates/pipelines/hotfix.json +6 -0
- package/templates/pipelines/standard.json +12 -0
- package/templates/pipelines/tdd.json +12 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# Pipeline Audit Trail — Design Document
|
|
2
|
+
|
|
3
|
+
## Goal
|
|
4
|
+
|
|
5
|
+
Add structured, compliance-grade audit logging to Shipwright pipelines so every run produces a complete traceability chain: prompt in, plan out, test evidence, audit decisions, and final outcome.
|
|
6
|
+
|
|
7
|
+
## Problem
|
|
8
|
+
|
|
9
|
+
Today the pipeline logs raw output (iteration logs, test stdout, pass/fail verdicts) but has critical gaps:
|
|
10
|
+
|
|
11
|
+
1. **Prompts are discarded** — `compose_prompt()` builds the prompt and passes it directly to `claude -p`. The input is never saved to disk.
|
|
12
|
+
2. **Audit verdicts are opaque** — `audit-iter-N.log` contains ~40 bytes ("verdict · recommendation") with no evidence chain or rationale.
|
|
13
|
+
3. **No cross-stage lineage** — plan.md, design.md, and build output are separate files with no index connecting them.
|
|
14
|
+
4. **Token tracking is incomplete** — `.claude-tokens-*.log` files exist but are often empty.
|
|
15
|
+
|
|
16
|
+
## Architecture
|
|
17
|
+
|
|
18
|
+
### Audit Artifacts (per pipeline run)
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
.claude/pipeline-artifacts/
|
|
22
|
+
├── pipeline-audit.jsonl # Append-only structured event log (crash-safe)
|
|
23
|
+
├── pipeline-audit.json # Consolidated summary (generated at end)
|
|
24
|
+
└── pipeline-audit.md # Human-readable compliance report (generated at end)
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Raw Artifact Preservation
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
.claude/loop-logs/
|
|
31
|
+
├── iteration-N.prompt.txt # NEW: Full prompt text saved before sending to Claude
|
|
32
|
+
├── iteration-N.log # Claude's text response (existing)
|
|
33
|
+
├── iteration-N.json # Claude's JSON response (existing)
|
|
34
|
+
├── test-evidence-iter-N.json # Structured test results (existing)
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Event Types
|
|
38
|
+
|
|
39
|
+
| Event | When | Payload |
|
|
40
|
+
|---|---|---|
|
|
41
|
+
| `pipeline.start` | Pipeline begins | Issue, goal, template, model, stages, git SHA |
|
|
42
|
+
| `stage.start` | Stage begins | Stage name, inputs, config |
|
|
43
|
+
| `stage.complete` | Stage ends | Duration, verdict, output artifact paths |
|
|
44
|
+
| `loop.prompt` | Before Claude call | Prompt char count, path to `.prompt.txt` |
|
|
45
|
+
| `loop.response` | After Claude call | Response length, exit code, token usage, path to `.json` |
|
|
46
|
+
| `loop.test_gate` | After test execution | Structured test evidence per command |
|
|
47
|
+
| `loop.audit_verdict` | After audit agent | Verdict, rationale, evidence |
|
|
48
|
+
| `loop.verification_gap` | Verification gap fires | Tests pass + audit disagrees, resolution |
|
|
49
|
+
| `pipeline.complete` | Pipeline ends | Status, duration, cost, PR URL |
|
|
50
|
+
|
|
51
|
+
### New File: `scripts/lib/audit-trail.sh`
|
|
52
|
+
|
|
53
|
+
Single library with four functions:
|
|
54
|
+
|
|
55
|
+
- `audit_init()` — Creates JSONL file, writes `pipeline.start` event
|
|
56
|
+
- `audit_emit(event_type, key=value...)` — Appends one JSON line
|
|
57
|
+
- `audit_save_prompt(prompt_text, iteration)` — Saves `iteration-N.prompt.txt`
|
|
58
|
+
- `audit_finalize()` — Reads JSONL, generates `.json` + `.md` reports
|
|
59
|
+
|
|
60
|
+
### Integration Points (5 files, ~30 lines total)
|
|
61
|
+
|
|
62
|
+
| File | Change |
|
|
63
|
+
|---|---|
|
|
64
|
+
| `scripts/lib/pipeline-stages.sh` | Source library, `audit_init` at start, `audit_emit` at stage transitions, `audit_finalize` at end |
|
|
65
|
+
| `scripts/lib/loop-iteration.sh` | `audit_save_prompt` before `claude -p`, `audit_emit` after response |
|
|
66
|
+
| `scripts/sw-loop.sh` | `audit_emit` in `run_test_gate()` and verification gap handler |
|
|
67
|
+
| `scripts/sw-loop.sh` | Source `audit-trail.sh` in imports |
|
|
68
|
+
| `scripts/lib/pipeline-stages.sh` | Source `audit-trail.sh` in imports |
|
|
69
|
+
|
|
70
|
+
### Fail-Open Principle
|
|
71
|
+
|
|
72
|
+
All audit calls wrapped in `|| true`. Audit is observability, never a gate. Pipeline continues unaffected if audit logging fails.
|
|
73
|
+
|
|
74
|
+
## Output Formats
|
|
75
|
+
|
|
76
|
+
### pipeline-audit.md (Compliance Report)
|
|
77
|
+
|
|
78
|
+
```markdown
|
|
79
|
+
# Pipeline Audit Report — Issue #192
|
|
80
|
+
|
|
81
|
+
| Field | Value |
|
|
82
|
+
|---|---|
|
|
83
|
+
| **Pipeline** | standard |
|
|
84
|
+
| **Issue** | #192 |
|
|
85
|
+
| **Model** | sonnet |
|
|
86
|
+
| **Started** | 2026-03-01T14:23:00Z |
|
|
87
|
+
| **Duration** | 24m 18s |
|
|
88
|
+
| **Outcome** | SUCCESS |
|
|
89
|
+
| **PR** | #205 |
|
|
90
|
+
|
|
91
|
+
## Stage Summary
|
|
92
|
+
|
|
93
|
+
| Stage | Duration | Verdict | Artifacts |
|
|
94
|
+
|---|---|---|---|
|
|
95
|
+
| intake | 1m 48s | pass | intake.json |
|
|
96
|
+
| plan | 6m 51s | pass | plan.md |
|
|
97
|
+
| build | 8m 22s | pass | 4 iterations |
|
|
98
|
+
|
|
99
|
+
## Build Loop Detail
|
|
100
|
+
|
|
101
|
+
### Iteration 1
|
|
102
|
+
- **Prompt**: 48,231 chars → iteration-1.prompt.txt
|
|
103
|
+
- **Response**: 12,440 chars, exit 0
|
|
104
|
+
- **Tests**: npm test (exit 0, 18s), bun test (exit 0, 4s)
|
|
105
|
+
- **Audit**: pass
|
|
106
|
+
|
|
107
|
+
## Token Usage
|
|
108
|
+
|
|
109
|
+
| Stage | Input | Output | Cost |
|
|
110
|
+
|---|---|---|---|
|
|
111
|
+
| build | 189,000 | 48,000 | $0.82 |
|
|
112
|
+
| **Total** | **201,000** | **51,400** | **$0.86** |
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### pipeline-audit.json (Machine-Readable)
|
|
116
|
+
|
|
117
|
+
```json
|
|
118
|
+
{
|
|
119
|
+
"version": "1.0",
|
|
120
|
+
"pipeline_id": "pipeline-192",
|
|
121
|
+
"issue": 192,
|
|
122
|
+
"outcome": "success",
|
|
123
|
+
"started_at": "2026-03-01T14:23:00Z",
|
|
124
|
+
"duration_s": 1458,
|
|
125
|
+
"stages": [...],
|
|
126
|
+
"tokens": {"input": 201000, "output": 51400, "cost_usd": 0.86},
|
|
127
|
+
"artifacts": ["plan.md", "design.md"]
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
All paths relative to `.claude/` for portability.
|
|
132
|
+
|
|
133
|
+
## Testing Strategy
|
|
134
|
+
|
|
135
|
+
1. Unit tests in `scripts/sw-lib-audit-trail-test.sh` — emit, save, finalize functions
|
|
136
|
+
2. Integration: run build loop with audit enabled, verify JSONL populated
|
|
137
|
+
3. Regression: existing tests (70/70 detection, 56/61 loop) still pass
|
|
138
|
+
4. E2E: run pipeline, verify `.md` and `.json` reports generated
|
|
139
|
+
|
|
140
|
+
## Non-Goals
|
|
141
|
+
|
|
142
|
+
- No external storage (S3, database) — files only
|
|
143
|
+
- No real-time streaming of audit events
|
|
144
|
+
- No retroactive audit of past pipeline runs
|
|
145
|
+
- No audit of non-pipeline (standalone loop) runs initially
|