> For the complete documentation index, see [llms.txt](https://faction-os.gitbook.io/faction-os-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://faction-os.gitbook.io/faction-os-docs/docs/game-design/06-social-and-scoring-systems.md).

# Social And Scoring Systems

**Project:** FactionOS — The War Effort **Document role:** Social systems and scoring spec

## 8. Multiplayer: The Alliance War (War Room reskin)

War Room (exists: rooms, presence, approvals, relay, catch-up) becomes the **Alliance layer**:

* Joining a room = **marching your army to the shared front**. Peer heroes render as allied standees (redacted federation already solved).
* **Shared bosses:** an alliance campaign (orchestration campaigns exist) renders as a **World Boss** whose HP is the campaign's remaining task queue. Every member's completed task visibly chunks the boss's HP bar. Loot for all on kill.
* **Faction league (seasonal):** FactionStandings (exists) extended across rooms — "this season, Team Undead cleared 4,200 quests worldwide." Purely cosmetic bragging; standings-driven login ritual.
* **The Notice Board is the tavern:** coordination messages (exist) get tavern framing; resolving a notice ("I've got the auth refactor") plants a cooperative contract flag both players see.

**Existing generated asset references:** check `manifest.md` before creating new Alliance War art. `assets/generated/game-design/phase09/bosses/null-sovereign-world-boss-standee.png` is available for the campaign/world-boss standee, with retained chroma source at `assets/generated/game-design/phase09/bosses/null-sovereign-world-boss-standee-chroma-source.png`. `assets/generated/game-design/phase05/banners-regalia/banners-regalia-sheet.png` covers Banners Unite, cooperative flags, seals, and league/regalia framing. `assets/generated/game-design/phase10/alliance-war/alliance-war-visuals-sheet.png` covers allied standees, shared-front markers, shared boss HP, faction league emblems, tavern contract flags, cooperative ribbons, rally beacons, and blank badge frames for the Alliance War layer.

## 9. Anti-Goodhart: Scoring That Can't Be Gamed Into Waste

The nightmare scenario: the game accidentally trains users to burn tokens or spam trivial missions. Defenses, using signals we already compute:

1. **Banner ≠ mission count.** Score = missions weighted by complexity (missionComplexity exists) and verification (plan verification events exist). Ten trivial missions < one verified complex one.
2. **Efficiency grade** (heroEfficiency + costProjection exist) is a *multiplier* on session score, graded on outcome-per-token vs the player's own trailing baseline (self-relative, so model/provider choice isn't penalized).
3. **Error-spawned enemies drop no loot** when re-killed by retry-spam; Wraith kills only count when the *underlying mission* eventually verifies.
4. **Diminishing essence** per tool-call within a burst window (anti tool-spam).
5. **The war chest is visible.** Cost framing (exists) stays quiet but present — spending is a strategic resource, never celebrated per se.

## 9A. Implemented Social And Scoring Substrate

### Notice Board

Code references: `packages/protocol/src/notices.ts`, `apps/server/src/managers/noticeBoard.ts`, `apps/server/src/routes/noticeBoard.ts`, `apps/server/src/lib/missionLifecycleNotices.ts`, `apps/web/src/lib/noticeBoard.ts`, `apps/web/src/lib/noticeBoardApi.ts`, `apps/web/src/components/NoticeBoard.tsx`, `apps/web/src/store/useGameStore.ts`. Focused tests: `packages/protocol/tests/notices.test.ts`, `apps/server/tests/noticeBoard.test.ts`, `apps/server/tests/noticeBoardRoutes.test.ts`, `apps/web/tests/NoticeBoard.test.tsx`, `apps/web/tests/noticeBoardStore.test.ts`.

* Notice Board create, hydrate, update, and resolve events already ship.
* Notice payload normalization covers canonical and alias forms.
* Notice history caps at 50 entries, compact display caps at 6 entries, and newest-first ordering plus id deduplication are already implemented.
* Notice metadata includes types, priorities, severities, author labels, target sessions, related files, resolved state, and detail popup content.
* Visibility filters from selected hero, selected mission, live heroes, active missions, awaiting missions, untargeted notices, target identity, denied or restricted target states, and fail-open local identity gaps.
* War Room room notices converge into local Notice Board entries.

### War Room

Code references: `packages/protocol/src/warroom.ts`, `apps/warroom/src/index.ts`, `apps/server/src/lib/warRoomNoticeBridge.ts`, `apps/web/src/store/useWarRoomStore.ts`, `apps/web/src/lib/warRoomClient.ts`, `apps/web/src/lib/warRoomFederation.ts`, `apps/web/src/lib/warRoomPresence.ts`, `apps/web/src/lib/warRoomNoticeConvergence.ts`, `apps/web/src/components/WarRoomPanel.tsx`, `apps/web/src/components/WarRoomApprovalQueue.tsx`, `apps/web/src/components/battlefield/RemoteParticipantOverlay.tsx`. Focused tests: `packages/protocol/tests/warroom.test.ts`, `packages/protocol/tests/warroomNoticeRelay.test.ts`, `apps/warroom/tests/warroom.test.ts`, `apps/server/tests/warRoomNoticeBridge.test.ts`, `apps/web/tests/WarRoomPanel.test.tsx`, `apps/web/tests/WarRoomBattlefieldOverlay.test.tsx`.

* Room lifecycle already covers local-only, unavailable, create, join, pending, approved, rejected, connected, reconnecting, caught-up, disconnected, and left states.
* Rooms support creation with local leadership, joining by six-character code, participant roles, join approval/rejection, pending-request queue rows, and in-flight decision states.
* Participant limit, roster, presence, reconnect/backoff, catch-up, leaving, and disconnection are already implemented.
* Safe outbound frames cover presence, cursor, focus, hero state, mission state, room notices, and notice-board events; inbound frames are validated.
* Local selected hero/mission federation, remote context merging/pruning, remote summaries, battlefield remote participant markers, room notice announcements, and worker notice conversion already ship.

### Leaderboards, Standings, Efficiency, And Cost

Code references: `apps/web/src/lib/heroLeaderboard.ts`, `apps/web/src/lib/factionStandings.ts`, `apps/web/src/lib/factionRadar.ts`, `apps/web/src/lib/heroEfficiency.ts`, `apps/web/src/lib/factionEfficiency.ts`, `apps/web/src/lib/costProjection.ts`, `apps/web/src/lib/factionCostProjection.ts`, `apps/web/src/components/Leaderboard.tsx`, `apps/web/src/components/FactionStandings.tsx`, `apps/web/src/components/SessionRollup.tsx`, `apps/web/src/store/useGameStore.ts`. Focused tests: `apps/web/tests/heroLeaderboard.test.ts`, `apps/web/tests/Leaderboard.test.tsx`, `apps/web/tests/factionStandings.test.ts`, `apps/web/tests/FactionStandings.test.tsx`, `apps/web/tests/factionRadar.test.ts`, `apps/web/tests/FactionStandingsRadar.test.tsx`, `apps/web/tests/heroEfficiency.test.ts`, `apps/web/tests/HeroDetailDrawerEfficiency.test.tsx`, `apps/web/tests/factionEfficiency.test.ts`, `apps/web/tests/FactionStandingsEfficiency.test.tsx`, `apps/web/tests/factionCostProjection.test.ts`.

* Hero leaderboard ranks live non-dismissed heroes by missions, tools, tokens, cost, achievements, last activity, or name, and row selection opens hero detail.
* Faction standings cover Orcs, Humans, Elves, Undead, and Lobsters with missions, tools, tokens, cost, achievements, heroes, active count, top performer, selected-player highlighting, and canonical tie-breaks.
* Faction radar normalizes standings axes, computes area share, and selects the largest-area leader.
* Hero efficiency profiles include completed, failed, and in-flight missions, tokens, cost, average tokens/cost per mission, average duration, success rate, throughput, null no-closed-mission score, S-A-B-C-D tiers, and sorting.
* Faction efficiency aggregates average score, success rate, tokens per mission, cost per mission, throughput, completed missions, scored heroes, tier counts, top efficiency profile, and fleet totals.
* Cost projection uses a default 15-minute trailing window, default input and output token rates, hourly/daily formatting, faction buckets, unassigned totals, and faction ranking by projected hourly cost, recent cost, and canonical faction order.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://faction-os.gitbook.io/faction-os-docs/docs/game-design/06-social-and-scoring-systems.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
