{
  "title": "SageCraft: level-five campaign evidence summary",
  "verified_on": "2026-10-08",
  "public_repository": {
    "url": "https://github.com/levantolabs/sagecraft",
    "license": "Apache-2.0",
    "commit_checked": "15f0c37967f2a5fc9dceb876f908448973784679",
    "campaign_report": "docs/campaign.md",
    "metrics": "assets/campaign-metrics.json",
    "metrics_sha256": "a28b8f59ef0ce5245b2242cba8b62104383cc3210977c6c52c363f52b52a6433",
    "final_run_excerpt": "examples/final-run-excerpt.jsonl",
    "final_run_excerpt_sha256": "eab176de7284b6ad7801666cabb1c53581f92b0392627884afe79c5ed8c52686"
  },
  "scope": "Supervised level 1 to 5 campaign of one dwarf priest in Coldridge Valley, October 5-6, 2026 (UTC). Every returned decision reported levanto-sage-v1.3. Character name as shown in the recordings: Sage Think. The harness works from screenshots, ordinary keyboard and mouse input and the game client's combat-log file.",
  "campaign": {
    "level": "1 -> 5, confirmed by two fresh readings of the level badge",
    "sessions": 32,
    "sage_decisions_returned": 4573,
    "sage_target_observations": 280,
    "median_decision_request_seconds": 0.8,
    "combat_log_kills_lower_bound": 128,
    "active_play": "5h 29m",
    "elapsed_first_to_last_session": "16h 31m",
    "commands_sent": 1869,
    "commands_completed": 1864,
    "deaths": 3,
    "harness_fixes_between_sessions": 16,
    "hunting_policy_changes": 1,
    "recoveries_with_runner_stopped": 8
  },
  "final_session": {
    "session": 32,
    "start": "late level 4 (about 85% of the way to 5, visual estimate)",
    "duration": "18 min 5 s",
    "combat_log_kills_lower_bound": 11,
    "sage_decisions_returned": 278,
    "commands_sent": 111,
    "commands_completed": 111,
    "human_gameplay_input": 0,
    "code_changes": 0,
    "restarts": 0,
    "finish": "Two fresh level-5 readings at 15:17:56.49 and 15:17:57.17 UTC; the runner stopped itself at 15:17:57.24 UTC"
  },
  "limitations": [
    "Supervised development campaign, not one uninterrupted level 1 to 5 run. Sessions were stopped by operators (17), safety checks (10), death (2), the evidence-storage cap (1) and a hunting-area change (1); one reached the goal.",
    "Recoveries between sessions included three resurrections, terrain escapes and one Hearthstone, done with the runner stopped. Sage never resurrected the character.",
    "One zone and one class. Not a benchmark, and no comparison with the harness alone or a simpler policy.",
    "Combat-log kill counts are deduplicated lower bounds, not proof of solo damage.",
    "A completed input receipt proves the input was sent, not that it had the intended effect.",
    "Besides screenshots, the harness reads the combat-log text file the game client writes; it is used for kill counts and as creature-type evidence in some checks."
  ],
  "clips": [
    {
      "id": "first-kill",
      "source": "2026-10-06 00-36-03.mov",
      "startSeconds": 824,
      "durationSeconds": 29,
      "posterSeconds": 838,
      "bytes": 3052179,
      "url": "/sagecraft/first-kill.mp4",
      "sha256": "fbabdbde97a75dd7c5bfe7e253e1b111ed6d6192cb752b39f5aade95f5a7cc2f",
      "session": 1,
      "date_utc": "2026-10-05",
      "in_game_clock_check_utc": "22:53",
      "note": "Ragged Young Wolf; combat-log kill 22:54:03 UTC, harness kill credit 22:54:14 UTC; in-game clock reads 22:53 UTC",
      "poster_sha256": "60e536bc904c30f03e621409d67578e6a60e67c47ae611238f85c865a69a1a01",
      "hidden": [
        "reaction.exe meme panel in the recorded HUD (third-party images and profanity), and the last line of a creature tooltip under it: flat navy block labelled PANEL HIDDEN"
      ]
    },
    {
      "id": "panic-heal",
      "source": "2026-10-06 11-14-46.mov",
      "startSeconds": 9186,
      "durationSeconds": 22,
      "posterSeconds": 9198,
      "bytes": 2590657,
      "url": "/sagecraft/panic-heal.mp4",
      "sha256": "706c75a9f36cbc908182ba75196ca3175c6972d2387d643597f1665cbdff8481",
      "session": 26,
      "date_utc": "2026-10-06",
      "in_game_clock_check_utc": "12:44",
      "note": "Sage chose heal_self (Lesser Heal) at 12:44:30.76; health 0.257 -> 0.714 observed 12:44:35.22",
      "poster_sha256": "3fbd4d2864b74b3a03803901b778adb48c29d554de34fa35d26eb9c87057432b",
      "hidden": [
        "reaction.exe meme panel in the recorded HUD (third-party images and profanity): flat navy block labelled PANEL HIDDEN",
        "other players' general chat: flat navy block labelled CHAT HIDDEN"
      ]
    },
    {
      "id": "the-tree",
      "source": "2026-10-06 11-14-46.mov",
      "startSeconds": 612,
      "durationSeconds": 27,
      "posterSeconds": 632,
      "bytes": 1937833,
      "url": "/sagecraft/the-tree.mp4",
      "sha256": "fa6ccce24dfe86f4b20fd9e8edc720dafb2844bdd42b3e541317df7e6b219b17",
      "session": 14,
      "date_utc": "2026-10-06",
      "in_game_clock_check_utc": "09:24",
      "note": "Repeated probe/detour attempts; no escape shown. Session 14 was stopped by the operators for lack of progress.",
      "poster_sha256": "792f6a9e4485f5ae1471154f56a2cf8e944904271a6b018b31ef44d6cca0b07f",
      "hidden": [
        "reaction.exe meme panel in the recorded HUD (third-party images and profanity): flat navy block labelled PANEL HIDDEN",
        "other players' general chat: flat navy block labelled CHAT HIDDEN"
      ]
    },
    {
      "id": "level-five",
      "source": "2026-10-06 11-14-46.mov",
      "startSeconds": 17788,
      "durationSeconds": 28,
      "posterSeconds": 17803,
      "bytes": 2495738,
      "url": "/sagecraft/level-five.mp4",
      "sha256": "6259f9e5f51c13af5fe9fb234140ffe322a0118ed279f8fe24a27dda390082e9",
      "session": 32,
      "date_utc": "2026-10-06",
      "in_game_clock_check_utc": "15:17",
      "note": "The badge changes to 5 about 11.35 s in (about 15:17:35 UTC). The clip ends about 4.5 s before the first level-5 reading at 15:17:56.49; the verification and stop are off-clip.",
      "poster_sha256": "bc9d1ab1d8b0cec59c5920748d8336646d7f6a020e1207879890685b0b51773e",
      "hidden": [
        "reaction.exe meme panel in the recorded HUD (third-party images and profanity): flat navy block labelled PANEL HIDDEN",
        "other players' general chat: flat navy block labelled CHAT HIDDEN (from 11.6 s only the lines above the level-up system message)",
        "another player's floating nameplate near the top centre: small blur"
      ]
    }
  ],
  "decision_evidence": {
    "summary": "One six-option decision at 15:17:21 UTC in session 32, shown step by step on the page. Options, choice, model, timing and the level readings are in the public final-run excerpt (event ids final-run-7150, final-run-7329, final-run-7345). Frames, dispatch check and cast-burst checks come from the session-32 event log in the private campaign archive.",
    "question": "Is an actual selected target portrait/bar frame present, and what should we do next? Background creatures and tooltips do not count as a selected frame.",
    "context": "Goal: kill eligible creatures. My confirmed level: 4. Allowed creature levels: 1 to 4. Level 4 hunting strategy: primary targets are Burly Rockjaw Trogg, Rockjaw Trogg. Move to a configured hunting subregion or explore toward these creatures. Do not pull unrelated creatures merely because Tab selects them. Finish an ongoing fight and handle an actual attacker before relocating. Catalog locations/populations are scouting hypotheses; verify safe ground and current creature identity, life and permitted level before attacking. If this patch lacks primary targets, try another destination. User instruction: stay on Southeastern Coldridge Rockjaw hills and hunt the configured nearby creatures until the level goal. Use short local targeting/combat adjustments; do not tour other areas. Preferred creature levels: 2 to 4 for XP efficiency when practical. This is a preference only: other allowed levels remain valid kills. Do not reject an otherwise eligible selected creature or abandon a fight solely because it is outside the preferred range. Weigh nearby opportunities against time spent searching. Selected target: inspect the actual current portrait/bar HUD; prior bookkeeping is not a presence answer; name proposal 'Rockjaw Trogg', level proposals [1]. Fresh attributed target observation: {'selected_hud': 'present', 'name': 'Rockjaw Trogg', 'level': 1, 'target_kind': 'creature', 'life_state': 'alive'}; eligibility eligible. Current HUD resources (visible bar fractions, unknown when unreadable): {'frame_id': '54d68937-3dfa-4bc1-a53c-52e225fc3db5', 'player_health': 0.996, 'health_confidence': 1.0, 'target_health': 1.0, 'target_health_confidence': 1.0, 'player_mana': 1.0}. Cast diagnostic observations (never damage/kill proof): {}. Last relevant result: choose_area:coldridge_southeast_troggs. Ordinary passive chat history, action bars, minimap, tooltips and quest tracker are normal HUD. Only an active typing field, blocking modal/menu or loading prevents world input. A selected creature attacking us is ordinary combat; urgent means own death, immediate survival/resource emergency or an unexpected threat requiring interruption. Own health at or below 30% is a meaningful survival concern; normal damage above that does not by itself interrupt attacks. Find the actual portrait with attached unit health/level HUD in the current image; Our cast receipt alone proves neither damage nor kill credit. Inventory capacity was positively reported for this character and leveling goal. Loot collection is suspended until this goal ends; do not inspect corpses or collect items. Close any currently visible loot panel, verify normal world, then continue hunting. Skipped items are NOT verified looted. Selected species is a primary hunting target.  The current selected creature has a positive calibrated health bar. A nearby corpse or older same-name death log does not establish death of this selected creature.",
    "options": [
      "attack_mob_level_1",
      "reject_selected_target",
      "change_search_strategy",
      "ui_blocked",
      "recover_now",
      "cannot_assess"
    ],
    "chosen": "attack_mob_level_1",
    "request_seconds": 0.93,
    "model": "levanto-sage-v1.3",
    "authorised_routine": {
      "type": "cast_burst",
      "spell": "Smite",
      "count": 3,
      "interval_seconds": 2.2,
      "start_attack": true,
      "opening_command": "/startattack [harm,nodead]",
      "expected_target_name": "Rockjaw Trogg"
    },
    "dispatch_check": {
      "at_utc": "2026-10-06T15:17:22.457Z",
      "fresh_frame_captured_utc": "2026-10-06T15:17:22.141Z",
      "predicates_passed": 19,
      "predicates_failed": 0,
      "elapsed_seconds": 0.47
    },
    "burst": [
      {
        "check": "fresh HUD supports another authorized pulse",
        "target_health_estimate": 1.0,
        "result": "cast 1 sent",
        "check_at_utc": "2026-10-06T15:17:23.42Z",
        "dispatched_at_utc": "2026-10-06T15:17:24.25Z"
      },
      {
        "check": "fresh HUD supports another authorized pulse",
        "target_health_estimate": 0.672,
        "result": "cast 2 sent",
        "check_at_utc": "2026-10-06T15:17:27.41Z",
        "dispatched_at_utc": "2026-10-06T15:17:27.91Z"
      },
      {
        "check": "selected-target identity changed during the burst",
        "target_health_estimate": 0.222,
        "result": "cast 3 withheld",
        "note": "Same target name, still alive, same selection episode. Target-badge continuity against the reference frame taken when the burst began was the only newly failing check, so the harness failed safe.",
        "check_at_utc": "2026-10-06T15:17:31.07Z"
      }
    ],
    "receipt": {
      "at_utc": "2026-10-06T15:17:31.09Z",
      "completed": true,
      "effect": "unknown"
    },
    "between_choice_and_goal": "Five more decisions: no choice, lost, no choice, target_enemy, attack_mob_level_2. After each no-choice answer the harness sent no input. The badge had changed to 5 at about 15:17:35, before the level reads. Cast 3 was never sent. The routine had opened with /startattack, so auto-attack was still on: the game's combat log records swings of 3, 4 and 3 on this trogg at 15:17:31.78, 15:17:33.61 and 15:17:35.53 UTC, the last one killing it (15:17:35.53). In the level-five clip they show from about 7.9 s, then XP: 20 and the badge change at about 11.35 s.",
    "frames": [
      {
        "file": "/sagecraft/evidence/seen.webp",
        "description": "Composed image Sage received for the decision (exact wire JPEG)",
        "captured_or_sent_utc": "2026-10-06T15:17:21.00",
        "source_sha256": "10cf6aef351fb00f878696d66ba668eedf18016b31c2c7eebc06b298fe83a617",
        "published_sha256": "373791f4334e1de22b20cd9b81d5ee7173d4cbe38eb2574eb7b48040dcc8cb11",
        "processing": "flat navy block labelled CHAT HIDDEN over other players' chat; small blur over another player's nameplate; converted to WebP quality 84; no other change."
      },
      {
        "file": "/sagecraft/evidence/check.webp",
        "description": "Fresh frame used by the dispatch check",
        "captured_or_sent_utc": "2026-10-06T15:17:22.14",
        "source_sha256": "6d47d76ff461a05019796f12bd5ac6ed78d728544fdc796f854b9b54ac89fd57",
        "published_sha256": "5e25aca10e88a49b3e435be009fe13508e1a1f8d7f3acf5e71b37d83fbb5ec39",
        "processing": "flat navy block labelled CHAT HIDDEN over other players' chat; small blur over another player's nameplate; converted to WebP quality 84; no other change."
      },
      {
        "file": "/sagecraft/evidence/cast.webp",
        "description": "Frame for the re-check before cast 2",
        "captured_or_sent_utc": "2026-10-06T15:17:26.64",
        "source_sha256": "98b301253c980cf67e06eac2c0e6139c2b3c5672336d4dda2f37d49713c9f486",
        "published_sha256": "dbf72716a45ca2d77688b3e3dccbeadad80eaeff455f41f158d5050a562614ac",
        "processing": "flat navy block labelled CHAT HIDDEN over other players' chat; small blur over another player's nameplate; converted to WebP quality 84; no other change."
      },
      {
        "file": "/sagecraft/evidence/withheld.webp",
        "description": "Frame for the re-check that withheld cast 3",
        "captured_or_sent_utc": "2026-10-06T15:17:30.31",
        "source_sha256": "7f68fddc9add0707412867abc75f342ef968299fb1a61856e3294ce90d1a32a5",
        "published_sha256": "4d5a2041442541b184bec62ac897fdd4100ada75105029f10a0203b3e157080f",
        "processing": "flat navy block labelled CHAT HIDDEN over other players' chat; small blur over another player's nameplate; converted to WebP quality 84; no other change."
      },
      {
        "file": "/sagecraft/evidence/level.webp",
        "description": "Frame for the first level-5 reading",
        "captured_or_sent_utc": "2026-10-06T15:17:56.05",
        "source_sha256": "c96381d6b8283a70cd65399af69893968bdbe5afbbe7a562f897149741ee5360",
        "published_sha256": "ee992e76d54060e11ff94be25034fa19daf8436020f8f7e588e1d061ce08354b",
        "processing": "flat navy block labelled CHAT HIDDEN over other players' chat; small blur over another player's nameplate; converted to WebP quality 84; no other change."
      },
      {
        "file": "/sagecraft/evidence/level-read.webp",
        "description": "Cropped player frame Sage read for the first level-5 reading (exact wire JPEG)",
        "captured_or_sent_utc": "2026-10-06T15:17:56.26",
        "source_sha256": "0aea49cdc8cbd2ef6560ebb02a7a27cdee2216e505e48eb9459db0f9e99d0d07",
        "published_sha256": "9c642aa844a1493e6ceb387936fd5c00efa8c6c888f2f964be082165b7fd4e33",
        "processing": "converted to WebP quality 84; no other change."
      }
    ]
  },
  "presentation": {
    "method": "Optional browser-rendered close-ups of the recorded player frame on the heal and level-five clips, with short captions. No MP4 frames, speed or recorded HUD changed by the edit.",
    "originals": "Each edited player has a Close-up switch that turns the overlay off and shows the unedited recording. The unedited MP4s are at /sagecraft/<id>.mp4.",
    "sync": "Effects follow the video clock across play, pause, seek, and loop. Reduced-motion mode retains static annotations without effects.",
    "heal_cues_seconds": {
      "health_close_up": 3.8,
      "casting_caption": 11.8,
      "healed_and_reading": 14.5,
      "close_up_ends": 19
    },
    "level_cues_seconds": {
      "badge_close_up": 12.1,
      "close_up_ends": 22
    },
    "timing_note": "The heal lands at about 14.5 s in the clip (heal number shown, bar jumps); the 26% -> 71% reading is the harness's observation at 12:44:35.22. The level close-up starts after the recorded badge changes to five (about 11.35 s).",
    "hero_still": {
      "file": "/sagecraft/ding.webp",
      "source": "2026-10-06 11-14-46.mov",
      "seconds": 17799.85,
      "clip_time_seconds": 11.85,
      "about_utc": "2026-10-06T15:17:36Z",
      "crop": "1670x1080 at x 124 (native, unscaled)",
      "redactions": "Same as the level-five clip at native scale: CHAT HIDDEN block above the level-up line, PANEL HIDDEN block over the reaction panel, blurred nameplate of another player.",
      "close_up": "The page draws a paper card over the PANEL HIDDEN block with an enlarged crop of the recorded player frame (/sagecraft/ding-portrait.webp, crop 167 px at (42,387) of the same frame).",
      "sha256": "6efe22b994cf7e08ae0a898ceb92893c8d56b32255ed4fdd0bbb404bb86f0d1d",
      "portrait_sha256": "dbad9d054a2d4083d84a2d612d09dc53007a6902becd134e72df1c51f1ddb5fa",
      "social_image": "src/app/sagecraft/og-ding.jpg: the left 1250 px of the same frame (no hidden-panel block), 920 x 795.",
      "timing_note": "Clip time maps to UTC within about half a second: the combat-log kill at 15:17:35.53 matches the badge change at 11.35 s, which puts this frame near 15:17:36."
    }
  },
  "artwork": {
    "sagecraft-hero-print.webp": "Derived from the approved README hero (levantolabs/sagecraft assets/sagecraft-hero.webp, sha256 9446e821...): per-channel levels map the paper tone to white for CSS multiply on the page paper; composition and ink unchanged. Shown in the harness section.",
    "note": "Both are AI-generated illustrations in an engraving style, not gameplay. The hero image is a recorded frame (presentation.hero_still).",
    "valley-print.webp": "Derived the same way from the earlier valley illustration (prompts in docs/sagecraft-art-prompts.json)."
  },
  "clip_method": "Re-cut on 2026-10-08 from the original OBS recordings with the documented start, duration, crop (1670:1080:124:0) and scale (1280x828, H.264, 30 fps; posters 1440x932). Flat navy blocks (extended to the frame edge) over the reaction.exe meme panel in all four clips and over other players' chat in the heal, tree and level-five clips; a small blur over another player's nameplate in the level-five clip. The Sage decision HUD is untouched. Sessions matched by the event log and by the in-game clock, to within about a minute (server time, UTC-7). Movie file names use local dates.",
  "cost": {
    "calls": 4853,
    "decisions": 4573,
    "target_reads": 280,
    "billed_input_tokens": 4827001,
    "output_tokens": 264868,
    "rates_usd_per_million": {
      "input": 0.05,
      "output": 10,
      "source": "https://api-dashboard.levanto.ai/v1/public/plans, checked 2026-10-08"
    },
    "total_usd": 3.32,
    "per_kill_usd": 0.0259,
    "kills": 128,
    "method": "Sum of usage.billed_input_tokens, usage.image_tokens and usage.output_tokens over every sage_decision and grind_target_observer_result event in runs 01-32. Levanto's docs say image tokens are charged as input tokens and report them separately from input_tokens, so they are added to input. reasoning.tokens equals output_tokens on every call that reports it, so it is counted once. Kills is the combat-log lower bound, so the per-kill figure is an upper bound. 52 started requests returned no usage (47 with no logged response, 5 HTTP errors); they are not counted. At the average call cost ($0.0007) they would add about $0.04; even if all 52 were billed at the most expensive logged call ($0.0084) the total would stay under $3.76, or 2.9 cents per kill. Without image tokens the total would be $2.89 (2.3 cents per kill); the page says 'under three cents', which holds either way.",
    "image_tokens": 8531975
  }
}