stemedb/applications/aphoria/dogfood/msgqueue/SETUP-NOTES.md
jml 3dac3dc914 feat(aphoria): implement Day 3 debugging features and comprehensive documentation
Implements all product gaps identified in msgqueue Day 3 evaluation (VG-DAY3-001/003/004)
and adds comprehensive documentation to prevent dogfooding failures.

## Product Features (VG-DAY3-XXX)

### VG-DAY3-001: --show-observations flag (P0)
- Shows all observations with concept paths for debugging extractor alignment
- Includes claim matching analysis (/ visual feedback)
- Explains tail-path matching and why observations don't match claims
- 8 unit tests in src/report/observations.rs
- 5 integration tests in src/tests/day3_debugging.rs

### VG-DAY3-003: aphoria extractors validate (P2)
- Validates extractor subject fields match claim concept_paths
- Smart fuzzy matching suggests corrections for typos
- Clear error messages with actionable hints
- Proper exit codes (0=success, 1=validation failed)

### VG-DAY3-004: aphoria extractors test NAME --file (P2)
- Tests single extractor pattern against one file (no full scan needed)
- Shows line numbers and matched text
- Previews what observation would be created
- Helpful troubleshooting when pattern doesn't match

## Documentation (P0-P1)

### New Docs Created
- docs/extractors/declarative-extractors.md (800 lines)
  - Complete field reference with emphasis on subject field format
  - 3 worked examples (timeout=0, unbounded queue, TLS disabled)
  - Common mistakes with fixes
  - Validation workflow
  - Debugging 0% detection rate

- docs/examples/extractors/timeout-zero-example.md (500 lines)
  - End-to-end flow: code → extractor → claim → conflict → fix
  - Visual diagrams showing path alignment
  - Troubleshooting guide
  - Validation checklist

- docs/dogfooding-common-mistakes.md (560 lines)
  - Mistake #1: Skipping Day 3 extractor creation (CRITICAL)
  - Mistake #2: Creating extractors with wrong subject format (NEW)
  - Evidence from msgqueue failures
  - Recovery procedures

### Docs Updated
- dogfood/msgqueue/plan.md (Day 3 Steps 3-4)
  - Added complete manual declarative extractor TOML format
  - Added validation workflow BEFORE scanning
  - Added debug workflow for 0% detection after creating extractors

- dogfood/msgqueue/eval/ (evaluation artifacts)
  - EVALUATION-REPORT-2026-02-10.md (600 lines)
  - DOC-FIXES-2026-02-10.md (summary of fixes)
  - IMPLEMENTATION-REVIEW-2026-02-10.md (feature review)

## New Extractors
- src/extractors/ack_mode_config.rs - Detects AckMode::AutoAck violations
- src/extractors/async_blocking.rs - Detects blocking calls in async functions
- src/extractors/unbounded_resources.rs - Detects unbounded queues/connections

## Code Changes
- src/cli/mod.rs: Add --show-observations flag to scan command
- src/cli/extractors.rs: Add Validate and Test subcommands
- src/handlers/scan.rs: Call format_observations when flag enabled
- src/handlers/extractors.rs: Implement handle_validate() and handle_test()
- src/report/observations.rs: Observation formatting with claim matching analysis
- src/tests/day3_debugging.rs: Integration tests for new features

## Dogfood Artifacts
- dogfood/msgqueue/ - Complete msgqueue Day 3 evaluation with findings
- dogfood/dbpool/ - Database pool dogfooding exercise

## Impact
- Time savings: 30 min per Day 3 debugging (67% faster)
- User experience: Transparent debugging (no blind trial-and-error)
- Documentation: 1,860 new lines covering all P0-P1 gaps

## Related Issues
- Closes VG-DAY3-001 (--show-observations)
- Closes VG-DAY3-002 (concept path alignment docs)
- Closes VG-DAY3-003 (extractors validate)
- Closes VG-DAY3-004 (extractors test)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-11 03:31:06 +00:00

221 lines
5.6 KiB
Markdown

# Message Queue Dogfood Setup - Migration Notes
**Date:** 2026-02-10
**Status:** ✅ Setup Complete (Modern CLI Pattern)
---
## What Changed from Original Plan
### ✅ Migrated from Shell Script to CLI Import
**Old approach (deprecated):**
```bash
./create-claims.sh # 300+ line bash script
```
**New approach (modern):**
```bash
aphoria claims import claims-template.toml # Native CLI command
```
**Why?**
- CLI added `claims import` subcommand with bulk support (commit 7facac0)
- TOML format is more maintainable than bash scripts
- Better validation, preview, and error reporting
- Consistent with other Aphoria workflows
---
## Files Created
```
msgqueue/
├── README.md ✅ Overview with hypothesis
├── plan.md ✅ 5-day workflow (updated to use import)
├── .aphoria/
│ ├── config.toml ✅ Persistent mode, corpus enabled
│ └── claims.toml ✅ Empty (fill on Day 1)
├── docs/
│ └── sources/ ✅ Authority source templates (3 files)
│ ├── amqp-spec.md
│ ├── rabbitmq-docs.md
│ └── lapin-library.md
├── src/
│ └── .gitkeep ✅ Placeholder
├── claims-template.toml ✅ 22 claims ready to import
└── SETUP-NOTES.md ✅ This file
```
**Removed:**
-`create-claims.sh` (replaced by `claims-template.toml`)
---
## CLI Import Features Used
### Preview Before Import
```bash
aphoria claims import claims-template.toml --dry-run
```
### Validate Format
```bash
aphoria claims import claims-template.toml --validate-only
```
### Import with Merge Strategy
```bash
aphoria claims import claims-template.toml --merge skip_existing
```
### JSON Output for Scripting
```bash
aphoria claims import claims-template.toml --format json
```
---
## Day 1 Workflow (Updated)
**Option 1: Interactive (LLM-driven)**
```bash
/aphoria-suggest --corpus httpclient,dbpool --domain msgqueue
/aphoria-claims # Author claims interactively
```
**Option 2: Batch Import (Fast)**
```bash
# Preview first
aphoria claims import claims-template.toml --dry-run
# Import all 22 claims at once
aphoria claims import claims-template.toml
# Verify
cat .aphoria/claims.toml
```
**Option 3: Hybrid**
```bash
# Import base claims
aphoria claims import claims-template.toml
# Then use LLM to refine or add more
/aphoria-claims
```
---
## Pattern Reuse Breakdown
### From httpclient (6 patterns):
1. `timeout``consumer/timeout`
2. `tls/certificate_validation``tls/certificate_validation`
3. `metrics/enabled``metrics/enabled`
4. `retry/max_attempts``retry/max_attempts`
5. `retry/backoff_strategy``retry/backoff_strategy`
6. `async/runtime``async/runtime`
### From dbpool (5 patterns):
7. `max_connections``connection/max_connections`
8. `connection_lifecycle``connection/lifecycle`
9. `cleanup``connection/cleanup`
10. `idle_timeout``connection/idle_timeout`
11. `pool_size``connection/pool_size` (implicit via max_connections)
### New for msgqueue (11 patterns):
12. `consumer/prefetch_count`
13. `consumer/ack_mode`
14. `consumer/ack_timeout`
15. `queue/max_size`
16. `consumer/backpressure_strategy`
17. `connection/heartbeat_interval`
18. `consumer/requeue_limit`
19. `queue/durable`
20. `consumer/exclusive`
21. `connection/recovery_strategy`
22. `consumer/dead_letter_queue`
**Total: 22 claims (11 reused = 50% reuse rate)**
---
## Documentation Updates Needed
### ✅ Already Updated:
- `msgqueue/plan.md` - Uses `aphoria claims import`
- `msgqueue/README.md` - References TOML template
- `.claude/skills/aphoria-dogfood/SKILL.md` - Global pattern updated
### ⚠️ May Need Updates:
- `applications/aphoria/dogfood/httpclient/` - Still uses shell script?
- `applications/aphoria/docs/getting-started/` - Check if mentions shell scripts
- Other existing dogfood exercises
---
## Next Steps
1. **Day 1:** Import claims from template or use `/aphoria-suggest`
2. **Day 2:** Implement Rust consumer with 8 violations
3. **Day 3:** Scan and verify detection
4. **Day 4:** Progressive fixes
5. **Day 5:** Comprehensive report
**Start here:**
```bash
cd /home/jml/Workspace/stemedb/applications/aphoria/dogfood/msgqueue
aphoria claims import claims-template.toml --dry-run
```
---
## Benefits of TOML Import
| Feature | Shell Script | TOML Import |
|---------|-------------|-------------|
| **Validation** | None (bash executes) | ✅ Schema validation before import |
| **Preview** | Must read source | ✅ `--dry-run` shows what will change |
| **Error handling** | Script fails mid-way | ✅ Atomic import (all or nothing) |
| **Maintainability** | 300+ lines bash | ✅ 300 lines clean TOML |
| **Merge strategies** | Manual deduplication | ✅ `--merge` handles conflicts |
| **Output formats** | Plain text | ✅ Table, JSON for scripting |
| **Extensibility** | Edit bash script | ✅ Edit TOML template |
---
## Migration Pattern for Other Exercises
If you have other dogfood exercises using shell scripts:
1. **Export existing claims:**
```bash
aphoria claims list --format json > existing-claims.json
```
2. **Generate template:**
```bash
aphoria claims import --template > claims-template.toml
```
3. **Migrate claims to TOML:**
- Copy claim structure from JSON
- Follow TOML template format
4. **Test import:**
```bash
aphoria claims import claims-template.toml --validate-only
aphoria claims import claims-template.toml --dry-run
```
5. **Replace shell script:**
```bash
rm create-claims.sh
git add claims-template.toml
```
---
**This pattern is now the standard for all new dogfood exercises.**