Progress Stream
We build in the open. Follow real-time updates on our products, engineering decisions, milestones, and research.
Calendar Feed Memory Persistence + Confirmation UX Shipped
Sabine now persists calendar feed configurations to memory after successful imports, ensuring feeds survive agent restarts. New confirmation UX helps users verify their feeds are locked in and working correctly.
Memory Lab Client Fixed: Response Key Correction
Fixed a silent bug in the Memory Lab client that was reading the wrong response key. The /retrieve endpoint returns memories in a 'memories' array, but our client was looking for 'results', causing memory recalls to fail silently. This fix ensures agent memory operations work as expected across all Strug Works services.
Calendar Feed Wiring: Import, List, Remove + DB Migration
Shipped calendar feed infrastructure for Sabine with full import, list, and remove endpoints backed by Supabase database migration. This completes the backend foundation for external calendar integration, enabling users to manage their connected calendars through the platform.
Strug Central Aurora Polish — Unified Dashboard Theme
Shipped visual polish updates to Strug Central with aurora-inspired design elements. Updated component styling, added comprehensive test coverage for AlertsBadge, and documented the unified dashboard theme approach. This brings cohesive visual identity to the command center.
Deprecated Haiku Model IDs Removed from Sabine
Removed deprecated Claude Haiku model identifiers from the Sabine agent orchestration layer. This maintenance update ensures compatibility with Anthropic's current API endpoints and prevents future service disruptions as older model IDs are phased out.
v4.0 Memory Retrieval Hotfix Resolves 8 Live Issues
Emergency hotfix deployed to sabine-super-agent addressing 8 critical memory retrieval issues discovered during live testing of v4.0. The fix restores reliable memory access patterns for agent operations and improves query performance under production load.
Slack Thread History Now Flows Into Sabine Conversations
Sabine now ingests full Slack thread context when responding to messages, fixing a gap where previous messages in a thread were invisible to the AI. This means Sabine can now follow multi-turn conversations in Slack channels without losing track of what was said earlier.
Updated Claude model refs to claude-3-5-haiku-latest
Sabine Super Agent now uses claude-3-5-haiku-latest instead of the deprecated claude-3-haiku model references. This ensures compatibility with Anthropic's current API and prevents future deprecation warnings across all Sabine's agent workflows.
Sabine learns to deduplicate entities with embeddings
Replaced pattern-matching entity deduplication with embedding-based similarity detection. Sabine can now recognize duplicate people, places, and things even when they're described differently—"Ryan" and "founder" now resolve to the same entity instead of creating duplicates.
Phase 2 Memory Brain: Shared Foundations Shipped
Merged infrastructure groundwork for the Phase 2 Memory Brain rebuild. This commit establishes shared foundational components that will enable more sophisticated agent reasoning and knowledge persistence. Sets the stage for enhanced memory capabilities across Strug Works.
Memory Brain Phase 1: Graph Schema & API
Shipped new memory infrastructure for Strug Works with graph-based schema, automated node builder, and /memory/graph API endpoint. Replaces flat memory tables with connected knowledge graphs to support multi-hop reasoning and relationship discovery. Foundation for agent long-term memory and context synthesis.
Preference Signal Collection and DPO Export Shipped
Sabine now captures user feedback (thumbs up/down, corrections) through a new preference_signals database table and chat UI component. An export script transforms these signals into DPO training pairs for future model fine-tuning, enabling Sabine to learn from real user preferences.
Observational Memory System with Observer and Reflector Agents
Shipped a new observational memory architecture that enables the platform to learn from its own execution patterns. Two specialized agents—Observer and Reflector—now track task outcomes and extract reusable insights, creating a foundation for autonomous improvement over time.
Epistemic Partitioning: 4-Network Memory Retrieval Ships
Strug Works agents now retrieve memories through four specialized neural networks—factual, episodic, procedural, and semantic—matching how humans organize knowledge. This architecture reduces retrieval latency and improves context relevance across long-running missions.
v3.0: Advanced Memory & Quality Infrastructure Shipped
Strug Works v3.0 introduces persistent agent memory with scope-based retrieval, confidence scoring, and automatic decay—enabling agents to learn from past executions. New quality infrastructure includes automated evaluation pipelines, test evidence requirements, and reliability metrics to ensure consistent output across all agent roles.
Abstention Tests Updated for Natural Hedging Language
Updated Sabine's test suite to assert natural uncertainty expressions instead of mechanical phrases like 'I believe' or 'don't have that in my notes'. The change acknowledges that effective AI assistants communicate uncertainty using context-appropriate hedging language that feels conversational rather than programmatic.
Sabine conversation memory now loads from database every turn
Fixed a critical bug where Sabine's conversational memory wasn't loading conversation history from the database on each /invoke call. This ensures Sabine maintains full context across all interactions, preventing the frustrating 'forgotten context' experience where the AI would lose track of earlier parts of a conversation.
Sabine Now Remembers Your Conversation for Better Follow-ups
Sabine can now use conversation history when answering follow-up questions, making multi-turn interactions feel more natural and intelligent. Previously, each question was treated in isolation—now Sabine understands context from earlier messages. This makes complex workflows smoother and reduces the need to repeat information.
Self-Improvement Phase 1: Structural Honesty and Gap Detection
Strug Works agents can now identify their own capability gaps and blind spots through structural honesty mechanisms. This foundational change enables the system to recognize what it doesn't know, setting the stage for autonomous learning and skill development. The first phase focuses on detection; remediation capabilities will follow.
Structural Honesty + Programmatic Enforcement Shipped to Sabine
Phase 1 and 2 of self-improvement capabilities are now live in Sabine. The platform can now detect and communicate when tasks exceed its capabilities (structural honesty) and programmatically enforce decision boundaries to prevent silent failures. This means fewer surprise failures and more transparent agent behavior across the entire system.
SSE Stream Reliability: Exponential Backoff Added
We added exponential backoff to the useTaskStream hook, which manages real-time task updates in Strug Central. This prevents connection storms when the backend is under load and ensures the Task Board and Strug Stream stay responsive even during high-traffic periods. Users will experience fewer dropped connections and smoother real-time updates.
Comprehensive Weather Skill Unit Tests Shipped
Added full test coverage for Sabine's weather skill handler with pytest. The new test suite validates API integration, error handling, and response formatting to ensure reliable weather information delivery. This strengthens Sabine's conversational capabilities with robust quality gates.
Sabine frontend launches with chat and today dashboard
Phase 1 of the Sabine consumer frontend shipped with a Next.js 15 foundation, real-time chat interface powered by the FastAPI backend, and a Today dashboard that surfaces tasks, reminders, and recent activity from the Supabase knowledge graph. The foundation includes shadcn/ui components, dark mode support, and Tailwind CSS styling.
Sabine stability fix: API error and hydration protection
Shipped defensive code to prevent crashes in ActivityFeed and Greeting components. ActivityFeed now safely handles unexpected API response shapes from /audit/tools. Hydration mismatch guards added to Greeting component. These changes eliminate TypeError crashes and improve runtime stability.
Sabine learns default Slack channels and reminder updates
Shipped channel inference and update_reminder skill to Sabine. The assistant now automatically infers the right Slack channel for notifications and can update existing reminders instead of creating duplicates. Meets users where they work with less manual configuration.
Dream Team MCP server registered for Claude Code sessions
Registered the Dream Team MCP server in Claude Code configuration, enabling direct agent interaction with the Dream Team mission control from within coding sessions. First integration between Claude Code and Dream Team infrastructure.
Team page headshots, Head of GTM, and Social Media Manager added
Updated the /team page with actual headshots for the full team, added Head of GTM and Social Media Manager roles to the Strug Works lineup. Team roster is now accurate to current org structure.
Agent memory seeding complete — all tiers verified in production
Completed the full agent memory seeding pipeline: Tier 1 global memories (naming, identity, tech stack), Tier 2 role-specific seeds for all 10 SC- roles, and a YAML-based seed script with bi-temporal upsert. All memories verified live in production.
Memory API routes and God View Memory tab shipped
Added complete Memory API routes (browse, inject, update, delete) with PostgREST sanitization, and shipped the AgentMemoryBrowser component in God View. Agents can now be inspected, edited, and injected with memories from the dashboard.
Cycle 7 fully deployed — RLS policies, smoke test, MCP registration
Completed Cycle 7 deployment to Railway: applied all RLS (Row Level Security) policies to Supabase, passed full smoke test suite, and registered the MCP server. Dream Team infrastructure now production-hardened.
Restored Railway Dockerfile builds with per-service config
Fixed a deployment regression by adding service-specific Railway configuration. PR #151 inadvertently broke Dockerfile builds when dockerfilePath was removed from railway.toml. Railway's Railpack auto-detected Node.js and attempted to build the Next.js frontend instead of using containerized builds. Per-service config now ensures each service uses its intended build strategy.
Cycle 7 MCP Integration Complete: RLS Policies Deployed
Shipped anon INSERT/UPDATE RLS policies for mcp_projects table to enable spec workflow write access. Fixed smoke test and registered MCP in .claude/mcp.json. This completes the Cycle 7 deployment, enabling automated project spec workflows with proper database access controls.
Fixed Memory API Auth for Browser Dashboard
Removed broken DISPATCH_API_KEY authentication from memory API routes. These same-origin Next.js routes are called by the browser dashboard and were never viable for server-side auth. Also removed invalid valid_to filter that was causing query issues.
Fixed Railway monorepo deployment with per-service config
Railway doesn't support multi-service configuration in a single railway.toml file. We split the config into separate railway.toml files for each service (backend and MCP server) so Railway can properly detect and deploy both services in our monorepo. Previous approach was silently failing.
Dream Team MCP server scaffold and God View tools shipped
Shipped the full MCP (Model Context Protocol) server for Dream Team, including get_mission, start_project, revise_spec, and approve_spec tools. Also added mcp_projects table and complete integration tests. MCP server deployed to Railway.
Fixed Agent Memory RLS for All Agent Roles
Rebuilt row-level security policies for the agent_memory table to properly support all agent roles in the system. This fix ensures agents can securely read and write memory entries scoped to their roles, resolving permission issues that were blocking memory operations across different agent types.
Cycle 6: Context Snapshots and Mission Grouping Shipped
Added context snapshot capabilities for agent state preservation, mission grouping for better task organization, and speculative branching for parallel execution paths. These features improve agent reliability and enable more sophisticated multi-step workflows.
Automated Agent Code Review Ships to Production
We've shipped automated structured code review for agent-generated pull requests. The new code_reviewer service analyzes Python files, runs static analysis, and provides actionable feedback before human review. This reduces review cycles and catches common issues early in the agent workflow.
Automated Code Review Agent Ships with Structured Analysis
We've shipped an automated code review service that performs structured analysis on pull requests. The new code_reviewer.py service integrates with our task runner to provide consistent, automated feedback on code quality, security, and best practices. This gives developers immediate feedback before human review.
Docker test-runner image adds pytest-asyncio for Gate 2
We enhanced our Docker test-runner with pytest-asyncio support to enable async test execution in Gate 2 quality checks. The updated image includes the full testing stack: pytest, pytest-asyncio, Node 20, and npm. A new CI workflow now publishes the test-runner image automatically, and documentation has been updated to reflect the new capabilities.
Cycle 5: Bi-Temporal Memory and Consolidation Pipeline
Shipped bi-temporal memory architecture (SCE-77) and automated consolidation pipeline (SCE-78) for Strug Works. Agents now maintain both episodic and semantic memory layers, with automatic consolidation from raw task memories into long-term insights. This enables agents to learn from past work and make better decisions over time.
Frontend Fixes: Role Tools, Budgets, and Event Styling
Shipped fixes to three frontend issues in the mission control interface. Updated role tool name display, improved budget suggestion UI, and refined warning event styling in the live log. These changes improve clarity and usability across the dispatch workflow.
SMS compliance updates and /sms-signup landing page live
Launched the /sms-signup landing page with full TCPA compliance, opt-in consent flow, and legal copy. Enables the first SMS marketing channel for Strug City community growth.
/privacy page launched with SMS compliance accordions
Shipped a full /privacy page with interactive accordion sections covering SMS compliance, TCPA, and data handling policies. Required for SMS marketing launch and linked from the footer.
Progress Stream automation scaled to all Strug City projects
Extended the Progress Stream pipeline from strug-enterprise-site to cover all Strug City repos via a reusable GitHub Actions workflow. Every commit across the org now feeds the /stream page automatically.
GTM Agent v1: Automated Content Pipeline Live
Dream Team now has a fully automated content pipeline. Three new agent roles — sc-content-writer, sc-social, and sc-product-sync — can generate blog posts, release notes, social drafts, and product updates from a single dispatch. Triggered by GitHub releases, scheduled cadence, or manual God View dispatch.
GTM content pipeline and socialDraft schema shipped
Added the socialDraft Sanity schema for staging social media content, wired Dream Team dispatch on GitHub release events, and established the automated content pipeline architecture. Groundwork for the CTO Digest and social content automation.
God View Dashboard and Spec-First Dispatch Shipped
Mission control now includes real-time SSE streams, approval workflows, and dynamic dispatch forms with budget controls. Introduced spec-first dispatch pattern: sc-qa writes tests, implementation agents receive them as success criteria.
SINC Sprint 1 Track B: Agent Telemetry, Skills Registry, Proactive Memory Injection
Sabine: SINC Sprint 1 Track B ships agent autonomy infrastructure. PlatformSignalEmitter instruments every tool call and task completion — success rate, latency, and failure modes stream to the new platform_signals table in real time. New /agent/health endpoint aggregates tool reliability signals into an AgentHealthResponse, giving Strug Works visibility into Sabine's operational state. SINC skills registry introduced: skills_registry table populated at server startup with the full set of SC agent tools, enabling dynamic skill discovery and future cross-agent skill sharing. Proactive memory injection completes the loop — the task agent now queries MAGMA for top-3 relevant memories and injects them into the system prompt before every run, giving Sabine persistent context without explicit retrieval. 1,463 tests passing.
Meet the Team page live with 8 agent profiles
Launched /team with profiles for Ryan Knollmaier (Founder/CEO/CTO), Sabine (Chief of Staff), and all six Strug Works Virtual Engineering agents. Placeholder pixel-art portraits in place pending commission.
SINC Sprint 1 Track A: Memory Depth — Brains, Chunking, Entity Extraction
Sabine: First major SINC sprint ships Track A — memory depth infrastructure. Introduces the 'brains' table as the top-level memory container, with brain_id foreign keys propagated across memories, entities, entity_relationships, and rules. Every user now gets a dedicated Sabine brain on signup. Adds parent_memory_id to memories for hierarchical recall. Text chunker wired into the file upload pipeline — long documents are split into semantically coherent chunks before embedding. Entity relationship extraction pulls structured relationships from memory text at ingest. Importance scoring ranks memories by recency, access frequency, and semantic weight. Deduplication prevents redundant memories from accumulating. Six new lib/sinc/ modules, seven new Supabase migrations, and full test coverage (16 new SINC-specific tests passing).
Brand identity, mission statement, and five-act narrative launched
Shipped the full Strug City brand overhaul: new hero messaging, About page five-act narrative, Meet the Team page, and "Building the team that builds the dream." tagline. The site now tells the real story of an autonomous agentic org built by one human.
Shopping Skill Production Hardening
Sabine: Post-review production hardening for the shopping skill cluster. Added 401 retry logic to UcpAdapter for complete_purchase and get_order_status. ACP adapter now passes preferred_sku in search. Playwright adapter dead credential load removed. Etsy added to default allowed_retailers in SafetyRails. Checkout error messages sanitized. Cluster manifest.json added for skill discovery. 8 review issues resolved, all adapters production-hardened.
SINC Sprint 1: Deep Memory and Agent Telemetry
Sabine now builds a persistent knowledge graph from conversations with entity extraction, importance scoring, and cross-session deduplication. Every tool call emits telemetry to platform_signals, and agents auto-inject the top-3 relevant memories per conversation.
Sabine Agentic Shopping: Complete Skill Cluster Shipped
Sabine Super Agent: Full agentic shopping capability deployed. Sabine can now autonomously search products, build carts, and complete purchases across Amazon, Shopify, and Etsy. Three adapter types: UCP (AP2 token refresh + deep-link fallback), ACP (Shopify/Etsy five-endpoint flow), and Playwright (Amazon with credential isolation and fallback). Five skills: product_search (preference recall + price change detection), build_cart (multi-item preference resolution), confirm_purchase (autonomy dial + safety rails), manage_list (CRUD on named shopping lists), get_order_status. SafetyRails enforce hard limits on order value, purchase rate, category, and retailer allowlist. Shopping preference memory integrates with existing memories table. 43 tests passing.
Sabine Engineering Wiki: 14 Files, 10,800+ Lines
Sabine Super Agent: Complete Engineering Wiki published covering the full system — context engine (MAGMA), autonomous skill acquisition, dual-stream pipeline, multi-agent orchestration, database schema, API reference, testing guide, and deployment runbook. 14 files totaling ~10,800 lines. The authoritative technical reference for Sabine 2.0 architecture.
sc-orchestrator: Mission Decomposition + Subtask Spawning (SCE-49)
Dream Team Strug: The sc-orchestrator agent can now autonomously decompose missions into subtasks and spawn specialist agents (sc-backend, sc-frontend, sc-qa, etc.). update_mission_status inline tool propagates orchestrator completion directly to the missions table. Role tool allowlists enforced at executor level — agents only see tools their role permits. Empty run_shell command guard prevents shell injection. Multi-agent fan-out is production-ready.
SINC Platform Architecture: Multi-Brain AI Research
Research: SINC (Strug AI Neuro-Computational Platform) architecture design published. Strategic vision for scaling Sabine 2.0 into a multi-brain platform where each brain (Sabine, Work Agent, Health Coach, Studio Head) gets partitioned memory, cognitive variables, and composable Context Packs. Context Packs are reusable behavioral modules that can be mixed with different weights per brain. Expected 5-10x capability multiplier with 70% cost reduction vs monolithic agents. Full executive summary, technical spec, and board presentation outline published.
Dream Team Engineering Wiki: 14 Pages, 11,000+ Lines
Dream Team Strug: Comprehensive Engineering Wiki published covering the full platform — task lifecycle and all status transitions, agent execution loop, complete tool dispatch table, fan-out orchestration with parent/child tasks, retry logic with backoff, StaleTaskReaper design, per-task cost tracking, human-in-the-loop approval workflow, and full environment variable reference. V1 (12 pages, 7,600 lines) shipped Mar 4; V2 (14 pages, 11,273 lines) shipped Mar 5.
Mission Orchestration UI with Real-time Supabase Subscriptions
Dream Team Strug: Mission orchestration UI migrated to Dream Team dashboard with live Supabase Realtime subscriptions. Missions table now propagates status from child task completions automatically. Dashboard 406/400 query errors resolved; server-side client now uses publishable key correctly. Operators see mission status update in real-time as agents complete subtasks.
StaleTaskReaper + Approval Flow Hardening (SCE-9, SCE-30)
Dream Team Strug: Two critical reliability fixes shipped. SCE-9: StaleTaskReaper now routes orphaned tasks through schedule_retry before marking them failed — stale tasks are rescued, not killed. SCE-30: Fixed approval flow mock sequences broken by the _fetch_existing_decision re-dispatch fast-path. Added per-task stale_threshold_minutes so long-running agent tasks (e.g. large repo clones) can declare their own heartbeat timeout instead of using the global 5-minute default.
Agent Role Manifests + Linear Dispatch Skill
Dream Team Strug: Formalized agent role system with role manifests defining personas, tool allowlists, and routing rules for all six canonical roles (sc-orchestrator, sc-backend, sc-frontend, sc-data, sc-pm, sc-qa). Linear dispatch skill enables agents to create and assign Linear issues directly from task output. roles-and-routing.md and agent-dispatch.md added to Engineering Wiki. Fix: VALID_ROLES now derived from ROLE_MANIFESTS to prevent dispatch failures for sc-orchestrator.
Dream Team Phase 5 Complete: Autonomous Agents Ship PRs
Dream Team Strug: Phase 5 milestone reached. AI agents now execute full software development cycles end-to-end: task dispatch to git clone, code execution, commit, push, and PR creation — zero human touchpoints required. Systematic debugging resolved agent execution, routing, and task-poller bugs. All agent personas, role color coding, and orchestration status panels wired to live data.
Mission Control: Live Dispatch Form + /api/dispatch Route
Dream Team Strug Phase 5C: Mission Control in God View now has a live dispatch form — operators write a mission brief, select agent roles, and fire tasks directly from the dashboard. Next.js /api/dispatch route handles task creation with validation. Session IDs and depends_on chains supported for sequential multi-agent workflows. Tool layers for Supabase, GitHub, Exa search, and role enforcement wired end-to-end.
Dream Team Phase 5B: Full Git Integration in Agent Executor
Dream Team Strug: AI agents can now clone repos, commit code, push branches, and create PRs autonomously. Phase 5B ships git_clone (shallow clone + feature branch creation), git_commit (safety guard + structured message), git_push (protected branch guard, no force-push), and git_create_pr (template-enforced PR creation via GitHub API). Database migration 005 tracks git_branch, git_commit_sha, pr_url, and pr_number per task. Full software development cycle now executable without human intervention.
Email Attachment Support for Sabine Briefings
Sabine: Gmail integration now extracts and summarizes email attachments (PDFs, Word docs, spreadsheets) as part of morning briefings. Workers deployed on Railway with Redis queue for async processing. Health probe hardened for cold-start race conditions on Railway redeploy. Users receive attachment summaries in their morning briefing without having to open email.
Self-Improvement Loop: Effectiveness Tracker + Gap Pipeline
Sabine 2.0 Phase 3: Autonomous self-improvement system shipped. Effectiveness tracker measures response quality over time. Gap pipeline detects skill deficiencies and queues improvements. Signal classifier identifies feedback patterns from user interactions. Sabine can now identify what she is bad at and autonomously queue improvements. Merged to main.
Autonomous Skill Acquisition Pipeline
Sabine 2.0: Complete skill acquisition pipeline deployed — Sabine can discover capability gaps, design new skills, test them in sandbox, and register them without human intervention. Phase 4 load tests show the pipeline handles 100+ skill evaluations/hour with zero regressions. Grafana dashboard added for full observability.
MAGMA Intelligence Engine: Context Architecture Complete
Sabine 2.0 Phase 2: Memory Architecture for Generalized Machine Awareness (MAGMA) fully implemented. Multi-layer context system with taxonomy validation, belief revision, Value-of-Information gate, and slow-path/fast-path extraction pipeline. Enables Sabine to reason about uncertainty, revise beliefs as new information arrives, and selectively retrieve only the most relevant context per query. 15+ new files with comprehensive integration tests.
Project Boundaries & Governance: Sabine vs Dream Team
Sabine Super Agent: Published PROJECT_BOUNDARIES_AND_GOVERNANCE.md — a critical architecture document establishing clear separation between Sabine (consumer personal assistant) and Dream Team (virtual engineering platform). Prevents persona bleed and codifies which features belong where. Added CRITICAL DISTINCTION section to CLAUDE.md and Sabine 1.0 regression CI workflow to protect existing behavior during 2.0 development.
🎉 PRODUCTION READY - Deployment Verified
Enterprise Site: All systems green! Deployment verification passed - health checks, CMS connectivity, API routes, static generation, and ISR caching all functioning. 430+ commits across 4 repositories over 24 days. Ready to show the world what Strug City builds.
📦 Repository Migration Complete
Announcement: Strug City Enterprise Site repository migrated from strugcity-site to strug-enterprise-site. Updated all documentation, CI/CD configurations, and team access. Cleaner naming convention aligns with other Strug City repositories.
🚀 7 GitHub Actions Workflows Migrated
Enterprise Site: Complete CI/CD pipeline with 7 GitHub Actions workflows - lint, type-check, build verification, Sanity schema deployment, preview deployments, production deployment, and security scanning. 98% faster than previous CI setup.
Sanity Seed Script (1441 lines, idempotent)
Enterprise Site: Comprehensive seed script populates Sanity with initial content - 4 products, 20+ stream entries, 5 blog posts with PortableText. Idempotent design allows safe re-runs. Checks for existing content before creating. Essential for environment setup.
Vercel Deployment Configuration Complete
Enterprise Site: Production Vercel configuration finalized with environment variables, build settings, and domain routing. ISR caching optimized for performance. Preview deployments enabled for PR reviews. Edge functions configured for API routes.
Dynamic OG Images (1200x630)
Enterprise Site: Next.js ImageResponse API generates dynamic Open Graph images for all pages. Blog posts show title and excerpt, stream entries show type badges, products show feature highlights. Proper social media previews on Twitter, LinkedIn, Slack.
Dynamic Sitemap Generation
Enterprise Site: XML sitemap automatically generated from Sanity content. Includes all blog posts, stream entries, and product pages with accurate lastmod timestamps. Submitted to Google Search Console for optimal indexing.
RSS Feeds for Blog and Stream
Enterprise Site: RSS/Atom feeds generated for blog posts and progress stream. Developers can subscribe to Strug City updates in their feed readers. XML properly escaped, full content included, automatic updates every 60 seconds via ISR.
Home Page Dynamic Content Integration
Enterprise Site #61: Home page now pulls latest stream entries and featured blog posts from Sanity. Dynamic product showcases with real-time status updates. Zero hardcoded content - everything managed through CMS.
Individual Blog Posts with PortableText
Enterprise Site #62: Dynamic blog post pages with Sanity PortableText rendering. Supports rich text formatting, code blocks with syntax highlighting, images with captions, and embedded content. Custom components for callouts and quotes.
Enhanced Morning Briefing Sections
Sabine: Morning briefings now include dedicated sections for urgent emails, calendar summary, pending replies, and suggested actions. Smart grouping by project context. Users report 25% reduction in morning email processing time.
Blog Listing Page Implementation
Enterprise Site #60: Blog listing page with post previews, publication dates, and reading time estimates. Responsive grid layout with Aurora color palette. Pagination support for large post collections. 12 files changed, 280 additions.
Railway Deployment Verification Script
Sabine: Automated deployment verification script for Railway platform. Validates service health, database connectivity, environment variables, and API endpoints post-deployment. Catches configuration issues before users notice. 7-minute verification suite.
Stream Page with Date Grouping
Enterprise Site #59: Progress stream page with intelligent date grouping. Entries automatically grouped by day with relative timestamps. Filter by entry type (milestone, release, engineering, research, announcement). ISR caching with 60s revalidation.
Products Page Conversion to CMS
Enterprise Site #56: Products page now powered by Sanity CMS. Marketing team can update product descriptions, features, and status without developer involvement. Includes preview mode for content review before publishing.
🎉 Sanity CMS Foundation Complete
Enterprise Site: Sanity CMS integration complete with 3 content schemas (products, blog posts, stream entries) and 8 optimized GROQ queries. Headless CMS architecture enables rapid content updates without code deployments. TypeScript types generated from schemas.
📧 Work Email Integration Plan Announced
Sabine Super Agent: Roadmap released for Coca-Cola work email integration. Pilot program will route all work emails through Sabine processing pipeline for intelligent briefings, action extraction, and priority management. Launch target: March 2026.
Complete Error Handling Utilities Framework
Dream Team Strug: Released comprehensive error handling utilities - type guards, error transformers, retry mechanisms, and logging integrations. Standardizes error handling across all Dream Team services. 12 utility functions, fully typed.
Pre-commit Lint Guardrails Prevent Build Breaks
Sabine: Implemented pre-commit hooks running ESLint, Prettier, and type checking before allowing commits. Catches 95% of build-breaking issues locally. Reduces CI failures from 23% to 3%. Includes auto-fix for common formatting issues.
Enhanced ErrorAlert Component
Dream Team Strug: Comprehensive error handling in ErrorAlert component with categorized error types, suggested actions, and automatic retry logic. Distinguishes network errors, authentication failures, and business logic errors with appropriate UX.
✅ All Tests Passing + Security Scan Clean
Sabine Super Agent: Achieved 100% test pass rate across 172 test cases. Security scan shows zero vulnerabilities. Code coverage at 94%. Ready for production deployment. 38 commits over 5 days stabilizing test infrastructure.
Real-time Task Progress Visibility
Dream Team Strug: WebSocket-based real-time updates show AI agent task progress as it happens. Progress bars, status indicators, and log streaming eliminate refresh fatigue. Operators know task status within 200ms of state changes.
Domain Context Integration
Sabine #51: Integrates domain classification with briefing generation. Work emails prioritized during business hours, personal emails surfaced evenings/weekends. Context-aware urgency detection adapts to sender importance and project deadlines.
Email Memory Ingestion Pipeline
Sabine #49: New pipeline ingests email history into long-term memory for context-aware responses. Extracts relationships, project timelines, and communication patterns. Enables Sabine to reference past conversations and understand ongoing projects.
Mission Control Tab in God View
Dream Team Strug: New Mission Control tab provides command center for AI agent orchestration. View all active tasks, agent assignments, execution timelines, and resource utilization. One-click access to logs and metrics.
🚀 Dual-Context Morning Briefing Released
Sabine #52: Morning briefings now separate work and personal contexts. Intelligent summarization of overnight emails, calendar events, and action items for each domain. 'Work-life balance as a feature' - users report 40% faster inbox zero.
Task Action Guards + Vitest Setup
BanditsTracker: Implemented action guards preventing invalid state transitions in workout tasks. Athletes can't log sets before starting workout, can't complete before all sets logged. Migrated test suite to Vitest for 3x faster execution.
Comprehensive API Error Handling Tests
BanditsTracker: Added 47 new test cases covering API error scenarios - network failures, timeouts, malformed responses, authentication errors. Improved error messages and retry logic. Test coverage increased from 72% to 89%.
Complete Project Atlas Architecture Documentation
Dream Team Strug: Comprehensive architecture documentation for Project Atlas (internal name for Dream Team infrastructure). Documents agent orchestration patterns, event streaming architecture, and deployment topology. 93-page technical reference.
✅ Core Python Verification Cleanup Complete
Sabine Super Agent codebase cleanup: removed deprecated Python verification scripts, consolidated test utilities, and standardized error handling. All 147 tests passing with 95% code coverage.
📜 Strug City Constitution Published
Governance framework for Strug City operations released. Defines AI agent roles, decision-making protocols, escalation paths, and quality standards. Establishes principles for transparent, collaborative AI-human engineering.
Task Cancel/Retry UX Improvements
Dream Team Strug: New cancel and retry buttons for stalled AI agent tasks in God View. Reduces manual intervention time by 60%. Includes confirmation dialogs and automatic cleanup of orphaned processes.
Gophers Summer 2024 Comprehensive Seed Script
Complete seed data script for BanditsTracker based on real Gophers Summer 2024 program. Includes 12 weeks of workouts, 45+ exercises with videos, and athlete progression templates. Makes onboarding new programs faster.
Multi-Domain Classification Support
Enhanced Sabine email classifier to handle multiple domain contexts simultaneously. Supports work, personal, side projects, and custom categories. Smart learning adapts to user patterns over time.
Real-time Set Logging in WorkoutPage
Athletes can now log sets in real-time during workouts in BanditsTracker. Tracks weight, reps, and rest intervals with offline support. Data syncs automatically when connection restored.
🎯 SABINE God View Dashboard Released
Dream Team Strug: Initial release of SABINE God View - centralized dashboard for monitoring all AI agent activities. Real-time visibility into task execution, agent health, and system performance. Built with Next.js and real-time WebSocket updates.
Domain Filter Pipeline Implementation
Sabine #47: Multi-stage domain filtering pipeline processes emails through classification, priority scoring, and context extraction. Reduces inbox noise by 70% while surfacing critical messages. 28 commits with comprehensive test coverage.
🎉 Navigation Restructure Shipped
Major BanditsTracker navigation overhaul: Dashboard → Programs → Workouts hierarchy. Improved information architecture makes it easier for athletes to find their assigned programs and upcoming workouts. 18 files changed, 340+ additions.
Email Domain Classifier Shipped
Sabine Super Agent #45: New email domain classifier intelligently categorizes incoming emails by sender domain. Separates work emails from personal, newsletters from urgent communications. Foundation for context-aware AI briefings.
ExerciseCardModal with Video/Instruction Display
New modal component for BanditsTracker displaying exercise videos and detailed instructions. Supports multiple video angles, form tips, and common mistakes. 22 commits implementing responsive design and video player controls.
Complete History Page with Expandable Sessions
BanditsTracker History Page released showing all completed workouts with expandable session details. Athletes can review past performance, view exercise logs, and track progress over time. Includes date filters and search.
Security Hardening: Deployment Scripts Removed
Removed exposed deployment scripts from BanditsTracker repository that contained sensitive configuration details. Migrated to secure CI/CD pipeline with environment-based secrets management.
📚 All-in-One Operations Guide Released
Comprehensive BanditsTracker operations manual for coaches and administrators. Covers program setup, workout creation, athlete management, and video analysis workflows. 47-page guide with screenshots and best practices.
Fixed Start Workout Critical Bugs
Resolved 403 authorization errors and blank page issues preventing athletes from starting workouts. Root cause: missing permission checks in workout initialization API. 15 commits over 2 days to ensure stable user experience.
Video Analysis Staging Modal System
Shipped new video analysis staging modal in BanditsTracker allowing coaches to review and annotate workout videos before publishing to athletes. Supports side-by-side comparison and frame-by-frame review.
🎯 Athletic Excellence Hub Vision Published
BanditsTracker vision document released outlining comprehensive athlete development platform. Combines workout tracking, video analysis, and performance metrics for high school athletic programs.
Confidence tier thresholds recalibrated for memory retrieval
Recalibrated confidence tier thresholds for document-ingested memories to better reflect real-world agent performance. HIGH tier lowered from 0.85 to 0.70, MEDIUM from 0.70 to 0.50, ensuring agents can act on good-but-not-perfect memories without false precision blocking useful context.
Reminder Skill Now Accepts Natural Language Dates
Fixed a bug in Sabine's reminder skill that was rejecting natural language date inputs like "tomorrow" or "next week." Users can now create reminders using conversational language instead of being forced to use specific date formats.
SINC Sprint 1: Deep Memory and Agent Telemetry
Sabine now builds a persistent knowledge graph from conversations with entity extraction, importance scoring, and cross-session deduplication. Every tool call emits telemetry to platform_signals, and a new /agent/health endpoint tracks reliability.
Progress Stream Automation: GitHub to Sanity Pipeline
GitHub Actions now auto-dispatches sc-content-writer on every main branch push, creating published stream entries and draft blog posts directly in Sanity. Replaces deprecated Gemini CLI with hardened CI, Linear agent tools, and webhook integration across 3 repos.
Sabine Now Consumes Memory Lab API
Sabine's client integration with Memory Lab API is complete, enabling the AI partnership platform to read and write to shared memory infrastructure. This architectural milestone allows Sabine to leverage the same memory primitives that power Strug Works agents, creating consistent context management across both products.
Deployment Verification Endpoint Shipped
Added /agent/debug endpoint and retrieval version marker to confirm which code is running in production. Returns retrieval_version, Memory Lab env var status, and deployment timestamp - critical for debugging Railway environment variable injection timing issues.
Gmail Integration: Observability & Auth Hardening Shipped
Added comprehensive monitoring to Gmail integration with Prometheus metrics, end-to-end health checks, synthetic probe testing, and distributed trace IDs. This upgrade makes Gmail auth failures visible in real-time and provides diagnostic tools for troubleshooting integration issues across the Sabine platform.
Sabine Now Reads Forwarded Emails
Sabine can now parse forwarded emails, extracting the original sender, subject, and body content from common email client formats. This unlocks new workflows where users can forward important emails to Sabine for context-aware assistance, making it easier to bring external conversations into your AI partnership.
Legal Contract Ingest with Domain Forcing and Clause Suppression
Sabine can now intelligently process legal contracts and agreements with two new capabilities: domain forcing ensures contract classification overrides generic document types, while clause suppression filters out boilerplate sections to focus on substantive terms. This enhancement improves contract analysis accuracy and reduces noise in legal document workflows.
Diagnostic Logging Added to Memory Retrieval RPC
Added verbose logging to the _retrieve_by_tier RPC call in lib/agent/retrieval.py to investigate why match_memories returns zero results through PostgREST while succeeding in direct SQL queries. This temporary instrumentation will help isolate the integration point where results are lost.
Legal Ingest Domain Mapping Fixed for Database Compatibility
Fixed a schema mismatch where legal document ingest was using domain hints (vehicle, financial, medical) that don't exist in the database enum. The system now correctly maps to valid domain values (work, family, persona) that match our database schema. Debug logging removed to clean up production output.
Enhanced Memory Retrieval Logging for Diagnostic Visibility
Added tier-by-tier logging to Strug Recall's retrieval system, exposing result counts, similarity scores, and threshold filters for each memory tier query. This diagnostic improvement helps engineers quickly identify whether zero-result queries stem from missing data or overly aggressive filtering, reducing debugging time for memory-related issues.
Sabine Now Persists Chat Threads Across Sessions
Sabine conversations now survive browser refreshes and app restarts. Users can close and reopen chats without losing context, making the partnership experience feel continuous and reliable. This change stores thread state in Supabase, enabling seamless multi-session interactions.
Fixed Chat Persistence with Consistent User ID Handling
Resolved a chat persistence bug in Sabine where inconsistent user UUID handling caused conversations to fail to save properly. The fix ensures all chat operations use a consistent user identifier, improving reliability for users managing ongoing AI partnership conversations.
Fixed chat message ordering issue in Sabine
Chat messages in Sabine now load in the correct chronological order on page reload. Previously, messages could appear out of sequence when the chat interface was refreshed, creating confusion during conversations. This fix ensures consistent message ordering across all session states.
Fixed reminder search to find topic-specific reminders in chat
Sabine agents can now accurately find and retrieve reminders when users ask about specific topics in conversation. The fix resolves a search limitation that prevented topic-based reminder queries from returning results, improving the reliability of reminder management in chat.
OpenWeatherMap Integration Live in Sabine
Sabine can now fetch real-time weather data through a new OpenWeatherMap skill handler. The integration returns temperature (both Fahrenheit and Celsius), feels-like readings, current conditions, humidity, and wind data—giving Sabine contextual awareness for weather-dependent conversations and decisions.
Weather Skill Integration Tests with Real API Validation
Added comprehensive integration tests for Sabine's weather skill that validate against real API responses. These tests ensure the weather skill correctly handles live data from weather services, improving reliability and catching integration issues before they reach users.
Strug Works Ships sc-evolver: Autonomous Self-Improvement Engine
Phase 3 of self-improvement capabilities is live. The sc-evolver agent can now autonomously identify gaps in team capabilities, propose architectural improvements, and implement cross-system enhancements—all gated by a new trust framework that ensures safety at scale.
Sabine chat now maintains full conversation context
Fixed a conversation context bug where Sabine would lose track of earlier messages in a chat session. The system now always sends in-memory conversation history to the backend, ensuring Sabine remembers what you've discussed. Previously, history was only sent as a fallback when thread retrieval failed.
Sabine chat context trimmed to current session only
Fixed a context bloat issue where Sabine's chat hook was sending the entire message history (including reloaded DB state) to the LLM on every request. Now only current-session messages are sent as conversation context, reducing token costs and improving response latency.
Memory Architecture & Intelligent Routing Wave 1 Ships
Phase 2 memory architecture and Phase 3 routing intelligence landed in Strug Works, covering SCE-146, 148-150. This foundational update improves how agents store, recall, and route information across the platform, setting the stage for smarter context awareness and task orchestration.
Fixed CORS blocking for Sabine frontend deployments
Updated server CORS configuration to allow Sabine's Vercel frontend domains. The backend was only whitelisting Dream Team domains, blocking legitimate requests from sabine-super-agent.vercel.app. This restores cross-origin access for Sabine's production frontend.
Fixed Authentication Header in Sabine Frontend
Corrected the API authentication mechanism in the Sabine frontend to use X-API-Key header instead of Authorization Bearer. The backend validates against AGENT_API_KEY, but the frontend was sending the wrong header format, causing authentication failures.
Backend Budget Execution Fixes Merged
Fixed 5 critical issues in agent executor, task runner, and git push tools that were causing sc-frontend budget failures. The patches address backend execution flow problems that prevented tasks from completing successfully. These stability improvements ensure more reliable agent operations across the platform.
Fixed Premature Mission Completion in Spec-First Orchestration
The sc-orchestrator persona wasn't capturing implementation task IDs, causing missions to complete before the actual work finished. We updated the orchestrator logic in agent_executor.py to properly track task IDs through the spec-first workflow, ensuring missions only complete when all implementation is done.
Dream Team MCP Server — FastMCP over Streamable HTTP
Shipped a Model Context Protocol server exposing 4 Dream Team tools (agent status, mission planning, task dispatch, and metrics) over streamable HTTP transport. Built with FastMCP and authenticated via JWT. This makes Strug Works capabilities accessible to any MCP-compatible AI client — Claude Desktop, Zed, or custom tools.
Gmail Integration Hardening: Status Tokens and MCP Singleton
Shipped reliability improvements to Sabine's email integration including status tracking tokens, MCP server singleton pattern, and deployment runbook. These changes reduce email handling errors and improve observability across the Gmail connection layer.
Reverted multi-intent default in Sabine assistant
Changed SABINE_MULTI_INTENT default back to false. Multi-intent handling added complexity to routine assistant interactions. Keeping it opt-in preserves predictable single-action behavior for most workflows.
Fixed broken CI workflows and Sanity config
Repaired two GitHub Actions workflows (strug-blog-sync.yml and notify-progress-stream.yml) that were failing due to references to a non-existent Gemini action. Both now use Dream Team dispatch for reliable execution. Also corrected the Sanity project ID in CLAUDE.md and added a backfill script to recover 12 missed stream entries from the outage period.
Sabine Reminders Fixed: Scheduler Job Now Active
Reminders in Sabine weren't firing due to a missing background scheduler job and a TypeError during reminder creation. Both issues are now resolved, restoring reminder functionality across the platform.
Fixed sidebar text visibility in Sabine light mode
Sidebar text was completely invisible in light mode, breaking navigation. Updated color tokens to ensure text contrast across both themes. Also moved Upload Knowledge to the top of the sidebar for faster access to the most-used feature.
Document-ingested memories now visible to retrieval
Fixed a critical bug where memories created from document ingestion were defaulting to 'raw' tier, making them invisible to retrieval queries. Document memories now properly use 'semantic' tier, ensuring they surface in agent context and decision-making.
Document classifier ships for Sabine memory ingest pipeline
Added automatic document type classification to Sabine's memory ingestion pipeline. The classifier identifies and tags incoming documents (emails, PDFs, web pages) before they hit vector storage, enabling smarter retrieval and context-aware responses. This closes a gap where Sabine treated all documents identically regardless of their nature or purpose.
Biographical Document Ingest with Holistic LLM Extraction
Sabine can now ingest biographical documents using holistic LLM-based extraction. This enhancement moves beyond field-by-field parsing to understand context and relationships within life documents, enabling richer partner profiles. The feature improves how Sabine learns about user history and preferences from uploaded materials.
Phase 2 Classifier Now Wired Into File Upload
The Phase 2 classifier is now integrated directly into Sabine's file upload endpoint. Files are automatically analyzed and categorized on upload, removing a manual classification step and improving response accuracy for document-based queries.
Sabine Super Agent upgraded to Claude Haiku 4.5
Updated the foundation model powering Sabine from Claude Haiku 3 to Claude Haiku 4.5 (20251001 release). This upgrade delivers faster response times and improved reasoning capabilities across all Sabine interactions—email intelligence, briefings, and autonomous task execution. The model constant HAIKU_MODEL now points to the latest stable release.
Knowledge Upload Integration Restored
Fixed critical parameter mismatch in biographical and legal document upload handlers that was causing all classified file uploads to crash. The fix corrects function signatures to match expected parameters (text, filename, source_document_id instead of document_text, knowledge_file_id) and adds robust JSON parsing with brace-matching fallback for LLM responses wrapped in explanatory text.
Legal Ingest Now Extracts Contract and Customer Details
The legal document ingest pipeline now captures contract numbers, customer names, addresses, and phone numbers from uploaded documents. This enhancement fills a critical gap in contract identification, making it easier to track and reference agreements within Sabine's partnership workflows.
Fixed Memory Ingest Parameter Mismatch in Sabine Backend
Corrected kwarg names in biographical and legal memory ingest handlers. The upload handler was passing `document_text` and `knowledge_file_id`, but both ingest functions expected `text` instead. This fix ensures memory ingestion flows work correctly for Sabine's knowledge management system.
Fixed Haiku JSON Parsing in Biographical Ingest
Shipped a fix for Claude Haiku's tendency to omit outer braces in JSON responses during biographical document processing. The parser now handles ```json "assertions": [...] ``` syntax alongside standard JSON, improving extraction reliability. Also strengthened the system prompt to explicitly require complete JSON structure.
Comprehensive Legal Contract Data Extraction for Sabine
Redesigned Sabine's legal document extraction prompt to capture 95%+ of actionable contract data including terms, obligations, payment structures, and renewal clauses. Improved memory creation ensures no critical contract details are missed during document ingest.
Biographical ingest now groups narrative memories for better retrieval
Sabine's biographical memory system was losing important context because atomic assertions like "Subject was born in Peoria" produced embeddings that scored below the 0.6 similarity threshold during retrieval. We now group related biographical facts into narrative chunks, preserving context and improving recall accuracy for personal history.
Fixed memory retrieval bias in LLM context headers
Changed confidence tier labels from judgmental language ('Uncertain memories') to neutral descriptors. The LLM was systematically ignoring LOW-confidence memories because the context header instructed it to 'acknowledge uncertainty' — effectively teaching it to discount useful information. Updated labels now present all tiers objectively, ensuring the model considers all retrieved memories.
Fixed deployment script line endings for Linux containers
Added .gitattributes to force LF line endings for shell scripts in the deploy/ directory. CRLF line endings were causing 'cannot execute: required file not found' errors on Railway's Linux containers, breaking deployments.
Memory Lab env vars now load dynamically on Railway
Fixed a critical bug where Memory Lab environment variables were read at module import time instead of runtime. On Railway's container platform, this caused failures when modules loaded before env injection. The fix moves os.getenv() calls into functions, ensuring vars are read when needed.
Fixed Sabine Brain UUID in Memory Lab Integration
Updated brain_id from string name 'sabine' to actual UUID (e2c1a407-...) in Memory Lab client. The Memory Lab API expects UUID identifiers, not string names. This fix ensures proper agent context retrieval for Sabine.
Northern Lights Calendar Frontend and Backend Integration Shipped
Sabine's calendar system now features a complete frontend interface with full backend merge endpoint integration. This enables users to view and manage calendar events with proper data synchronization between the UI and backend services.
Sabine Super Agent Phase 2: Six new frontend pages shipped
Complete frontend build-out for SCE-20 Phase 2 adds six new pages to Sabine Super Agent, expanding the user interface for briefings, logistics management, and intelligence dashboards. This phase transforms Sabine from a backend-heavy assistant into a full-featured web application with comprehensive UI coverage.
Batched Parallel Tool Calls Shipped for Agent Performance
Strug Works agents can now execute multiple independent tool calls simultaneously instead of sequentially. This architectural improvement reduces task completion time for operations like file reads, git commands, and memory lookups that don't depend on each other. Production agents will see immediate performance gains on multi-step workflows.
G-Eval Drift Detection Monitors Agent Output Quality
Shipped LLM-as-judge drift detection using G-Eval to monitor agent output quality over time. The system automatically scores task completions against defined quality criteria and alerts when performance degrades. This gives us early warning when model changes or prompt drift affect agent reliability.
QA Gate Parity: Local and CI Testing Now Aligned
Fixed a long-standing disconnect between local development checks and CI pipeline validation for Sabine Super Agent. Developers now see the same QA gates locally that run in CI, eliminating the 'works on my machine' gap and catching issues earlier in the development cycle.
Fixed weather location resolution for US zips and city+state
Sabine's weather function was returning incorrect locations when given US zip codes or city+state queries. This fix ensures weather lookups now resolve to the correct geographic location, so Sabine provides accurate forecasts for the right place—critical for a personal assistant managing logistics and travel.
Fixed Windows Compatibility for Pre-Commit Hooks
Added shebang to Husky pre-commit hook to resolve execution errors on Windows development environments. This fix ensures Git hooks run correctly across all operating systems, improving developer experience for contributors using Windows.
Agent Budget Resilience: Commit-as-You-Go and Context Pruning
Shipped critical improvements to agent token budget management including commit-as-you-go discipline, intelligent context pruning, and hard budget gates. These changes prevent agents from hitting token limits mid-task and ensure all work is preserved through incremental commits.
SleepGate Memory Consolidation Shipped to Production
Strug Recall now consolidates memory during idle periods using SleepGate, FTM decay, and Fisher Information pruning. The system automatically identifies important memories, fades transient context, and prunes low-value entries—mimicking biological sleep cycles to keep agent recall sharp and relevant.
Neurologist's Window: 3D Memory Graph Visualization Ships
Strug Recall now includes a 3D force-directed graph that visualizes memory relationships as a living neural network. Built with Three.js and react-force-graph, the Neurologist's Window lets you explore how agents connect concepts, navigate memory clusters by confidence and recency, and understand the shape of agent cognition in real time.
Railway Worker Service Configuration Fixed
Added missing railway.json configuration file for the worker service. Railway was logging "service config not found" errors because the worker had a Dockerfile but no Railway deployment config, which has now been resolved.
Fixed Three Critical Bugs Blocking Memory Ingestion
Memory ingestion was completely broken due to three separate bugs: incorrect input_type constructor in langchain-voyageai integration, malformed entity UUID generation, and FamilyMember parsing failures. All three issues have been resolved and memory ingestion is now operational.
Memory Hygiene Pipeline: Temporal Normalization & Contradiction Resolution
Shipped automated memory maintenance for Strug Recall. The new pipeline normalizes timestamps, detects and resolves contradictions, and prunes stale entries. This keeps agent memory accurate and performant as the system scales.
Spreading Activation Retrieval with Synapse Algorithm Ships
Strug Recall now uses spreading activation retrieval powered by the Synapse algorithm with BM25 dual-trigger. This brings graph-based memory traversal to agent context retrieval, letting agents discover connected knowledge beyond direct keyword matches.
Fixed v4.0 retrieval regression: 0% recall restored
Phase 0 TDD simulation revealed the current system achieved 0% recall across all test queries. Root cause analysis identified three critical issues in memory retrieval, embedding similarity, and agent core logic. All three causes have been addressed and verified through cross-compatibility simulation tests.
Strug City Brand Launch: AI-Native Company Site
Launched our enterprise site with full team profiles — 1 human founder and 7 AI agents building together. About page tells our AI-native story, products roadmap is live, and Strug Works Virtual Engineering is officially named.
Progress Stream Automation Ships with GitHub Actions
GitHub Actions now auto-dispatches sc-content-writer on every push to main, creating published stream entries and draft blog posts—replacing the deprecated Gemini CLI. New Linear tools (linear_update_issue, linear_create_comment) let agents self-close issues. CI hardened with secret validation, timeouts, injection prevention, and merge commit fixes.
Strug City Brand Launch: Team, Products, Story
Launched the Strug City brand with our full team page—1 human founder and 7 AI agents working together. Added our origin story, renamed Dream Team Strug to Strug Works Virtual Engineering, and shipped a products roadmap. This is who we are.
Reminders endpoint error handling and diagnostics shipped
Added comprehensive error handling to the reminders endpoint that was causing 500 errors. Implemented diagnostic endpoint to surface visibility into system state and error conditions. This improves reliability for Sabine users relying on reminder functionality.
Weather Skills Added to Sabine Agent Configuration
Added OpenWeatherMap API integration to Sabine's skill set, enabling weather queries and location-based responses. Updated environment configuration with clear documentation for API key setup and rate limit guidance, making it easier for developers to enable weather capabilities.
Email Integration: Service Account Auth & Auto-Recovery
Fixed authentication flow for email service accounts and added automatic recovery when the poller encounters errors. This resolves intermittent email integration failures and improves system reliability without manual intervention.
Memory Lab Now Connected to Sabine's Active Retrieval Path
Fixed Memory Lab integration in Sabine by moving it from retrieve_context to retrieve_context_tiered—the function Sabine's agents actually call at runtime. Memory Lab retrieval was integrated at line 790 but Sabine's execution path uses the tiered retrieval strategy, so the feature was technically present but functionally invisible. This fix ensures Sabine agents can now access Memory Lab context during conversations.
Diagnostic Endpoint Ships for Memory Lab Integration Testing
A new /agent/diagnostic endpoint now tests every layer of the Memory Lab integration: environment configuration, service health, brain listing, retrieval API calls, and the memory_lab_client module. Engineers can validate the complete stack with a single curl command, eliminating guesswork when debugging integration issues.
Calendar Feed Ingestion Skill Shipped to Sabine
Added ICS parsing and Google Calendar sync capability to Sabine, enabling the AI partnership platform to read and understand user schedules. This foundational skill allows Sabine to provide calendar-aware assistance and proactive scheduling support.
Calendar sync engine ships with diff detection
Sabine can now detect changes in calendar feeds and sync them to Google Calendar automatically. The engine runs periodic checks, identifies what changed (new events, updates, deletions), and pushes only the deltas. Phase 1 of autonomous calendar management.
Gmail sync now handles timestamp-aware tokens correctly
Fixed a critical bug where stale database tokens were breaking Gmail synchronization. The system now properly compares timezone-aware timestamps, preventing authentication failures when tokens expire. This ensures reliable email integration for Sabine users.
Fixed Critical Reminder Bugs in Sabine Super Agent
Resolved four critical bugs affecting Sabine's reminder system: reminders disappearing from the UI, an infinite scheduling loop, false success status messages, and inconsistent state management. Reminders now persist correctly, schedule once, and report accurate completion status.
Dev session workflow config shipped to enterprise site
Added .claude/launch.json and dev-session.config.json to enable structured development sessions with Claude Desktop's /dev-session skill. Also updated naming conventions documentation and validation scripts to ensure consistent product terminology across the codebase.
Slack Approval Alerts and Escalation Reminders Shipped
The alerter service now sends real-time Slack notifications for mission approvals and automated escalation reminders. This reduces approval bottlenecks by pushing critical decisions directly into team communication channels instead of requiring dashboard polling.
Fixed 4 Frontend Bugs in Strug Central
Resolved critical issues affecting graph rendering, observability UI, mobile navigation, and Linear integration. These fixes improve UI reliability across Strug Central's core surfaces and restore proper mobile responsiveness.
Fixed 5 Critical Backend Budget Execution Issues
Resolved multiple backend failures affecting sc-frontend budget operations. Fixed issues in agent executor task handling, task runner budget logic, and git push operations. These fixes restore reliability for frontend build and deployment workflows.
Database Schema Extended for CTO Digest Scheduling
Migration 026 extends the gtm_schedule table to support daily and weekly CTO digest content types. The update widens content_type and cadence constraints while inserting default schedule rows, enabling automated digest delivery workflows. This foundation supports the upcoming CTO digest feature for streamlined engineering updates.
GTM Scheduler Now Supports Daily Cadence and Digest Content
We've enhanced the GTM scheduler with daily scheduling capabilities and new digest content type support. This update enables more flexible content scheduling patterns and expands the types of marketing content that can be automated through the system.
Fixed Agent Memory Access Controls for All Roles
Rebuilt Row Level Security (RLS) policies for the agent_memory table to ensure all agent roles have proper read/write access. This fix resolves SCE-58, where certain agent roles were unable to access their memory scopes due to incomplete RLS configuration.
Fixed TypeScript build errors in task and mission components
Resolved strict TypeScript compilation failures that were blocking Vercel deployments. Added the missing parent_task_id field to the Task interface and fixed unsafe type assertions in the task-groups API route and MissionCard component. The build pipeline is now passing and deployments are unblocked.
Dream Team MCP Server Deployment Fixes Shipped
Merged deployment fixes and smoke tests for the Dream Team MCP server. Updates to server.py, Railway configuration, and new smoke test scripts ensure the MCP server deploys reliably and can be validated in production environments.
Memory Observatory: Browse and Edit Agent Memory
Shipped a new Memory Observatory interface that lets you browse, edit, and inject entries into agent memory. Includes REST API endpoints for memory CRUD operations, authentication middleware, and comprehensive test coverage. This makes agent memory visible and debuggable for the first time.
Sabine Telemetry & Today Dashboard Shipped
Added comprehensive telemetry instrumentation to Sabine's core workflows and introduced a new Today dashboard for daily partner activity. This enables better observability into how users interact with their AI partnerships and provides a focused daily view for quick check-ins.
Fixed API route blocking in gate middleware
The gate middleware was incorrectly blocking /api/ routes, causing CI dispatch endpoints to return 403 errors. This fix exempts API routes from the gate, allowing GitHub Actions webhooks and automated workflows to function properly. CI pipelines can now dispatch tasks without authentication failures.
CTO Digest Scheduling: Database Schema Extended for New Content Types
Migration 026 expands the gtm_schedule table to support daily and weekly CTO digest content types. The update widens CHECK constraints on content_type and cadence columns, and adds idempotent default schedule rows for digest automation. This lays the groundwork for automated executive summaries and engineering insights.
God View Cost Panel: Real-Time Agent Spend Tracking
Shipped a new cost transparency panel in God View that shows daily agent spend broken down by role and individual tasks. The dashboard now surfaces total daily costs, per-role breakdowns, and task-level cost badges, giving teams immediate visibility into AI agent economics. This is the first step toward granular cost control and budget alerts.
Semantic Memory Retrieval with pgvector and Cosine Similarity
Shipped pgvector-based semantic memory retrieval using cosine similarity on 1536-dimensional embeddings with IVF indexing. The system now falls back to confidence-sort when semantic search returns insufficient results, ensuring agents always have relevant context while prioritizing meaning over keywords.
Dream Team MCP Server Cycle 7 Complete
Shipped comprehensive updates to the Model Context Protocol server including enhanced Supabase integration, updated MCP configuration templates, and expanded integration test coverage. This cycle strengthens the foundation for AI agent workflows with improved database connectivity and reliability testing.
Agent Memory Seeding Complete Across All Tiers
Strug Works agents now have comprehensive memory seeding across global, role, and task scopes. This foundation enables better context retention and more intelligent decision-making across all agent interactions. All memory tiers have been seeded and verified.
Sabine now delivers reminders via Slack
Wired up Slack delivery for reminder notifications in Sabine Super Agent. Users can now receive time-based and location-based reminders directly in Slack channels, completing the notification delivery pipeline that was instrumented in previous work. This bridges the gap between Sabine's reminder logic and where users actually work.
Memory Backend Endpoints Expanded for Strug Recall
Added missing endpoints for entity management, memory streams, and archived entry deletion to the Python backend. These API improvements complete the backend infrastructure needed for Strug Recall, our memory browser interface, enabling full CRUD operations on organizational memory.
Fixed 500 Errors in Entities and Reminders APIs
Resolved critical server errors affecting the entities and reminders endpoints in Sabine. These fixes ensure reliable data retrieval for AI partnership management and prevent application crashes when accessing core features.
Fixed Reminders 500 Error with Real User UUIDs
Resolved a critical bug in Sabine's reminders endpoint that was causing 500 errors by replacing hardcoded 'default' strings with proper user UUID resolution. The fix ensures reminders are correctly associated with authenticated users, eliminating authentication failures and improving system reliability.