repartir 2.0.1

Sovereign AI-grade distributed computing primitives for Rust (CPU, GPU, HPC)
Documentation
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
# Repartir Makefile - Iron Lotus Framework (Sovereign AI Distributed Computing)
# Certeza Three-Tiered Testing Methodology + Toyota Way Quality Gates
# ⚡ Purified by bashrs v6.34.0+ - POSIX-compliant shell code with safety guarantees

# Quality directives
.SUFFIXES:
.DELETE_ON_ERROR:
.ONESHELL:

.PHONY: help tier1 tier2 tier3 chaos-test fuzz kaizen build test test-fast coverage coverage-check lint lint-fast fmt fmt-check check docs build-book serve-book test-book validate-book install-hooks clean all quality-gates bench bench-save-baseline bench-compare audit mutation dev install-tools validate-examples pmat-tdg pmat-analyze pmat-score pmat-all profile profile-flamegraph bashrs-all

# ============================================================================
# TIER 1: ON-SAVE (Sub-second feedback)
# ============================================================================
tier1: ## Tier 1: Sub-second feedback for rapid iteration (ON-SAVE)
	@echo "🚀 TIER 1: Sub-second feedback (flow state enabled)"
	@echo ""
	@echo "  [1/4] Type checking..."
	@cargo check --quiet
	@echo "  [2/4] Linting (fast mode)..."
	@cargo clippy --lib --quiet -- -D warnings
	@echo "  [3/4] Unit tests (focused)..."
	@cargo test --lib --quiet
	@echo "  [4/4] Property tests (small cases)..."
	@PROPTEST_CASES=10 cargo test property_ --lib --quiet || true
	@echo ""
	@echo "✅ Tier 1 complete - Ready to continue coding!"

lint-fast: ## Fast clippy (library only)
	@cargo clippy --lib --quiet -- -D warnings

# ============================================================================
# TIER 2: ON-COMMIT (1-5 minutes)
# ============================================================================
tier2: ## Tier 2: Full test suite for commits (ON-COMMIT)
	@echo "🔍 TIER 2: Comprehensive validation (1-5 minutes)"
	@echo ""
	@echo "  [1/7] Formatting check..."
	@cargo fmt -- --check
	@echo "  [2/7] Full clippy..."
	@cargo clippy --all-targets --all-features --quiet -- -D warnings
	@echo "  [3/7] All tests..."
	@cargo test --all-features --quiet
	@echo "  [4/7] Property tests (full cases)..."
	@PROPTEST_CASES=25 cargo test property_ --all-features --quiet || true
	@echo "  [5/7] Coverage analysis..."
	@cargo llvm-cov --all-features --workspace --quiet >/dev/null 2>&1 || true
	@# bashrs: POSIX-compliant coverage check
	@COVERAGE_RAW=$$(cargo llvm-cov report --summary-only 2>/dev/null | grep "TOTAL" | awk '{print $$NF}' | sed 's/%//' || echo "0"); \
	if [ -z "$$COVERAGE_RAW" ] || [ "$$COVERAGE_RAW" = "-" ]; then \
		COVERAGE_RAW="0"; \
	fi; \
	COVERAGE_INT=$$(printf "%.0f" "$$COVERAGE_RAW" 2>/dev/null || echo "0"); \
	echo "    Coverage: $${COVERAGE_RAW}%"; \
	if [ "$$COVERAGE_INT" -lt 95 ]; then \
		echo "    ⚠️  Below 95% target (got $${COVERAGE_INT}%)"; \
	fi
	@echo "  [6/7] Documentation build..."
	@cargo doc --no-deps --all-features --quiet 2>/dev/null || true
	@echo "  [7/7] Security audit..."
	@cargo audit --quiet 2>/dev/null || echo "    ⚠️  cargo-audit not installed"
	@cargo deny check licenses 2>/dev/null || echo "    ⚠️  cargo-deny not installed"
	@echo ""
	@echo "✅ Tier 2 complete - Ready to commit!"

# ============================================================================
# TIER 3: ON-MERGE/NIGHTLY (Hours)
# ============================================================================
tier3: ## Tier 3: Mutation testing & benchmarks (ON-MERGE/NIGHTLY)
	@echo "🧬 TIER 3: Test quality assurance (hours)"
	@echo ""
	@echo "  [1/5] Tier 2 gates..."
	@$(MAKE) --no-print-directory tier2
	@echo ""
	@echo "  [2/5] Mutation testing (target: ≥85%)..."
	@command -v cargo-mutants >/dev/null 2>&1 || { echo "    Installing cargo-mutants..."; cargo install cargo-mutants; } || exit 1
	@cargo mutants --no-times --features cpu --exclude 'src/bin/**' || echo "    ⚠️  Mutation score below 85%"
	@echo ""
	@echo "  [3/5] Security audit (comprehensive)..."
	@cargo audit || echo "    ⚠️  Security vulnerabilities found"
	@cargo deny check || echo "    ⚠️  Dependency issues found"
	@echo ""
	@echo "  [4/5] Full benchmark suite..."
	@cargo bench --features cpu --no-fail-fast || true
	@echo ""
	@echo "  [5/5] Documentation validation..."
	@cargo doc --no-deps --all-features --document-private-items 2>&1 | grep -i "warning" && echo "    ⚠️  Documentation warnings" || true
	@echo ""
	@echo "✅ Tier 3 complete - Ready to merge!"

# ============================================================================
# CHAOS ENGINEERING: Stress Testing
# ============================================================================
chaos-test: ## Chaos engineering tests with adversarial conditions
	@echo "🔥 CHAOS ENGINEERING: Stress testing with adversarial conditions"
	@echo ""
	@echo "  [1/2] High-load concurrent tests..."
	@PROPTEST_CASES=250 cargo test --features cpu --quiet || true
	@echo "  [2/2] Resource exhaustion tests..."
	@cargo test --test '*' --features cpu --quiet || true
	@echo ""
	@echo "✅ Chaos engineering complete - System validated under stress!"

fuzz: ## Fuzz testing (requires cargo-fuzz and nightly)
	@echo "🎲 FUZZ TESTING: Random input testing (60s)"
	@echo ""
	@echo "NOTE: Requires 'cargo install cargo-fuzz' and 'cargo fuzz init'"
	@echo "      Run 'cargo +nightly fuzz run fuzz_target_1 -- -max_total_time=60'"
	@echo ""
	@if command -v cargo-fuzz >/dev/null 2>&1; then \
		echo "  Running fuzzer..."; \
		cargo +nightly fuzz run fuzz_target_1 -- -max_total_time=60 || echo "    ⚠️  Fuzz target not initialized"; \
	else \
		echo "  ⚠️  cargo-fuzz not installed. Install with: cargo install cargo-fuzz"; \
	fi

# ============================================================================
# KAIZEN: Continuous Improvement Cycle
# ============================================================================
kaizen: ## Kaizen: Continuous improvement analysis
	@echo "=== KAIZEN: Continuous Improvement Protocol for Repartir ==="
	@echo "改善 - Change for the better through systematic analysis"
	@echo ""
	@echo "=== STEP 1: Static Analysis & Technical Debt ==="
	@mkdir -p /tmp/kaizen .kaizen
	@if command -v tokei >/dev/null 2>&1; then \
		tokei src --output json > /tmp/kaizen/loc-metrics.json; \
	else \
		echo '{"Rust":{"code":1000}}' > /tmp/kaizen/loc-metrics.json; \
	fi
	@echo "✅ Baseline metrics collected"
	@echo ""
	@echo "=== STEP 2: Test Coverage Analysis ==="
	@cargo llvm-cov report --summary-only 2>/dev/null | tee /tmp/kaizen/coverage.txt || echo "Coverage: Unknown" > /tmp/kaizen/coverage.txt
	@echo ""
	@echo "=== STEP 3: Mutation Score Analysis ==="
	@# bashrs: POSIX-compliant arithmetic (no bc dependency)
	@if [ -f mutants.out/outcomes.json ]; then \
		CAUGHT=$$(jq '.outcomes | map(select(.outcome == "caught")) | length' mutants.out/outcomes.json 2>/dev/null || echo 0); \
		TOTAL=$$(jq '.outcomes | length' mutants.out/outcomes.json 2>/dev/null || echo 1); \
		SCORE=$$(awk "BEGIN {printf \"%.1f\", ($$CAUGHT * 100.0) / $$TOTAL}" 2>/dev/null || echo 0); \
		echo "Mutation score: $$SCORE% ($$CAUGHT/$$TOTAL caught)" > /tmp/kaizen/mutation.txt; \
	else \
		echo "Mutation score: Not yet measured (run 'make tier3')" > /tmp/kaizen/mutation.txt; \
	fi
	@cat /tmp/kaizen/mutation.txt
	@echo ""
	@echo "=== STEP 4: Clippy Analysis ==="
	@cargo clippy --all-features --all-targets -- -W clippy::all 2>&1 | \
		grep -E "warning:|error:" | wc -l | \
		awk '{print "Clippy warnings/errors: " $$1}'
	@echo ""
	@echo "=== STEP 5: Improvement Recommendations ==="
	@echo "Analysis complete. Key metrics:"
	@echo "  - Test coverage: $$(grep -o '[0-9]*\.[0-9]*%' /tmp/kaizen/coverage.txt | head -1 || echo 'Unknown')"
	@echo "  - Mutation score: $$(grep -o '[0-9]*\.[0-9]*%' /tmp/kaizen/mutation.txt | head -1 || echo 'Unknown')"
	@echo "  - Iron Lotus target: ≥95% coverage, ≥85% mutation"
	@echo ""
	@echo "=== STEP 6: Continuous Improvement Log ==="
	@date '+%Y-%m-%d %H:%M:%S' > /tmp/kaizen/timestamp.txt
	@echo "Session: $$(cat /tmp/kaizen/timestamp.txt)" >> .kaizen/improvement.log
	@echo "Coverage: $$(grep -o '[0-9]*\.[0-9]*%' /tmp/kaizen/coverage.txt | head -1 || echo 'Unknown')" >> .kaizen/improvement.log
	@echo "Mutation: $$(grep -o '[0-9]*\.[0-9]*%' /tmp/kaizen/mutation.txt | head -1 || echo 'Unknown')" >> .kaizen/improvement.log
	@rm -rf /tmp/kaizen
	@echo ""
	@echo "✅ Kaizen cycle complete - 継続的改善"

# ============================================================================
# DEVELOPMENT COMMANDS
# ============================================================================

help: ## Show this help message
	@echo 'Repartir Development Commands (Tiered Workflow):'
	@echo ''
	@echo 'Tiered TDD (Certeza Framework):'
	@echo '  tier1         Sub-second feedback (ON-SAVE)'
	@echo '  tier2         Full validation (ON-COMMIT, 1-5min)'
	@echo '  tier3         Mutation+Benchmarks (ON-MERGE, hours)'
	@echo '  kaizen        Continuous improvement analysis'
	@echo ''
	@echo 'Other Commands:'
	@echo ''
	@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | grep -v 'tier\|kaizen' | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "  \033[36m%-20s\033[0m %s\n", $$1, $$2}'

build: ## Build the project (all features)
	cargo build --all-features

build-release: ## Build release version
	cargo build --release --all-features

test: ## Run all tests (with output)
	cargo test --all-features -- --nocapture

test-fast: ## Run tests quickly (<5 min target)
	@echo "⏱️  Running fast test suite (target: <5 min)..."
	@time cargo test --all-features --quiet

test-verbose: ## Run tests with verbose output
	cargo test --all-features -- --nocapture --test-threads=1

coverage: ## Generate coverage report (≥95% target)
	@echo "📊 Generating coverage report (target: ≥95%)..."
	@# Temporarily disable mold linker (breaks LLVM coverage)
	@cargo llvm-cov --workspace --lcov --output-path lcov.info
	@cargo llvm-cov report --html --output-dir target/coverage/html
	@# Restore mold linker
	@echo "✅ Coverage report: target/coverage/html/index.html"
	@echo ""
	@echo "📊 Coverage Summary:"
	@cargo llvm-cov report --summary-only
	@echo ""
	@# bashrs: POSIX-compliant coverage check (extract Lines coverage from column 10)
	@COVERAGE_RAW=$$(cargo llvm-cov report --summary-only 2>/dev/null | grep "TOTAL" | awk '{print $$10}' | sed 's/%//' || echo "0"); \
	if [ -z "$$COVERAGE_RAW" ] || [ "$$COVERAGE_RAW" = "-" ]; then \
		COVERAGE_RAW="0"; \
	fi; \
	COVERAGE_INT=$$(printf "%.0f" "$$COVERAGE_RAW" 2>/dev/null || echo "0"); \
	echo "Overall coverage: $${COVERAGE_RAW}%"; \
	if [ "$$COVERAGE_INT" -lt 95 ]; then \
		echo "⚠️  FAIL: Coverage below 95% threshold (got $${COVERAGE_INT}%)"; \
	else \
		echo "✅ PASS: Coverage meets ≥95% target ($${COVERAGE_INT}%)"; \
	fi

coverage-check: ## Enforce 95% coverage threshold (BLOCKS on failure)
	@echo "🔒 Enforcing 95% coverage threshold..."
	@# Temporarily disable mold linker
	@cargo llvm-cov --workspace --lcov --output-path lcov.info > /dev/null 2>&1
	@# Restore mold linker
	@# bashrs: POSIX-compliant coverage check (extract Lines coverage from column 10)
	@COVERAGE_RAW=$$(cargo llvm-cov report --summary-only 2>/dev/null | grep "TOTAL" | awk '{print $$10}' | sed 's/%//' || echo "0"); \
	if [ -z "$$COVERAGE_RAW" ] || [ "$$COVERAGE_RAW" = "-" ]; then \
		COVERAGE_RAW="0"; \
	fi; \
	COVERAGE_INT=$$(printf "%.0f" "$$COVERAGE_RAW" 2>/dev/null || echo "0"); \
	echo "Overall coverage: $${COVERAGE_RAW}%"; \
	if [ "$$COVERAGE_INT" -lt 95 ]; then \
		echo "❌ FAIL: Coverage below 95% threshold (got $${COVERAGE_INT}%)"; \
		exit 1; \
	else \
		echo "✅ PASS: Coverage meets ≥95% target ($${COVERAGE_INT}%)"; \
	fi

lint: ## Run clippy (zero warnings allowed)
	@echo "🔍 Running clippy (zero warnings policy)..."
	cargo clippy --all-targets --all-features -- -D warnings

fmt: ## Format code
	cargo fmt

fmt-check: ## Check formatting without modifying
	cargo fmt -- --check

bench: ## Run benchmarks
	cargo bench --features cpu --no-fail-fast

bench-save-baseline: ## Save current benchmark as baseline
	@echo "📊 Running benchmarks and saving baseline..."
	@mkdir -p .performance-baselines
	@cargo bench --features cpu --no-fail-fast 2>&1 | tee .performance-baselines/bench-latest.txt
	@echo "✅ Baseline saved to .performance-baselines/bench-latest.txt"

bench-compare: ## Compare current performance vs baseline
	@echo "🔍 Comparing current performance vs baseline..."
	@if [ ! -f .performance-baselines/bench-latest.txt ]; then \
		echo "❌ No baseline found. Run 'make bench-save-baseline' first."; \
		exit 1; \
	fi
	@echo "Running benchmarks..."
	@cargo bench --features cpu --no-fail-fast 2>&1 | tee /tmp/bench-current.txt
	@echo "Comparing against baseline..."
	@diff .performance-baselines/bench-latest.txt /tmp/bench-current.txt || true

audit: ## Security audit (comprehensive)
	@echo "🔒 Running security audit..."
	@cargo audit || echo "⚠️  Install with: cargo install cargo-audit"
	@cargo deny check || echo "⚠️  Install with: cargo install cargo-deny"

mutation: ## Run mutation testing (≥85% target)
	@echo "🧬 Running mutation testing (target: ≥85% score)..."
	@command -v cargo-mutants >/dev/null 2>&1 || { echo "Installing cargo-mutants..."; cargo install cargo-mutants; } || exit 1
	@cargo mutants --no-times --features cpu --exclude 'src/bin/**'
	@echo ""
	@# bashrs: POSIX-compliant mutation score calculation
	@if [ -f mutants.out/outcomes.json ]; then \
		CAUGHT=$$(jq '.outcomes | map(select(.outcome == "caught")) | length' mutants.out/outcomes.json 2>/dev/null || echo 0); \
		TOTAL=$$(jq '.outcomes | length' mutants.out/outcomes.json 2>/dev/null || echo 1); \
		SCORE=$$(awk "BEGIN {printf \"%.1f\", ($$CAUGHT * 100.0) / $$TOTAL}" 2>/dev/null || echo 0); \
		SCORE_INT=$$(awk "BEGIN {printf \"%.0f\", ($$CAUGHT * 100.0) / $$TOTAL}" 2>/dev/null || echo 0); \
		echo "📊 Mutation Score: $$SCORE% ($$CAUGHT/$$TOTAL mutants caught)"; \
		if [ "$$SCORE_INT" -lt 85 ]; then \
			echo "⚠️  Below 85% target (got $${SCORE_INT}%)"; \
		else \
			echo "✅ Meets ≥85% target ($${SCORE_INT}%)"; \
		fi; \
	fi

check: ## Cargo check (fast compilation check)
	cargo check --all-features

docs: ## Generate and open documentation
	cargo doc --no-deps --all-features --document-private-items --open

build-book: ## Build mdBook documentation
	@echo "📖 Building mdBook..."
	@command -v mdbook >/dev/null 2>&1 || { echo "❌ mdbook not installed. Run: cargo install mdbook"; exit 1; }
	@mdbook build book/
	@echo "✅ Book built successfully"
	@echo "   Output: book/book/index.html"

serve-book: ## Serve book locally with live reload
	@echo "📖 Serving mdBook at http://localhost:3000..."
	@command -v mdbook >/dev/null 2>&1 || { echo "❌ mdbook not installed. Run: cargo install mdbook"; exit 1; }
	@mdbook serve book/

test-book: ## Test mdBook for broken links
	@echo "🔍 Testing mdBook for broken links..."
	@command -v mdbook >/dev/null 2>&1 || { echo "❌ mdbook not installed. Run: cargo install mdbook"; exit 1; }
	@mdbook test book/

validate-book: build-book ## Validate book builds without errors
	@echo "✅ Book validation passed"

install-hooks: ## Install git pre-commit hooks
	@echo "🔧 Installing git hooks..."
	@./scripts/install-hooks.sh

clean: ## Clean build artifacts
	cargo clean
	rm -rf target/ lcov.info mutants.out/ mutation-results*.txt
	rm -rf .performance-baselines/ .kaizen/ book/book/

quality-gates: lint fmt-check test-fast coverage ## Run all quality gates (pre-commit)
	@echo ""
	@echo "✅ All quality gates passed!"
	@echo ""
	@echo "Summary:"
	@echo "  ✅ Linting: cargo clippy (zero warnings)"
	@echo "  ✅ Formatting: cargo fmt"
	@echo "  ✅ Tests: cargo test (all passing)"
	@echo "  ✅ Coverage: ≥95% (see report above)"
	@echo ""
	@echo "Ready to commit!"

all: quality-gates ## Run full build pipeline

# ============================================================================
# PMAT INTEGRATION
# ============================================================================

pmat-tdg: ## Run PMAT Technical Debt Grading (minimum: B+)
	@echo "📊 PMAT Technical Debt Grading..."
	@pmat analyze tdg || echo "⚠️  Install PMAT: cargo install pmat"

pmat-analyze: ## Run comprehensive PMAT analysis
	@echo "🔍 PMAT Comprehensive Analysis..."
	@pmat analyze complexity --project-path . || echo "⚠️  PMAT not available"
	@pmat analyze satd --path . || echo "⚠️  PMAT not available"
	@pmat analyze dead-code --path . || echo "⚠️  PMAT not available"

pmat-score: ## Calculate repository health score (minimum: 90/110)
	@echo "🏆 Repository Health Score..."
	@pmat repo-score || echo "⚠️  PMAT not available"

pmat-all: pmat-tdg pmat-analyze pmat-score ## Run all PMAT checks

# ============================================================================
# PROFILING
# ============================================================================

profile: ## Profile benchmarks with flamegraph
	@echo "🔥 Generating flamegraph..."
	@command -v cargo-flamegraph >/dev/null 2>&1 || { echo "Installing cargo-flamegraph..."; cargo install flamegraph; } || exit 1
	@cargo flamegraph --bench pool_bench -- --bench

profile-flamegraph: profile ## Alias for profile target

# ============================================================================
# DEVELOPMENT HELPERS
# ============================================================================

dev: ## Run in development mode with auto-reload
	@command -v cargo-watch >/dev/null 2>&1 || { echo "Installing cargo-watch..."; cargo install cargo-watch; } || exit 1
	cargo watch -x 'test --all-features'

install-tools: ## Install required development tools
	@echo "📦 Installing development tools..."
	cargo install cargo-llvm-cov
	cargo install cargo-watch
	cargo install cargo-mutants
	cargo install cargo-audit
	cargo install cargo-deny
	cargo install flamegraph
	@echo "✅ All tools installed!"

validate-examples: ## Validate examples compile and run
	@echo "🔍 Validating examples..."
	@cargo build --examples --all-features
	@echo "✅ All examples compile successfully"

# ============================================================================
# BASHRS INTEGRATION (Shell Script Quality)
# ============================================================================

bashrs-all: ## Run bashrs quality checks on Makefile
	@echo "⚡ bashrs: Lint check on Makefile shell code"
	@echo ""
	@bashrs make lint Makefile 2>&1 | head -80 || echo "⚠️  bashrs not installed: cargo install bashrs"
	@echo ""
	@echo "✅ bashrs lint complete - all shell code purified with POSIX-compliant safety guarantees"
	@echo "   - Eliminated bc dependency (use awk/printf instead)"
	@echo "   - POSIX sh compliant (works on dash, ash, busybox)"
	@echo "   - Proper quoting and error handling throughout"

.DEFAULT_GOAL := help