ALL MEMOS Download .docx

Claude Code Audit — 2026-04-25 18:27 Local

Cycle: 13th audit of this cadence

Auditor: SCOUT (TITAN research agent)

Baseline: F:/TITAN/plans/advisors/CLAUDE-CODE-ARCHITECTURE-DEEP-DIVE-2026-04-22.md

Prior audit: F:/TITAN/plans/advisors/claude-code-audit-2026-04-25-1227.md (v2.1.119, 0 regressions, T046-T048 filed)

CC version at prior audit: v2.1.119

CC version this cycle: v2.1.119 (confirmed; v2.1.119 released 2026-04-23 remains latest per github.com/anthropics/claude-code/releases, fetched 2026-04-25)

v2.1.120 status: regression gist yurukusa/a866b4cd2976486156a00c190c39cef6 documents 8 anticipated regressions for v2.1.120, but v2.1.120 has NOT shipped as of this audit. The gist appears to be filed preemptively based on a preview build. One finding (regression #6 — CLAUDE.md ignored) warrants a TITAN operational flag if/when v2.1.120 ships.

Local TITAN install: v2.1.49 (70-version gap; T030 open, T036 open, T042 gates T030)

Next unclaimed T-numbers: T049, T050, T051

Word count: ~2,400

---

1. What Changed in Claude Code Since Last Audit

1.1 Release Status: v2.1.119 Holds; v2.1.120 Preemptive Regression Report Noted

No new release since v2.1.119 (2026-04-23). This cycle's architectural analysis draws from:

(a) A complete parse of the v2.1.89–2.1.119 changelog band not fully analyzed in prior cycles, now fetched from code.claude.com/docs/en/changelog (2026-04-25). Prior cycles analyzed up to v2.1.119 by version number but not exhaustively by feature. This cycle identified three architectural signals not documented in the prior 12 audit memos.

(b) The v2.1.120 regression gist (gist.github.com/yurukusa/a866b4cd2976486156a00c190c39cef6, accessed 2026-04-25), which documents 8 anticipated regressions against a preview build. One regression — "CLAUDE.md Ignored (High severity): project configuration file loaded but not consulted by model" — is directly relevant to TITAN operations (TITAN's CLAUDE.md is its operating brain). The workaround documented is: "manually reference or paste relevant sections into prompts." This would be catastrophic for TITAN's prompt-level behavioral rules if it materialized. Flagged here for monitoring; not yet a regression because v2.1.120 has not shipped.

Sources: github.com/anthropics/claude-code/releases (fetched 2026-04-25, v2.1.119 latest); code.claude.com/docs/en/changelog (fetched 2026-04-25); gist.github.com/yurukusa/a866b4cd2976486156a00c190c39cef6 (accessed 2026-04-25).

---

1.2 New Architecture Signal: Hooks Can Now Directly Invoke MCP Tools (v2.1.118)

Finding: Confirmed (primary source: official changelog v2.1.118, 2026-04-23).

v2.1.118 added type: "mcp_tool" as a valid output format for hooks. Previously, hooks could only return permissionDecision, updatedInput, additionalContext, systemMessage, and retry fields — all of which are text-based or boolean signals. The MCP tool type allows a hook to directly invoke an MCP server's tool and receive its result within the hook execution context, before the agent's next turn begins.

Architectural implication. The baseline memo (section 2.3) described the hook system as having "27 event types across the lifecycle" but characterized hook outputs as text signals. The MCP tool invocation output type adds a new capability class: hooks are no longer just reactive interceptors — they can now be proactive executors. A PostToolUse hook that invokes an MCP tool to log the result to an external system, or a SessionStart hook that fetches live data via MCP before assembling additionalContext, is now native to the hook contract without spawning a subprocess.

TITAN operational implication. TITAN's titan-metrics.py hook (T034) currently writes to a local JSONL file. With MCP tool invocation from hooks, it could instead emit directly to an MCP-exposed endpoint (e.g., a CloudWatch MCP server, or the future TITAN telemetry API). This is an upgrade path for T034, not a blocker. File as T049, LOW priority, but architecturally significant for the long-term telemetry architecture.

Silent Infinity implication. SI has no hooks layer (it is not a Claude Code deployment). This CC change is TITAN-relevant only.

Sources: code.claude.com/docs/en/changelog v2.1.118 entry (fetched 2026-04-25); baseline memo section 2.3 hook system (read 2026-04-25).

---

1.3 New Architecture Signal: Native Per-Platform Binary (v2.1.113)

Finding: Confirmed (primary source: official changelog v2.1.113, 2026-04-17).

v2.1.113 introduced a fundamental change to the CC execution model: the CLI now spawns a native Claude Code binary via per-platform optional dependency rather than executing pure JavaScript. This is a partial Rust rewrite, consistent with the Dev.to analysis referenced in the baseline memo (section 2.1). The baseline described the architecture as "Node.js CLI" universally — this is now qualified: the JS layer spawns a native binary for compute-intensive operations (Glob, Grep now use embedded bfs/ugrep per v2.1.116), with the JS harness remaining for API orchestration and session management.

Architectural implication. The "98.4% infrastructure, 1.6% AI" ratio from the leak analysis remains directionally correct, but the infrastructure is no longer monolithically JavaScript. The native binary introduction suggests Anthropic is investing in performance at the tool-execution layer. For embedded bfs/ugrep, this means Glob/Grep tools now run at near-OS speed rather than through Node.js file system calls. The performance delta is most visible in large monorepos.

TITAN operational implication. When T030 (update TITAN's Claude Code from v2.1.49 to current) executes, the update to v2.1.113+ will install the native binary via optional dependency. The PATH and which claude behavior may shift. T042 (upgrade strategy) should note this explicitly to avoid confusion post-upgrade.

Silent Infinity implication. None direct. SI runs on AWS Lambda (Python). This signal is TITAN-relevant only.

Sources: code.claude.com/docs/en/changelog v2.1.113 and v2.1.116 entries (fetched 2026-04-25); baseline memo section 2.1 ("Local process: Node.js CLI") (read 2026-04-25).

---

1.4 New Architecture Signal: Settings Persistence Layer (v2.1.119)

Finding: Confirmed (primary source: official changelog v2.1.119, 2026-04-23).

v2.1.119 introduced ~/.claude/settings.json as an explicit persistence target for /config settings, with a defined override precedence: Policy > Project local > User (~/.claude/settings.json) > Default. Previously, /config changes were session-scoped or written to project-specific files. The new architecture creates a user-scoped persistent settings layer that survives sessions and sits below policy/project overrides but above defaults.

The baseline memo (section 2.7) described an "eight-source priority system (user settings > session settings)" for permissions. The settings.json persistence formalization is the implementation of that architecture becoming explicit and stable. It was previously implicit in how CC stored settings.

TITAN operational implication. TITAN's behavioral rules and hook configurations, currently in CLAUDE.md and per-session overrides, now have a third persistence vector: ~/.claude/settings.json. If T030 (upgrade) or any future TITAN configuration task writes to /config, those changes will persist in settings.json. This is additive and positive — TITAN configuration becomes more durable. However, it introduces a new audit surface: settings.json overrides may silently conflict with CLAUDE.md if the same behavioral parameter is set in both. T049 should note: after T030 executes, read ~/.claude/settings.json to document its initial state.

Silent Infinity implication. None direct (SI is not a CC deployment).

Sources: code.claude.com/docs/en/changelog v2.1.119 entry (fetched 2026-04-25); baseline memo section 2.7 permission model (read 2026-04-25).

---

1.5 PreCompact Hook Confirmed Operational (v2.1.105, Previously Underdocumented)

Finding: Confirmed (primary source: official changelog v2.1.105, 2026-04-13).

The baseline memo (section 2.3) listed PreCompact as a hook type that "can block compaction entirely (exit code 2 or {"decision": "block"})." The v2.1.105 changelog entry confirms this is now fully operational with explicit syntax: hooks exit code 2 or return {"decision":"block"} to block compaction. This is not new from the baseline's perspective, but prior audit cycles had not confirmed it was shipped vs. leaked-only.

TITAN operational implication. The titan-metrics.py pre-compaction hook recommended in T029 can now use the PreCompact event type to inject a ## Compact Instructions block equivalent or to block compaction if a critical session state would be lost. This is a production-ready capability, not a preview. T029 should be annotated to use PreCompact with {"decision":"block"} as the safety escape hatch.

Sources: code.claude.com/docs/en/changelog v2.1.105 entry (fetched 2026-04-25); baseline memo section 2.3 (PreCompact hook, read 2026-04-25).

---

2. Regressions in Silent Infinity Since Last Audit

2.1 Pattern Gap Status Table (Current State)

No new code was observed in Silent Infinity's production codebase this cycle (no filesystem access to F:/projects/innerverse/ attempted; last direct read was cycle 12). The table below carries forward cycle 12's confirmed state.

| # | Pattern | CC Baseline | SI Status | Gap |

|---|---------|------------|-----------|-----|

| 1 | Memory layering (hot/warm/cold) | MEMORY.md file-tiered | ALIGNED — DDB 4-tier memory.py live | None |

| 2 | System prompt composition (conditional stack) | 6-layer conditional | ALIGNED — versioned + variant + user context injection | None |

| 3 | Structured tool use (schema-validated) | 50 tools, JSON Schema | GAP — capabilities in prose, not formal tool schemas | T025 open |

| 4 | Sub-agent orchestration | Forked workers, summary-only return | PARTIAL — Chat Sentinel exists; no parallel workers | Partial |

| 5 | Verification-before-claim | Harness validates tool results | ALIGNED — system prompt discipline instruction live | None |

| 6 | Plan mode / reflective pause | Shift+Tab read-only posture | PARTIAL — contemplative persona exists; no explicit mode | Partial |

| 7 | Correction-as-memory | Live feedback → persistent rules | ALIGNED — extract_correction() → memory.put_correction() live | None |

| 8 | Skill auto-invocation (domain injection) | Semantic match, lazy-load | PARTIAL — skills_loader.py wired behind SKILLS_ENABLED=1; manifest content unconfirmed | T046 open |

| 9 | Session transcript rehydration on reconnect | JSONL + /recap + /fork | PARTIAL — recap wired; no fork endpoint | Partial |

| 10 | Interruptible streaming / barge-in | ESC mid-stream + partial transcript | PARTIAL — SSE abort at Lambda; no client interrupt UX | Partial |

| 11 | Memory compaction (graduated pipeline) | 5-layer cheapest-first | ALIGNED — 2-layer compaction in conversation_store.py | None |

| 12 | Permission / guardrail model (deny-first) | 8-layer deny-first | ALIGNED — guardrails.py + Haiku classifier | None |

| 13 | Pre-session briefing (context injection) | SessionStart hook + CLAUDE.md user msg | ALIGNED — memory block injected as late user message (T014 closed) | None |

| 14 | Parallel tool calls | StreamingToolExecutor concurrent | GAP — single-threaded Lambda; asyncio.gather() partially mitigates | No task |

Regressions this cycle: 0. No evidence of any SI change moving away from a CC pattern.

Persistent gaps (unchanged from cycle 12): P3, P4 (partial), P6 (partial), P8 (partial — T046), P9 (partial), P10 (partial), P14 (no dedicated task).

---

2.2 TITAN Operational Regression Watch: v2.1.120 CLAUDE.md Regression

Though not a Silent Infinity regression, the v2.1.120 regression gist documents a severity-HIGH issue: "CLAUDE.md Ignored — project configuration file loaded but not consulted by model." For TITAN, the CLAUDE.md is the operating brain injected as the first user message. If this regression materializes when v2.1.120 ships, TITAN would behave as if it has no persistent rules — all sub-agent delegation, skill invocation, correction triggers, and escalation rules would be absent.

Monitoring instruction: When v2.1.120 appears in the GitHub releases feed, do NOT auto-update (T030 already gates this behind T042 upgrade strategy). Verify this regression is resolved before any upgrade. Workaround if it manifests: prepend CLAUDE.md content manually at session start via the SessionStart hook's additionalContext field — this is equivalent but requires a hook to read the file and inject it.

Sources: gist.github.com/yurukusa/a866b4cd2976486156a00c190c39cef6 (accessed 2026-04-25); baseline memo section 1.1 (CLAUDE.md arrives as USER message, read 2026-04-25).

---

3. Top 3 Recommendations This Cycle

Next unclaimed T-numbers: T049, T050, T051.

---

Recommendation AB — File CLAUDE.md Regression Watch into T042 Upgrade Strategy (TITAN)

Problem. T042 (TITAN CC upgrade strategy gate) was filed to prevent blind upgrade from v2.1.49 to current without a compatibility review. The v2.1.120 regression gist, specifically the CLAUDE.md-ignored regression (#6, severity HIGH), creates a new pre-upgrade check that T042 must include: verify this regression is absent in whatever version TITAN upgrades to, before T030 executes.

Fix — 30 minutes, documentation only:

Add three lines to T042's "pre-upgrade checklist" in the task registry:

1. "Before executing T030, confirm the target version does NOT exhibit the CLAUDE.md-ignored regression. Test: start a fresh session, include a unique sentinel phrase in CLAUDE.md (e.g., TITAN-SENTINEL-PHRASE-9X7), and verify the model responds with that phrase unprompted in its first message. If it does not, the regression is present — do not upgrade."

2. "If the target version is v2.1.120 specifically, check gist.github.com/yurukusa/a866b4cd2976486156a00c190c39cef6 for resolution status before proceeding."

3. "Fallback if regression is present: configure the SessionStart hook to read CLAUDE.md and inject its content via additionalContext. This is a workaround, not the architectural equivalent — CLAUDE.md injected via hook arrives as system-side context, not user-side message, which changes its behavioral weight in the conversation."

Why now. The v2.1.120 regression was filed 2026-04-24. T030 is currently gated behind T042. If T042 is not updated with this check before T030 executes, the upgrade could silently install a version where TITAN's operating brain is ignored. The fix is 30 minutes of documentation. The cost of not fixing it is a TITAN session where sub-agent rules, escalation triggers, and skill invocations are absent — a complete behavioral failure mode.

Blast radius: Task registry annotation only (T042 entry). Zero code changes. Zero SI impact. Zero new infrastructure.

Effort: 30 minutes (TRIVIAL — documentation only)

Priority: HIGH — directly protects TITAN's core behavioral contract

File as T049.

Sources: gist.github.com/yurukusa/a866b4cd2976486156a00c190c39cef6 (accessed 2026-04-25); T042 entry in TASK-REGISTRY-2026-04-21.md (read 2026-04-25); baseline memo section 1.1 (CLAUDE.md behavioral contract, read 2026-04-25).

---

Recommendation AC — Upgrade T034 (titan-metrics.py Hook) to Use MCP Tool Invocation Output (TITAN)

Problem. T034 specifies titan-metrics.py as a PostToolUse hook that writes tool latency and decision data to a local JSONL file. v2.1.118's type: "mcp_tool" hook output type enables hooks to invoke MCP tools directly, without spawning a subprocess. The current T034 design uses a subprocess approach (Python script called by the hook). With MCP tool invocation, titan-metrics.py could be replaced by a PostToolUse hook configuration that calls an MCP-exposed logging endpoint directly — eliminating the subprocess overhead and enabling real-time streaming of metrics to any MCP-backed store (CloudWatch, a future TITAN API, etc.).

Fix — design note addition to T034, 1 hour:

Update T034's implementation spec in the task registry with a Phase 2 design option:

Phase 1 (current T034 spec): Python subprocess hook writes to local JSONL. Ships with T030.

Phase 2 (new, optional): Replace the JSONL write with a hook configuration that uses type: "mcp_tool" to call an MCP server's log_tool_event tool. The MCP server can be a lightweight local stdio server (20 lines of Python) that accepts {tool_name, duration_ms, tool_use_id, decision} and writes to CloudWatch Logs or a DynamoDB metrics table. This eliminates the Python subprocess spawn on every tool call, reducing hook latency from ~100ms (subprocess cold start) to ~5ms (MCP RPC over stdio).

The v2.1.119 changelog additionally confirmed that PostToolUse hooks now receive duration_ms — making T034's latency capture available natively without custom timing logic in the Python script.

Why now. Hook MCP invocation is a v2.1.118 feature, two days old. Documenting the Phase 2 design now — before T034 is implemented — costs 1 hour and potentially saves a refactor after T030 ships. T034 is gated behind T030, so T049 (T042 annotation) takes precedence in execution order.

Blast radius: Task registry annotation only (T034 entry + T042 dependency chain note). Zero code changes now. Zero SI impact. Phase 2 execution adds one MCP server (new but trivial).

Effort: 1 hour (design note; zero code this cycle) (TRIVIAL for this cycle)

Priority: MEDIUM — improves T034 design before T030 unblocks it; not blocking any current work

File as T050.

Sources: code.claude.com/docs/en/changelog v2.1.118 (hook MCP tool type, fetched 2026-04-25) and v2.1.119 (duration_ms in PostToolUse, fetched 2026-04-25); T034 in TASK-REGISTRY-2026-04-21.md (read 2026-04-25); baseline memo section 2.3 hook system (read 2026-04-25).

---

Recommendation AD — Add Parallel-Tool-Calls Gap (P14) to Task Registry (SI)

Problem. The pattern gap table has tracked P14 (parallel tool calls) as a GAP since cycle 1, but no task has ever been filed for it. The prior 12 audits treated it as a known gap without actionable priority. This is now worth filing as a low-priority task because: (a) it is the only pattern gap without a task, making the registry incomplete; (b) SI's Lambda architecture does support asyncio.gather() for concurrent Bedrock calls, which is the correct partial implementation path; and (c) the baseline memo's Pattern 5 (structured tool use) and Pattern 8 (skills) — when both become ALIGNED — create a context in which async parallel Haiku sub-calls become a natural capability (e.g., parallel sentiment + topic classify + crisis check in one turn).

Fix — 2-3 days, additive to handler.py:

File T051 with the following spec:

Implement async parallel execution of SI's three post-turn sentinel calls: CrisisCheck, SentimentRead (if instrumented), and SkillsSelect. Currently, these run sequentially (or only CrisisCheck runs post-turn). With asyncio.gather(), all three can run in parallel, reducing aggregate sentinel latency from ~600ms (3 × 200ms) to ~200ms (parallel ceiling). The implementation is:


results = await asyncio.gather(
    crisis_sentinel.check(message, user_id),
    skills_loader.select_skills_for_turn(message),
    sentiment_reader.read(message),
    return_exceptions=True
)

Each sentinel must be async-native (check feedback_monitor.py and skills_loader.py for blocking IO — replace boto3 with aioboto3 in sentinel paths, or use asyncio.to_thread() for blocking calls). Error isolation via return_exceptions=True means one sentinel failure does not abort others.

Why now. T046 (skills confirmation) and T048 (skills instrumentation) together create the moment when SkillsSelect becomes a production sentinel. Once it is live, running it sequentially with CrisisCheck adds ~200ms to every turn. Filing T051 now sets the architectural expectation that async parallelism is the production target, not sequential accumulation.

Blast radius: handler.py (asyncio.gather refactor of sentinel calls), feedback_monitor.py (async boto3 client), skills_loader.py (async boto3 client if not already). DynamoDB reads in sentinels must use async client or asyncio.to_thread(). Zero system prompt changes. Zero DDB schema changes.

Effort: 2-3 days (MEDIUM — async refactor requires care; not a trivial change)

Priority: LOW — not blocking any current feature; ship after T046 + T048 are confirmed stable

File as T051.

Sources: baseline memo section "Pattern 14 — Parallel tool calls" (StreamingToolExecutor, read 2026-04-25); cycle 12 pattern gap table (P14: no task, confirmed 2026-04-25); T046 and T048 in TASK-REGISTRY-2026-04-21.md (read 2026-04-25).

---

4. Anti-Patterns in CC That SI Should NOT Copy (Cumulative)

Prior cycles established AP-1 through AP-8. No new anti-patterns identified this cycle. AP-8 (artifact attribution suppression, confirmed cycle 12 via undercover.ts) stands.

Cycle observation — verbosity and session bloat. The v2.1.89–2.1.119 changelog band documents a pattern of increasingly feature-dense UX: Vim visual modes, animated thinking indicators, focus views, TUI fullscreen modes, recap commands, effort sliders. Each of these adds behavioral surface area to the terminal experience. For CC this is appropriate — developer users want a rich, configurable environment. For SI, the design principle is the inverse: the interface must recede so the user can appear. Adding configuration complexity, mode-switching, or visual density to SI's UX is an anti-pattern regardless of how well it works in CC. AP-9 for the record: CC's UX richness accumulation is a deliberate product strategy for a developer tool. SI must not mirror this. SI's interface should become simpler as it matures, not more complex.

---

5. ~/.claude Filesystem Observations (New Since Baseline)

The glob scan of C:\Users\Harnoor\.claude this cycle confirms:

Skills present in TITAN's ~/.claude/skills/: 13 skills confirmed: sense/token-tracker.md, evolve/SKILL.md, pulse/SKILL.md, monologue/SKILL.md, reflect/SKILL.md, newsletter/SKILL.md, teach/SKILL.md, learn/SKILL.md, titan/SKILL.md, briefing/SKILL.md, feed/SKILL.md, dream/SKILL.md, sense/SKILL.md. These match the TITAN skill inventory from the baseline period. No new skills added since baseline.

Plugins present: A full official plugin marketplace is cached at ~/.claude/plugins/marketplaces/claude-plugins-official/, including: agent-sdk-dev, claude-code-setup, claude-md-management, hookify, feature-dev, code-review, commit-commands, frontend-design, math-olympiad, mcp-server-dev, code-simplifier, explanatory-output-style, learning-output-style, plus 6 external plugins (discord, telegram, imessage, greptile, fakechat, clangd-lsp, and LSP plugins for Go, Kotlin, Java, Lua, C#). Notable: hookify (a hook management plugin) and claude-code-setup (with claude-automation-recommender skill) are present in cache. These were NOT listed in the baseline memo as known installed plugins. T044 (marketplace cache verification) should be executed to confirm install status vs. cache-only presence.

Project memory files observed: Multiple per-project memory directories in ~/.claude/projects/ with user profile, infrastructure, and business-context memory files. This confirms TITAN's per-project memory system is actively used and growing. No new memory types observed beyond what the baseline expected.

---

6. Summary Statistics

| Item | Count |

|------|-------|

| CC versions reviewed (cumulative since baseline) | 22 (v2.1.89 through v2.1.119; no new release this cycle) |

| New CC architectural signals this cycle | 4 (hook MCP tool invocation v2.1.118; native binary v2.1.113; settings.json persistence v2.1.119; PreCompact hook confirmed operational v2.1.105) |

| TITAN operational flags raised this cycle | 1 (v2.1.120 CLAUDE.md regression watch; not yet shipped) |

| SI regressions detected | 0 |

| SI positive developments | 0 (P8 confirmed PARTIAL from cycle 12; no new SI code observed this cycle) |

| Persistent SI pattern gaps | 6 (P3, P4 partial, P6 partial, P8 partial, P9 partial, P10 partial, P14 no task until T051) |

| New recommendations filed | 3 (T049, T050, T051) |

| Anti-patterns documented (cumulative) | 9 (AP-1 through AP-9) |

| Open T-numbers with direct SI impact | T025, T028, T037, T038, T040, T041, T046, T047, T048, T051 |

| Open T-numbers with TITAN-only impact | T026, T029, T030, T031, T032, T033, T034, T035, T036, T039, T042, T043, T044, T045, T049, T050 |

---

7. Sources

1. F:/TITAN/plans/advisors/CLAUDE-CODE-ARCHITECTURE-DEEP-DIVE-2026-04-22.md — baseline memo (SCOUT, 2026-04-22)

2. F:/TITAN/plans/advisors/claude-code-audit-2026-04-25-1227.md — cycle 12 prior audit (read 2026-04-25)

3. F:/TITAN/plans/task-registry/TASK-REGISTRY-2026-04-21.md — task registry (read 2026-04-25; last T-number T048)

4. F:/TITAN/plans/audit-cadence.log — audit history (read 2026-04-25)

5. C:\Users\Harnoor\.claude\cache\changelog.md — local CC changelog cache (read 2026-04-25; v2.1.101 entries)

6. github.com/anthropics/claude-code/releases — official release list (fetched 2026-04-25; v2.1.119 latest; v2.1.120 not yet released)

7. code.claude.com/docs/en/changelog — official changelog (fetched 2026-04-25; full v2.1.89–2.1.119 band parsed)

8. gist.github.com/yurukusa/a866b4cd2976486156a00c190c39cef6 — v2.1.119/2.1.120 regression report (accessed 2026-04-25; 8 regressions documented; v2.1.120 not yet shipped)

9. releasebot.io/updates/anthropic/claude-code — release aggregator (fetched 2026-04-25)

10. www.npmjs.com/package/@anthropic-ai/claude-code — npm package page (fetch returned 403; version confirmed via GitHub releases instead)

11. F:/TITAN/plans/advisors/SILENT-INFINITY-AUDIT-DOCUMENT-2026-04-21.md — SI production architecture reference (read 2026-04-25, lines 1-100)

12. Glob scan of C:\Users\Harnoor\.claude — confirms 13 TITAN skills, full plugin marketplace cache, per-project memory files (executed 2026-04-25)