1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
version: "3"
tasks:
default:
desc: Show available tasks
cmds:
- task --list
setup:
desc: "Install all dependencies and initialize project. Idempotent."
cmds:
- cargo fetch
- prek install
- prek install --hook-type commit-msg
- echo "Setup complete"
build:
desc: Build the basemind binary
cmds:
- cargo build --release
test:
desc: Run all tests
cmds:
- cargo test --workspace
test:verbose:
desc: Run tests with verbose output
cmds:
- cargo test --workspace -- --nocapture
lint:
desc: Run all linters and formatters via prek
cmds:
- prek run --all-files
format:
desc: Format code
cmds:
- cargo fmt --all
check:
desc: Run all checks (lint + test)
cmds:
- task: lint
- task: test
clean:
desc: Clean build artifacts
cmds:
- cargo clean
update:
desc: Update dependencies (compatible versions only — no Cargo.toml edits)
cmds:
- cargo update
- prek autoupdate
upgrade:
desc: Upgrade dependencies to latest, including incompatible bumps (rewrites Cargo.toml)
cmds:
- cargo upgrade --incompatible
- cargo update
- prek autoupdate
harden:
desc: Run the real-OSS hardening harness against all canary repos
cmds:
- ./scripts/harden.sh
release:sync-version:
desc: 'Sync version across every shipped surface (Cargo, npm wrappers, PyPI, plugin manifests). Usage: task release:sync-version VERSION=0.1.0'
cmds:
- ./scripts/release-bump.sh "{{.VERSION}}"
requires:
vars:
release:dry-run:
desc: GoReleaser snapshot build — produces dist/ archives without uploading
cmds:
- goreleaser release --snapshot --clean --skip=publish