This document outlines the sprint-based development process for the hexaFn project. Each milestone consists of 3 sprints, each with a specific theme. Sprints build functional modules incrementally to ensure the system's overall integrity.
✅ Set up the basic structure for the trigger and function execution system
🧠 Design an internal DSL and implement a simple DSL interpreter
🔁 Establish the Trigger → Run flow where a trigger can execute a function defined in DSL
📁 Enable loading of triggers from configuration files
🧾 Add a registry system and error handling for triggers
🧩 Introduce function context and CLI support for trigger reloading
⏱ Integrate features such as timeout handling, fallback functions, and trigger disabling
🐛 Improve CLI error output
🔥 Stress test the system
📊 Initiate logging for observability
🔗 Accept incoming webhook events from external systems
🧽 Normalize them and publish within the internal system
🌐 Implement HTTP endpoints, a basic Cast module, and essential security measures
🔃 Make the Cast module asynchronous
👥 Support multi-subscriber and topic filtering
📡 Ensure reliable event delivery
🕵️ Enhance visibility via CLI
⚙️ Conduct performance testing
👁 Make event delivery observable
📏 Add a metrics endpoint
⏪ Implement replay and acknowledgment features
🖥 Support manual publishing via CLI
🪪 Assign trace_id to all events and track transitions across modules
🧾 Produce structured log output
🧰 Make logs accessible through a system CLI tool
🌐 Export trace data to external systems via OpenTelemetry
📊 Provide Prometheus-compatible metrics
🚚 Forward logs externally
🧩 Add dynamic log level controls
⏳ Detect span timeouts
🏷️ Support custom labeling and sampling strategies
📡 Add live WebSocket log streaming
🕵️♂️ Enable full event tracking via CLI
🧱 Define a KvStore trait supporting CRUD operations
🧠 Build the first in-memory implementation
🗃️ Add JSON-based storage, namespace structure, and version tracking
📦 Introduce disk-based storage (JSON file format)
🧪 Implement schema validation for KV entries
♻️ Enable hot-reload of configurations
🗂 Add backup/restore tools and ACL controls
🪵 Integrate RocksDB
🔀 Support backend switching and data migration
📜 Add audit logs for key changes
🔐 Enable encrypted storage and change watchers
🧩 Support DSL, WASM (Wasmtime), JS (QuickJS), and Lua (rlua/mlua) runtimes
⚙️ Provide a common FunctionRuntime interface
🧪 Test with sample functions
🧾 Add input validation and custom configurations
🛠️ Implement fallback support and error tolerance
🧵 Enable isolated parallel execution of functions
🧠 Measure CPU/memory usage per execution
🧬 Pass environment variables to runtimes
📤 Forward outputs to feedback channels
📘 Standardize error messages and document with examples
📤 Enable output forwarding via HTTP, Cast, and filesystem
🧾 Extend output formatting
🗂️ Allow delivery configuration via files
🔁 Introduce retries and exponential backoff
🎯 Add Kafka forwarder
⏲ Handle delivery timeouts
🛡 Apply redaction mechanisms for security
📬 Allow outputs to be sent to multiple targets simultaneously
📡 Support live output streaming via WebSocket
🔌 Use circuit breakers for failed targets
🧩 Monitor target status via CLI
- 📋 GitHub Project Board: BOARD
- 🧭 Milestone Progress: MILESTONES
- 🐞 GitHub Issues: ISSUES