Skip to content

Scope the legacy topdown assignedRoles bypass - #194

Draft
BrandDead wants to merge 1 commit into
main-tL2525from
cursor/topdown-assigned-roles-7c60
Draft

BrandDead wants to merge 1 commit into
main-tL2525from
cursor/topdown-assigned-roles-7c60

Conversation

@BrandDead

Copy link
Copy Markdown
Owner

Summary

FOUNDER DECISION: launch behavior is unchanged. This draft scopes the legacy topdown assignedRoles bypass. It is not the phone-banner or contact-dedupe work, and it is not the button-only GG-002 empty-seat guard.

On main-tL2525 (cf05276):

  • OSShell registers ATTACK as id: 'topdown'. handleAppClick calls navigateTo(app.id) with no crew payload.
  • App.renderCurrentApp case 'topdown' renders TopDownShooter.
  • AttackPlanner.handleLaunch returns only when selectedTarget is empty, then calls navigateTo('topdown'). assignedRoles (scout, enforcer, driver) is local state and is not forwarded. There is no shooter field on that object.
  • UnifiedEncounter stays the BlockModeView path (handleEncounterResolved → useBlockStore.applyEncounterResult). It was not merged with TopDownShooter.

A probe that required this launch to stay off TopDownShooter failed: after selecting a target with empty roles, currentApp became topdown (expected 'topdown' not to be 'topdown').

Issue #192 still asks the founder to choose either the canonical encounter route or a labeled non-authoritative practice route. TopDownShooter is the seat-assignment screen. canLaunch already refuses combat until a driver seat, a non-driver seat, and a target are set. endCombat is the only legacy writer for cash, heat, XP, and killMember, and it does not call applyEncounterResult. Blocking navigation to that screen would be a new product rule, so this PR does not change it.

No second consequence writer, store, or idempotency path was added.

Test

frontend/src/components/missions/AttackPlanner.legacyTopdownRoute.test.tsx (3 passed), plus the existing encounter suite blockStore.encounter.test.ts, UnifiedEncounterLog.test.tsx, and BlockModeView.test.tsx. 25 passed, 0 failed. tsc --noEmit is clean.

The characterization records the current route and that empty roles do not write encounter consequences. It does not pretend a new seat rule.

Rollback

Revert this one commit: d3aaddd21c9c778f55ea4cc8f588921b36528664.

UnifiedEncounter is untouched. No second consequence writer was added. The button-only GG-002 guard is a different PR. Draft PR #157 was not touched.

Closes nothing. #192 stays open until the founder picks the route.

Issue #192 still needs a founder choice between the canonical encounter
and a practice route, so launch behavior is unchanged. Record that
AttackPlanner and the OSShell ATTACK icon open topdown with empty roles
and do not write encounter consequences.

Co-authored-by: BrandDead <BrandDead@users.noreply.github.com>
@vercel

vercel Bot commented Sep 30, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
slide Ready Ready Preview Sep 30, 2026 8:27pm UTC

Request Review

@BrandDead BrandDead left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

Read-only integration review: this PR adds a characterization test and project-log note only; it does not correct the ATTACK icon or OPS Planner route. Keep draft pending the founder choice on #192. Issue #193 is actively editing AttackPlanner/TopDownShooter and docs/PROJECT_LOG.md; reconcile that shared log/test behavior after #193 lands, then rerun PR and protected-main gates. Do not treat the 25 focused passes as player-route acceptance or #175 staging proof.

This branch was successfully deployed

1 active deployment
Preview — d3aaddd2 Deployed Sep 30, 2026 by vercel[bot]
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