BNGZRScore Tracking

Season prep & roster moves — the editor's guide

This page is for the people who edit the control sheet (currently Doug and Ruby). It assumes you have never touched this system before. The daily scoring routine — paste an export, press the button — lives on the How to run this page; this one covers everything about people: placing them, moving them, pausing them, and losing them.

The one rule that explains everything else

The sheet is where you stage changes. Nothing is real until someone presses BNGZR → Run Engine. Standings, Daily Scores, the P/R board, and the public site are all photographs taken at the last press. Edit anything you like, in any order — the system only looks when the button is pressed.

The one exception is the Preview tab: it recalculates live as you type, showing each player's rank now versus the last engine run. Use it to sanity-check an edit before making it official.

Whose tabs are whose

You edit, engine readsEngine writes, you only read
RosterStandings
PoolsDaily Scores
Roster HistoryP/R Proposal
ConfigPreview
Activity Log

Anything you type into an engine-owned tab is erased on the next Run Engine press. It isn't punishment, it's how the tabs stay truthful — they are rebuilt from scratch every run.

Before the season starts (the 8/31 staging)

  1. Place everyone. In Roster History, every player and every pool needs a value in the season's first date column: a union number, or - if they are sitting the season out. A blank is not a dash — blanks carry the previous value forward, and on day one there is nothing to carry.
  2. Give every pool its own union. Pools rank as if they were players, so each pool has its own row in Roster History and needs its own union. Members of a pool need no union of their own — the pool carries them.
  3. Check the Hold flags. Anyone starting the season on a break gets Hold = Y (see below).
  4. Expect red ✗ marks in GitHub until the first real capture lands. Before there is a score to compute, Run Engine reports "nothing to score" and stops. That is the system working, not breaking.

Moving a player between unions

Type the new union number into today's column in Roster History. That's the whole move. On the next Run Engine press it takes effect and carries forward every day after.

**Fixing a past day is different. If you correct an old column and stop there, the fix silently disappears — the day after your fix still holds the old union, and carry-forward resurrects it. Fix the old cell, select it, then run BNGZR → Fill Forward from selection** so the correction walks forward to today. The CU (current union) column at the far right is your check: it shows what the engine will actually use.

A player taking a break — the official way

Use the Hold flag: Roster tab, Hold column, Y.

A held player stays seated in their union and keeps scoring whatever they score. The only thing Hold changes is Promotion/Relegation: they cannot be promoted (the P/R board says so in its Reason column instead of proposing the move), but they can still be relegated. When the break ends, clear the flag.

Do not record a break by removing someone from their union — that is a departure, and undoing it takes more steps. Hold is one cell, reversible with one delete.

A player leaving (Gone / Moved)

On the Roster tab, set their Status to Gone (left the family) or Moved (left for elsewhere). On the next Run Engine press the engine writes - into today's Roster History column for them and carries it forward.

What happens to their record: points already earned stand — history is never rewritten. They simply stop accruing, drop out of the P/R shuffle (shown as "unplaced"), and their seat opens up.

The same-day catch: if Run Engine was already pressed today before you set the status, the - won't land until tomorrow's press. To make it immediate, also type - into today's column yourself. (-, OUT, GONE, MOVED, and 0 all mean the same thing to the engine; - is the house style.)

A player coming back

Two edits, both required:

  1. Roster tab: Status back to Active.
  2. Roster History: type their union into today's column.

If you do only the first, the next run overwrites their union with - again — the departure carries forward until a real union interrupts it.

Pools

name and ID live on the Pools tab. The Members / Who columns there are live formulas — leave them be.

player's entire season of scores to the new pool, past days included. If a pool change is truly needed, it is a decision for the group, not a quiet edit.

a later change — that is exactly why this rule exists on paper.

The weekly Promotion/Relegation, in one paragraph

Run Engine keeps the P/R Proposal board filled while its state cell (B1) says DRAFT — ranked, with a proposed union and a reason per row, and the Decision column always left blank: the engine never approves its own proposal. When review time comes, set B1 to REVIEWING (freezes the board), fill each row's Decision — Approve, Keep (blank also means keep), or Custom plus a Final Union — set B1 to APPROVED, then press BNGZR → Apply P/R. It confirms, writes every move into today's Roster History column, and stamps the board APPLIED. If the roster changed underneath the board since it was drawn, Apply refuses with "the board is stale" — press Run Engine to redraw, and review again.

What "normal" looks like after an edit

which moves as you type. Not seeing your change in Standings yet is expected.

the Activity Log records who pressed and what happened.

has no captures yet (i.e., before the first real import of the season).

normal before the season's first date column exists; scores still import, only the roster stamp is skipped.

engine-owned tabs above. Your edit belonged in Roster / Pools / Roster History.

When in doubt: BNGZR → What will Run Engine do? explains the next press before you commit to it, and costs nothing.