Skip to content

fix: unblock Crashlanded research scoring (seed bench + brief observability) - #75

Merged
jkbennitt merged 3 commits into
masterfrom
cursor/crashlanded-research-bench-e345
Sep 8, 2026
Merged

fix: unblock Crashlanded research scoring (seed bench + brief observability)#75
jkbennitt merged 3 commits into
masterfrom
cursor/crashlanded-research-bench-e345

Conversation

@jkbennitt

@jkbennitt jkbennitt commented Sep 8, 2026

Copy link
Copy Markdown
Member

Why

Scoring 1.2 research is completed / (completed + available). On Crashlanded that starts at 7/31 ≈ 0.2258 — the finished/available ratio already in rle_crashlanded_v1, not model variance. The seed had no ResearchBench and currentProj unset. Agents never finish tech; gates that force research_target get RIMAPI “bench/prereqs missing.” Do not treat that floor as σ.

CoS greenlit this exact scope: seed + brief observability + tests. No scoring formula / version bump, no baseline-delta, no matrix or billed cal runs.

What landed

Seed

  • Built, player-owned wood SimpleResearchBench (Building_ResearchBench) at (128, 0, 136) in docker/saves/rle_crashlanded_v1.rws and the gzip sibling saves/rle_crashlanded_v1.rws.gz (round-trip gzip; BOM + CRLF preserved).
  • Simple bench does not need a generator (CompPowerTrader is hi-tech only). Encoded like other built furniture in this save (stuff, faction Faction_11, empty billStack).
  • Queued currentProj=Smithing using the same researchManager field rle_ship_launch_v1 already uses.
  • Re-pinned save_sha256 on 01_crashlanded_survival.yaml. The .baseline.json sidecar is not recalibrated (scoring 1.2 / no baseline-delta).

Brief

  • research_bench_present on the harness-neutral state snapshot.
  • MAP_SUMMARY cue when the flag is false.
  • get_map prefers research benches in the 50-structure sample so 400+ ruin walls cannot hide the seeded bench.

Executor

  • research_target on the already-queued current project is success-by-state (no rewrite), same pattern as a covered growing zone.
  • Scripted MCP smoke now targets Smithing (available, not current) so the write path is still exercised.

Tests

  • 7/31 floor math
  • brief flag true/false + missing-bench cue
  • save contract (SimpleResearchBench + gzip == canonical .rws)
  • current-project already-satisfied path
  • get_map keeps the bench when there are 60+ walls

Out of scope

  • Scoring 1.2 formula / SCORING_VERSION
  • Baseline metric recalibration
  • Rebuilding the five derived scenario saves
  • Live / billed model runs
Open in Web Open in Cursor 

cursoragent and others added 3 commits September 8, 2026 14:13
Research 1.2 floors at 7/31 on Crashlanded because the save had no
research bench and currentProj was unset. Agents never finish tech;
research_target is rejected as bench/prereqs missing. That floor is
the starting tree, not sigma.

Bake a player-owned wood SimpleResearchBench at (128, 136) and queue
Smithing. Re-pin save_sha256. Do not recalibrate the baseline sidecar.

Co-authored-by: Jason <jkbennitt@users.noreply.github.com>
Add research_bench_present to the harness-neutral state snapshot and a
MAP_SUMMARY cue when no bench is visible. Prefer research benches in
the 50-structure sample so ruin walls cannot hide the seeded bench.

research_target on the already-queued current project is success-by-state
(no rewrite), matching the growing-zone already-covered gate.

Tests cover the 7/31 floor math, brief flag true/false, save contract,
and the current-project path.

Co-authored-by: Jason <jkbennitt@users.noreply.github.com>
Mock state already has Electricity queued. After treating the current
project as success-by-state, the MCP round-trip smoke issued zero
research POSTs. Smithing is available and not current, so the write
path is still exercised.

Co-authored-by: Jason <jkbennitt@users.noreply.github.com>
@jkbennitt
jkbennitt marked this pull request as ready for review September 8, 2026 14:20

@jkbennitt jkbennitt left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM — scope matches CoS greenlight: Crashlanded seed SimpleResearchBench + currentProj=Smithing, brief research_bench_present + MAP_SUMMARY cue, get_map prefers benches, research_target current-project success-by-state, smoke targets Smithing for write path. No scoring/version/baseline bump. Tests cover floor math, save contract, brief flag, already-satisfied, get_map keep. All five CI SUCCESS on 7c61cd8 (run 34237372223). HOLD merge for CoS clear. Same Main 1-review gate as #74 (own-PR APPROVE impossible as jkbennitt).

@jkbennitt
jkbennitt merged commit fa5b43f into master Sep 8, 2026
5 checks passed
@jkbennitt
jkbennitt deleted the cursor/crashlanded-research-bench-e345 branch September 8, 2026 14:42
jkbennitt added a commit that referenced this pull request Sep 8, 2026
)

Native POST /game/load reads RimWorld AppData Saves, not docker/saves.
The YAML pin only hashed the repo mirror, so #75's Crashlanded seed
(SimpleResearchBench + Smithing) could be ignored in favor of a stale
April AppData file. Copy the canonical save when the live hash diverges
and fail closed if the pin cannot be satisfied.

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Jason <jkbennitt@users.noreply.github.com>
jkbennitt added a commit that referenced this pull request Sep 8, 2026
…rge) (#77)

* fix: read BuildingDto.def and merge research progress

Post-#76 native pin-match still reported research_bench_present false
and research_target Smithing locked. Live buildings use snake_case def
(label fallback has spaces); /research/summary has no current project
and by-tech-level bucketing dropped Smithing from available.

Map def → def_name → label, strip spaces in the bench matcher, and
merge /research/progress + finished + tree so current can be Smithing.

Co-authored-by: Jason <jkbennitt@users.noreply.github.com>

* test: keep research adapter cases out of TestReadEndpoints

Move the post-#76 adapter tests into their own class so the existing
read-endpoint cases stay under TestReadEndpoints.

Co-authored-by: Jason <jkbennitt@users.noreply.github.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Jason <jkbennitt@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants