28 KiB
Attune Project Rules
Project Overview
Attune is an event-driven automation and orchestration platform built in Rust, similar to StackStorm. It enables building complex workflows triggered by events with multi-tenancy, RBAC, and human-in-the-loop capabilities.
Development Status: Pre-Production
This project is under active development with no users, deployments, or stable releases.
Breaking Changes Policy
- Breaking changes are explicitly allowed and encouraged when they improve the architecture, API design, or developer experience
- No backward compatibility required - there are no existing versions to support
- Database migrations can be modified or consolidated - no production data exists
- API contracts can change freely - no external integrations depend on them, only internal interfaces with other services and the web UI must be maintained.
- Configuration formats can be redesigned - no existing config files need migration
- Service interfaces can be refactored - no live deployments to worry about
When this project reaches v1.0 or gets its first production deployment, this section should be removed and replaced with appropriate stability guarantees and versioning policies.
Languages & Core Technologies
- Primary Language: Rust 2021 edition
- Database: PostgreSQL 14+ (primary data store + LISTEN/NOTIFY pub/sub)
- Message Queue: RabbitMQ 3.12+ (via lapin)
- Cache: Redis 7.0+ (optional)
- Web UI: TypeScript + React 19 + Vite
- Async Runtime: Tokio
- Web Framework: Axum 0.8
- ORM: SQLx (compile-time query checking)
Project Structure (Cargo Workspace)
attune/
├── Cargo.toml # Workspace root
├── config.{development,test}.yaml # Environment configs
├── Makefile # Common dev tasks
├── crates/ # Rust services
│ ├── common/ # Shared library (models, db, repos, mq, config, error)
│ ├── api/ # REST API service (8080)
│ ├── executor/ # Execution orchestration service
│ ├── worker/ # Action execution service (multi-runtime)
│ ├── sensor/ # Event monitoring service
│ ├── notifier/ # Real-time notification service
│ └── cli/ # Command-line interface
├── migrations/ # SQLx database migrations (18 tables)
├── web/ # React web UI (Vite + TypeScript)
├── packs/ # Pack bundles
│ └── core/ # Core pack (timers, HTTP, etc.)
├── docs/ # Technical documentation
├── scripts/ # Helper scripts (DB setup, testing)
└── tests/ # Integration tests
Service Architecture (Distributed Microservices)
- attune-api: REST API gateway, JWT auth, all client interactions
- attune-executor: Manages execution lifecycle, scheduling, policy enforcement
- attune-worker: Executes actions in multiple runtimes (Python/Node.js/containers)
- attune-sensor: Monitors triggers, generates events
- attune-notifier: Real-time notifications via PostgreSQL LISTEN/NOTIFY + WebSocket
Communication: Services communicate via RabbitMQ for async operations
Docker Compose Orchestration
All Attune services run via Docker Compose.
- Compose file:
docker-compose.yaml(root directory) - Configuration:
config.docker.yaml(Docker-specific settings) - Default user:
test@attune.local/TestPass123!(auto-created)
Services:
- Infrastructure: postgres, rabbitmq, redis
- Init (run-once): migrations, init-user, init-packs
- Application: api (8080), executor, worker-{shell,python,node,full}, sensor, notifier (8081), web (3000)
Commands:
docker compose up -d # Start all services
docker compose down # Stop all services
docker compose logs -f <svc> # View logs
Key environment overrides: JWT_SECRET, ENCRYPTION_KEY (required for production)
Domain Model & Event Flow
Critical Event Flow:
Sensor → Trigger fires → Event created → Rule evaluates →
Enforcement created → Execution scheduled → Worker executes Action
Key Entities (all in public schema, IDs are i64):
- Pack: Bundle of automation components (actions, sensors, rules, triggers)
- Trigger: Event type definition (e.g., "webhook_received")
- Sensor: Monitors for trigger conditions, creates events
- Event: Instance of a trigger firing with payload
- Action: Executable task with parameters
- Rule: Links triggers to actions with conditional logic
- Enforcement: Represents a rule activation
- Execution: Single action run; supports parent-child relationships for workflows
- Workflow Tasks: Workflow-specific metadata stored in
execution.workflow_taskJSONB field
- Workflow Tasks: Workflow-specific metadata stored in
- Inquiry: Human-in-the-loop async interaction (approvals, inputs)
- Identity: User/service account with RBAC permissions
- Key: Encrypted secrets storage
Key Tools & Libraries
Shared Dependencies (workspace-level)
- Async: tokio, async-trait, futures
- Web: axum, tower, tower-http
- Database: sqlx (with postgres, json, chrono, uuid features)
- Serialization: serde, serde_json, serde_yaml_ng
- Logging: tracing, tracing-subscriber
- Error Handling: anyhow, thiserror
- Config: config crate (YAML + env vars)
- Validation: validator
- Auth: jsonwebtoken, argon2
- CLI: clap
- OpenAPI: utoipa, utoipa-swagger-ui
- Message Queue: lapin (RabbitMQ)
- HTTP Client: reqwest
- Testing: mockall, tempfile, serial_test
Web UI Dependencies
- Framework: React 19 + react-router-dom
- State: Zustand, @tanstack/react-query
- HTTP: axios (with generated OpenAPI client)
- Styling: Tailwind CSS
- Icons: lucide-react
- Build: Vite, TypeScript
Configuration System
- Primary: YAML config files (
config.yaml,config.{env}.yaml) - Overrides: Environment variables with prefix
ATTUNE__and separator__- Example:
ATTUNE__DATABASE__URL,ATTUNE__SERVER__PORT
- Example:
- Loading Priority: Base config → env-specific config → env vars
- Required for Production:
JWT_SECRET,ENCRYPTION_KEY(32+ chars) - Location: Root directory or
ATTUNE_CONFIGenv var path
Authentication & Security
- Auth Type: JWT (access tokens: 1h, refresh tokens: 7d)
- Password Hashing: Argon2id
- Protected Routes: Use
RequireAuth(user)extractor in Axum - Secrets Storage: AES-GCM encrypted in
keytable with scoped ownership - User Info: Stored in
identitytable
Code Conventions & Patterns
General
- Error Handling: Use
attune_common::error::ErrorandResult<T>type alias - Async Everywhere: All I/O operations use async/await with Tokio
- Module Structure: Public API exposed via
mod.rswithpub usere-exports
Database Layer
- Schema: All tables use unqualified names; schema determined by PostgreSQL
search_path - Production: Always uses
publicschema (configured explicitly inconfig.production.yaml) - Tests: Each test uses isolated schema (e.g.,
test_a1b2c3d4) for true parallel execution - Schema Resolution: PostgreSQL
search_pathmechanism, NO hardcoded schema prefixes in queries - Models: Defined in
common/src/models.rswith#[derive(FromRow)]for SQLx - Repositories: One per entity in
common/src/repositories/, provides CRUD + specialized queries - Pattern: Services MUST interact with DB only through repository layer (no direct queries)
- Transactions: Use SQLx transactions for multi-table operations
- IDs: All IDs are
i64(BIGSERIAL in PostgreSQL) - Timestamps:
created/updatedcolumns auto-managed by DB triggers - JSON Fields: Use
serde_json::Valuefor flexible attributes/parameters, includingexecution.workflow_taskJSONB - Enums: PostgreSQL enum types mapped with
#[sqlx(type_name = "...")] - Workflow Tasks: Stored as JSONB in
execution.workflow_task(consolidated from separate table 2026-01-27) Table Count: 17 tables total in the schema
Pack File Loading
- Pack Base Directory: Configured via
packs_base_dirin config (defaults to/opt/attune/packs, development uses./packs) - Action Script Resolution: Worker constructs file paths as
{packs_base_dir}/{pack_ref}/actions/{entrypoint} - Runtime Selection: Determined by action's runtime field (e.g., "Shell", "Python") - compared case-insensitively
- Parameter Passing: Shell actions receive parameters as environment variables with
ATTUNE_ACTION_prefix
API Service (crates/api)
- Structure:
routes/(endpoints) +dto/(request/response) +auth/+middleware/ - Responses: Standardized
ApiResponse<T>wrapper withdatafield - Protected Routes: Apply
RequireAuthmiddleware - OpenAPI: Documented with
utoipaattributes (#[utoipa::path]) - Error Handling: Custom
ApiErrortype with proper HTTP status codes - Available at:
http://localhost:8080(dev),/api-spec/openapi.jsonfor spec
Common Library (crates/common)
- Modules:
models,repositories,db,config,error,mq,crypto,utils,workflow,pack_registry - Exports: Commonly used types re-exported from
lib.rs - Repository Layer: All DB access goes through repositories in
repositories/ - Message Queue: Abstractions in
mq/for RabbitMQ communication
Web UI (web/)
- Generated Client: OpenAPI client auto-generated from API spec
- Run:
npm run generate:api(requires API running on :8080) - Location:
src/api/
- Run:
- State Management: Zustand for global state, TanStack Query for server state
- Styling: Tailwind utility classes
- Dev Server:
npm run dev(typically :3000 or :5173) - Build:
npm run build
Development Workflow
Common Commands (Makefile)
make build # Build all services
make build-release # Release build
make test # Run all tests
make test-integration # Run integration tests
make fmt # Format code
make clippy # Run linter
make lint # fmt + clippy
make run-api # Run API service
make run-executor # Run executor service
make run-worker # Run worker service
make run-sensor # Run sensor service
make run-notifier # Run notifier service
make db-create # Create database
make db-migrate # Run migrations
make db-reset # Drop & recreate DB
Database Operations
- Migrations: Located in
migrations/, applied viasqlx migrate run - Test DB: Separate
attune_testdatabase, setup withmake db-test-setup - Schema: All tables in
publicschema with auto-updating timestamps - Core Pack: Load with
./scripts/load-core-pack.shafter DB setup
Testing
- Architecture: Schema-per-test isolation (each test gets unique
test_<uuid>schema) - Parallel Execution: Tests run concurrently without
#[serial]constraints (4-8x faster) - Unit Tests: In module files alongside code
- Integration Tests: In
tests/directory - Test DB Required: Use
make db-test-setupbefore integration tests - Run:
cargo testormake test(parallel by default) - Verbose:
cargo test -- --nocapture --test-threads=1 - Cleanup: Schemas auto-dropped on test completion; orphaned schemas cleaned via
./scripts/cleanup-test-schemas.sh - SQLx Offline Mode: Enabled for compile-time query checking without live DB; regenerate with
cargo sqlx prepare
CLI Tool
cargo install --path crates/cli # Install CLI
attune auth login # Login
attune pack list # List packs
attune action execute <ref> --param key=value
attune execution list # Monitor executions
Test Failure Protocol
Proactively investigate and fix test failures when discovered, even if unrelated to the current task.
Guidelines:
- ALWAYS report test failures to the user with relevant error output
- ALWAYS run tests after making changes:
make testorcargo test - DO fix immediately if the cause is obvious and fixable in 1-2 attempts
- DO ask the user if the failure is complex, requires architectural changes, or you're unsure of the cause
- NEVER silently ignore test failures or skip tests without approval
- Gather context: Run with
cargo test -- --nocapture --test-threads=1for details
Priority:
- Critical (build/compile failures): Fix immediately
- Related (affects current work): Fix before proceeding
- Unrelated: Report and ask if you should fix now or defer
When reporting, ask: "Should I fix this first or continue with [original task]?"
Code Quality: Zero Warnings Policy
Maintain zero compiler warnings across the workspace. Clean builds ensure new issues are immediately visible.
Workflow
- Check after changes:
cargo check --all-targets --workspace - Before completing work: Fix or document any warnings introduced
- End of session: Verify zero warnings before finishing
Handling Warnings
- Fix first: Remove dead code, unused imports, unnecessary variables
- Prefix
_: For intentionally unused variables that document intent - Use
#[allow(dead_code)]: For API methods intended for future use (add doc comment explaining why) - Never ignore blindly: Every suppression needs a clear rationale
Conservative Approach
- Preserve methods that complete a logical API surface
- Keep test helpers that are part of shared infrastructure
- When uncertain about removal, ask the user
Red Flags
- ❌ Introducing new warnings
- ❌ Blanket
#[allow(warnings)]without specific justification - ❌ Accumulating warnings over time
File Naming & Location Conventions
When Adding Features:
- New API Endpoint:
- Route handler in
crates/api/src/routes/<domain>.rs - DTO in
crates/api/src/dto/<domain>.rs - Update
routes/mod.rsand main router
- Route handler in
- New Domain Model:
- Add to
crates/common/src/models.rs - Create migration in
migrations/YYYYMMDDHHMMSS_description.sql - Add repository in
crates/common/src/repositories/<entity>.rs
- Add to
- New Service: Add to
crates/and update workspaceCargo.tomlmembers - Configuration: Update
crates/common/src/config.rswith serde defaults - Documentation: Add to
docs/directory
Important Files
crates/common/src/models.rs- All domain modelscrates/common/src/error.rs- Error typescrates/common/src/config.rs- Configuration structurecrates/api/src/routes/mod.rs- API routingconfig.development.yaml- Dev configurationCargo.toml- Workspace dependenciesMakefile- Development commands
Common Pitfalls to Avoid
- NEVER bypass repositories - always use the repository layer for DB access
- NEVER forget
RequireAuthmiddleware on protected endpoints - NEVER hardcode service URLs - use configuration
- NEVER commit secrets in config files (use env vars in production)
- NEVER hardcode schema prefixes in SQL queries - rely on PostgreSQL
search_pathmechanism - ALWAYS use PostgreSQL enum type mappings for custom enums
- ALWAYS use transactions for multi-table operations
- ALWAYS start with
attune/or correct crate name when specifying file paths - ALWAYS convert runtime names to lowercase for comparison (database may store capitalized)
- REMEMBER IDs are
i64, noti32oruuid - REMEMBER schema is determined by
search_path, not hardcoded in queries (production usesattune, development usespublic) - REMEMBER to regenerate SQLx metadata after schema-related changes:
cargo sqlx prepare
Deployment
- Target: Distributed deployment with separate service instances
- Docker: Dockerfiles for each service (planned in
docker/dir) - Config: Use environment variables for secrets in production
- Database: PostgreSQL 14+ with connection pooling
- Message Queue: RabbitMQ required for service communication
- Web UI: Static files served separately or via API service
Current Development Status
- ✅ Complete: Database migrations (17 tables), API service (most endpoints), common library, message queue infrastructure, repository layer, JWT auth, CLI tool, Web UI (basic), Executor service (core functionality), Worker service (shell/Python execution)
- 🔄 In Progress: Sensor service, advanced workflow features, Python runtime dependency management
- 📋 Planned: Notifier service, execution policies, monitoring, pack registry system
Quick Reference
Start Development Environment
# Start PostgreSQL and RabbitMQ
# Load core pack: ./scripts/load-core-pack.sh
# Start API: make run-api
# Start Web UI: cd web && npm run dev
File Path Examples
- Models:
attune/crates/common/src/models.rs - API routes:
attune/crates/api/src/routes/actions.rs - Repositories:
attune/crates/common/src/repositories/execution.rs - Migrations:
attune/migrations/*.sql - Web UI:
attune/web/src/ - Config:
attune/config.development.yaml
Documentation Locations
- API docs:
attune/docs/api-*.md - Configuration:
attune/docs/configuration.md - Architecture:
attune/docs/*-architecture.md,attune/docs/*-service.md - Testing:
attune/docs/testing-*.md,attune/docs/running-tests.md,attune/docs/schema-per-test.md - AI Agent Work Summaries:
attune/work-summary/*.md - Deployment:
attune/docs/production-deployment.md - DO NOT create additional documentation files in the root of the project. all new documentation describing how to use the system should be placed in the
attune/docsdirectory, and documentation describing the work performed should be placed in theattune/work-summarydirectory.
Work Summary & Reporting
Avoid redundant summarization - summarize changes once at completion, not continuously.
Guidelines:
- Report progress during work: brief status updates, blockers, questions
- Summarize once at completion: consolidated overview of all changes made
- Work summaries: Write to
attune/work-summary/*.mdonly at task completion, not incrementally - Avoid duplication: Don't re-explain the same changes multiple times in different formats
- What changed, not how: Focus on outcomes and impacts, not play-by-play narration
Good Pattern:
[Making changes with tool calls and brief progress notes]
...
[At completion]
"I've completed the task. Here's a summary of changes: [single consolidated overview]"
Bad Pattern:
[Makes changes]
"So I changed X, Y, and Z..."
[More changes]
"To summarize, I modified X, Y, and Z..."
[Writes work summary]
"In this session I updated X, Y, and Z..."
Maintaining the AGENTS.md file
IMPORTANT: Keep this file up-to-date as the project evolves.
After making changes to the project, you MUST update this AGENTS.md file if any of the following occur:
- New dependencies added or major dependencies removed (check package.json, Cargo.toml, requirements.txt, etc.)
- Project structure changes: new directories/modules created, existing ones renamed or removed
- Architecture changes: new layers, patterns, or major refactoring that affects how components interact
- New frameworks or tools adopted (e.g., switching from REST to GraphQL, adding a new testing framework)
- Deployment or infrastructure changes (new CI/CD pipelines, different hosting, containerization added)
- New major features that introduce new subsystems or significantly change existing ones
- Style guide or coding convention updates
AGENTS.md Content inclusion policy
- DO NOT simply summarize changes in the
AGENTS.mdfile. If there are existing sections that need updating due to changes in the application architecture or project structure, update them accordingly. - When relevant, work summaries should instead be written to
attune/work-summary/*.md
Update procedure:
- After completing your changes, review if they affect any section of
AGENTS.md - If yes, immediately update the relevant sections
- Add a brief comment at the top of
AGENTS.mdwith the date and what was updated (optional but helpful)
Update format:
When updating, be surgical - modify only the affected sections rather than rewriting the entire file. Maintain the existing structure and tone.
Treat AGENTS.md as living documentation. An outdated AGENTS.md file is worse than no AGENTS.md file, as it will mislead future AI agents and waste time.
Project Documentation Index
[Attune Project Documentation Index] |root: ./ |IMPORTANT: Prefer retrieval-led reasoning over pre-training-led reasoning |IMPORTANT: This index provides a quick overview - use grep/read_file for details | | Format: path/to/dir:{file1,file2,...} | '...' indicates truncated file list - use grep/list_directory for full contents | | To regenerate this index: make generate-agents-index | |docs:{MIGRATION-queue-separation-2026-02-03.md,QUICKREF-containerized-workers.md,QUICKREF-rabbitmq-queues.md,QUICKREF-sensor-worker-registration.md,QUICKREF-unified-runtime-detection.md,README.md,docker-deployment.md,pack-runtime-environments.md,worker-containerization.md,worker-containers-quickstart.md} |docs/api:{api-actions.md,api-completion-plan.md,api-events-enforcements.md,api-executions.md,api-inquiries.md,api-pack-testing.md,api-pack-workflows.md,api-packs.md,api-rules.md,api-secrets.md,api-triggers-sensors.md,api-workflows.md,openapi-client-generation.md,openapi-spec-completion.md} |docs/architecture:{executor-service.md,notifier-service.md,pack-management-architecture.md,queue-architecture.md,sensor-service.md,trigger-sensor-architecture.md,web-ui-architecture.md,webhook-system-architecture.md,worker-service.md} |docs/authentication:{auth-quick-reference.md,authentication.md,secrets-management.md,security-review-2024-01-02.md,service-accounts.md,token-refresh-quickref.md,token-rotation.md} |docs/cli:{cli-profiles.md,cli.md} |docs/configuration:{CONFIG_README.md,config-troubleshooting.md,configuration.md,env-to-yaml-migration.md} |docs/dependencies:{dependency-deduplication-results.md,dependency-deduplication.md,dependency-isolation.md,dependency-management.md,http-client-consolidation-complete.md,http-client-consolidation-plan.md,sea-query-removal.md,serde-yaml-migration.md,workspace-dependency-compliance-audit.md} |docs/deployment:{ops-runbook-queues.md,production-deployment.md} |docs/development:{QUICKSTART-vite.md,WORKSPACE_SETUP.md,agents-md-index.md,compilation-notes.md,dead-code-cleanup.md,documentation-organization.md,vite-dev-setup.md} |docs/examples:{complete-workflow.yaml,pack-test-demo.sh,registry-index.json,rule-parameter-examples.md,simple-workflow.yaml} |docs/guides:{QUICKREF-timer-happy-path.md,quick-start.md,quickstart-example.md,quickstart-timer-demo.md,timer-sensor-quickstart.md,workflow-quickstart.md} |docs/migrations:{workflow-task-execution-consolidation.md} |docs/packs:{PACK_TESTING.md,QUICKREF-git-installation.md,core-pack-integration.md,pack-install-testing.md,pack-installation-git.md,pack-registry-cicd.md,pack-registry-spec.md,pack-structure.md,pack-testing-framework.md} |docs/performance:{QUICKREF-performance-optimization.md,log-size-limits.md,performance-analysis-workflow-lists.md,performance-before-after-results.md,performance-context-cloning-diagram.md} |docs/plans:{schema-per-test-refactor.md} |docs/sensors:{CHECKLIST-sensor-worker-registration.md,COMPLETION-sensor-worker-registration.md,SUMMARY-database-driven-detection.md,database-driven-runtime-detection.md,native-runtime.md,sensor-authentication-overview.md,sensor-interface.md,sensor-lifecycle-management.md,sensor-runtime.md,sensor-service-setup.md,sensor-worker-registration.md} |docs/testing:{e2e-test-plan.md,running-tests.md,schema-per-test.md,test-user-setup.md,testing-authentication.md,testing-dashboard-rules.md,testing-status.md} |docs/web-ui:{web-ui-pack-testing.md,websocket-usage.md} |docs/webhooks:{webhook-manual-testing.md,webhook-testing.md} |docs/workflows:{dynamic-parameter-forms.md,execution-hierarchy.md,inquiry-handling.md,parameter-mapping-status.md,rule-parameter-mapping.md,rule-trigger-params.md,workflow-execution-engine.md,workflow-implementation-plan.md,workflow-orchestration.md,workflow-summary.md} |scripts:{check-workspace-deps.sh,cleanup-test-schemas.sh,create-test-user.sh,create_test_user.sh,generate-python-client.sh,generate_agents_md_index.py,load-core-pack.sh,load_core_pack.py,quick-test-happy-path.sh,seed_core_pack.sql,seed_runtimes.sql,setup-db.sh,setup-e2e-db.sh,setup_timer_echo_rule.sh,start-all-services.sh,start-e2e-services.sh,start_services_test.sh,status-all-services.sh,stop-all-services.sh,stop-e2e-services.sh,...} |work-summary:{2025-01-console-logging-cleanup.md,2025-01-token-refresh-improvements.md,2025-01-websocket-duplicate-connection-fix.md,2026-02-02-unified-runtime-verification.md,2026-02-03-canonical-message-types.md,2026-02-03-inquiry-queue-separation.md,2026-02-04-event-generation-fix.md,README.md,auto-populate-ref-from-label.md,buildkit-cache-implementation.md,collapsible-navigation-implementation.md,containerized-workers-implementation.md,docker-build-race-fix.md,docker-containerization-complete.md,docker-migrations-startup-fix.md,empty-pack-creation-ui.md,git-pack-installation.md,pack-runtime-environments.md,sensor-service-cleanup-standalone-only.md,sensor-worker-registration.md,...} |work-summary/changelogs:{API-COMPLETION-SUMMARY.md,CHANGELOG.md,CLEANUP_SUMMARY_2026-01-27.md,FIFO-ORDERING-COMPLETE.md,MIGRATION_CONSOLIDATION_SUMMARY.md,cli-integration-tests-summary.md,core-pack-setup-summary.md,web-ui-session-summary.md,webhook-phase3-summary.md,webhook-testing-summary.md,workflow-loader-summary.md} |work-summary/features:{AUTOMATIC-SCHEMA-CLEANUP-ENHANCEMENT.md,TESTING-TIMER-DEMO.md,e2e-test-schema-issues.md,openapi-spec-verification.md,sensor-runtime-implementation.md,sensor-service-implementation.md} |work-summary/migrations:{2026-01-17-orquesta-refactoring.md,2026-01-24-generated-client-migration.md,2026-01-27-workflow-migration.md,DEPLOYMENT-READY-performance-optimization.md,MIGRATION_NEXT_STEPS.md,migration_comparison.txt,migration_consolidation_status.md} |work-summary/phases:{2025-01-policy-ordering-plan.md,2025-01-secret-passing-fix-plan.md,2025-01-workflow-performance-analysis.md,PHASE-5-COMPLETE.md,PHASE_1_1_SUMMARY.txt,PROBLEM.md,Pitfall-Resolution-Plan.md,SENSOR_SERVICE_README.md,StackStorm-Lessons-Learned.md,StackStorm-Pitfalls-Analysis.md,orquesta-refactor-plan.md,phase-1-1-complete.md,phase-1.2-models-repositories-complete.md,phase-1.2-repositories-summary.md,phase-1.3-test-infrastructure-summary.md,phase-1.3-yaml-validation-complete.md,phase-1.4-COMPLETE.md,phase-1.4-loader-registration-progress.md,phase-1.5-COMPLETE.md,phase-1.6-pack-integration-complete.md,...} |work-summary/sessions:{2024-01-13-event-enforcement-endpoints.md,2024-01-13-inquiry-endpoints.md,2024-01-13-integration-testing-setup.md,2024-01-13-route-conflict-fix.md,2024-01-13-secret-management-api.md,2024-01-17-sensor-runtime.md,2024-01-17-sensor-service-session.md,2024-01-20-core-pack-unit-tests.md,2024-01-20-pack-testing-framework-phase1.md,2024-01-21-pack-registry-phase1.md,2024-01-21-pack-registry-phase2.md,2024-01-22-pack-registry-phase3.md,2024-01-22-pack-registry-phase4.md,2024-01-22-pack-registry-phase5.md,2024-01-22-pack-registry-phase6.md,2025-01-13-phase-1.4-session.md,2025-01-13-yaml-configuration.md,2025-01-16_migration_consolidation.md,2025-01-17-performance-optimization-complete.md,2025-01-18-timer-triggers.md,...} |work-summary/status:{ACCOMPLISHMENTS.md,COMPILATION_STATUS.md,FIFO-ORDERING-STATUS.md,FINAL_STATUS.md,PROGRESS.md,SENSOR_STATUS.md,TEST-STATUS.md,TODO.OLD.md,TODO.md}