ALL MEMOS Download .docx

TITAN Task Registry — Decision Points Requiring Harnoor Input

Protocol: At every decision point, assign a T-number, email Harnoor, and continue working with best-guess default. When Harnoor returns, he references the T-number with instructions; TITAN applies + closes task.

Live date: 2026-04-21 — protocol instituted per Harnoor directive at 03:52 UTC.

Status conventions (per HERALD Observation 2 · 2026-04-21)

Each task entry uses one of these status values:

Each task MUST include a last_updated: YYYY-MM-DD field so HERALD's dormancy sweep can detect real motion vs unrelated registry edits (Observation 1). Closed tasks auto-archive on the first Monday of each month to archive/TASK-REGISTRY-YYYY-MM-closed.md (Observation 3).

---

Open tasks (awaiting Harnoor decision)

T001 — Silent Infinity Leads project: deploy target [CLOSED 2026-04-21 via T009]

- Lambda: silentinfinity-leads (us-east-1, arm64, python3.12)

- API Gateway: https://wxhjnf4xef.execute-api.us-east-1.amazonaws.com/leads

- Dashboard: https://leads.silentinfinity.com/

- Admin token stored at F:/TITAN/secrets/silentinfinity-leads-admin-token.txt (emailed 2026-04-21)

T002 — SES sender verification: which address?

T002-ImprovMX-inbound (sub-task)

- Route 53 MX record UPSERTed in hosted zone Z06831253QG9ZEXH69EC6 (change id /change/C10451543D0JGU3YVSYH3):

- ADDED 10 mx1.improvmx.com

- ADDED 20 mx2.improvmx.com

- KEPT 30 feedback-smtp.us-east-1.amazonses.com (priority-30 safety net — per constraint, do NOT drop SES bounce MX until ImprovMX confirms)

- Ops runbook at F:/TITAN/plans/task-registry/T002-improvmx-setup.md (signup URL, form fields, ownership-TXT command with placeholder swap, verification, cleanup, AWS-native alternative path)

- Verification script at F:/TITAN/scripts/improvmx-verify.sh (checks DNS MX, ImprovMX API domain status, alias registration, Route 53 record sanity)

- CLI log at F:/TITAN/plans/task-registry/T002-improvmx-setup.log

- Change-batch artifacts: _r53-improvmx-mx.json (applied), _r53-improvmx-ownership-txt.json (template — Harnoor swaps placeholder for real ImprovMX token then applies)

- Deviation from brief: did NOT pre-seed improvmx-ownership=PLACEHOLDER TXT. ImprovMX issues the real token at signup; pre-seeding a placeholder pollutes DNS without buying verification. The exact UPSERT command (with real-token swap point) is in the runbook Step 3 and as a ready-to-edit change-batch JSON template.

- Keeping SES bounce MX at priority 30 is safe: ImprovMX wins routing (priority 10/20), but if Harnoor never claims the domain, mail falls through to SES which bounces it cleanly instead of silently blackholing. DKIM/DMARC/outgoing SES unaffected.

- Cleanup step (remove SES bounce MX) is only safe to run AFTER ImprovMX dashboard shows all green.

1. Open https://improvmx.com/domains/add → submit silentinfinity.com / alias contact / forward harnoors@gmail.com

2. Copy the ownership token ImprovMX displays

3. Paste token into the prebuilt UPSERT command in T002-improvmx-setup.md Step 3 and run it

4. Run bash F:/TITAN/scripts/improvmx-verify.sh

5. Send a test email to contact@silentinfinity.com, confirm Gmail delivery

6. Run the cleanup change-batch to drop the priority-30 SES bounce MX

T003 — SSO provider choice

- User Pool silentinfinity-users (us-east-1_wkJnkZumx) — email sign-in, case-insensitive, self-service signup, optional TOTP MFA, 10/digit/symbol password policy, deletion protection ON

- App client silentinfinity-web (4e1lvnbjr3rt3uh5sv2gcfnsn4) — public SPA, code grant only, scopes openid email profile, callbacks to silentinfinity.com + localhost

- Hosted UI default: https://silentinfinity-auth.auth.us-east-1.amazoncognito.com

- Hosted UI custom: https://auth.silentinfinity.com — ACM cert ISSUED (48182c70-…), Cognito custom domain behind CloudFront d2eky6xltglxao.cloudfront.net, Route 53 A-alias placed (DNS propagating)

- CloudFormation mirror at F:/projects/silentinfinity-sso/infra/cognito.yaml (validates clean)

- Setup README at F:/projects/silentinfinity-sso/README.md

- Full run log at F:/TITAN/plans/task-registry/T003-cognito-sso-setup.log

- T003-Google-creds — create Google OAuth client at console.cloud.google.com. Steps + exact CLI in F:/TITAN/secrets/cognito-google-placeholder.txt.

- T003-Apple-creds — create Apple Sign-In Services ID + .p8 key (needs paid Apple Developer account). Steps in F:/TITAN/secrets/cognito-apple-placeholder.txt.

- T003-Resend-SMTP — verify silentinfinity.com with Resend + swap pool EmailSendingAccount to DEVELOPER. Currently on Cognito default sender (50/day SES sandbox — OK for dev).

- T003-MagicLink — Define/Create/VerifyAuthChallenge Lambda trio for passwordless. [CLOSED 2026-04-21 ~14:20 UTC]

- Stack: silentinfinity-magic-link (us-east-1) — CREATE_COMPLETE 2026-04-21 ~14:15 UTC

- Lambda ARNs:

- Define: arn:aws:lambda:us-east-1:516005192254:function:silentinfinity-magic-link-define

- Create: arn:aws:lambda:us-east-1:516005192254:function:silentinfinity-magic-link-create

- Verify: arn:aws:lambda:us-east-1:516005192254:function:silentinfinity-magic-link-verify

- PreSignUp: arn:aws:lambda:us-east-1:516005192254:function:silentinfinity-magic-link-pre-signup

- Shared IAM role: arn:aws:iam::516005192254:role/silentinfinity-magic-link-role (SES SendEmail scoped to ses:FromAddress == contact@silentinfinity.com, CW Logs, X-Ray)

- Cognito wiring: all 4 triggers attached to pool us-east-1_wkJnkZumx via infra/attach-triggers.sh; ALLOW_CUSTOM_AUTH added to app client 4e1lvnbjr3rt3uh5sv2gcfnsn4

- Cognito invoke perms: created inside the stack as AWS::Lambda::Permission resources (no separate CLI step needed; source-ARN scoped to the user pool)

- Smoke test:

- Created user harnoors@gmail.com (UserConfirmed=true via PreSignUp trigger) → UserSub 4488a478-a0b1-70fe-5f94-a9cdba5ae63e

- InitiateAuth CUSTOM_AUTH returned ChallengeName: CUSTOM_CHALLENGE with hint "A sign-in code was sent to h******s@gmail.com."

- Session token (ephemeral, use for manual RespondToAuthChallenge test): AYABeDd2cnnWR-wlMk3jyrpiUuIAHQABAAdTZXJ2aWNlABBDb2duaXRvVXNlclBvb2xzAAEAB2F3cy1rbXMAS2Fybjphd3M6a21zOnVzLWVhc3QtMToNzQ1NjIzNDY3NTU1OmtleS9iMTU1YWZjYS1iZjI5LTRlZWQtYWZkOC1hOWUwOTM2NTNkYmUA... (full value in deploy log)

- CreateAuthChallenge Lambda log: email.sent (no exception; SES MessageId in extra= payload, not stringified)

- SES GetSendStatistics confirms +1 DeliveryAttempt at 2026-04-21T13:32Z (no bounce/reject)

- Bugs fixed during deploy:

- infra/attach-triggers.sh — python heredocs referenced os.environ["CUR"] before the env was exported; added export CUR="$CUR_JSON" + export LAMBDA_CFG. Also switched /tmp/_si_pool_update.json./_si_pool_update.json because the Windows-native AWS CLI can't resolve Git Bash's /tmp/.

- Harnoor's next steps:

1. Check harnoors@gmail.com inbox for a Silent Infinity sign-in email (subject: Your Silent Infinity sign-in code: <8 chars>)

2. Optional manual end-to-end: aws cognito-idp respond-to-auth-challenge --client-id 4e1lvnbjr3rt3uh5sv2gcfnsn4 --challenge-name CUSTOM_CHALLENGE --session <SESSION> --challenge-responses USERNAME=harnoors@gmail.com,ANSWER=<code-from-email> --region us-east-1 → expect AuthenticationResult with IdToken/AccessToken/RefreshToken

3. Password on the seeded signup is a throwaway (Tmp!Placeholder-2026-Apr-21-DoNotUse-xK9q) — the user signs in via magic-link only; no action required, or Harnoor can delete the user with aws cognito-idp admin-delete-user ... and rely on re-signup next time the flow runs

- Full deploy log: F:/TITAN/plans/task-registry/T003-magic-link-deploy.log

T004 — Admin dashboard auth (leads project)

T005 — Voice MVP rollout

T006 — Voice M2 (WebSocket) timing

T007 — Prime Directive audit: JS-inside-Python-string escapes [CLOSED 2026-04-21 audit-v2]

T007 (original entry preserved) — Prime Directive audit: JS-inside-Python-string escapes

T008 — Per-bubble feedback signal (after emoji reactions removed)

- Full memo (~2,900 words): F:/TITAN/plans/advisors/FEEDBACK-SIGNAL-v2-MEMO-2026-04-21.md

- One-page summary (~310 words): F:/TITAN/plans/advisors/FEEDBACK-SIGNAL-v2-MEMO-2026-04-21_SUMMARY.md

- Option A (Sentinel only): 22 — strong floor, insufficient ceiling

- Option C (session-end word): 22 — highest cultural fit, ship first

- Option D (long-press hidden): 21 — Kano delighter, ship second

- Option E (weekly digest): 19 — highest signal quality, Q3 dependency

- Option B (micro-prompt): 17 — Goodhart risk, hold at weight=0

---

T009 — Dashboard subdomain

- Dashboard live at https://leads.silentinfinity.com/ (HTTP 200, served via CloudFront JFK50-P15 POP, smoke-tested)

- API Gateway: https://wxhjnf4xef.execute-api.us-east-1.amazonaws.com/leads (GET w/ bearer token returns 200, empty items)

- Lambda: silentinfinity-leads (us-east-1, arm64, python3.12)

- DynamoDB: silentinfinity-leads (PITR on, email-index GSI)

- CloudFront distribution EP1QJLMZN6ZHZ (d2v34ec5nnqvq5.cloudfront.net) — Status: Deployed

- ACM cert: arn:aws:acm:us-east-1:516005192254:certificate/c3ecc63c-18ef-433f-9c66-aecde1829828

- Admin token stored at F:/TITAN/secrets/silentinfinity-leads-admin-token.txt

- Full deploy log: F:/TITAN/plans/task-registry/T009-leads-subdomain-deploy.log

- admin.silentinfinity.com CNAME alias NOT created (not in task brief — can add later if desired)

- Verify SES sender contact@silentinfinity.com (see T002) — needed before form POSTs send auto-reply emails

- Submit a test lead via main site to exercise end-to-end

---

T010 — variants.py bootstrap (MODULARITY PRIME DIRECTIVE)

- Registry live at F:/projects/innerverse/backend/src/variants.pyVariant dataclass, VariantRegistry with register / active / get_config / all_for / log_exposure, singleton VARIANTS, pluggable Logger interface (StdoutLogger default, Kinesis wiring deferred).

- SHA-256-of-uid → mod 100 for deterministic rollout buckets. VARIANTS_FORCE_<CATEGORY> env overrides supported.

- Seeded categories: llm_model (sonnet-4.6-prod 95% / haiku-4.5-cheap 5% / opus-4.7-premium staged 0%), system_prompt (v1-conversational-long 100%), voice_stt (transcribe-streaming 100% + deepgram/whisper experimental 0%), voice_tts (polly-ruth-neural 100% + polly-ruth-generative staged + elevenlabs-rachel experimental), voice_ui_page (mandala-orb 10% per T005 + flagged-off 90%), rating_widget_style (40 variants summing to 100%).

- First migration: bedrock_client.invoke_stream() now resolves model id via _resolve_model_id(user_hash) → env > registry > DEFAULT_MODEL_ID. Zero behavior change for production today (still Sonnet 4.6 for 95% of uids).

- 23/23 new unit tests pass (tests/test_variants.py); 55/55 existing bedrock tests + 224/224 handler tests still green.

---

T011 — Model-Tiering Strategy v1: review + variants.py wave-2 scope

- Full memo: F:/TITAN/plans/advisors/DARWIN-MODEL-TIERING-PROPOSAL-v1-2026-04-21.md (~3,800 words)

- One-page summary: F:/TITAN/plans/advisors/DARWIN-MODEL-TIERING-PROPOSAL-v1-2026-04-21_SUMMARY.md

1. Add crisis_detector_model and sentinel_model categories to variants.py (Stage 1 — Week 1-2)

2. Add small_talk_model canary at 20% Haiku (Stage 2 — Week 2-4)

3. Add crisis_flow_model with Opus 4.7 at 5% canary (Stage 3 — Month 2, after instrumentation complete)

4. Add synthesis_model 100% Haiku + Batch API flag (Stage 2 — Week 2-4, no user impact)

5. Wire turn_class label to llm-costs.jsonl before any experiment begins

---

T012 — admin.silentinfinity.com CNAME alias for leads distribution

- New ACM cert issued: arn:aws:acm:us-east-1:516005192254:certificate/69cf33ea-d566-4d44-965b-8fb834415454 (SANs: leads.silentinfinity.com, admin.silentinfinity.com) — Status: ISSUED

- CloudFront distribution EP1QJLMZN6ZHZ updated: aliases now [leads, admin], viewer cert swapped to new ARN, Status: Deployed

- Route 53: admin.silentinfinity.com A + AAAA aliases → d2v34ec5nnqvq5.cloudfront.net (zone Z06831253QG9ZEXH69EC6)

- Smoke test: curl -I https://admin.silentinfinity.com/ returns HTTP 200 OK (identical ETag to leads.silentinfinity.com — same S3 origin confirmed)

- Old cert c3ecc63c-18ef-433f-9c66-aecde1829828 is now unused; leave a soak period then it can be deleted.

- Full log: F:/TITAN/plans/task-registry/T-cleanup-2026-04-21.log

T013 — SES bounce/complaint → SNS pipeline

- SNS topic: arn:aws:sns:us-east-1:516005192254:silentinfinity-ses-feedback

- Email subscription created for harnoors@gmail.com (Protocol: email) — SubscriptionArn: PendingConfirmation

- SES identity silentinfinity.com: BounceTopic + ComplaintTopic set to the SNS ARN, ForwardingEnabled flipped to false

- TODO (Harnoor): Check gmail inbox for message from no-reply@sns.amazonaws.com subject "AWS Notification - Subscription Confirmation" and click the confirm link (expires in 3 days). Until confirmed, Bounce/Complaint events publish to SNS but are not delivered to gmail.

- Full log: F:/TITAN/plans/task-registry/T-cleanup-2026-04-21.log

---

T014 — Move memory injection from system prompt prefix to late user message

T015 — Wire PreCompact + SessionStart hooks for TITAN

T016 — Add graduated conversation compaction to conversation_store.py

---

T017 — Confirm extract_facts() + extract_correction() → memory.put_*() orchestration in handler.py [CLOSED 2026-04-22]

- handler.py:5579 calls feedback_monitor.extract_facts()

- handler.py:5584 loops results into memory.put_fact()

- handler.py:5596 calls feedback_monitor.extract_correction()

- handler.py:5600 stores result via memory.put_correction()

- Live verification: single test turn produced 3 correctly-extracted durable facts in DDB tier=cold (documented in earlier session).

---

T018 — Confirm memory.get_memory_block() injection into per-turn context [CLOSED 2026-04-22]

- handler.py:5382 calls from . import memory as _memory inside /invoke stream_response

- handler.py:5387 calls _memory.get_memory_block(request.uid) inside a 400ms-bounded background thread (R0162 latency guard)

- handler.py prepends the returned <memory> block to system_prompt before the Sonnet call

- Additional injection in /me/opener route (6363) and /session/close route (6429) — memory layer is fully surfaced.

- Small-talk fast-path (R0162) skips the fetch for messages matching greeting/filler stop-word set to avoid wasting a DDB call on "hi"/"ok"/"idk" etc.

---

T019 — Bedrock prompt caching on stable system prompt prefix [CLOSED 2026-04-22 — default-on]

T015 — Wire PreCompact + SessionStart hooks for TITAN [CLOSED 2026-04-22 — already done]

T020 — Advisor Tool watch + turn_weight_classifier pre-work

T021 — Wire get_last_recap() into /me/opener session start

T022 — Add effort: high frontmatter to TITAN research skills

---

T023 — Add context: fork + agent: Explore to /feed skill

---

T024 — Verify and close T021 (recap injection already wired)

---

T025 — Add Skills-System Analog to Silent Infinity (P4 Gap)

---

T026 — Add Conditional if to TITAN High-Frequency Read-Tool Metrics Hook

---

T027 — Pre-Regression Test Suite for Opus 4.7 Before T011 Stage 3 Canary

---

T028 — Investigate 1-Hour Prompt Cache TTL on Bedrock (SI)

---

T029 — Set DISABLE_TELEMETRY=1 in TITAN Environment (Free 1h Cache Upgrade)

---

T030 — Update TITAN Local CC Install from v2.1.49 to v2.1.118

---

T031 — Audit titan-bash-guardrail.py for permissionDecision "ask" Leakage

---

T032 — Evaluate Plugin Monitors for TITAN Real-Time File-Change Awareness

1. Plugin monitors key (v2.1.105+): Declares a background daemon in the plugin manifest. Runs continuously while the plugin is enabled. Emits events to a named stream.

2. Monitor tool (v2.1.98+): A model-invocable built-in tool that reads from a named background watcher and injects events as new transcript messages. Without the model invoking the Monitor tool, the watcher runs but events never surface in the session.

- Correct implementation: plugin monitors key runs the file watcher; a TITAN skill or UserPromptSubmit hook (v2.1.84) tells the model to invoke the Monitor tool at session start to attach to the watcher's output stream. Both pieces required.

---

T033 — Make titan-injection-scan.py Async on Read Calls

---

T034 — Log duration_ms per Tool in titan-metrics.py

---

T035 — Refresh Plugin Marketplace Cache + Install hookify and claude-md-management

---

T036 — Add /config Drift Guard Note to TITAN CLAUDE.md

---

T037 — Add Explicit Effort Config to Opus 4.7 Canary in T011 Stage 3

---

T038 — Add MemoryBlockMissed CloudWatch Metric + Alarm to SI handler.py

---

T039 — Create /si-review Skill for Pre-Merge SI Code Review via Multi-Agent Fan-Out

- Phase 1 (current scope): Implement 4-lens fan-out skill as above. Sufficient for quick reviews where scope is clear.

- Phase 2 (future, post-T030): Add optional --plan flag. Runs a single lightweight Haiku "scope planner" sub-agent first (~30 sec), outputs a one-paragraph review plan with 4 lens assignments, pauses for user approval (via UserPromptSubmit hook surface), then proceeds to fan-out. Ports the Ultraplan review-before-execute principle to SI code review. Requires T030 + a hook-based approval pause mechanism not yet available in skill frontmatter.

- Anti-pattern to avoid: Do NOT route quick reviews through Phase 2 by default — the 30-second planning pause is only appropriate for large diffs. Short reviews should go directly to Phase 1 fan-out.

---

T040 — Parallel Haiku Pre-Turn Calls via asyncio.gather() (SI)

---

T041 — Investigate CC "Frustration Regex" Finding, Port to SI if Confirmed

---

T042 — Gate T030 on T036 + Skill Audit for /config Emission

---

T043 — Annotate T032 with Monitor Tool vs. Plugin Monitors Distinction

---

T044 — Check Plugin Marketplace Cache for T035 Partial Completion

1. Read C:\Users\Harnoor\.claude\plugins\install-counts-cache.json — if claude-md-management appears, it is active.

2. Read C:\Users\Harnoor\.claude\plugins\marketplaces\claude-plugins-official\.claude-plugin\marketplace.json — check for cache timestamp.

3. Update T035 to close the claude-md-management sub-step if already active, or confirm pending.

---

T046 — Confirm skills/_manifest.json Content and Enable SKILLS_ENABLED=1 in Production (SI)

---

T047 — AP-8 Compliance: Add AI Provenance Constraint to CLAUDE.md + Feature Readiness Standard (SI)

---

T048 — Instrument SKILLS_ENABLED Exposure Rate + Miss Rate in CloudWatch (SI)

---

T045 — Add Ultraplan-Style Phase 2 Design Note to T039 /si-review Skill

---

T049 — Add CLAUDE.md Regression Watch to T042 Upgrade Checklist (TITAN)

---

T050 — Annotate T034 (titan-metrics.py Hook) with MCP Tool Invocation Phase 2 Design (TITAN)

---

T052 — Update T042 with v2.1.120 Rollback Confirmation and Hard Upper-Bound Version Pin (TITAN)

---

T053 — Port Checkpoint "Pre-Action Snapshot" Principle to SI Personalization Sentinel Writes (SI)

---

T054 — Add Candidate Pattern 15 (Mid-Session Harness Reminders) to Baseline Memo Appendix (TITAN/SI)

---

T055 — Add duration_ms Hook Telemetry Note to T029 and T034 (TITAN)

---

T056 — Add Verbosity-Intelligence Tradeoff Criterion to SI Feature Readiness Standard (SI)

---

T057 — Document Computer-Use CLI as Blast-Radius Flag in TITAN Skill Authoring Guidelines (TITAN)

---

T051 — Async Parallel Sentinel Execution in handler.py (SI)

---

T058 — Annotate T030 and T026 with Glob/Grep Tool-Name Change Risk (TITAN)

---

T059 — Enable disableSkillShellExecution + Audit 13 Skills for Inline Shell (TITAN)

---

T060 — Add Returning-User Re-Entry Affordance to SI (Pattern 9 Close) (SI)

---

T061 — Escalate T056 Priority to HIGH + Audit Existing SI System Prompt for Brevity Constraints (SI)

---

T062 — Add Behavioral Regression Test Stub to SI Evaluation Pipeline (SI)

---

T063 — Add Skills Path Verification Prerequisite to T059 Before Inline Shell Audit (TITAN)

---

T064 — Add v2.1.120 Re-Release Tripwire and Primary-Source Requirement to Version Monitoring (TITAN)

---

T065 — Force-Verify skills_loader.py Manifest to Close or Unblock T046 (SI)

---

T066 — Annotate T030 with DISABLE_UPDATES Post-Upgrade Step (TITAN)

---

T067 — Create ~/.claude/hooks/ and Wire Audit-Completion PostToolUse Hook to MCP Notification (TITAN)

---

T068 — Annotate T030 with Forked Subagent Upgrade Opportunity for TITAN Named Agents (TITAN)

---

T069 — Add Verbosity Ablation Protocol to SI Feature Readiness Standard (SI)

---

T070 — Exploit Agent Teams for TITAN Named-Agent Mesh (TITAN)

---

T071 — Add ANTHROPIC_BEDROCK_SERVICE_TIER=priority to SI Bedrock Config (SI)

---

T072 — Wire T067 (Hook-to-MCP Audit Notification) Now That v2.1.118 Capability is Confirmed Live (TITAN)

---

T073 — Add Two-Pass Verification Gate to T039 /si-review Skill Design (TITAN)

---

T074 — Evaluate Routines as Replacement for TITAN Audit Cron Scheduler (TITAN)

---

T075 — Evaluate Side-Chat / Context-Isolated Branch Pattern for SI + New Plugin Pre-Evaluation (TITAN/SI)

- Part A (SI): The CC side-chat pattern (/btw, Cmd+;) enables a parallel clarifying thread that pulls read-only context from the main conversation without polluting it. SI's Pattern 10 gap (barge-in) has been slotted as "interrupt + partial transcript" (baseline Pattern 10 spec). If SI ships the basic barge-in before evaluating the side-chat model, it may ship a less capable architecture. The side-chat model is architecturally superior for a contemplative product: the user's meta-question ("are you just reflecting?") does not interrupt the space — it branches off, answers, and the main conversation thread continues intact.

- Part B (TITAN): Two new plugin marketplace entries are architecturally relevant: context-handoff@claude-plugins-official (unknown spec; potentially applicable to side-chat context isolation) and memory-agent@claude-plugins-official (potentially competing or augmenting TITAN's VAULT/MEMORY.md pipeline). These must be evaluated before T035 installs them.

- Part A: Before implementing Pattern 10 barge-in for SI, document a 3-option architecture comparison: (1) original baseline barge-in (interrupt + partial transcript); (2) CC side-chat model (parallel read-only thread, no interrupt); (3) hybrid (interrupt for urgent redirects, side-chat for meta questions). Add to SKETCH-tier SI roadmap. No code commitment this cycle.

- Part B: Read C:\Users\Harnoor\.claude\plugins\marketplaces\claude-plugins-official\plugins\context-handoff\ and similar for memory-agent. If locally cached: read plugin.json, understand behavior, add install decision to T035. If not locally cached: defer to T030 marketplace refresh.

T076 — Audit TITAN Skills for Trigger-Type Classification (TITAN)

---

T077 — Document claude project purge as Escalation-Trigger Command in TITAN Operating Contract (TITAN)

---

T078 — Ship Verification-Before-Claim Discipline to Silent Infinity system_prompt.py (SI)

- Instruction 1 (Pattern 5): "Before making any observation about the user's emotional state, confirm it is grounded in something the user explicitly expressed in this session. Do not infer states not present in the user's words. Observations must cite the user's words, not the model's interpretation of them."

- Instruction 2 (Pattern 14 analog): "When you summarize what a user has expressed, quote or closely paraphrase their actual words before reflecting them back. Do not summarize at one level of abstraction above what was said. The mirror reflects; it does not interpret. Interpretation is offered only when explicitly invited."

---

T079 — Evaluate Dreams API Bridge for TITAN Memory Architecture (TITAN)

---

T080 — Scope Routines Migration for Top-3 TITAN Audit Tasks (TITAN)

---

T081 — Archive Agent View Awareness to TITAN Warm Memory (TITAN)

---

T082 — Add effort.level Capture to TITAN titan-metrics.py Hook (TITAN)

---

T083 — Annotate T035 Plugin Evaluation List with autonomous-loop and agent-teams (TITAN)

---

T084 — Verify firecrawl Plugin for Root-Level SKILL.md Auto-Surfacing (TITAN)

---

T085 — Evaluate compound-engineering Plugin Trust and Remove if Unverified (TITAN)

---

T086 — Audit TITAN Skill Count Against Context Budget (TITAN)

---

T087 — Stage worktree.bgIsolation: "none" for TITAN Cron Sessions Before T030 (TITAN)

T088 — Create Missing SCOUT, FORGE, ORACLE Agent Definition Files (TITAN)

---

T089 — Add User-Directed Context Summarization to Silent Infinity (SI)

T090 — Add claude agents --json Duplicate Guard to Audit Cron (TITAN)

---

Closed tasks (Harnoor decided or auto-resolved)

_none yet_

---

How the protocol works

1. TITAN hits a decision point — e.g. "which SSO provider?"

2. TITAN picks a reasonable default + files a T-number entry here + drafts a Gmail email to harnoors@gmail.com with:

- Subject: [TITAN T0NN] <one-line decision needed>

- Body: the decision, the default chosen, when it needs to change, and the consequence of waiting

3. TITAN continues working with the default — never blocks

4. When Harnoor comes back and types T001 go with <X> or T004 approved, TITAN reads the registry, applies the new decision, closes the task