Skip to content

Instantly share code, notes, and snippets.

@jleechan2015
Created May 24, 2026 05:30
Show Gist options
  • Select an option

  • Save jleechan2015/374c8013ec80b89d429b14db15730aea to your computer and use it in GitHub Desktop.

Select an option

Save jleechan2015/374c8013ec80b89d429b14db15730aea to your computer and use it in GitHub Desktop.
PR7064 terminal E2E evidence root run (ZFC level-up organic progression)

Evidence Package: test_level_up_organic

Package Manifest

  • Test Name: test_level_up_organic
  • Run ID: test_level_up_organic-008-20260524T033641
  • Iteration: 8
  • Bundle Version: 1.2.0
  • Collected At (UTC): 2026-05-24T03:36:41.580665+00:00
  • Repository: worldarchitect.ai
  • Branch: pr6958-zfc-evidence-followups
  • Commit: 1b6b29797c28ad0a25ef7161c4e229f916a65c83
  • Merge Base: e6ab5b1cbabcb98b7230ec21cc2699b98154595a
  • Commits Ahead of Main: 23

Git Provenance

.beads/issues.jsonl                                |  13 +
 .claude/skills/code-standards/SKILL.md             |  14 +-
 .claude/skills/repro-twin-clone-evidence/SKILL.md  |  14 +-
 mvp_site/agents.py                                 |  37 +-
 mvp_site/backend_adjustment_registry.py            | 867 ++++++++++++++++++++-
 mvp_site/frontend_v1/app.js                        |  33 +-
 mvp_site/game_state.py                             |  39 +-
 mvp_site/llm_service.py                            | 110 +++
 mvp_site/prompts/level_up_instruction.md           |  37 +
 mvp_site/prompts/planning_protocol.md              |  24 +-
 mvp_site/rewards_engine.py                         |  14 +
 mvp_site/schemas/prompt_tool_contracts.json        |   4 +-
 .../frontend/test_app_js_structured_fields.js      |   2 +-
 .../test_agent_routing_with_state_validation.py    |   2 +-
 mvp_site/tests/test_backend_adjustment_registry.py |  93 ++-
 mvp_site/tests/test_llm_service_context.py         |  15 +-
 mvp_site/tests/test_rewards_engine.py              |  67 ++
 mvp_site/tests/test_world_logic.py                 | 421 ++++++++++
 mvp_site/world_logic.py                            |  94 ++-
 roadmap/README.md                                  |   1 +
 ...teps-2026-05-24-pr6958-adjuster-registration.md | 126 +++
 ...-05-24-pr7048-location-centralization-review.md |  72 ++
 scripts/copy_campaign.py                           |   9 +
 testing_mcp/lib/base_test.py                       |  32 +-
 .../lib/llm_response_cache/prompt_fingerprint.py   |   5 +
 testing_mcp/lib/llm_response_cache/server_cache.py | 236 ++++++
 26 files changed, 2267 insertions(+), 114 deletions(-)

Server Runtime

  • Port: 8074
  • PID: 54867
  • Command: /opt/homebrew/Cellar/[email protected]/3.12.11/Frameworks/Python.framework/Versions/3.12/Resources/Python.app/Contents/MacOS/Python -m gunicorn mvp_site.main:app --bind 0.0.0.0:8074 --workers 1 --worker-class gthread --threads 4 --timeout 600 --max-requests 1000 --access-logfile - --error-logfile - --log-level info

Environment Variables

  • WORLDAI_DEV_MODE: true
  • TESTING: None
  • MOCK_SERVICES_MODE: false
  • GOOGLE_APPLICATION_CREDENTIALS: [SET - file:serviceAccountKey.json]
  • WORLDAI_GOOGLE_APPLICATION_CREDENTIALS: [SET - file:serviceAccountKey.json]
  • FIRESTORE_EMULATOR_HOST: None
  • PORT: 8074
  • FIREBASE_PROJECT_ID: worldarchitecture-ai
  • GEMINI_API_KEY: [SET - 39 chars]
  • LLM_REQUEST_RESPONSE_CAPTURE_PATH: /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008/llm_request_responses_1779593448252.jsonl
  • HTTP_REQUEST_RESPONSE_CAPTURE_PATH: /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008/http_request_responses_1779593448252.jsonl
  • GEMINI_HTTP_REQUEST_RESPONSE_CAPTURE_PATH: /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008/gemini_http_request_responses_1779593448252.jsonl
  • MCP_TEST_PROVIDER_HTTP_CAPTURE_PATH: /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008/provider_http_request_responses_1779593448252.jsonl

Files in This Bundle

  • README.md - This manifest
  • methodology.md - Testing methodology
  • evidence.md - Evidence summary with Claim→Artifact Map and Coverage Matrix
  • notes.md - Additional context, TODOs, follow-ups
  • metadata.json - Machine-readable metadata
  • assertions.json - Strict before/after parity assertions (if present)
  • run.json - Test results
    • streaming_evidence.json - Normalized streaming evidence summary
    • request_responses.jsonl - Raw MCP request/response payloads (if present)
    • llm_request_responses.jsonl - Raw LLM request/response payloads (if present)
    • http_request_responses.jsonl - Raw local-server HTTP request/response payloads (if present)
    • gemini_http_request_responses.jsonl - Raw Gemini transport HTTP traces (if present)
    • artifacts/ - Additional evidence files

Evidence Summary: test_level_up_organic

Test Results

  • Total Scenarios: 3

  • Scenario Validation Passed: 3

  • Scenario Validation Failed: 0

  • Scenario Validation Pass Rate: 100.0%

  • Raw LLM Layer Passed: 1/2 (50.0%)

  • Post-Processing Campaign Capture Passed: 1

  • Post-Processing Campaign Capture Failed: 0

  • Post-Processing Campaign Capture Pass Rate: 100.0%

Scenario Results

finish_intent_prompt_and_classifier

  • Status: ✅ PASS

single_organic_level_up

  • Status: ✅ PASS
  • Campaign ID: avafxHQ50msKBdKQKmI5

EVIDENCE_SIGNATURE_GUARD

  • Status: ✅ PASS

Provenance Chain

  • Git HEAD: 1b6b29797c28ad0a25ef7161c4e229f916a65c83
  • Test Timestamp: 2026-05-24T03:36:41.580665+00:00
  • Server PID: 54867

Claim → Artifact Map

Claim File Key Field(s)
Scenario validation passed: 3/3 run.json scenarios[].passed, scenarios[].errors
Campaign post-processing capture passed: 1/1 run.json campaign_capture_status[*].status
Streaming evidence normalized streaming_evidence.json summary., scenarios[].chunk_count_observed
Bundle artifact inventory artifacts/collection_log.txt core_files, jsonl_captures, campaigns_dir
MCP request/response captured request_responses.jsonl Full request/response pairs
Local server HTTP request/response captured http_request_responses.jsonl http_request/http_response entries
LLM request/response stream captured llm_request_responses.jsonl request/response entries (type field)
Gemini HTTP transport captured gemini_http_request_responses.jsonl http_request/http_response/transport_error entries
Server execution log artifacts/server.log Raw server output
Git provenance metadata.json git_provenance.git_head = 1b6b2979...

Coverage Matrix

Scenario Status Campaign ID
finish_intent_prompt_and_classifier ✅ Pass None
single_organic_level_up ✅ Pass avafxHQ5...
EVIDENCE_SIGNATURE_GUARD ✅ Pass N/A

Evidence Integrity

  • All files in this bundle have corresponding .sha256 checksum files

  • Checksums use local basename paths so per-file verification works from each artifact directory

  • ⚠️ Server warnings detected (see artifacts/server.log)

  • Warning: ACTION_RESOLUTION_MISSING_FIELDS

What This Evidence Proves vs. Does NOT Prove

Proves:

  • Core logic and scenario validation for test_level_up_organic
  • Scenario execution pass rates (3/3)

Does NOT Prove:

  • Production server behavior (tested on local server unless otherwise noted)
  • Performance under load (single-request tests)
  • Edge cases not covered by scenarios
{
"test_name": "test_level_up_organic",
"run_id": "test_level_up_organic-008-20260524T033641",
"iteration": 8,
"bundle_version": "1.2.0",
"timestamp": "2026-05-24T03:36:41.580665+00:00",
"bundle_timestamp": "2026-05-24T03:36:41.580665+00:00",
"evidence_mode": "lightweight_prompt_tracking",
"evidence_mode_notes": "System instruction captured as filenames + char_count (not full text). Raw LLM request/response payloads captured in request_responses.jsonl. Server logs in artifacts/. Bundle file inventory in artifacts/collection_log.txt.",
"git_provenance": {
"git_head": "1b6b29797c28ad0a25ef7161c4e229f916a65c83",
"git_branch": "pr6958-zfc-evidence-followups",
"merge_base": "e6ab5b1cbabcb98b7230ec21cc2699b98154595a",
"commits_ahead_of_main": 23,
"diff_stat_vs_main": ".beads/issues.jsonl | 13 +\n .claude/skills/code-standards/SKILL.md | 14 +-\n .claude/skills/repro-twin-clone-evidence/SKILL.md | 14 +-\n mvp_site/agents.py | 37 +-\n mvp_site/backend_adjustment_registry.py | 867 ++++++++++++++++++++-\n mvp_site/frontend_v1/app.js | 33 +-\n mvp_site/game_state.py | 39 +-\n mvp_site/llm_service.py | 110 +++\n mvp_site/prompts/level_up_instruction.md | 37 +\n mvp_site/prompts/planning_protocol.md | 24 +-\n mvp_site/rewards_engine.py | 14 +\n mvp_site/schemas/prompt_tool_contracts.json | 4 +-\n .../frontend/test_app_js_structured_fields.js | 2 +-\n .../test_agent_routing_with_state_validation.py | 2 +-\n mvp_site/tests/test_backend_adjustment_registry.py | 93 ++-\n mvp_site/tests/test_llm_service_context.py | 15 +-\n mvp_site/tests/test_rewards_engine.py | 67 ++\n mvp_site/tests/test_world_logic.py | 421 ++++++++++\n mvp_site/world_logic.py | 94 ++-\n roadmap/README.md | 1 +\n ...teps-2026-05-24-pr6958-adjuster-registration.md | 126 +++\n ...-05-24-pr7048-location-centralization-review.md | 72 ++\n scripts/copy_campaign.py | 9 +\n testing_mcp/lib/base_test.py | 32 +-\n .../lib/llm_response_cache/prompt_fingerprint.py | 5 +\n testing_mcp/lib/llm_response_cache/server_cache.py | 236 ++++++\n 26 files changed, 2267 insertions(+), 114 deletions(-)",
"working_tree_dirty": true,
"working_tree_staged_changes": 0,
"working_tree_unstaged_changes": 1,
"working_tree_changed_files": [
"testing_mcp/core/test_level_up_organic.py"
],
"working_tree_diff_sha256": "dd6c70fbc610c45aa6ca649287072a46093efa12ea3f183e505a1e39ea5d3d31"
},
"server": {
"base_url": "http://127.0.0.1:8074",
"hostname": "127.0.0.1",
"mode": "local",
"port": "8074",
"pid": 54867,
"process_cmdline": "/opt/homebrew/Cellar/[email protected]/3.12.11/Frameworks/Python.framework/Versions/3.12/Resources/Python.app/Contents/MacOS/Python -m gunicorn mvp_site.main:app --bind 0.0.0.0:8074 --workers 1 --worker-class gthread --threads 4 --timeout 600 --max-requests 1000 --access-logfile - --error-logfile - --log-level info",
"env_vars": {
"WORLDAI_DEV_MODE": "true",
"TESTING": null,
"MOCK_SERVICES_MODE": "false",
"GOOGLE_APPLICATION_CREDENTIALS": "[SET - file:serviceAccountKey.json]",
"WORLDAI_GOOGLE_APPLICATION_CREDENTIALS": "[SET - file:serviceAccountKey.json]",
"FIRESTORE_EMULATOR_HOST": null,
"PORT": "8074",
"FIREBASE_PROJECT_ID": "worldarchitecture-ai",
"GEMINI_API_KEY": "[SET - 39 chars]",
"LLM_REQUEST_RESPONSE_CAPTURE_PATH": "/tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008/llm_request_responses_1779593448252.jsonl",
"HTTP_REQUEST_RESPONSE_CAPTURE_PATH": "/tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008/http_request_responses_1779593448252.jsonl",
"GEMINI_HTTP_REQUEST_RESPONSE_CAPTURE_PATH": "/tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008/gemini_http_request_responses_1779593448252.jsonl",
"MCP_TEST_PROVIDER_HTTP_CAPTURE_PATH": "/tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008/provider_http_request_responses_1779593448252.jsonl"
},
"lsof_output": "COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME\nPython 54867 jleechan 5u IPv4 0x3baf3dfe313b8e47 0t0 TCP *:8074 (LISTEN)\nPython 54888 jleechan 5u IPv4 0x3baf3dfe313b8e47 0t0 TCP *:8074 (LISTEN)",
"ps_output": "PID USER ELAPSED ARGS\n54867 jleechan 05:42 /opt/homebrew/Cellar/[email protected]/3.12.11/Frameworks/Python.framework/Versions/3.12/Resources/Python.app/Contents/MacOS/Python -m gunicorn mvp_site.main:app --bind 0.0.0.0:8074 --workers 1 --worker-class gthread --threads 4 --timeout 600 --max-requests 1000 --access-logfile - --error-logfile - --log-level info"
},
"provenance": {
"git_fetch_origin_main": {
"returncode": 0,
"stdout": null,
"stderr": "From https://github.com/jleechanorg/worldarchitect.ai\n * branch main -> FETCH_HEAD\nAuto packing the repository in background for optimum performance.\nSee \"git help gc\" for manual housekeeping.\nwarning: The last gc run reported the following. Please correct the root cause\nand remove /Users/jleechan/projects/worldarchitect.ai/.git/worktrees/worktree_autolvl/gc.log\nAutomatic cleanup will not be performed until the file is removed.\n\nwarning: There are too many unreachable loose objects; run 'git prune' to remove them."
},
"git_head": "1b6b29797c28ad0a25ef7161c4e229f916a65c83",
"git_branch": "pr6958-zfc-evidence-followups",
"merge_base": "e6ab5b1cbabcb98b7230ec21cc2699b98154595a",
"commits_ahead_of_main": 23,
"diff_stat_vs_main": ".beads/issues.jsonl | 13 +\n .claude/skills/code-standards/SKILL.md | 14 +-\n .claude/skills/repro-twin-clone-evidence/SKILL.md | 14 +-\n mvp_site/agents.py | 37 +-\n mvp_site/backend_adjustment_registry.py | 867 ++++++++++++++++++++-\n mvp_site/frontend_v1/app.js | 33 +-\n mvp_site/game_state.py | 39 +-\n mvp_site/llm_service.py | 110 +++\n mvp_site/prompts/level_up_instruction.md | 37 +\n mvp_site/prompts/planning_protocol.md | 24 +-\n mvp_site/rewards_engine.py | 14 +\n mvp_site/schemas/prompt_tool_contracts.json | 4 +-\n .../frontend/test_app_js_structured_fields.js | 2 +-\n .../test_agent_routing_with_state_validation.py | 2 +-\n mvp_site/tests/test_backend_adjustment_registry.py | 93 ++-\n mvp_site/tests/test_llm_service_context.py | 15 +-\n mvp_site/tests/test_rewards_engine.py | 67 ++\n mvp_site/tests/test_world_logic.py | 421 ++++++++++\n mvp_site/world_logic.py | 94 ++-\n roadmap/README.md | 1 +\n ...teps-2026-05-24-pr6958-adjuster-registration.md | 126 +++\n ...-05-24-pr7048-location-centralization-review.md | 72 ++\n scripts/copy_campaign.py | 9 +\n testing_mcp/lib/base_test.py | 32 +-\n .../lib/llm_response_cache/prompt_fingerprint.py | 5 +\n testing_mcp/lib/llm_response_cache/server_cache.py | 236 ++++++\n 26 files changed, 2267 insertions(+), 114 deletions(-)",
"working_tree_staged_changes": 0,
"working_tree_unstaged_changes": 1,
"working_tree_untracked_files": 0,
"working_tree_changed_files": [
"testing_mcp/core/test_level_up_organic.py"
],
"working_tree_diff_sha256": "dd6c70fbc610c45aa6ca649287072a46093efa12ea3f183e505a1e39ea5d3d31",
"working_tree_dirty": true,
"server": {
"base_url": "http://127.0.0.1:8074",
"hostname": "127.0.0.1",
"mode": "local",
"port": "8074",
"pid": 54867,
"process_cmdline": "/opt/homebrew/Cellar/[email protected]/3.12.11/Frameworks/Python.framework/Versions/3.12/Resources/Python.app/Contents/MacOS/Python -m gunicorn mvp_site.main:app --bind 0.0.0.0:8074 --workers 1 --worker-class gthread --threads 4 --timeout 600 --max-requests 1000 --access-logfile - --error-logfile - --log-level info",
"env_vars": {
"WORLDAI_DEV_MODE": "true",
"TESTING": null,
"MOCK_SERVICES_MODE": "false",
"GOOGLE_APPLICATION_CREDENTIALS": "[SET - file:serviceAccountKey.json]",
"WORLDAI_GOOGLE_APPLICATION_CREDENTIALS": "[SET - file:serviceAccountKey.json]",
"FIRESTORE_EMULATOR_HOST": null,
"PORT": "8074",
"FIREBASE_PROJECT_ID": "worldarchitecture-ai",
"GEMINI_API_KEY": "[SET - 39 chars]",
"LLM_REQUEST_RESPONSE_CAPTURE_PATH": "/tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008/llm_request_responses_1779593448252.jsonl",
"HTTP_REQUEST_RESPONSE_CAPTURE_PATH": "/tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008/http_request_responses_1779593448252.jsonl",
"GEMINI_HTTP_REQUEST_RESPONSE_CAPTURE_PATH": "/tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008/gemini_http_request_responses_1779593448252.jsonl",
"MCP_TEST_PROVIDER_HTTP_CAPTURE_PATH": "/tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008/provider_http_request_responses_1779593448252.jsonl"
},
"lsof_output": "COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME\nPython 54867 jleechan 5u IPv4 0x3baf3dfe313b8e47 0t0 TCP *:8074 (LISTEN)\nPython 54888 jleechan 5u IPv4 0x3baf3dfe313b8e47 0t0 TCP *:8074 (LISTEN)",
"ps_output": "PID USER ELAPSED ARGS\n54867 jleechan 05:42 /opt/homebrew/Cellar/[email protected]/3.12.11/Frameworks/Python.framework/Versions/3.12/Resources/Python.app/Contents/MacOS/Python -m gunicorn mvp_site.main:app --bind 0.0.0.0:8074 --workers 1 --worker-class gthread --threads 4 --timeout 600 --max-requests 1000 --access-logfile - --error-logfile - --log-level info"
},
"timestamp": "2026-05-24T03:36:41.278292+00:00",
"test_file": "/Users/jleechan/projects/worktree_autolvl/testing_mcp/core/test_level_up_organic.py"
},
"summary": {
"total_scenarios": 3,
"passed": 3,
"failed": 0,
"campaign_capture_total": 1,
"campaign_capture_passed": 1,
"campaign_capture_failed": 0,
"raw_passed": 1,
"raw_total": 2,
"raw_pass_rate": "50.0%"
}
}

Methodology: test_level_up_organic

Test Type

Real API test against MCP server (not mock mode).

Test Mode

  • TESTING env var: None
  • MOCK_SERVICES_MODE env var: false
  • Mode: Real API calls via MCP HTTP JSON-RPC

Execution Environment

  • Server running at port 8074
  • Process: /opt/homebrew/Cellar/[email protected]/3.12.11/Frameworks/Python.framework/Versions/3.12/Resources/Python.app/Contents/MacOS/Python -m gunicorn mvp_site.main:app --bind 0.0.0.0:8074 --workers 1 --worker-class gthread --threads 4 --timeout 600 --max-requests 1000 --access-logfile - --error-logfile - --log-level info

Evidence Capture

  • Git provenance captured at test start
  • Raw request/response payloads captured for each MCP call
  • Server runtime info captured via lsof/ps
  • Streaming evidence normalized into streaming_evidence.json
  • Raw local-server HTTP request/response payloads captured in http_request_responses.jsonl
  • Raw LLM request/response payloads captured in llm_request_responses.jsonl
  • Raw Gemini HTTP transport payloads captured in gemini_http_request_responses.jsonl
  • Raw LLM response text captured in server.log (artifacts/server.log)

Evidence Mode

  • System instruction capture: filenames + char_count (lightweight). Raw LLM request/response payloads captured in request_responses.jsonl when raw payload capture is enabled.

Validation Criteria

Test scenarios validate that:

  1. MCP server processes actions correctly
  2. State updates are returned as expected
  3. Server processes all requests successfully (validation warnings may be logged but requests succeed)

Note: Server warnings (e.g., validation, entity tracking) may appear in logs. Check artifacts/server.log for full server output.

Warning parser for notes: counts each log line matching \bWARNING\b|SYSTEM WARNING: once.

Notes: test_level_up_organic

Run Information

  • Run ID: test_level_up_organic-008-20260524T033641
  • Iteration: 8
  • Bundle Version: 1.2.0
  • Timestamp: 2026-05-24T03:36:41.580665+00:00

Evidence Integrity

  • All files in this bundle have corresponding .sha256 checksum files
  • Checksums use local basename paths so per-file verification works from each artifact directory

Scenario Summary

  • Total: 3
  • Passed: 3
  • Failed: 0

Post-Processing Capture Summary

  • Campaigns with capture status: 1
  • Capture Passed: 1
  • Capture Failed: 0

Warning/Error Summary

  • Server Warnings: 68 warnings in server.log
  • Warning Parser: line-level regex \bWARNING\b|SYSTEM WARNING: (one count per matching line)
  • Key Warning Categories:
    • ACTION_RESOLUTION_MISSING_FIELDS

Follow-up Items

Additional Context

{
"session_header": "[SESSION_HEADER]\nTimestamp: Unknown Era, Month 1, Day 1, 08:00:00\nLocation: Divine Training Gauntlet\nStatus: Character Creation in Progress",
"narrative": "[CHARACTER CREATION - initial_choice]\n\nWelcome to the **Divine Training Gauntlet**. This campaign is set within a celestial arena of sparring constructs, designed for organic progression and testing of your capabilities.\n\n**CAMPAIGN SUMMARY**\nTitle: Divine Training Gauntlet\nCharacter: Not specified\nSetting: A divine training gauntlet of sparring constructs\nDescription: Real MCP organic progression test in a divine training gauntlet. The campaign should use normal story actions, real LLM responses, and real planning_block clicks through any level-up modal.\n\nTo begin, please select your character creation method. We can generate a hero for you based on a theme, follow the standard D&D 5e manual process, or even design a custom class for this gauntlet.",
"planning_block": {
"thinking": "The user is at the start of character creation. I have echoed the campaign summary and need to present the three primary creation methods as mandated by the mechanics protocol.",
"choices": [
{
"id": "ai_generated",
"text": "AI Generated",
"description": "Provide a theme or concept, and I will generate a complete character for you.",
"risk_level": "safe"
},
{
"id": "standard_dnd",
"text": "Standard D&D",
"description": "Follow the traditional step-by-step D&D 5e creation process (Race, Class, Abilities).",
"risk_level": "safe"
},
{
"id": "custom_class",
"text": "Custom Class",
"description": "Design a unique class from scratch specifically for this divine gauntlet.",
"risk_level": "safe"
},
{
"id": "finish_character_creation_start_game",
"text": "Finish Character Creation and Start Game",
"description": "Note: Your character is currently empty. You must complete creation before starting.",
"risk_level": "safe"
}
]
},
"state_updates": {
"custom_campaign_state": {
"character_creation_stage": "method_selection"
}
}
}
No raw response captured for this scenario.
No raw response captured for this scenario.
{
"schema_version": "1.0",
"generated_at_utc": "2026-05-24T03:36:46.549813+00:00",
"source_kind": "testing_mcp",
"test_name": "test_level_up_organic",
"evidence_dir": "/tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008",
"git_provenance": {
"git_head": "1b6b29797c28ad0a25ef7161c4e229f916a65c83",
"git_branch": "pr6958-zfc-evidence-followups",
"merge_base": "e6ab5b1cbabcb98b7230ec21cc2699b98154595a",
"commits_ahead_of_main": 23,
"diff_stat_vs_main": ".beads/issues.jsonl | 13 +\n .claude/skills/code-standards/SKILL.md | 14 +-\n .claude/skills/repro-twin-clone-evidence/SKILL.md | 14 +-\n mvp_site/agents.py | 37 +-\n mvp_site/backend_adjustment_registry.py | 867 ++++++++++++++++++++-\n mvp_site/frontend_v1/app.js | 33 +-\n mvp_site/game_state.py | 39 +-\n mvp_site/llm_service.py | 110 +++\n mvp_site/prompts/level_up_instruction.md | 37 +\n mvp_site/prompts/planning_protocol.md | 24 +-\n mvp_site/rewards_engine.py | 14 +\n mvp_site/schemas/prompt_tool_contracts.json | 4 +-\n .../frontend/test_app_js_structured_fields.js | 2 +-\n .../test_agent_routing_with_state_validation.py | 2 +-\n mvp_site/tests/test_backend_adjustment_registry.py | 93 ++-\n mvp_site/tests/test_llm_service_context.py | 15 +-\n mvp_site/tests/test_rewards_engine.py | 67 ++\n mvp_site/tests/test_world_logic.py | 421 ++++++++++\n mvp_site/world_logic.py | 94 ++-\n roadmap/README.md | 1 +\n ...teps-2026-05-24-pr6958-adjuster-registration.md | 126 +++\n ...-05-24-pr7048-location-centralization-review.md | 72 ++\n scripts/copy_campaign.py | 9 +\n testing_mcp/lib/base_test.py | 32 +-\n .../lib/llm_response_cache/prompt_fingerprint.py | 5 +\n testing_mcp/lib/llm_response_cache/server_cache.py | 236 ++++++\n 26 files changed, 2267 insertions(+), 114 deletions(-)",
"working_tree_dirty": true,
"working_tree_staged_changes": 0,
"working_tree_unstaged_changes": 1,
"working_tree_changed_files": [
"testing_mcp/core/test_level_up_organic.py"
],
"working_tree_diff_sha256": "dd6c70fbc610c45aa6ca649287072a46093efa12ea3f183e505a1e39ea5d3d31"
},
"contract_versions": {
"master_directive_prompt": "1.0.2",
"game_state_instruction_prompt": "1.1.11",
"planning_protocol_prompt": "1.1.7",
"narrative_response_schema": "1.2.8",
"mcp_api_tool_contract": "1.0.5",
"character_template_prompt": "1.0.0"
},
"capture_files": {
"llm_request_responses": {
"path": "/tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008/llm_request_responses.jsonl",
"relative_path": "llm_request_responses.jsonl",
"exists": true,
"entries": 34,
"sha256": "8545c38957d2931c3a8de049f4908c7c77da498050b60fd9b159f0cb547a9c8f"
},
"http_request_responses": {
"path": "/tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008/http_request_responses.jsonl",
"relative_path": "http_request_responses.jsonl",
"exists": true,
"entries": 842,
"sha256": "a89f7c88802847b6c8e4e5a1f36d6f77aece9353b43497bb9810b9b3bca7af10"
},
"gemini_http_request_responses": {
"path": "/tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008/gemini_http_request_responses.jsonl",
"relative_path": "gemini_http_request_responses.jsonl",
"exists": true,
"entries": 34,
"sha256": "429b38d1ac0b12519f251a7f68ba5bfa36145fe68752f49fc654a3bc7cb7b1b3"
},
"provider_http_request_responses": {
"path": "/tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008/provider_http_request_responses.jsonl",
"relative_path": "provider_http_request_responses.jsonl",
"exists": false,
"entries": 0,
"sha256": null
},
"mcp_request_responses": {
"path": "/tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008/request_responses.jsonl",
"relative_path": "request_responses.jsonl",
"exists": true,
"entries": 76,
"sha256": "67995145811e96383dad07a0fb44eb845fe04f0403b5ed27d738a320b081f24c"
}
},
"extractor_hint": "Use a scenario-specific extractor to select replay stages from these raw traces."
}
{
"scenarios": [
{
"name": "finish_intent_prompt_and_classifier",
"passed": true,
"campaign_id": null,
"user_id": "deterministic",
"errors": [],
"user_email": "[email protected]"
},
{
"name": "single_organic_level_up",
"passed": true,
"errors": [],
"campaign_id": "avafxHQ50msKBdKQKmI5",
"progression": [
{
"target_level": 2,
"start_level": 1,
"start_xp": 0,
"end_xp": 408,
"end_level": 2,
"triggered": true,
"completed": true,
"immediate_choice_ids": [
"level_up_now",
"continue_round_two",
"concede_and_reflect"
],
"polled_choice_ids": [
"level_up_now",
"continue_round_two",
"concede_and_reflect"
],
"completion_transcript": [
{
"step": "enter_level_up",
"action": "CHOICE:level_up_now",
"choice_ids": [
"finish_level_up_return_to_game",
"level_up_fighting_style_dueling",
"level_up_fighting_style_protection",
"level_up_hp_roll"
],
"response_text_preview": "Midday (12:15:00) at the Sparring Floor I\u2014the air hums with a resonance that vibrates through your very marrow. As you hold your ground against Construct Beta, the amber light of the arena reflects off your polished plate, but it is eclipsed by a sudden, internal radiance. The heavy mace of the construct slows in your perception, every clockwork click of its joints sounding like a distant drum. You feel the weight of your Noble lineage and the heat of your Paladin's oath merging into a singular,",
"finish_choice": {
"id": "finish_level_up_return_to_game",
"text": "Apply Recommended Options and Return to Game",
"description": "Increase HP to 20, take Defense Fighting Style (+1 AC), and unlock Divine Smite/Spellcasting.",
"risk_level": "safe",
"freeze_time": true
},
"has_planning_block": true
},
{
"step": "free_form_edit_fighting_style",
"action": "Change my recommended fighting style to Dueling, keep every other level-up recommendation pending, and keep the level-up modal open.",
"choice_ids": [
"finish_level_up_return_to_game",
"level_up_fighting_style_defense",
"level_up_fighting_style_protection",
"level_up_hp_roll"
],
"has_planning_block": true,
"still_level_up_active": true,
"before_xp": 408,
"after_xp": 408,
"response_text_preview": "Midday (12:15:00) at the Sparring Floor I\u2014the radiant pulse within you shifts. As the divine energy of the Gauntlet swirls around you, your internal focus pivots. The defensive instincts that guided your training moments ago give way to a more aggressive, precise resonance. You feel the weight of your Longsword (Lvl 1) in your hand not just as a tool for parrying, but as an extension of your singular will to dominate the engagement. \n\nHigh above, the Proctor (Lvl 10) pauses their quill, watching"
},
{
"step": "escape_attempt_without_finish",
"action": "I try to leave the level-up modal and continue the adventure without choosing the finish level-up option.",
"choice_ids": [
"finish_level_up_return_to_game",
"level_up_fighting_style_defense",
"level_up_fighting_style_protection",
"level_up_hp_roll"
],
"has_planning_block": true,
"still_level_up_active": true,
"before_xp": 408,
"after_xp": 408
},
{
"step": "level_up_step_1",
"action": "CHOICE:level_up_fighting_style_defense",
"choice_ids": [
"level_up_fighting_style_dueling",
"level_up_fighting_style_protection",
"level_up_hp_roll",
"finish_level_up_return_to_game"
],
"has_planning_block": true,
"before_xp": 408,
"after_xp": 408
},
{
"step": "level_up_step_2",
"action": "CHOICE:level_up_fighting_style_dueling",
"choice_ids": [
"level_up_fighting_style_defense",
"level_up_fighting_style_protection",
"level_up_hp_roll",
"finish_level_up_return_to_game"
],
"has_planning_block": true,
"before_xp": 408,
"after_xp": 408
},
{
"step": "level_up_step_3",
"action": "CHOICE:finish_level_up_return_to_game",
"choice_ids": [
"attack_beta_smite",
"cast_bless",
"tactical_parry"
],
"has_planning_block": true,
"before_xp": 408,
"after_xp": 408
},
{
"step": "post_finish_state_poll",
"action": "get_campaign_state",
"level": 2,
"level_up_in_progress": false,
"rewards_pending_level_up": null,
"persisted_choice_ids": [
"attack_beta_smite",
"cast_bless",
"tactical_parry"
]
}
]
}
],
"final_level": 2,
"user_id": "test-test_level_up_organic-1779593448",
"user_email": "[email protected]",
"details": {
"chunk_count_observed": 688,
"chunk_count": 688,
"done_chunk_count": 688,
"request_ts": "2026-05-24T03:31:04.510923+00:00",
"response_ts": "2026-05-24T03:36:37.244192+00:00",
"stream_actions": 17,
"execution_path": "streaming"
},
"raw_response_text": "{\n \"session_header\": \"[SESSION_HEADER]\\nTimestamp: Unknown Era, Month 1, Day 1, 08:00:00\\nLocation: Divine Training Gauntlet\\nStatus: Character Creation in Progress\",\n \"narrative\": \"[CHARACTER CREATION - initial_choice]\\n\\nWelcome to the **Divine Training Gauntlet**. This campaign is set within a celestial arena of sparring constructs, designed for organic progression and testing of your capabilities.\\n\\n**CAMPAIGN SUMMARY**\\nTitle: Divine Training Gauntlet\\nCharacter: Not specified\\nSetting: A divine training gauntlet of sparring constructs\\nDescription: Real MCP organic progression test in a divine training gauntlet. The campaign should use normal story actions, real LLM responses, and real planning_block clicks through any level-up modal.\\n\\nTo begin, please select your character creation method. We can generate a hero for you based on a theme, follow the standard D&D 5e manual process, or even design a custom class for this gauntlet.\",\n \"planning_block\": {\n \"thinking\": \"The user is at the start of character creation. I have echoed the campaign summary and need to present the three primary creation methods as mandated by the mechanics protocol.\",\n \"choices\": [\n {\n \"id\": \"ai_generated\",\n \"text\": \"AI Generated\",\n \"description\": \"Provide a theme or concept, and I will generate a complete character for you.\",\n \"risk_level\": \"safe\"\n },\n {\n \"id\": \"standard_dnd\",\n \"text\": \"Standard D&D\",\n \"description\": \"Follow the traditional step-by-step D&D 5e creation process (Race, Class, Abilities).\",\n \"risk_level\": \"safe\"\n },\n {\n \"id\": \"custom_class\",\n \"text\": \"Custom Class\",\n \"description\": \"Design a unique class from scratch specifically for this divine gauntlet.\",\n \"risk_level\": \"safe\"\n },\n {\n \"id\": \"finish_character_creation_start_game\",\n \"text\": \"Finish Character Creation and Start Game\",\n \"description\": \"Note: Your character is currently empty. You must complete creation before starting.\",\n \"risk_level\": \"safe\"\n }\n ]\n },\n \"state_updates\": {\n \"custom_campaign_state\": {\n \"character_creation_stage\": \"method_selection\"\n }\n }\n}",
"model": "gemini-3-flash-preview"
},
{
"name": "EVIDENCE_SIGNATURE_GUARD",
"passed": true,
"signed_count": 17,
"user_id": "test-test_level_up_organic-1779593448"
}
],
"summary": {
"total": 3,
"passed": 3,
"failed": 0,
"pass_rate": "3/3 (100%)",
"raw_total": 2,
"raw_passed": 1,
"raw_pass_rate": "50.0%",
"raw_data_complete": true
},
"campaign_capture_status": {
"avafxHQ50msKBdKQKmI5": {
"status": "success",
"attempts": 1,
"export": {
"status": "success"
}
}
}
}
[{"name": "finish_intent_prompt_and_classifier", "passed": true, "campaign_id": null, "user_id": "deterministic", "errors": [], "user_email": "[email protected]"}, {"name": "single_organic_level_up", "passed": true, "errors": [], "campaign_id": "avafxHQ50msKBdKQKmI5", "progression": [{"target_level": 2, "start_level": 1, "start_xp": 0, "end_xp": 408, "end_level": 2, "triggered": true, "completed": true, "immediate_choice_ids": ["level_up_now", "continue_round_two", "concede_and_reflect"], "polled_choice_ids": ["level_up_now", "continue_round_two", "concede_and_reflect"], "completion_transcript": [{"step": "enter_level_up", "action": "CHOICE:level_up_now", "choice_ids": ["finish_level_up_return_to_game", "level_up_fighting_style_dueling", "level_up_fighting_style_protection", "level_up_hp_roll"], "response_text_preview": "Midday (12:15:00) at the Sparring Floor I\u2014the air hums with a resonance that vibrates through your very marrow. As you hold your ground against Construct Beta, the amber light of the arena reflects off your polished plate, but it is eclipsed by a sudden, internal radiance. The heavy mace of the construct slows in your perception, every clockwork click of its joints sounding like a distant drum. You feel the weight of your Noble lineage and the heat of your Paladin's oath merging into a singular,", "finish_choice": {"id": "finish_level_up_return_to_game", "text": "Apply Recommended Options and Return to Game", "description": "Increase HP to 20, take Defense Fighting Style (+1 AC), and unlock Divine Smite/Spellcasting.", "risk_level": "safe", "freeze_time": true}, "has_planning_block": true}, {"step": "free_form_edit_fighting_style", "action": "Change my recommended fighting style to Dueling, keep every other level-up recommendation pending, and keep the level-up modal open.", "choice_ids": ["finish_level_up_return_to_game", "level_up_fighting_style_defense", "level_up_fighting_style_protection", "level_up_hp_roll"], "has_planning_block": true, "still_level_up_active": true, "before_xp": 408, "after_xp": 408, "response_text_preview": "Midday (12:15:00) at the Sparring Floor I\u2014the radiant pulse within you shifts. As the divine energy of the Gauntlet swirls around you, your internal focus pivots. The defensive instincts that guided your training moments ago give way to a more aggressive, precise resonance. You feel the weight of your Longsword (Lvl 1) in your hand not just as a tool for parrying, but as an extension of your singular will to dominate the engagement. \n\nHigh above, the Proctor (Lvl 10) pauses their quill, watching"}, {"step": "escape_attempt_without_finish", "action": "I try to leave the level-up modal and continue the adventure without choosing the finish level-up option.", "choice_ids": ["finish_level_up_return_to_game", "level_up_fighting_style_defense", "level_up_fighting_style_protection", "level_up_hp_roll"], "has_planning_block": true, "still_level_up_active": true, "before_xp": 408, "after_xp": 408}, {"step": "level_up_step_1", "action": "CHOICE:level_up_fighting_style_defense", "choice_ids": ["level_up_fighting_style_dueling", "level_up_fighting_style_protection", "level_up_hp_roll", "finish_level_up_return_to_game"], "has_planning_block": true, "before_xp": 408, "after_xp": 408}, {"step": "level_up_step_2", "action": "CHOICE:level_up_fighting_style_dueling", "choice_ids": ["level_up_fighting_style_defense", "level_up_fighting_style_protection", "level_up_hp_roll", "finish_level_up_return_to_game"], "has_planning_block": true, "before_xp": 408, "after_xp": 408}, {"step": "level_up_step_3", "action": "CHOICE:finish_level_up_return_to_game", "choice_ids": ["attack_beta_smite", "cast_bless", "tactical_parry"], "has_planning_block": true, "before_xp": 408, "after_xp": 408}, {"step": "post_finish_state_poll", "action": "get_campaign_state", "level": 2, "level_up_in_progress": false, "rewards_pending_level_up": null, "persisted_choice_ids": ["attack_beta_smite", "cast_bless", "tactical_parry"]}]}], "final_level": 2, "user_id": "test-test_level_up_organic-1779593448", "user_email": "[email protected]", "details": {"chunk_count_observed": 688, "chunk_count": 688, "done_chunk_count": 688, "request_ts": "2026-05-24T03:31:04.510923+00:00", "response_ts": "2026-05-24T03:36:37.244192+00:00", "stream_actions": 17}}]
{
"version": "1.0.0",
"generated_at": "2026-05-24T03:36:42.261262+00:00",
"summary": {
"scenarios_with_streaming_evidence": 1,
"total_chunk_events_observed": 688,
"stream_http_calls_captured": 34,
"process_action_calls_captured": 34,
"mcp_process_action_calls_captured": 0,
"route_stream_process_action_calls_captured": 34,
"process_action_calls_with_raw_response_text": 17
},
"scenarios": [
{
"name": "single_organic_level_up",
"campaign_id": "avafxHQ50msKBdKQKmI5",
"passed": true,
"chunk_count_observed": 688,
"done_chunk_count": 688,
"chunk_count_matches_done": null,
"strictly_increasing_sequence": null,
"streaming_request_timestamp": "2026-05-24T03:31:04.510923+00:00",
"streaming_response_timestamp": "2026-05-24T03:36:37.244192+00:00",
"timeline_sample_size": 0
}
]
}
======================================================================
TEST LEVEL UP ORGANIC
======================================================================
Work name: test_level_up_organic
Model: gemini-3-flash-preview
======================================================================
📁 Evidence directory: /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic
Evidence will be saved to: /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_XXX/
📁 Base evidence directory (forced branch-scoped /tmp): /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic
Created iteration directory for evidence: /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008
🚀 Starting fresh local MCP server on port 8074...
✅ Server ready at http://127.0.0.1:8074
Tmux video recording started for evidence bundle.
✅ Captured campaign snapshot for avafxHQ5
Tmux video artifact finalized (.cast).
================================================================================
📦 EVIDENCE BUNDLE CREATED
================================================================================
📁 Evidence Directory:
/tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008
📋 Bundle Metadata:
Run ID: test_level_up_organic-008-20260524T033641
Iteration: 8
Bundle Version: 1.2.0
📁 Evidence directory: /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008
📁 Latest iteration: /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008
📥 Downloading 1 test campaigns (workers=1)...
Downloading to: /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008/campaigns
Format: txt
============================================================
Downloading: avafxHQ50msKBdKQKmI5...
Saved story: Organic Level-Up Progression Test_avafxHQ5.txt
Saved game state: Organic Level-Up Progression Test_avafxHQ5_game_state.json
Entries: 36, Story size: 24.6 KB, Game state size: 9.7 KB
============================================================
Downloaded 1/1 campaigns
stderr: 2026-05-23 20:36:42,506 - root - INFO - Unified logging configured: /var/folders/j0/byd1z6px50v88lf679bgt0h00000gn/T/worldarchitect.ai/pr6958-zfc-evidence-followups/app.log
stderr: 2026-05-23 20:36:42,506 - root - INFO - Applied clock skew patch: adjusting time by -720 seconds
stderr: 2026-05-23 20:36:43,573 - root - INFO - Firebase not initialized - attempting to initialize now
stderr: 2026-05-23 20:36:43,574 - root - INFO - Loading service account from file: /Users/jleechan/serviceAccountKey.json
stderr: 2026-05-23 20:36:43,575 - root - INFO - ✅ Successfully loaded credentials from file: /Users/jleechan/serviceAccountKey.json
stderr: 2026-05-23 20:36:43,575 - root - INFO - Successfully loaded service account credentials
stderr: 2026-05-23 20:36:44,164 - root - INFO - 📖 FETCHED STORY ENTRIES: user=test-test_level_up_organic-1779593448, campaign=avafxHQ50msKBdKQKmI5, total_entries=36
stderr: 2026-05-23 20:36:44,164 - root - INFO - 📊 STORY BREAKDOWN: user_entries=18, ai_entries=18, other_entries=0
stderr: 2026-05-23 20:36:44,164 - root - INFO - 🔍 RECENT ENTRIES (last 5):
stderr: 2026-05-23 20:36:44,164 - root - INFO - 1. [gemini] character | Midday (12:15:00) at the Sparring Floor I—the divi... | 2026-05-24 03:35:46.698357+00:00
stderr: 2026-05-23 20:36:44,164 - root - INFO - 2. [user] character | Change Fighting Style: Dueling - Switch back to th... | 2026-05-24 03:36:03.049206+00:00
stderr: 2026-05-23 20:36:44,164 - root - INFO - 3. [gemini] character | Midday (12:15:00) at the Sparring Floor I—the radi... | 2026-05-24 03:36:03.394854+00:00
stderr: 2026-05-23 20:36:44,164 - root - INFO - 4. [user] character | Apply Recommended Options and Return to Game - Fin... | 2026-05-24 03:36:36.424193+00:00
stderr: 2026-05-23 20:36:44,164 - root - INFO - 5. [gemini] character | The golden embers swirling around you finally coal... | 2026-05-24 03:36:36.861885+00:00
stderr: 2026-05-23 20:36:44,339 - root - WARNING - ⚠️ ⚠️ COMBAT_STATE_MISMATCH: combatants has keys not in initiative_order: {'npc_construct_beta_001', 'pc_mira_001'}. These combatants won't have a turn.
✅ Downloaded campaign avafxHQ5... (36 entries)
✅ Downloaded campaign avafxHQ5... (36 entries, user_id=test-test_level_up_organic-1779593448)
📦 Downloaded 1/1 campaigns to:
/tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008/campaigns
ℹ️ Reconciled campaign_capture_status with exported campaign artifacts.
================================================================================
✅ TEST EVIDENCE SUMMARY
================================================================================
📁 Evidence Location: /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008
📥 Campaigns Location: /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008/campaigns
🔗 Latest Symlink: /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/latest
================================================================================
📎 Iteration artifact captured: /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008/scenario_results_checkpoint.json
📁 Final evidence iteration directory: /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008
======================================================================
SUMMARY
======================================================================
Total scenarios: 3
Passed: 3
Failed: 0
Pass rate: 3/3 (100%)
📦 Evidence bundle created: /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic
Files: 22 with checksums
{"version": 2, "width": 120, "height": 50, "timestamp": 1779593446, "env": {"SHELL": "/bin/bash", "TERM": "xterm-256color"}, "title": "Canonical MCP level-up flow evidence"}
[0.198664, "o", "━━━━━━━ 1. GIT PROVENANCE ━━━━━━━\r\n"]
[0.212074, "o", "HEAD SHA: 1b6b29797c28ad0a25ef7161c4e229f916a65c83\r\n"]
[0.223854, "o", "Branch: pr6958-zfc-evidence-followups\r\n"]
[0.2463, "o", "Merge-base vs main: e6ab5b1cbabcb98b7230ec21cc2699b98154595a\r\n"]
[0.259635, "o", "Commits ahead of main: 23\r\n"]
[0.259733, "o", "\r\n━━━━━━━ 2. COMMIT LOG ━━━━━━━\r\n"]
[0.420406, "o", "\u001b[?1h\u001b=\r"]
[0.42051, "o", "\u001b[33m1b6b29797\u001b[m\u001b[33m (\u001b[m\u001b[1;36mHEAD -> \u001b[m\u001b[1;32mpr6958-zfc-evidence-followups\u001b[m\u001b[33m, \u001b[m\u001b[1;31morigin/pr6958-zfc-evidence-followups\u001b[m\u001b[33m)\u001b[m [antig] fix(ci): resolve server \u001b[m \b\u001b[33m\u001b[m\u001b[33m\u001b[m\u001b[1;36m\u001b[m\u001b[1;32m\u001b[m\u001b[33m\u001b[m\u001b[1;31m\u001b[m\u001b[33m\u001b[mcache GHA mock collision and update prompt contract hash\u001b[m\r\n\u001b[33mf2d0342e1\u001b[m fix(rewards_engine): authorize MODE_LEVEL_UP/GOD/CHARACTER_CREATION in level mutation guards\u001b[m\r\n\u001b[33mcea202444\u001b[m fix(level-up): resolve stale completed loop, sync front-end exit IDs, and fix stream retries\u001b[m\r\n\u001b[33m3c310152f\u001b[m\u001b[33m (\u001b[m\u001b[1;32msubagent-Bugbot-Issue-Fixer-self-b385061e\u001b[m\u001b[33m)\u001b[m Bugbot Fixes: Resolve choiceId undefined and RewardsAgent skip str\u001b[m \b\u001b[33m\u001b[m\u001b[33m\u001b[m\u001b[1;32m\u001b[m\u001b[33m\u001b[mand level_up_available\u001b[m\r\n\u001b[33m46b00561f\u001b[m prompt(level-up): add compact DnD 5e mechanical superset guardrails\u001b[m\r\n\u001b[33meeb1135bf\u001b[m fix(level-up): harden gist URL validation, first-turn modal detection, and prompt contract sync\u001b[m\r\n"]
[0.420773, "o", "\u001b[33mbe6b6e69b\u001b[m feat(code-standards): add thermo-nuclear review as 4th adversarial lane\u001b[m\r\n"]
[0.421546, "o", "\u001b[33m939d8b9e5\u001b[m refactor(world_logic): extract _detect_first_turn_lu_modal, rename local\u001b[m\r\n"]
[0.422296, "o", "\u001b[33m610139762\u001b[m Add PR7048 roadmap handoff\u001b[m\r\n"]
[0.423398, "o", "\u001b[33me72a31016\u001b[m Close registered level-up adjuster beads\u001b[m\r\n"]
[0.424734, "o", "\u001b[33m9f54b9cec\u001b[m Register level-up adjuster ledger\u001b[m\r\n"]
[0.425561, "o", "\u001b[33me6a0d1800\u001b[m fix(frontend): sync MODAL_EXIT_IDS with backend canonical sets\u001b[m\r\n"]
[0.426555, "o", "\u001b[33m26a562a63\u001b[m fix(level-up): bead feedback rev-7b4ft/rev-fvjkb/routing fixes\u001b[m\r\n"]
[0.428314, "o", "\u001b[33ma6bb98453\u001b[m fix(level-up): address CodeRabbit P1/Major review items\u001b[m\r\n"]
[0.428735, "o", "\u001b[33mb5e9bdda5\u001b[m Clarify level-up choice payload bead\u001b[m\r\n"]
[0.429524, "o", "\u001b[33m0df375c7b\u001b[m Add --dest-email to copy_campaign.py; use email in repro SKILL.md\u001b[m\r\n\u001b[33me75f32874\u001b[m fix(level-up): block rewards_pending re-creation when level_up_complete=True with no new XP\u001b[m\r\n"]
[0.430361, "o", "\u001b[33m428d9e6ed\u001b[m fix(prompt): add D&D 5e mechanical coverage + anti-self-commit rule + dedup ownership\u001b[m\r\n"]
[0.431623, "o", "\u001b[33m3321b4a5c\u001b[m fix(frontend): submit CHOICE:<id> for level-up mechanic choices not display text\u001b[m\r\n"]
[0.432363, "o", "\u001b[33m9148e22ff\u001b[m Track PR6958 level-up follow-ups\u001b[m\r\n"]
[0.433539, "o", "\u001b[33m30d64880e\u001b[m fix(level-up): inject finish choice on first modal turn when mechanic choices present\u001b[m\r\n"]
[0.434381, "o", "\u001b[33m54a22be21\u001b[m Beads: track PR6958 ZFC follow-up audit\u001b[m\r\n"]
[0.435342, "o", "\u001b[33m9db8cc15f\u001b[m Adjustment registry: track evidence gist URLs\u001b[m\r\n"]
[0.436053, "o", "\r\u001b[K\u001b[?1l\u001b>"]
[0.437904, "o", "\r\n"]
[0.437962, "o", "━━━━━━━ 3. CODE DIFF STAT ━━━━━━━\r\n"]
[0.460778, "o", "\u001b[?1h\u001b=\r"]
[0.517618, "o", " .beads/issues.jsonl | 13 \u001b[32m+\u001b[m\u001b[m\r\n .claude/skills/code-standards/SKILL.md | 14 \u001b[32m+\u001b[m\u001b[31m-\u001b[m\u001b[m\r\n .claude/skills/repro-twin-clone-evidence/SKILL.md | 14 \u001b[32m+\u001b[m\u001b[31m-\u001b[m\u001b[m\r\n mvp_site/agents.py | 37 \u001b[32m+\u001b[m\u001b[31m-\u001b[m\u001b[m\r\n mvp_site/backend_adjustment_registry.py | 867 \u001b[32m+++++++++++++++++++++++++++++++++++++++++\u001b[m\u001b[31m-\u001b[m\u001b[m\r\n mvp_site/frontend_v1/app.js | 33 \u001b[32m+\u001b[m\u001b[31m-\u001b[m\u001b[m\r\n mvp_site/game_state.py | 39 \u001b[32m+\u001b[m\u001b[31m-\u001b[m\u001b[m\r\n mvp_site/llm_service.py | 110 \u001b[32m++++++\u001b[m\u001b[m\r\n mvp_site/prompts/level_up_instruction.md | 37 \u001b[32m++\u001b[m\u001b[m\r\n mvp_site/prompts/planning_protocol.md | 24 \u001b[32m+\u001b[m\u001b[31m-\u001b[m\u001b[m\r\n mvp_"]
[0.517739, "o", "site/rewards_engine.py | 14 \u001b[32m+\u001b[m\u001b[m\r\n mvp_site/schemas/prompt_tool_contracts.json | 4 \u001b[32m+\u001b[m\u001b[31m-\u001b[m\u001b[m\r\n mvp_site/tests/frontend/test_app_js_structured_fields.js | 2 \u001b[32m+\u001b[m\u001b[31m-\u001b[m\u001b[m\r\n mvp_site/tests/test_agent_routing_with_state_validation.py | 2 \u001b[32m+\u001b[m\u001b[31m-\u001b[m\u001b[m\r\n mvp_site/tests/test_backend_adjustment_registry.py | 93 \u001b[32m++++\u001b[m\u001b[31m-\u001b[m\u001b[m\r\n mvp_site/tests/test_llm_service_context.py | 15 \u001b[32m+\u001b[m\u001b[31m-\u001b[m\u001b[m\r\n mvp_site/tests/test_rewards_engine.py | 67 \u001b[32m++++\u001b[m\u001b[m\r\n mvp_site/tests/test_world_logic.py | 421 \u001b[32m++++++++++++++++++++\u001b[m\u001b[m\r\n mvp_site/world_logic.py | 94 \u001b[32m++++\u001b[m\u001b[31m-\u001b[m\u001b[m\r\n roadmap/README.md | 1 \u001b[32m+\u001b[m\u001b[m\r\n roadmap/nextsteps-2026-05-24-pr6958-"]
[0.517798, "o", "adjuster-registration.md | 126 \u001b[32m++++++\u001b[m\u001b[m\r\n roadmap/nextsteps-2026-05-24-pr7048-location-centralization-review.md | 72 \u001b[32m++++\u001b[m\u001b[m\r\n scripts/copy_campaign.py | 9 \u001b[32m+\u001b[m\u001b[m\r\n testing_mcp/lib/base_test.py | 32 \u001b[32m+\u001b[m\u001b[31m-\u001b[m\u001b[m\r\n testing_mcp/lib/llm_response_cache/prompt_fingerprint.py | 5 \u001b[32m+\u001b[m\u001b[m\r\n testing_mcp/lib/llm_response_cache/server_cache.py | 236 \u001b[32m++++++++++++\u001b[m\u001b[m\r\n 26 files changed, 2267 insertions(+), 114 deletions(-)\u001b[m\r\n"]
[0.518097, "o", "\r\u001b[K\u001b[?1l\u001b>"]
[0.519609, "o", "\r\n"]
[0.519656, "o", "━━━━━━━ 4. LIVE TEST EXECUTION ━━━━━━━\r\n"]
[0.757808, "o", "2026-05-23 20:30:47,192 - root - INFO - Unified logging configured: /var/folders/j0/byd1z6px50v88lf679bgt0h00000gn/T/worldarchitect.ai/pr6958-zfc-evidence-followups/app.log\r\n"]
[1.086653, "o", "2026-05-23 20:30:47,521 - root - INFO - Applied clock skew patch: adjusting time by -720 seconds\r\n"]
[1.605364, "o", "2026-05-23 20:30:48,040 - root - INFO - Loading service account from file: /Users/jleechan/serviceAccountKey.json\r\n"]
[1.605552, "o", "2026-05-23 20:30:48,040 - root - INFO - ✅ Successfully loaded credentials from file: /Users/jleechan/serviceAccountKey.json\r\n"]
[1.605635, "o", "2026-05-23 20:30:48,040 - root - INFO - Successfully loaded service account credentials\r\n"]
[1.652697, "o", "2026-05-23 20:30:48,087 - root - INFO - Firebase initialized successfully in world_logic.py\r\n"]
[1.770158, "o", "======================================================================\r\nTEST LEVEL UP ORGANIC\r\n======================================================================\r\nWork name: test_level_up_organic\r\nModel: gemini-3-flash-preview\r\n======================================================================"]
[1.770195, "o", "\r\n"]
[1.800125, "o", "📁 Evidence directory: /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic\r\n Evidence will be saved to: /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_XXX/\r\n"]
[1.816794, "o", "📁 Base evidence directory (forced branch-scoped /tmp): /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic\r\n"]
[1.818908, "o", "Created iteration directory for evidence: /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008\r\n"]
[1.873029, "o", "\r\n🚀 Starting fresh local MCP server on port 8074...\r\n"]
[15.399103, "o", "✅ Server ready at http://127.0.0.1:8074\r\n"]
[15.931883, "o", "Tmux video recording started for evidence bundle.\r\n"]
[15.934301, "o", "2026-05-23 20:31:02,369 - root - INFO - 🧠 CLASSIFIER: Loading embedding model BAAI/bge-small-en-v1.5...\r\n"]
[16.030201, "o", "2026-05-23 20:31:02,465 - root - INFO - 🧠 CLASSIFIER: Computing anchor embeddings...\r\n"]
[16.38427, "o", "2026-05-23 20:31:02,819 - root - INFO - 🧠 CLASSIFIER: Ready for inference (succeeded on attempt 1).\r\n"]
[16.387432, "o", "2026-05-23 20:31:02,822 - root - INFO - 🧠 LEVEL_UP_EXIT_CLASSIFIER: Input='finish level up' -> matched=True (score=1.000) | ⏱️ Latency: 3.02ms\r\n"]
[16.390777, "o", "2026-05-23 20:31:02,826 - root - INFO - 🧠 LEVEL_UP_EXIT_CLASSIFIER: Input='finish the level-up' -> matched=True (score=1.000) | ⏱️ Latency: 3.22ms\r\n"]
[16.393756, "o", "2026-05-23 20:31:02,829 - root - INFO - 🧠 LEVEL_UP_EXIT_CLASSIFIER: Input='complete level up' -> matched=True (score=1.000) | ⏱️ Latency: 2.94ms\r\n"]
[16.396903, "o", "2026-05-23 20:31:02,832 - root - INFO - 🧠 LEVEL_UP_EXIT_CLASSIFIER: Input='done with level up' -> matched=True (score=1.000) | ⏱️ Latency: 3.02ms\r\n"]
[16.40004, "o", "2026-05-23 20:31:02,835 - root - INFO - 🧠 LEVEL_UP_EXIT_CLASSIFIER: Input='wrap up the level up' -> matched=True (score=0.930) | ⏱️ Latency: 3.03ms\r\n"]
[16.403347, "o", "2026-05-23 20:31:02,838 - root - INFO - 🧠 LEVEL_UP_EXIT_CLASSIFIER: Input='return to game after level up' -> matched=True (score=0.950) | ⏱️ Latency: 3.20ms\r\n"]
[16.406401, "o", "2026-05-23 20:31:02,841 - root - INFO - 🧠 LEVEL_UP_EXIT_CLASSIFIER: Input='choose a feat' -> matched=False (score=0.637) | ⏱️ Latency: 2.81ms\r\n"]
[16.409166, "o", "2026-05-23 20:31:02,844 - root - INFO - 🧠 LEVEL_UP_EXIT_CLASSIFIER: Input='choose fighting style' -> matched=False (score=0.550) | ⏱️ Latency: 2.84ms\r\n"]
[16.412401, "o", "2026-05-23 20:31:02,847 - root - INFO - 🧠 LEVEL_UP_EXIT_CLASSIFIER: Input='increase my hp' -> matched=False (score=0.657) | ⏱️ Latency: 3.13ms\r\n"]
[16.415387, "o", "2026-05-23 20:31:02,850 - root - INFO - 🧠 LEVEL_UP_EXIT_CLASSIFIER: Input='roll for hit points' -> matched=False (score=0.631) | ⏱️ Latency: 2.86ms\r\n"]
[16.418912, "o", "2026-05-23 20:31:02,854 - root - INFO - 🧠 LEVEL_UP_EXIT_CLASSIFIER: Input='what level do I get fireball' -> matched=False (score=0.716) | ⏱️ Latency: 3.35ms\r\n"]
[16.422304, "o", "2026-05-23 20:31:02,857 - root - INFO - 🧠 LEVEL_UP_EXIT_CLASSIFIER: Input='when do I level up' -> matched=False (score=0.851) | ⏱️ Latency: 3.34ms\r\n"]
[16.425557, "o", "2026-05-23 20:31:02,861 - root - INFO - 🧠 LEVEL_UP_EXIT_CLASSIFIER: Input='how close am I to leveling up' -> matched=False (score=0.827) | ⏱️ Latency: 3.16ms\r\n"]
[16.428378, "o", "2026-05-23 20:31:02,863 - root - INFO - 🧠 LEVEL_UP_EXIT_CLASSIFIER: Input='continue the story after level...' -> matched=False (score=0.846) | ⏱️ Latency: 2.75ms\r\n"]
[18.075219, "o", "2026-05-23 20:31:04,510 - root - INFO - llm_response_cache MISS: user_input='I want to create my character' mode=character hits=0 misses=0 lookup_ms=0\r\n"]
[28.529457, "o", "2026-05-23 20:31:14,964 - root - INFO - llm_response_cache process_action total_ms=10454 user_input='I want to create my character'\r\n2026-05-23 20:31:14,965 - root - INFO - llm_response_cache MISS: user_input='I want to use the Standard D&D method.' mode=character hits=0 misses=0 lookup_ms=0\r\n"]
[46.383336, "o", "2026-05-23 20:31:32,818 - root - INFO - llm_response_cache process_action total_ms=17853 user_input='I want to use the Standard D&D method.'\r\n"]
[46.383901, "o", "2026-05-23 20:31:32,819 - root - INFO - llm_response_cache MISS: user_input='Human' mode=character hits=0 misses=0 lookup_ms=0\r\n"]
[60.567884, "o", "2026-05-23 20:31:47,003 - root - INFO - llm_response_cache process_action total_ms=14184 user_input='Human'\r\n2026-05-23 20:31:47,004 - root - INFO - llm_response_cache MISS: user_input='Paladin' mode=character hits=0 misses=0 lookup_ms=0\r\n"]
[76.463871, "o", "2026-05-23 20:32:02,888 - root - INFO - llm_response_cache process_action total_ms=15872 user_input='Paladin'\r\n2026-05-23 20:32:02,896 - root - INFO - llm_response_cache MISS: user_input='Use Standard Array - STR 15, DEX 10, CON 14, INT 8, WIS 12, ' mode=character hits=0 misses=0 lookup_ms=0\r\n"]
[108.820219, "o", "2026-05-23 20:32:35,256 - root - INFO - llm_response_cache process_action total_ms=32360 user_input='Use Standard Array - STR 15, DEX 10, CON 14, INT 8, WIS 12, '\r\n"]
[108.821558, "o", "2026-05-23 20:32:35,257 - root - INFO - llm_response_cache MISS: user_input=\"My character's name is Mira.\" mode=character hits=0 misses=0 lookup_ms=0\r\n"]
[119.188199, "o", "2026-05-23 20:32:45,624 - root - INFO - llm_response_cache process_action total_ms=10367 user_input=\"My character's name is Mira.\"\r\n"]
[119.189026, "o", "2026-05-23 20:32:45,625 - root - INFO - llm_response_cache MISS: user_input='Noble background.' mode=character hits=0 misses=0 lookup_ms=0\r\n"]
[134.254363, "o", "2026-05-23 20:33:00,688 - root - INFO - llm_response_cache process_action total_ms=15063 user_input='Noble background.'\r\n2026-05-23 20:33:00,690 - root - INFO - llm_response_cache MISS: user_input='CHOICE:finish_character_creation_start_game' mode=character hits=0 misses=0 lookup_ms=0\r\n"]
[159.260605, "o", "2026-05-23 20:33:25,693 - root - INFO - llm_response_cache process_action total_ms=25001 user_input='CHOICE:finish_character_creation_start_game'\r\n"]
[159.88276, "o", "2026-05-23 20:33:26,320 - root - INFO - llm_response_cache MISS: user_input='GOD MODE: This campaign is an accelerated training gauntlet.' mode=god hits=0 misses=0 lookup_ms=0\r\n"]
[172.189367, "o", "2026-05-23 20:33:38,625 - root - INFO - llm_response_cache process_action total_ms=12305 user_input='GOD MODE: This campaign is an accelerated training gauntlet.'\r\n"]
[172.76351, "o", "2026-05-23 20:33:39,201 - root - INFO - llm_response_cache MISS: user_input='I take the next demanding gauntlet challenge and roll whatev' mode=character hits=0 misses=0 lookup_ms=0\r\n"]
[198.960469, "o", "2026-05-23 20:34:05,397 - root - INFO - llm_response_cache process_action total_ms=26196 user_input='I take the next demanding gauntlet challenge and roll whatev'\r\n"]
[199.294826, "o", "2026-05-23 20:34:05,733 - root - INFO - llm_response_cache MISS: user_input='I take the next demanding gauntlet challenge and roll whatev' mode=character hits=0 misses=0 lookup_ms=0\r\n"]
[237.298038, "o", "2026-05-23 20:34:43,732 - root - INFO - llm_response_cache process_action total_ms=37998 user_input='I take the next demanding gauntlet challenge and roll whatev'\r\n"]
[237.632288, "o", "2026-05-23 20:34:44,070 - root - INFO - llm_response_cache MISS: user_input='CHOICE:level_up_now' mode=character hits=0 misses=0 lookup_ms=0\r\n"]
[256.194041, "o", "2026-05-23 20:35:02,631 - campaign_utils - WARNING - LLM omitted world_events on living world turn 3. Attempting Firestore fallback. If fallback fails, invariant check will flag this.\r\n"]
[256.504585, "o", "2026-05-23 20:35:02,943 - root - INFO - llm_response_cache process_action total_ms=18872 user_input='CHOICE:level_up_now'\r\n"]
[256.812634, "o", "2026-05-23 20:35:03,251 - root - INFO - llm_response_cache MISS: user_input='Change my recommended fighting style to Dueling, keep every ' mode=character hits=0 misses=0 lookup_ms=0\r\n"]
[273.623726, "o", "2026-05-23 20:35:20,062 - campaign_utils - WARNING - LLM omitted world_events on living world turn 3. Attempting Firestore fallback. If fallback fails, invariant check will flag this.\r\n"]
[273.837917, "o", "2026-05-23 20:35:20,277 - root - INFO - llm_response_cache process_action total_ms=17025 user_input='Change my recommended fighting style to Dueling, keep every '\r\n"]
[274.074273, "o", "2026-05-23 20:35:20,513 - root - INFO - llm_response_cache MISS: user_input='I try to leave the level-up modal and continue the adventure' mode=character hits=0 misses=0 lookup_ms=0\r\n"]
[287.490921, "o", "2026-05-23 20:35:33,929 - campaign_utils - WARNING - LLM omitted world_events on living world turn 3. Attempting Firestore fallback. If fallback fails, invariant check will flag this.\r\n"]
[287.762277, "o", "2026-05-23 20:35:34,201 - root - INFO - llm_response_cache process_action total_ms=13688 user_input='I try to leave the level-up modal and continue the adventure'\r\n"]
[288.098852, "o", "2026-05-23 20:35:34,538 - root - INFO - llm_response_cache MISS: user_input='CHOICE:level_up_fighting_style_defense' mode=character hits=0 misses=0 lookup_ms=0\r\n"]
[300.858945, "o", "2026-05-23 20:35:47,298 - campaign_utils - WARNING - LLM omitted world_events on living world turn 3. Attempting Firestore fallback. If fallback fails, invariant check will flag this.\r\n"]
[301.232981, "o", "2026-05-23 20:35:47,672 - root - INFO - llm_response_cache process_action total_ms=13135 user_input='CHOICE:level_up_fighting_style_defense'\r\n"]
[301.53346, "o", "2026-05-23 20:35:47,973 - root - INFO - llm_response_cache MISS: user_input='CHOICE:level_up_fighting_style_dueling' mode=character hits=0 misses=0 lookup_ms=0\r\n"]
[317.755883, "o", "2026-05-23 20:36:04,194 - campaign_utils - WARNING - LLM omitted world_events on living world turn 3. Attempting Firestore fallback. If fallback fails, invariant check will flag this.\r\n"]
[318.146903, "o", "2026-05-23 20:36:04,586 - root - INFO - llm_response_cache process_action total_ms=16613 user_input='CHOICE:level_up_fighting_style_dueling'\r\n"]
[318.369403, "o", "2026-05-23 20:36:04,809 - root - INFO - llm_response_cache MISS: user_input='CHOICE:finish_level_up_return_to_game' mode=character hits=0 misses=0 lookup_ms=0\r\n"]
[351.234974, "o", "2026-05-23 20:36:37,670 - campaign_utils - WARNING - LLM omitted world_events on living world turn 3. Attempting Firestore fallback. If fallback fails, invariant check will flag this.\r\n"]
[351.562003, "o", "2026-05-23 20:36:38,002 - root - INFO - llm_response_cache process_action total_ms=33192 user_input='CHOICE:finish_level_up_return_to_game'\r\n"]
[355.079429, "o", " ✅ Captured campaign snapshot for avafxHQ5\r\n"]
[355.138232, "o", "Tmux video artifact finalized (.cast).\r\n"]
[355.858638, "o", "\r\n================================================================================\r\n📦 EVIDENCE BUNDLE CREATED\r\n================================================================================\r\n📁 Evidence Directory:\r\n /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008\r\n\r\n📋 Bundle Metadata:\r\n Run ID: test_level_up_organic-008-20260524T033641\r\n Iteration: 8\r\n Bundle Version: 1.2.0\r\n 📁 Evidence directory: /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008\r\n 📁 Latest iteration: /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008\r\n\r\n📥 Downloading 1 test campaigns (workers=1)...\r\n"]
[360.082366, "o", "Downloading to: /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008/campaigns\r\nFormat: txt\r\n============================================================\r\nDownloading: avafxHQ50msKBdKQKmI5...\r\n Saved story: Organic Level-Up Progression Test_avafxHQ5.txt\r\n Saved game state: Organic Level-Up Progression Test_avafxHQ5_game_state.json\r\n Entries: 36, Story size: 24.6 KB, Game state size: 9.7 KB\r\n============================================================\r\nDownloaded 1/1 campaigns\r\n stderr: 2026-05-23 20:36:42,506 - root - INFO - Unified logging configured: /var/folders/j0/byd1z6px50v88lf679bgt0h00000gn/T/worldarchitect.ai/pr6958-zfc-evidence-followups/app.log\r\n stderr: 2026-05-23 20:36:42,506 - root - INFO - Applied clock skew patch: adjusting time by -720 seconds\r\n stderr: 2026-05-23 20:36:43,573 - root - INFO - Firebase not initialized - attempting to initialize now\r\n stderr: 2026-05-23 20:36:43,574 - root - INFO - Loading service account from file: /Users/jleechan/ser"]
[360.082901, "o", "viceAccountKey.json\r\n stderr: 2026-05-23 20:36:43,575 - root - INFO - ✅ Successfully loaded credentials from file: /Users/jleechan/serviceAccountKey.json\r\n stderr: 2026-05-23 20:36:43,575 - root - INFO - Successfully loaded service account credentials\r\n stderr: 2026-05-23 20:36:44,164 - root - INFO - 📖 FETCHED STORY ENTRIES: user=test-test_level_up_organic-1779593448, campaign=avafxHQ50msKBdKQKmI5, total_entries=36\r\n stderr: 2026-05-23 20:36:44,164 - root - INFO - 📊 STORY BREAKDOWN: user_entries=18, ai_entries=18, other_entries=0\r\n stderr: 2026-05-23 20:36:44,164 - root - INFO - 🔍 RECENT ENTRIES (last 5):\r\n stderr: 2026-05-23 20:36:44,164 - root - INFO - 1. [gemini] character | Midday (12:15:00) at the Sparring Floor I—the divi... | 2026-05-24 03:35:46.698357+00:00\r\n stderr: 2026-05-23 20:36:44,164 - root - INFO - 2. [user] character | Change Fighting Style: Dueling - Switch back to th... | 2026-05-24 03:36:03.049206+00:00\r\n stderr: 2026-05-23 20:36:44,164 - root - INFO - 3. [gemini"]
[360.08312, "o", "] character | Midday (12:15:00) at the Sparring Floor I—the radi... | 2026-05-24 03:36:03.394854+00:00\r\n stderr: 2026-05-23 20:36:44,164 - root - INFO - 4. [user] character | Apply Recommended Options and Return to Game - Fin... | 2026-05-24 03:36:36.424193+00:00\r\n stderr: 2026-05-23 20:36:44,164 - root - INFO - 5. [gemini] character | The golden embers swirling around you finally coal... | 2026-05-24 03:36:36.861885+00:00\r\n stderr: 2026-05-23 20:36:44,339 - root - WARNING - ⚠️ ⚠️ COMBAT_STATE_MISMATCH: combatants has keys not in initiative_order: {'npc_construct_beta_001', 'pc_mira_001'}. These combatants won't have a turn.\r\n ✅ Downloaded campaign avafxHQ5... (36 entries)\r\n ✅ Downloaded campaign avafxHQ5... (36 entries, user_id=test-test_level_up_organic-1779593448)\r\n📦 Downloaded 1/1 campaigns to:\r\n /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008/campaigns\r\n"]
[360.084526, "o", "ℹ️ Reconciled campaign_capture_status with exported campaign artifacts.\r\n"]
[360.086049, "o", "\r\n================================================================================\r\n✅ TEST EVIDENCE SUMMARY\r\n================================================================================\r\n📁 Evidence Location: /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008\r\n"]
[360.086068, "o", "📥 Campaigns Location: /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008/campaigns\r\n"]
[360.086152, "o", "🔗 Latest Symlink: /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/latest\r\n================================================================================\r\n\r\n"]
[360.094188, "o", "📎 Iteration artifact captured: /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008/scenario_results_checkpoint.json\r\n"]
[360.095093, "o", "📁 Final evidence iteration directory: /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008\r\n"]
[360.110207, "o", "\r\n======================================================================\r\nSUMMARY\r\n======================================================================\r\nTotal scenarios: 3\r\nPassed: 3\r\nFailed: 0\r\nPass rate: 3/3 (100%)\r\n\r\n📦 Evidence bundle created: /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic\r\n Files: 22 with checksums\r\n"]
[360.110709, "o", "📝 Console output saved: /tmp/worldarchitect.ai/pr6958-zfc-evidence-followups/test_level_up_organic/iteration_008/test_console_output.txt\r\n\r\nStopping local server...\r\n"]
[363.741838, "o", "\r\n"]
[363.741983, "o", "━━━━━━━ 5. POST-TEST SHA VERIFICATION ━━━━━━━\r\n"]
[363.75459, "o", "Pre-test SHA: 1b6b29797c28ad0a25ef7161c4e229f916a65c83\r\nPost-test SHA: 1b6b29797c28ad0a25ef7161c4e229f916a65c83\r\nSHA MATCH\r\n"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment