Skip to content

Make high-level actions report observed, exact outcomes#46

Closed
MaxBittker wants to merge 2 commits into
mainfrom
codex/porcelain-action-reliability
Closed

Make high-level actions report observed, exact outcomes#46
MaxBittker wants to merge 2 commits into
mainfrom
codex/porcelain-action-reliability

Conversation

@MaxBittker

@MaxBittker MaxBittker commented Jul 24, 2026

Copy link
Copy Markdown
Owner

Summary

  • select interface components by identity and verify the requested fletching/leather product, using the real Make-10/5/single layouts
  • require attributable effects for chop/burn/talk/generic interactions instead of idle ticks or unrelated world changes
  • report exact requested/actual quantities for shop and bank operations; partial fills are unsuccessful and machine-readable
  • validate quantities before serialization, bound shop packet work/deadlines, and refresh item identity before every mutation
  • support noted withdrawals by observing bank-stack decrease and expose current output items when identifiable
  • add HP aliases/skill typo diagnostics, runtime SDK config validation, clearer inventory/equipment quantities, and a shared action phase/reason contract

Adversarial review fixes

A separate review pass found and this branch fixes: non-finite/huge quantity hangs, stale non-stackable sell slots, accidental Make-10 leather selection, noted-withdraw timeouts, stale bank/inventory object selectors, and incomplete/misrouted leather products.

Validation

  • 44 focused porcelain reliability cases pass
  • chat-history suite passes
  • click-dialog suite passes (9 cases)
  • webclient typecheck passes
  • root typecheck reaches only the two pre-existing banking fixture nullability errors fixed by Make the agent API self-describing and add regression CI #43
  • git diff --check passes

Merge guidance

This is intentionally independent of #45 so both reviews could run simultaneously. It conflicts with #45 only in sdk/actions.ts, sdk/index.ts, and sdk/types.ts.

When reconciling, preserve #45's observation IDs/revision fields, death/HP state, target-specific attack evidence, action-timeout propagation, expiring door state, and browser FIFO behavior. Keep this PR's ActionResultBase, quantity/result types, selector/config/skill additions, and porcelain action bodies. For message checks, object baselines use isMessageAfterBaseline; numeric baselines use #45's helpers.isMessageAfter. Merge/regenerate #43 after both action PRs.

@MaxBittker MaxBittker changed the title feat(sdk): make porcelain actions reliable Make high-level actions report observed, exact outcomes Jul 24, 2026
@MaxBittker

Copy link
Copy Markdown
Owner Author

Superseded by #48.

Audited this branch and landed the parts that fix real defects, rebased onto current main. This branch is based on da5340f43, two merges behind — merging it would revert CI, the generated API docs, and the chat-history/observationId work, and it fails tsc on its own base.

Carried over to #48: the interface-option 1-based/0-based click bug in fletchLogs/craftLeather, unbounded quantity expansion in the shop actions, the stale sell slot, partial fills reported as success, chopTree's despawn false-positive, and withdrawItem's slot-diff item identification.

Left out, with reasoning in the #48 description: the phase/reason retype across every result interface, the duplicate message-baseline helpers (main already has helpers.getMessageTick()/isMessageAfter() with observationId support), crafting-products.ts' unverified position tables, and the interactLoc/interactNpc/talkTo evidence rewrite — that last one is a genuine improvement but needs in-game validation, so it's worth a follow-up PR of its own.

@MaxBittker MaxBittker closed this Jul 24, 2026
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.

1 participant