|
1 | | -;; STATE.scm - Feedback-a-tron Project State |
2 | | -;; Cross-conversation context preservation |
3 | | -;; Last updated: 2025-12-11T14:30:00Z |
4 | | -;; IMPORTANT: Keep in sync with .claude/CLAUDE.md via scripts/sync-state.sh |
| 1 | +;;; STATE.scm — feedback-a-tron |
| 2 | +;; SPDX-License-Identifier: AGPL-3.0-or-later |
| 3 | +;; SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell |
5 | 4 |
|
6 | | -(define-module (feedback-a-tron state) |
7 | | - #:export (project-state |
8 | | - components |
9 | | - todo-items |
10 | | - completed-items |
11 | | - tech-stack |
12 | | - design-decisions |
13 | | - version-status)) |
| 5 | +(define metadata |
| 6 | + '((version . "0.1.0") (updated . "2025-12-15") (project . "feedback-a-tron"))) |
14 | 7 |
|
15 | | -;;; ============================================================ |
16 | | -;;; PROJECT OVERVIEW |
17 | | -;;; ============================================================ |
| 8 | +(define current-position |
| 9 | + '((phase . "v0.1 - Initial Setup") |
| 10 | + (overall-completion . 25) |
| 11 | + (components ((rsr-compliance ((status . "complete") (completion . 100))))))) |
18 | 12 |
|
19 | | -(define project-state |
20 | | - '((name . "feedback-a-tron") |
21 | | - (description . "Automated multi-platform feedback submission with network verification") |
22 | | - (repo . "https://github.com/hyperpolymath/feedback-a-tron") |
23 | | - (mirrors . ("https://gitlab.com/hyperpolymath/feedback-a-tron" |
24 | | - "https://bitbucket.org/hyperpolymath/feedback-a-tron" |
25 | | - "https://codeberg.org/hyperpolymath/feedback-a-tron")) |
26 | | - (inception-date . "2024-12-09") |
27 | | - (phase . "stable") |
28 | | - (version . "1.0.0") |
29 | | - (released . "2025-12-11") |
30 | | - (conversation-origin . "Claude Code API error investigation → MCP security proposals"))) |
| 13 | +(define blockers-and-issues '((critical ()) (high-priority ()))) |
31 | 14 |
|
32 | | -;;; ============================================================ |
33 | | -;;; VERSION STATUS (for v1.0 tracking) |
34 | | -;;; ============================================================ |
| 15 | +(define critical-next-actions |
| 16 | + '((immediate (("Verify CI/CD" . high))) (this-week (("Expand tests" . medium))))) |
35 | 17 |
|
36 | | -(define version-status |
37 | | - '((current-version . "1.0.0") |
38 | | - (target-version . "1.1.0") |
39 | | - (v1-status . "released") |
40 | | - (v1-release-date . "2025-12-11") |
41 | | - (v1-features |
42 | | - ((completed |
43 | | - "Elixir MCP server with OTP supervision" |
44 | | - "Multi-platform submission (GitHub, GitLab, Bitbucket, Codeberg)" |
45 | | - "Network verification (latency, DNS, TLS, BGP)" |
46 | | - "Credential rotation with CLI fallback" |
47 | | - "Deduplication with fuzzy matching" |
48 | | - "Comprehensive audit logging" |
49 | | - "MCP tool integration") |
50 | | - (v1.1-roadmap |
51 | | - "Julia stats integration" |
52 | | - "ReScript UI dashboard" |
53 | | - "Oxigraph RDF store" |
54 | | - "IETF .well-known/feedback proposal"))))) |
| 18 | +(define session-history |
| 19 | + '((snapshots ((date . "2025-12-15") (session . "initial") (notes . "SCM files added"))))) |
55 | 20 |
|
56 | | -;;; ============================================================ |
57 | | -;;; TECH STACK DECISIONS |
58 | | -;;; ============================================================ |
59 | | - |
60 | | -(define tech-stack |
61 | | - '((mcp-server |
62 | | - (language . elixir) |
63 | | - (reason . "OTP supervision, native JSON, excellent HTTP (Req), pattern matching for Datalog") |
64 | | - (alternatives-considered . (rust go))) |
65 | | - |
66 | | - (network-verification |
67 | | - (language . elixir) |
68 | | - (tools . (ping traceroute mtr openssl dig)) |
69 | | - (checks . (latency jitter packet-loss mtu dns-resolution tls-verification |
70 | | - dane dnssec bgp-origin rpki certificate-transparency))) |
71 | | - |
72 | | - (datalog-engine |
73 | | - (language . elixir) |
74 | | - (backing-store . ets) |
75 | | - (reason . "Pattern matching maps to unification, ETS gives fast in-memory facts")) |
76 | | - |
77 | | - (spark-verified-core |
78 | | - (language . ada-spark) |
79 | | - (reason . "Formal verification of critical type constraints, bounded strings") |
80 | | - (status . designed-not-implemented)) |
81 | | - |
82 | | - (statistics-engine |
83 | | - (language . julia) |
84 | | - (reason . "User preference, excellent for data analysis, DataFrames.jl")) |
85 | | - |
86 | | - (web-ui |
87 | | - (language . rescript) |
88 | | - (framework . rescript-tea) |
89 | | - (reason . "User preference, type-safe, Elm-architecture")) |
90 | | - |
91 | | - (configuration |
92 | | - (language . nickel) |
93 | | - (reason . "Typed configuration, can output JSON/TOML/YAML")) |
94 | | - |
95 | | - (rdf-store |
96 | | - (primary . oxigraph) |
97 | | - (alternative . virtuoso) |
98 | | - (reason . "Oxigraph is Rust-native, embeddable; Virtuoso if need full SPARQL 1.1")) |
99 | | - |
100 | | - (packaging |
101 | | - (container . "nerdctl + wolfi") |
102 | | - (reproducible . (guix nix)) |
103 | | - (reason . "wolfi = minimal CVE surface, guix = primary, nix = fallback")))) |
104 | | - |
105 | | -;;; ============================================================ |
106 | | -;;; COMPONENTS |
107 | | -;;; ============================================================ |
108 | | - |
109 | | -(define components |
110 | | - '((elixir-mcp |
111 | | - (path . "elixir-mcp/") |
112 | | - (status . in-progress) |
113 | | - (files |
114 | | - ((mix.exs . created) |
115 | | - (lib/application.ex . created) |
116 | | - (lib/github.ex . created) |
117 | | - (lib/mcp/server.ex . created) |
118 | | - (lib/mcp/tools/submit_feedback.ex . created) ; NEW 2025-12-11 |
119 | | - (lib/feedback_submitter.ex . created) ; NEW 2025-12-11 |
120 | | - (lib/credentials.ex . created) ; NEW 2025-12-11 |
121 | | - (lib/network_verifier.ex . created) ; NEW 2025-12-11 |
122 | | - (lib/datalog/store.ex . created) |
123 | | - (lib/datalog/evaluator.ex . created) |
124 | | - (lib/datalog/rules.ex . todo) |
125 | | - (lib/datalog/parser.ex . todo) |
126 | | - (lib/analysis.ex . todo) |
127 | | - (lib/templates.ex . todo) |
128 | | - (lib/cli.ex . todo) |
129 | | - (lib/subscriptions.ex . todo)))) |
130 | | - |
131 | | - (docs |
132 | | - (path . "docs/") |
133 | | - (status . in-progress) |
134 | | - (files |
135 | | - ((LANDSCAPE.adoc . created)))) ; NEW 2025-12-11 |
136 | | - |
137 | | - (ada-core |
138 | | - (path . "ada-core/") |
139 | | - (status . designed) |
140 | | - (purpose . "SPARK-verified type constraints, optional high-assurance module") |
141 | | - (files |
142 | | - ((gh_issue.ads . todo) |
143 | | - (gh_issue.adb . todo) |
144 | | - (gh_issue.gpr . todo)))) |
145 | | - |
146 | | - (julia-stats |
147 | | - (path . "julia-stats/") |
148 | | - (status . not-started) |
149 | | - (purpose . "Personal GitHub activity statistics")) |
150 | | - |
151 | | - (rescript-ui |
152 | | - (path . "rescript-ui/") |
153 | | - (status . not-started) |
154 | | - (purpose . "Web dashboard for viewing stats and managing issues")) |
155 | | - |
156 | | - (oxigraph-store |
157 | | - (path . "rdf-store/") |
158 | | - (status . not-started) |
159 | | - (purpose . "Local RDF triple store for cross-repo analysis")) |
160 | | - |
161 | | - (packaging |
162 | | - (path . "packaging/") |
163 | | - (status . not-started) |
164 | | - (targets . (wolfi-apk guix-package nix-flake containerfile))))) |
165 | | - |
166 | | -;;; ============================================================ |
167 | | -;;; TODO ITEMS (Ordered by priority) |
168 | | -;;; ============================================================ |
169 | | - |
170 | | -(define todo-items |
171 | | - '(;; Phase 1: Core Submission (HIGH PRIORITY - v1 blockers) |
172 | | - (1 high "Test multi-platform submission end-to-end" elixir-mcp) |
173 | | - (2 high "Add MCP tool registration in server.ex" elixir-mcp) |
174 | | - (3 high "Implement deduplication module" elixir-mcp) |
175 | | - (4 high "Add proper error handling and retries" elixir-mcp) |
176 | | - (5 high "Write integration tests" elixir-mcp) |
177 | | - |
178 | | - ;; Phase 2: Network Verification |
179 | | - (6 medium "Complete DANE/DNSSEC verification" elixir-mcp) |
180 | | - (7 medium "Add BGP/RPKI validation" elixir-mcp) |
181 | | - (8 medium "Implement post-submission verification" elixir-mcp) |
182 | | - |
183 | | - ;; Phase 3: Intelligence |
184 | | - (9 medium "Datalog semantic deduplication" elixir-mcp) |
185 | | - (10 medium "Cross-platform issue linking" elixir-mcp) |
186 | | - |
187 | | - ;; Phase 4: Statistics & UI |
188 | | - (11 low "Julia stats package" julia-stats) |
189 | | - (12 low "ReScript-Tea dashboard" rescript-ui) |
190 | | - |
191 | | - ;; Phase 5: Standards Proposals |
192 | | - (13 medium "Draft .well-known/feedback IETF proposal" docs) |
193 | | - (14 medium "Schema.org SoftwareBug vocabulary" docs) |
194 | | - |
195 | | - ;; Phase 6: Packaging |
196 | | - (15 low "Guix package definition" packaging) |
197 | | - (16 low "Nix flake" packaging) |
198 | | - (17 low "Wolfi APK" packaging))) |
199 | | - |
200 | | -;;; ============================================================ |
201 | | -;;; COMPLETED ITEMS |
202 | | -;;; ============================================================ |
203 | | - |
204 | | -(define completed-items |
205 | | - '(;; 2024-12-09 - Initial creation |
206 | | - (2024-12-09 "Project structure created") |
207 | | - (2024-12-09 "STATE.scm initialized") |
208 | | - (2024-12-09 "Elixir mix.exs created") |
209 | | - (2024-12-09 "OTP Application supervisor") |
210 | | - (2024-12-09 "GitHub API client (GenServer)") |
211 | | - (2024-12-09 "MCP Server (stdio JSON-RPC)") |
212 | | - (2024-12-09 "Datalog Store (ETS-backed)") |
213 | | - (2024-12-09 "Datalog Evaluator (semi-naive)") |
214 | | - |
215 | | - ;; 2025-12-11 - Major expansion |
216 | | - (2025-12-11 "FeedbackATron.Submitter - multi-platform submission GenServer") |
217 | | - (2025-12-11 "FeedbackATron.Credentials - credential management with rotation") |
218 | | - (2025-12-11 "FeedbackATron.NetworkVerifier - comprehensive network verification") |
219 | | - (2025-12-11 "FeedbackATron.MCP.Tools.SubmitFeedback - MCP tool for Claude Code") |
220 | | - (2025-12-11 "LANDSCAPE.adoc - ecosystem analysis and gap identification") |
221 | | - (2025-12-11 "Submitted MCP Security SEPs #1959-#1962") |
222 | | - (2025-12-11 "Submitted Claude Code bug report #13683"))) |
223 | | - |
224 | | -;;; ============================================================ |
225 | | -;;; DESIGN DECISIONS LOG |
226 | | -;;; ============================================================ |
227 | | - |
228 | | -(define design-decisions |
229 | | - '((2024-12-09 "elixir-over-rust-for-mcp" |
230 | | - "Chose Elixir for MCP server over Rust because: |
231 | | - - OTP supervision keeps server up |
232 | | - - Pattern matching natural for Datalog |
233 | | - - User already uses Elixir (NeuroPhone) |
234 | | - - Req library excellent for HTTP") |
235 | | - |
236 | | - (2024-12-09 "ets-over-sqlite-for-facts" |
237 | | - "Using ETS for Datalog fact store because: |
238 | | - - In-memory, very fast |
239 | | - - Native to BEAM |
240 | | - - Oxigraph handles persistent RDF") |
241 | | - |
242 | | - (2025-12-11 "cli-fallback-over-pure-api" |
243 | | - "Using gh/glab CLI as fallback over pure API because: |
244 | | - - Already authenticated |
245 | | - - Handles token refresh |
246 | | - - More reliable than raw HTTP") |
247 | | - |
248 | | - (2025-12-11 "network-verification-mandatory" |
249 | | - "Adding network-layer verification because: |
250 | | - - Feedback silently fails without it |
251 | | - - Users never know if submission succeeded |
252 | | - - Critical for reliability"))) |
253 | | - |
254 | | -;;; ============================================================ |
255 | | -;;; EXTERNAL CONTRIBUTIONS |
256 | | -;;; ============================================================ |
257 | | - |
258 | | -(define external-contributions |
259 | | - '((2025-12-11 "MCP Security Proposals" |
260 | | - (submitted-to . "modelcontextprotocol/modelcontextprotocol") |
261 | | - (issues . (1959 1960 1961 1962)) |
262 | | - (topics . ("DNS verification" ".well-known discovery" "security headers" "unified profile"))) |
263 | | - |
264 | | - (2025-12-11 "Claude Code Bug Report" |
265 | | - (submitted-to . "anthropics/claude-code") |
266 | | - (issue . 13683) |
267 | | - (topic . "Content filter causing session corruption")))) |
268 | | - |
269 | | -;;; ============================================================ |
270 | | -;;; SYNC VALIDATION |
271 | | -;;; ============================================================ |
272 | | - |
273 | | -;; This section defines checksums for sync validation between |
274 | | -;; STATE.scm and .claude/CLAUDE.md |
275 | | -;; Run scripts/sync-state.sh to verify and regenerate |
276 | | - |
277 | | -(define sync-metadata |
278 | | - '((state-scm-version . "2025-12-11T14:30:00Z") |
279 | | - (claude-md-version . "2025-12-11T14:30:00Z") |
280 | | - (sync-script . "scripts/sync-state.sh") |
281 | | - (auto-sync . #t))) |
282 | | - |
283 | | -;; EOF |
| 21 | +(define state-summary |
| 22 | + '((project . "feedback-a-tron") (completion . 25) (blockers . 0) (updated . "2025-12-15"))) |
0 commit comments