Introduces a clean abstraction layer to decouple domain services from Azure Table Storage,
enabling future migration to Cosmos DB and Event Streaming without touching business logic.
Architecture:
- 10 repository interfaces in Shared/DataAccess/ (ISessionRepository, IRuleRepository, etc.)
- IDataEventPublisher interface with NullDataEventPublisher for future event streaming
- IStorageInitializer for provider-agnostic initialization
- 5 Table Storage implementations that delegate to existing TableStorageService
- DI extension method AddTableStorageDataAccess() with AddEventStreaming<T>() hook
- Migration plan in tasks/todo.md for incremental adoption
https://claude.ai/code/session_01NHWJfPaa8TQHuPzMD7gG63
New read-only report page that shows the full tenant configuration
and computed runtime parameters (AgentConfigResponse) side by side.
Helps Galactic Admins quickly analyze what a tenant has configured.
- Tenant selector to pick any tenant cross-tenant
- All TenantConfiguration fields grouped by section
- Computed runtime parameters with defaults applied
- Non-default values highlighted in purple for quick scanning
- SAS URLs are masked for security
- Added nav item to Galactic Admin section
https://claude.ai/code/session_0136YgG8JDuqAhHvMbALyPoZ
Dual-table approach keeps Sessions table unchanged (O(1) point queries)
and adds SessionsIndex with inverted-tick RowKey for efficient time-sorted
listing and cursor-based Load More. Includes auto-migration strategy.
https://claude.ai/code/session_015CiKa2WSHQ4C3pvXcPJ8Ww
Plan for cursor-based pagination: change RowKey from SessionId to
invertedTicks_SessionId so Azure Table Storage returns newest sessions
first natively, enabling efficient $top=100 queries and Load More.
https://claude.ai/code/session_015CiKa2WSHQ4C3pvXcPJ8Ww
Document the approach to convert the landing page from a full
"use client" component to a Server Component, so crawlers and
users without JavaScript see the complete page content.
https://claude.ai/code/session_01BwtFQovtdDWzUcykXQuMYp