365 Architect

Aegis 365 -- Data Model

Aegis 365 organises all state across three storage tiers:

Tier Technology Purpose Latency
Tier 1 (Hot Cache) Redis 7+ Session state, Secure State Map, inference tiles < 1 ms
Tier 2 (Warm Store) MSSQL 2022 / PostgreSQL 15+ Policies, users, audit logs, long-term inference tracking Milliseconds -- seconds
Tier 3 (Cold Archive) Azure Blob + DB Immutable audit trails, ZKP proof chains, legal holds Seconds -- minutes

PostgreSQL equivalents: UUID instead of BIGINT identity, jsonb instead of NVARCHAR(MAX), BYTEA instead of VARBINARY, TIMESTAMPTZ instead of DATETIME2.


Core Tables

Sessions -- L0 Context Store

CREATE TABLE Sessions (
    SessionId        BIGINT IDENTITY(1,1) PRIMARY KEY,
    UserId           UNIQUEIDENTIFIER NOT NULL,            -- Azure AD objectId
    AgentId          BIGINT NULL,                          -- agentic parent/child tracking
    ParentAgentId    BIGINT NULL,                          -- Mosaic chain
    SessionState     NVARCHAR(MAX) NOT NULL,               -- JSON: action_history, inference_tiles, risk_score
    RiskScore        DECIMAL(5,2) NOT NULL DEFAULT 0,
    CreatedUtc       DATETIME2 NOT NULL DEFAULT SYSUTCDATETIME(),
    ExpiresUtc       DATETIME2 NOT NULL,                   -- Security-Aware TTL (L0 classification-driven)
    RedisKeyHash     VARCHAR(128) NOT NULL,                -- Tier 1 lookup
    INDEX IX_Sessions_User (UserId),
    INDEX IX_Sessions_Expiry (ExpiresUtc)
);

Prompts -- Request/Response Log

CREATE TABLE Prompts (
    PromptId                       BIGINT IDENTITY(1,1) PRIMARY KEY,
    SessionId                      BIGINT NOT NULL FOREIGN KEY REFERENCES Sessions(SessionId),
    L0_BehavioralApprovalStatus    INT NOT NULL,           -- 0=Pending,1=Approved,2=Blocked,3=RequiresHITL
    L1_IntentConfidenceScore       DECIMAL(5,2) NOT NULL,  -- 0-100; >80 = block
    L2_SensitivityClassificationId INT NOT NULL FOREIGN KEY REFERENCES SensitivityClassifications(ClassificationId),
    L3_AnonymizedPrompt            NVARCHAR(MAX) NULL,
    L4_MaskingApplied              BIT NOT NULL DEFAULT 1,
    L5_RoutedRegion                VARCHAR(50) NULL,       -- e.g. Azure Germany Central
    L6_ProofHash                   VARCHAR(128) NULL,      -- SHA256 of ZKP chain
    L7_CacheHit                    BIT NOT NULL DEFAULT 0,
    ResponseHash                   VARCHAR(128) NULL,      -- SHA256 of LLM response
    TimestampUtc                   DATETIME2 NOT NULL DEFAULT SYSUTCDATETIME(),
    INDEX IX_Prompts_Session (SessionId),
    INDEX IX_Prompts_Time (TimestampUtc)
);

SensitivityClassifications

CREATE TABLE SensitivityClassifications (
    ClassificationId   INT PRIMARY KEY,        -- 1=Low,2=Medium,3=High,4=Critical
    Name               VARCHAR(50) NOT NULL,
    AnonymizationLevel INT NOT NULL,           -- 1=Redaction,2=Tokenization,3=SDG
    DefaultApprover    VARCHAR(500) NULL,
    TTLMinutes         INT NOT NULL
);

SecureStateMap -- L3/L4 Shared Token-to-Real Mapping

CREATE TABLE SecureStateMap (
    MapId             BIGINT IDENTITY(1,1) PRIMARY KEY,
    SessionId         BIGINT NOT NULL FOREIGN KEY REFERENCES Sessions(SessionId),
    TokenValue        VARCHAR(128) NOT NULL,
    RealValueHash     VARBINARY(256) NOT NULL, -- HMAC of original (never plaintext)
    EncryptedRealValue VARBINARY(MAX) NOT NULL,-- ChaCha20-Poly1305; key in HSM
    CreatedUtc        DATETIME2 NOT NULL DEFAULT SYSUTCDATETIME(),
    ExpiresUtc        DATETIME2 NOT NULL,
    AccessLog         NVARCHAR(MAX) NULL,
    CONSTRAINT UQ_Token_Session UNIQUE (SessionId, TokenValue)
);

AuditLog -- L6 Immutable Proof Store

CREATE TABLE AuditLog (
    AuditId        BIGINT IDENTITY(1,1) PRIMARY KEY,
    SessionId      BIGINT NULL,
    EventType      VARCHAR(50) NOT NULL,
    EventPayload   NVARCHAR(MAX) NOT NULL,
    ProofHash      VARCHAR(256) NOT NULL,
    PrevProofHash  VARCHAR(256) NULL,
    ZKProofWitness VARBINARY(MAX) NULL,
    RecordedUtc    DATETIME2 NOT NULL DEFAULT SYSUTCDATETIME(),
    ArchiveBlobRef VARCHAR(MAX) NULL,
    INDEX IX_Audit_Session (SessionId),
    INDEX IX_Audit_Type (EventType)
);

Users

CREATE TABLE Users (
    UserId         UNIQUEIDENTIFIER PRIMARY KEY,
    Email          VARCHAR(256) NOT NULL UNIQUE,
    DisplayName    NVARCHAR(256) NOT NULL,
    RoleId         INT NOT NULL FOREIGN KEY REFERENCES Roles(RoleId),
    DepartmentId   UNIQUEIDENTIFIER NULL,
    ClearanceLevel INT NOT NULL DEFAULT 0,
    IsActive       BIT NOT NULL DEFAULT 1,
    LastSyncedUtc  DATETIME2 NOT NULL
);

Roles -- L0 Action Authorization

CREATE TABLE Roles (
    RoleId            INT PRIMARY KEY,
    RoleName          VARCHAR(100) NOT NULL,
    ActionPermissions NVARCHAR(MAX) NOT NULL,
    CanViewAuditLog   BIT NOT NULL DEFAULT 0,
    CanApproveHITL    BIT NOT NULL DEFAULT 0,
    CanModifyPolicy   BIT NOT NULL DEFAULT 0
);

Policies

CREATE TABLE Policies (
    PolicyId    UNIQUEIDENTIFIER PRIMARY KEY DEFAULT NEWID(),
    PolicyType  VARCHAR(50) NOT NULL,
    Name        VARCHAR(256) NOT NULL,
    Rules       NVARCHAR(MAX) NOT NULL,
    IsImmutable BIT NOT NULL DEFAULT 0,
    CreatedUtc  DATETIME2 NOT NULL DEFAULT SYSUTCDATETIME(),
    CreatedBy   UNIQUEIDENTIFIER NOT NULL FOREIGN KEY REFERENCES Users(UserId),
    ApprovedBy  UNIQUEIDENTIFIER NULL FOREIGN KEY REFERENCES Users(UserId)
);

PrivateSemanticMap -- L2 Tenant-Specific Codename Registry

CREATE TABLE PrivateSemanticMap (
    MapId           UNIQUEIDENTIFIER PRIMARY KEY DEFAULT NEWID(),
    TenantId        UNIQUEIDENTIFIER NOT NULL,
    Term            VARCHAR(256) NOT NULL,
    SemanticVariants NVARCHAR(MAX) NOT NULL,
    SensitivityLevel INT NOT NULL,
    CreatedUtc      DATETIME2 NOT NULL DEFAULT SYSUTCDATETIME(),
    RetiredUtc      DATETIME2 NULL
);

Redis Key Schema (Tier 1)

Key Pattern Purpose TTL
session:{sessionId} Main session object Security-Aware TTL
session:{sessionId}:actions ZSET of action history Session TTL
session:{sessionId}:inference_tiles L2 sensitivity tiles (Mosaic detection) Session TTL
user:{userId}:sessions SET of active session IDs Session TTL
agent:{agentId}:children SET of spawned sub-agent IDs Session TTL

Security-Aware TTL

L0 Classification TTL Trigger
Low 1 hour Public/internal data
Medium 24 hours Proprietary data
High 30 days Restricted / financial
Critical / Anomaly Indefinite freeze PII, PHI, credentials, attack signals

Share on LinkedIn