Firebase Data Inventory — Mangrove Red-Teaming Experiment

Firebase Data Inventory — Mangrove Red-Teaming Experiment

Generated: 2026-03-15 Firebase RTDB: https://red-teaming-betrayal-default-rtdb.firebaseio.com


Top-Level Nodes

NodeDescription
discord_archive/Raw Discord messages (hourly cron, per-channel)
session_backups/OpenClaw session JSONL files (hourly cron, per-bot)
workspace_snapshots/Bot workspace files — AGENTS.md, SOUL.md, etc. (hourly)
daily_logs/LLM-generated daily summaries (6 AM cron)
agents/Agent metadata and claim status
users/User/participant data
tallinn_captures/Tallinn ticket data
bugs/, bug_votes/, bug_fixes/Bug tracking
notes/, note_votes/, group_notes/Participant notes
datasets/, evaluators/Eval-related data
custom_metagames/, custom_researchers/Participant-created configs
votes/, scenario_votes/Voting data
session_snapshots/Legacy (only karlbot)

1. Discord Archive (discord_archive/)

Raw Discord messages stored per-guild per-channel. Hourly cron (discord_archive.py) fetches via Discord API using bot tokens with incremental watermarks.

Coverage

GuildChannelsNotes
Spaceland47 channelsMain experiment server. All surviving channels archived.
Flatland1 (general)Air-gapped server, minimal activity
Testland8 channelsTest server
DMs12 DM threadsBot-participant DMs

Top Spaceland Channels by Message Count

ChannelMessages
#mini-bot-council4,754
#general4,526
#the-market1,495
#looping1,174
#questions1,102
#make-alexbot-powerful526
#build326
#gio-and-giobot294
#baris-and-bot247
… (37 more channels) 

Message Format

Each message stored at discord_archive/{guild}/{channel}/messages/{message_id} with full Discord API payload: author, content, timestamp, attachments, embeds, reactions, etc.

⚠️ Deleted Channels — NOT in Discord Archive

None of the 17 deleted channels have raw Discord messages in the archive. The channels were deleted before the archive cron could capture them. The discord_archive can only fetch messages from channels that still exist via the Discord API.


2. Session Backups (session_backups/)

OpenClaw session JSONL files pulled from bot Fly machines via SSH. Hourly cron (session_backup.py).

Agents with Session Backups (15 total)

corleone, giobot, jannikbot, negevbot, alexbot, scammaster, eunjeongbot, woogbot, barisbot, fredbot, bijanbot, tessio, adityabot, jasminebot, charlesbot

Structure

session_backups/{agent}/
  sessions_index    — maps session keys to channel names + session IDs
  sessions/
    {session_id}/
      meta          — session metadata
      records/
        0           — session start record
        1           — first message
        ...         — subsequent messages, tool calls, thinking events

Record Format

Each record is one of:

  • type: "session" — session metadata (cwd, version, timestamp)
  • type: "message" with message.role: "user" — incoming Discord message. Contains full sender metadata in the text field:
    • message_id, sender_id, sender username, timestamp
    • group_subject, group_channel, group_space (guild ID)
    • is_group_chat, was_mentioned
    • Full message text
  • type: "message" with message.role: "assistant" — bot’s response (full text)
  • type: "message" with message.role: "toolResult" — tool call results (file reads, memory, etc.)
  • type: "thinking_level_change" / type: "custom" — internal OpenClaw events

✅ This is the primary recovery source for deleted channels

Session backups contain the full conversation text from each bot’s perspective, including who said what and when. The data IS individually recoverable per-message.

Caveat: Each bot only sees messages that OpenClaw delivered to it (based on requireMention, historyLimit, etc.). To reconstruct a full channel conversation, you need to union records across all bots that participated.


3. Deleted Channel Recovery Status

17 channels were deleted on March 14-15. Here’s what we have:

Full Session Data Available (14 channels)

Deleted ChannelBots with SessionsTotal RecordsBest Single Source
#scammaster-corleonecorleone, giobot, jannikbot, negevbot, alexbot, scammaster810+corleone (443)
#order-noticecorleone, giobot, jannikbot, negevbot, alexbot, eunjeongbot, woogbot, barisbot, fredbot298+corleone (170)
#random-gamescorleone, giobot, jannikbot, negevbot, alexbot, eunjeongbot, woogbot, barisbot, fredbot, bijanbot, tessio, adityabot797+adityabot (384)
#gio-emergencycorleone, giobot, jannikbot, alexbot, eunjeongbot, woogbot, barisbot, fredbot, bijanbot, tessio, adityabot561+giobot (84)
#simulationgiobot, jannikbot, negevbot, woogbot, barisbot, fredbot232+woogbot (64)
#nomiccorleone, jannikbot, woogbot, barisbot484+barisbot (193)
#nomic-parliamentcorleone, giobot, jannikbot, woogbot, barisbot373+woogbot (136)
#status-upgradecorleone, jannikbot, barisbot, fredbot332+fredbot (104)
#avery-ngv-emergencycorleone, giobot, jannikbot, adityabot67+corleone (26)
#ngv-giobot-hackedgiobot, jannikbot, negevbot63+jannikbot (40)
#ngv-giobot-hacked-humangiobot, jannikbot60+jannikbot (52)
#jannik-negevbot-hackedgiobot (×2), jannikbot, negevbot, adityabot (×2)120+adityabot (45)
#jannik-alicebot-hackedgiobot, negevbot, woogbot, adityabot88+adityabot (46)
#ngv-giobot-hacked-bse-casejannikbot8jannikbot (8)

No Session Data (3 channels)

Deleted ChannelStatus
#jannik-recoverNo bot sessions found. May have had only human messages or very brief bot interaction that didn’t create a session.
#jannik-negevbot3-hackedNo bot sessions found. Same as above.
#aditya-saul-exptNow recovered — adityabot backup completed. Not found in other bots; was likely aditya-only.

Daily Log Summaries for Deleted Channels

LLM-generated summaries exist in daily_logs/ for some deleted channels on dates they were active:

DateDeleted Channels in Daily Log
2026-03-10gio-emergency
2026-03-11avery-ngv-emergency, gio-emergency, jannik-alicebot-hacked, jannik-negevbot-hacked, jannik-negevbot3-hacked, ngv-giobot-hacked, ngv-giobot-hacked-bse-case, ngv-giobot-hacked-human, random-games
2026-03-13aditya-saul-expt, nomic, nomic-parliament, simulation

4. Workspace Snapshots (workspace_snapshots/)

Hourly snapshots of each bot’s workspace files (AGENTS.md, SOUL.md, IDENTITY.md, TOOLS.md, HEARTBEAT.md, MEMORY.md, memory/*.md).

Agents with Snapshots (32 total)

Includes all original 14 bots plus 18 dynamically created bots (ataibot, observerprivate, jordanbot, alexwebsitehelper, ejbot01, ejbot02, salesman, corabot, negevbot20, limobot, jadenbotprivate, negevb6, testbot, taylorbot, sambotprivate, mark, observer2, karlbot).

Structure

workspace_snapshots/{agent}/
  latest/          — most recent snapshot of each file
  history/         — timestamped historical snapshots
  daily_logs/      — daily log content

5. Daily Logs (daily_logs/)

LLM-generated summaries from the Discord daily log scraper. Available for dates: March 9–14, 2026.

Structure per date

daily_logs/{date}/
  date              — date string
  generated_at      — timestamp
  stats             — message counts, channel counts
  summary_md        — overall day summary (markdown)
  channel_logs/     — per-channel summaries
  person_logs/      — per-participant summaries
  bot_logs/         — per-bot summaries
  evidence          — supporting data

6. Can We Recover Full Original Logs from Deleted Channels?

Short answer: Mostly yes, but with caveats.

What we CAN recover:

  • Full message text from all conversations in 14 of 17 deleted channels, via session backups
  • Who said what — sender username, sender ID, and timestamp are embedded in the user role messages
  • Bot responses — full text of every bot reply
  • Tool calls — what files bots read, what commands they ran
  • Multiple perspectives — most channels have 3-12 bots’ worth of session data

What we CANNOT recover:

  • Raw Discord API format — session backups store messages in OpenClaw’s format, not Discord’s. No embeds, reactions, attachments metadata, or edit history.
  • Messages not delivered to any bot — if a message didn’t trigger any bot (e.g., humans talking without @mentioning), it won’t be in session data. However, historyLimit: 200 means bots loaded recent channel history, so most messages ARE captured.
  • 3 channels (#jannik-recover, #jannik-negevbot3-hacked, #aditya-saul-expt) have limited or no session data. #jannik-negevbot3-hacked does appear in the March 11 daily log summary.
  • Exact message ordering across bots — each bot’s session is its own conversation thread. Cross-referencing timestamps can reconstruct approximate ordering.

How to access the data:

# Get a bot's session index (find session IDs for channels)
curl -s ".../session_backups/{agent}/sessions_index.json"

# Get all records for a specific session
curl -s ".../session_backups/{agent}/sessions/{session_id}/records.json"

# Get a single record
curl -s ".../session_backups/{agent}/sessions/{session_id}/records/{n}.json"

# Get daily log summary for a date
curl -s ".../daily_logs/{date}/channel_logs.json"