Skip to content

feat(agent): friction-ladder plan steering + install gate - #26

Merged
gustavohariel merged 1 commit into
mainfrom
feat/friction-ladder-plan-skills
May 31, 2026
Merged

gustavohariel merged 1 commit into
mainfrom
feat/friction-ladder-plan-skills

Conversation

@gustavohariel

Copy link
Copy Markdown
Owner

What

Reorients funfa's propose skills around a friction ladder: default to nothing, climb reluctantly, and only install software when the evidence genuinely demands it. The driving insight (from dogfooding an AC Revelations Deck replay) is that Linux gaming is stable now — most games, even old ones, run on stock Proton — so funfa's value is the rare nitpick fix on old titles, delivered as the lowest-friction change that works.

Skill-only behavior changes, plus two CLI wrinkles caught while testing.

Why

  • Plans were biased toward "find and apply a fix," and the canonical high-tier example was a Proton-GE install — nudging the model toward installs that are rarely necessary.
  • Fixes scraped from old forum threads go stale; the skills exhorted recency but gave the model no structure to record or enforce it.
  • PHASE 0 matched existing plans by a loose name/summary check, so an unrelated prior plan (AC Brotherhood 48190) mislabeled a new AC Revelations plan as "revisiting".

Changes

funfa/SKILL.md

  • Add the friction ladder (rung 0 nothing/stock Proton → 1 env var → 2 in-Steam Proton version → 3 GE/installs) and a categorize-the-issue step (category predicts the expected rung; controller/perf landing on GE is a red flag).
  • Tighten PHASE 0 to require a same-game (appid/slug) match before any reuse/revisit label.

game-research/SKILL.md

  • Add umu-protonfixes as the maintained, code-level anchor source.
  • Prune obsolete vars (PROTON_NO_ESYNC/FSYNC, DXVK_ASYNC, PROTON_USE_WINED3D) — each var earns its place against stock Proton.
  • Prefer official Valve Proton (Experimental/Hotfix/specific version) over GE.
  • Install gate: GE is rare-but-legitimate — not banned — but must justify which Valve versions were checked and why each fails. Plus native-dead→workaround-is-headline and Deck-as-fixed-hardware weighting (one recent Deck report ≈ authoritative).

plan/SKILL.md

  • Inline provenance (confirmed <date> on <Proton>, Deck/desktop) on high-tier recs, ordered by friction.
  • Demote the GE example to last-resort; require a ## Notes line clearing the install gate.

core/review-plan.ts (CLI fix)

  • Under --bypass-confirms, skip the framed review copy + footer so the plan renders once (the caller prints the clean pasteable markdown). Interactive review/paste-back is unchanged. New test locks in the no-print behavior.

Testing

  • bun test (apps/cli): 91 pass / 0 fail, including the --compile smoke test; typecheck clean.
  • End-to-end via the codex subprocess path with FUNFA_FAKE_HARDWARE (Steam Deck profile) against AC Revelations (201870): fresh-plan labelling correct, single render, and GE recommendations now carry an explicit Valve-ladder justification in Notes.

Reviewer notes

  • The codex path inlines hardware/game-research/plan bodies (prompt.ts), so these edits are exercised on both the API-key and codex paths; prompt.test.ts's byte-identical loop-body assertion still holds since funfa/SKILL.md is the shared LOOP_BODY.
  • Out of scope (separate code passes): the outcome-feedback flywheel (plan.ts + propose loop) and expanding the fetch-page allowlist for umu's web DB / SteamDeckHQ. umu-protonfixes' GitHub repo is already reachable, so no allowlist change was needed for this PR.

🤖 Generated with Claude Code

Reorients the propose skills toward "default to nothing, climb a
friction ladder reluctantly" — Linux gaming is stable now and most
games, even old ones, run on stock Proton. Changes are skill-only
(plus two CLI wrinkles found while dogfooding AC Revelations on Deck).

Skills:
- funfa/SKILL.md: add the friction ladder (rung 0 nothing/stock Proton
  -> 1 env var -> 2 in-Steam Proton version -> 3 GE/installs) and a
  categorize-the-issue step where category predicts the expected rung;
  tighten PHASE 0 to require a same-game (appid/slug) match so an
  unrelated prior plan no longer mislabels the new one as "revisiting".
- game-research/SKILL.md: add umu-protonfixes as the maintained anchor
  source; prune obsolete vars (PROTON_NO_ESYNC/FSYNC, DXVK_ASYNC,
  PROTON_USE_WINED3D); prefer official Valve Proton over GE; add the
  install gate (GE is rare-but-legitimate, must justify which Valve
  versions were checked and why they fail) plus native-dead->workaround
  and Deck-as-fixed-hardware weighting.
- plan/SKILL.md: inline provenance (confirmed-date/Proton/Deck) on
  high-tier recs, order by friction, demote the GE example to a
  last-resort and require a Notes line clearing the install gate.

CLI fixes (found dogfooding):
- core/review-plan.ts: under --bypass-confirms, skip the framed review
  copy and footer so the plan renders once (the caller prints the clean
  pasteable markdown); interactive review/paste-back unchanged.

Verified end-to-end via the codex path with FUNFA_FAKE_HARDWARE against
AC Revelations (201870): fresh-plan labelling correct, single render,
and GE recommendations now carry an explicit Valve-ladder justification.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Your free trial has ended. If you'd like to continue receiving code reviews, you can add a payment method here.

@gustavohariel
gustavohariel merged commit 0987c20 into main May 31, 2026
2 checks passed
@gustavohariel
gustavohariel deleted the feat/friction-ladder-plan-skills branch May 31, 2026 21:56
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