|
| 1 | +# feedback-a-tron |
| 2 | + |
| 3 | +> **SYNC STATUS**: Keep in sync with `STATE.scm` - run `scripts/sync-state.sh` to verify |
| 4 | +> **Last sync**: 2025-12-11T14:30:00Z |
| 5 | +
|
| 6 | +## Project Overview |
| 7 | + |
| 8 | +Automated multi-platform feedback submission with network verification. |
| 9 | + |
| 10 | +- **Version**: 0.2.0 (alpha) |
| 11 | +- **Phase**: ~60% to v1.0 |
| 12 | +- **Origin**: Claude Code API error investigation → MCP security proposals |
| 13 | + |
| 14 | +## Quick Reference |
| 15 | + |
| 16 | +### What This Project Does |
| 17 | + |
| 18 | +1. **Multi-platform issue submission** - Submit to GitHub, GitLab, Bitbucket, Codeberg from one place |
| 19 | +2. **Network verification** - Verify submissions actually arrive (latency, packet loss, TLS, DANE) |
| 20 | +3. **Credential rotation** - Rotate API tokens to avoid rate limits |
| 21 | +4. **MCP integration** - `submit_feedback` tool for Claude Code |
| 22 | + |
| 23 | +### Key Files |
| 24 | + |
| 25 | +``` |
| 26 | +elixir-mcp/lib/ |
| 27 | +├── feedback_submitter.ex # Multi-platform submission GenServer |
| 28 | +├── credentials.ex # Credential management with rotation |
| 29 | +├── network_verifier.ex # Network-layer verification |
| 30 | +└── mcp/tools/submit_feedback.ex # MCP tool for Claude |
| 31 | +
|
| 32 | +docs/ |
| 33 | +└── LANDSCAPE.adoc # Ecosystem analysis |
| 34 | +``` |
| 35 | + |
| 36 | +### Tech Stack |
| 37 | + |
| 38 | +- **MCP Server**: Elixir (OTP supervision, pattern matching) |
| 39 | +- **Network Tools**: ping, traceroute, mtr, openssl, dig |
| 40 | +- **Future**: Julia (stats), ReScript-Tea (UI), Oxigraph (RDF) |
| 41 | + |
| 42 | +## v1.0 Blockers |
| 43 | + |
| 44 | +### Must Have |
| 45 | +- [ ] Elixir MCP server compiles and runs |
| 46 | +- [ ] Multi-platform submission works (GitHub, GitLab) |
| 47 | +- [ ] Network verification pre-flight checks |
| 48 | +- [ ] Credential rotation functional |
| 49 | +- [ ] Basic deduplication |
| 50 | + |
| 51 | +### Should Have |
| 52 | +- [ ] Bitbucket and Codeberg support |
| 53 | +- [ ] Post-submission verification |
| 54 | +- [ ] DNSSEC/DANE checks |
| 55 | +- [ ] Audit logging |
| 56 | + |
| 57 | +## Recent Work (2025-12-11) |
| 58 | + |
| 59 | +1. Created `FeedbackATron.Submitter` - multi-platform submission |
| 60 | +2. Created `FeedbackATron.Credentials` - credential rotation |
| 61 | +3. Created `FeedbackATron.NetworkVerifier` - network verification |
| 62 | +4. Created MCP tool `submit_feedback` |
| 63 | +5. Submitted MCP Security SEPs (#1959-#1962) |
| 64 | +6. Submitted Claude Code bug report (#13683) |
| 65 | + |
| 66 | +## External Contributions |
| 67 | + |
| 68 | +| Date | Target | Issues | Topic | |
| 69 | +|------|--------|--------|-------| |
| 70 | +| 2025-12-11 | modelcontextprotocol | #1959-#1962 | MCP Security (DNS, .well-known, headers, unified profile) | |
| 71 | +| 2025-12-11 | anthropics/claude-code | #13683 | Content filter session corruption | |
| 72 | + |
| 73 | +## Design Decisions |
| 74 | + |
| 75 | +- **Elixir over Rust**: OTP supervision, pattern matching for Datalog |
| 76 | +- **ETS over SQLite**: In-memory speed, Oxigraph for persistence |
| 77 | +- **CLI fallback**: gh/glab already authenticated, handles token refresh |
| 78 | +- **Network verification mandatory**: Feedback silently fails without it |
| 79 | + |
| 80 | +## Commands |
| 81 | + |
| 82 | +```bash |
| 83 | +# Run MCP server |
| 84 | +cd elixir-mcp && mix deps.get && iex -S mix |
| 85 | + |
| 86 | +# Test submission (when complete) |
| 87 | +FeedbackATron.Submitter.submit(%{ |
| 88 | + title: "Test issue", |
| 89 | + body: "Testing", |
| 90 | + repo: "owner/repo" |
| 91 | +}, platforms: [:github]) |
| 92 | +``` |
| 93 | + |
| 94 | +## Sync Validation |
| 95 | + |
| 96 | +STATE.scm is the source of truth. CLAUDE.md is derived. |
| 97 | + |
| 98 | +```bash |
| 99 | +# Check sync |
| 100 | +./scripts/sync-state.sh check |
| 101 | + |
| 102 | +# Regenerate CLAUDE.md from STATE.scm |
| 103 | +./scripts/sync-state.sh generate |
| 104 | +``` |
0 commit comments