... and its documentation.
Updated Wed Oct 3 21:01:15 EDT 2007 for tsh 3.200.
tsh is a Perl application for managing Scrabble tournaments, first written in 1999, continuously maintained since then and freely distributed for noncommercial use by John Chew <jjchew@math.utoronto.ca>. This document and tsh are copyright © 2007 by John J. Chew, III.
tsh is a program that deals with the logistics of running a tournament. With it, you can automatically or manually pair players, enter results, print standings, debug scorecard errors, estimate new player ratings and prepare data submissions for official ratings systems. tsh has been used at dozens of tournaments, producing high-quality pairings and reports with an estimated maximum operator:player ratio of 1:250. Among the many events that have been run using tsh are: the World Championship, the Canadian Championship, the Players’ Championship, the U.K. National Championship, the Dallas Open, the Boston Area Tournament as well as countless smaller weekend and one-day tournaments.
tsh comes with detailed documentation describing all of its features. Not everyone needs to read all of this document, and U.K. users in particular should begin by reading Stewart Holden’s Beginners’ Guide to TSH.
If this is your first time using tsh, or if you have not yet used version 3.000 or later, you must read the Introduction. You may then continue with other sections listed at the top of this page. All users should at least skim the section on commands. Data entry staff should read the sections on data entry, generating generating reports and troubleshooting. At least one person at each tournament should have browsed all sections of the manual before the tournament begins, including those on installation, configuration and pairing theory. If you want to print a copy for your reference during the tournament, the entire reference manual is also available in one file.
Before each tournament, you should update your copy of tsh and read the news of what has changed in recent versions, and follow the links there to changes in the other manual sections.
Free telephone support is available by prior arrangement. If you are planning to use tsh at a tournament, please contact John Chew at least a few weeks in advance for help in setting up configuration files, and to discuss your support needs. There is also a Yahoo group devoted to the needs of tsh users.
tsh is written in Perl, the multiplatform scripting language. Every released version is tested with OS/X and should therefore also run on common versions of Unix. tsh versions are tested a few times a year with Windows XP, and whenever a user requests it. If you are using an operating system not mentioned here, please allow a few extra weeks for any software changes that may be needed to bring the current version of tsh into compatibility with it.
Disk space and memory requirements are minimal, a fairly small number of megabytes each. One computer is recommended for every 250 or so players, and one networked printer per tournament, though having more of each will reduce data entry and report printing time and improve redundancy.
If an Internet connection is available at the event site, tsh can be used to automatically update web coverage of the tournament, and last-minute patches to the program itself can be automatically downloaded. If not, tsh can run without these features.
What to do when things go wrong with tsh.
Updated Tue Sep 18 16:40:59 EDT 2007 for tsh 3.200.
It's possible that some OS/X browsers may download a non-executable version
of this file. If so, please contact me for instructions.
If you can't reach me, move your tsh folder to your home directory,
open a “Terminal” window,
enter the command “cd tsh-nnnn
”
replacing “nnnn
” with the version number
that you downloaded,
and finally enter the command
“chmod a+x osx*
” to mark the command
executable.
Some security-conscious users may have their personal firewall
settings set too aggressively to allow the
“update
”
command to function. tsh uses only port 80 (the standard
port for HTTP service), so it should suffice to add tsh and/or Perl
to the list of applications authorized to connect to this service.
You can delete bad pairings using the “UnPairRound
” command,
edit scores using the
“EditScore
”
command
and delete bad scores using the
“DELETEscore
”
command.
See the command reference for the syntax
of those commands.
If you have made a serious error, you can manually revert to an earlier version of any tournament data (“.t”) file. tsh journals a copy of the tournament data file into a subdirectory or folder named "old" after each major change. Quit out of tsh, then look for the last good data file (either by checking the timestamps or inspecting the contents of the files), rename the bad “.t” file to “.t.bad” and put a copy of the journalled “.t.lotsofnumbers” file in its place as a new “.t” file.
You can also edit “.t” files using a text editor. If you do so, first quit from tsh, because tsh keeps an internal copy of its data that will overwrite any changes you make when tsh next updates its files.
If you are testing a new tsh feature, it’s possible that a program bug may put tsh into an infinite loop or dump core. In the former case, when tsh doesn’t give you a prompt, you’ll have to interrupt tsh and restart it. In OS/X and Unix, you interrupt terminal processes by pressing Control-C.
Some early versions of some pairings commands took a very long time to
run. It’s possible that some bugs remain undiscovered. If you
find that generating pairings in one particular situation takes
excessively long (more than a few seconds), you may interrupt
tsh, restart it, and then manually enter
a faster pairing command.
Allowing an extra repeat should in most cases substantially speed up
the pairings calculations, or you can use the
“PAIR
” command to manually pair key players
and then a regular command to pair the rest.
In any case, in the unlikely event that this happens to you, please
e-mail John a copy of the “.t” file involved.
As mentioned above, tsh journals its data after each major command, so if you are unsure about the condition of its files after a crash, revert to the last versions that were saved before the crash.
If a player misses a paired game (e.g. due to illness or tardiness),
you should manually repair him and his opponent to assign them both
byes, then enter appropriate spreads for their scores.
For example, if players 1 and 2 in division A were supposed to play
each other in round 3 but player 1 didn't show up, then
enter
“pair 0 1 3 a
”
and
“pair 0 2 3 a
”
to assign the byes, then when entering scores for division a enter
“1 -50
”
and
“2 50
”
to set spreads.
If a player gives you notice that he will be missing one or more games,
you end up determining that he is a no-show after the tournament has begun,
you can prevent them from being considered for pairings using the
“EditScore
”
command. If player 4 in division A should no longer be paired, enter
“es a 4 0
”
to begin editing the player's scoresheet, then enter
“off -50
”
give them forfeit losses whenever pairings are computed.
(“off 50
” will give them a 50-point bye,
and
“off 0
” will record a missed game without
assigning a win or loss).
If the player subsequently returns to the tournament, you can re-enable
their pairings by entering
“on
” while editing their scorecard.
If you aren't sure what an error message means, look to see if it
has a code in [square brackets] at its end.
If so, use the
“HUH
”
command to ask for an explanation.
If not, contact John and ask him to add an explanation.
My phone number is (416) 876-7675. If you arrange with me beforehand, I’ll make sure that I’m easily reachable at that number during your tournament. If you didn’t prearrange my availability and you’re reading this because something has just gone unexpectedly wrong during a tournament, please try calling me anyway.
How to get started with tsh.
Updated Wed Oct 3 21:00:54 EDT 2007 for tsh 3.200.
tsh is a program for managing a Scrabble tournament. Preferably long before the tournament begins, you need to decide the basics of how the tournament will run: how many players will play in how many separately paired divisions, how many rounds they will play, when any breaks will be, how the pairings will be determined and what prizes will be awarded. All of this information goes into an event configuration file.
As players register for your tournament, you should enter their names and pretournament ratings (if any) into the appropriate division’s data file. When you have a reasonable number, you can start running mock tournaments to make sure that you are familiar with the software and that the pairing system you have chosen works the way you want it to. If you are using cross-tables.com to keep track of registration, you can download your division data files from the director’s area on that web site.
The event configuration files and the division data files belong in
an event subfolder (subdirectory) of your tsh folder.
You can and should use the
“update
”
command
to update your tsh folder whenever you have an
Internet connection; it will not overwrite data in your event
subfolders.
When all players are present or accounted for, you ask tsh for the pairings for the first round. tsh will display them on your screen and save a copy of the pairings to a printable web page. tsh saves a copy of most useful information that you’ve asked for in web pages. You may use this just for printing, or you may specify a public location for those files so that players and spectators can view the information directly. You can also tsh for a printable file containing scorecards for all players, including any pairings that have been computed.
As games finish, players submit their scores to you. You enter them into tsh, correct them if necessary, and at the appropriate time ask for the next round’s pairings. This goes on until the end of your tournament.
If you have prizes that can be automatically calculated (anything based on game scores, rather than individual plays or words), tsh will calculate them for you. If you are submitting your data for ratings purposes, tsh will prepare the data in the appropriate format.
This section, dealing with how to actually run tsh once you have it set up on your computer, is likely to be mostly unnecessary for most users and mystifying for many others, and is therefore addressed to those few who lie between.
Once you have installed and configured tsh, you’re ready to run tsh. Now tsh is a Perl script that runs under many different operating systems, and each operating system has a different way of starting programs. Broadly speaking, we can divide them into graphical methods and command-line methods. With the graphical methods, you need to find the icon appropriate for your operating system and (typically) double-click on it with your mouse to launch tsh, which will behave as though it was run from the command line with no “arguments”.
From the command line, you should in general enter some sort of incantation necessary to persuade your operating system to run tsh, followed by an optional “argument” giving the name of the subdirectory (folder) that contains the files for the event with which you want to work. If you do not specify an event, tsh will look first for the most recently updated configuration file it can find, or if none are available the oldstyle “tsh.config” file. Here’s what to do for some popular operating systems.
Operating System | Instructions |
---|---|
(Mac) OS/X | Either open a Finder window to your tsh folder and double-click on the ‘osx-tsh.command’ icon, or follow the generic Unix command-line instructions. If you get a message saying that the file is not executable, see Troubleshooting. |
Classic MacOS | I have not supported Classic MacOS since 2003. If you need to use tsh with MacOS 9 or earlier, please contact me and I’ll fix a number of compatibility issues and create a double-clickable icon for launching tsh. |
Any Unix (including Linux) |
Open a shell (terminal) window, cd
to your tsh directory and enter “./tsh.pl ” (or
just “tsh.pl ” if your path permits)
followed optionally by a space and the name of the
subdirectory with your event files.
For example:
“./tsh.pl toronto-2005 ”.
|
Windows | Open a window to your tsh folder, then double-click on the “tsh” icon (if you have a properly installed version of Perl and a modern version of Windows) or “dos-run.bat” icon (otherwise). |
DOS |
Type “perl tsh.pl ”.
If you want to override tsh’s choice of event directory,
enter it on the same line:
“perl tsh.pl myevent ”.
(To get a DOS command window under Windows,
Choose “Run Command” from the Windows Start menu, then enter “command”.)
|
Other | Check the “perlrun(1)” manual page concerning how to run Perl programs. Contact John Chew to have specific instructions added to this document. |
If you get a message complaining that the configuration file can’t be found, make sure that your ‘.t’ files and ‘config.tsh’ file are together in one subdirectory, of the main tsh directory.
When you successfully start tsh, you should see a sequence of messages something like the following.
Loading configuration file test/config.tsh. [iloadcfg] Welcome to tsh version 3.200. [iwelcome] Loading division A. [iloaddiv] Loading division B. [iloaddiv] Loading division C. [iloaddiv] Event loaded: Anytown AS, 2007-12-25. [ievtname] tsh>
The “tsh>
” is your
main prompt.
If you have a system which supports it,
the prompt will be in a distinctive colour.
When you see it, you can type a
command.
After you type your command, don’t forget to press the return key.
The basics of how to operate tsh.
Updated Tue Dec 4 10:54:29 EST 2007 for tsh 3.220.
tsh is a command shell. If you’re familiar with using shells such as any Unix shell, OS/X Terminal or even DOS, you can probably skip this paragraph. A command shell is a no-frills way of interacting with a computer. In a large window, the computer displays a prompt, inviting you to type in a command that the computer understands. When you do so and then press the “return” key (analogous to hitting your clock in Scrabble), the computer takes some action based on what you’ve entered, then prompts you for your next command. Sometimes your command is modal, causing the computer to prompt for and expect a different set of commands until the mode is complete.
Pay attention to the changing prompts, which indicate what information tsh needs. Don’t forget to press the “return” key to confirm each command.
If you make a mistake and want to correct a previous command,
or if you just want to repeat it, you may (depending on your system
configuration) be able to scroll back by using the arrow keys
on your keyboard. If pressing the arrow keys instead adds garbage to
your screen, you can’t, but might consider installing the appropriate
Term::ReadLine
module that got left out of your Perl
distribution.
The most important commands to remember are
“quit
”,
“help
”
and
“huh
”.
The
“quit
”
command makes tsh stop running.
If you’re not sure how to use a command, then try typing
“help the-name-of-the-command
”.
Here’s an example, showing what one version of tsh
shows when you enter “help help
”:
Usage: help topic Use this command to view built-in documentation. For fuller details, please consult the HTML reference manual. Enter “help index” to see a list of available commands, and “help” followed by a command name to find out more about that command.
The first line tells you that when you use the
“help
”
command you are expected to enter a topic after the word
“help” so that tsh will know what you are
asking for help about.
Most commands require some supplementary information (called arguments)
such as a division name, round number or player number.
The DOCumentation command opens a web browser
to this reference documentation. If you enter
“doc
”, a window should appear displaying
this manual’s introductory page.
If you’re not sure what a message means, and it has a code in
[square brackets] after it, enter
“huh the-message-code
”.
Again, messages are documented in this way, and soon all of them will be.
If you enter
“huh
”
on its own, the last message you saw will be explained.
To take a mostly random example, if you saw the message
“If you are sure you want to pair Round 12 based on Round 10,
please specify config session_breaks. [eacpnsb]
”
you might want to know more and enter
“huh eacpnsb
”.
You would then see the message:
[eacpnsb] It looks like you are relying on the default Chew pairing system, but the program is not sure whether you wanted to compute pairings for the upcoming round based on the first or second preceding round. You can resolve the ambiguity by setting a value for the configuration variable 'session_breaks' in your configuration file.
This tries to explain the original, brief message. If neither the detailed explanation nor the related documentation is clear to you, please ask John to provide further clarification.
All currently available tsh commands are listed below in tables for reference, grouped by function. Most users will not use most of these commands. Each command has a name which verbosely describes its purpose, but which can be abbreviated to the portion shown in capital letters as shown in its example. Most commands must be followed (on the same line, before pressing “return”) by one or more arguments. These arguments are represented in examples by names, which must be replaced by actual values. If you don’t enter correct arguments, tsh will tell you what the correct ones should be, and where it stopped understanding what you were typing. Within modal commands, the syntax of what you are supposed to type varies, but is usually shown in the prompt.
To take one case, the example for the “RoundStandings
”
command, which displays standings in a division as of a specified
round, reads rs r d
.
This means that “RoundStandings
” can be abbreviated to its
capitalised letters “rs
”, and that it must be followed by
a round number and a division name.
You would enter “rs 5 b
” and press the “return”
key to ask for Division B standings as of Round 5.
If you have only one division in your tournament, you may omit
division names as arguments to commands.
In the preceding example, you would just enter “rs 5
”.
If you can’t remember a player number,
you may enter enough of the player’s
last and/or first names to unambiguously identify them, joined by a comma.
For example, if “Chew, John
” is the only player
who has “HEW
” in their last name, then you can see his
scorecard by typing
“sc hew,
”.
The comma is optional if you include at least two letters from one of the
player’s names.
As of the current release, this is not consistently implemented in
modal commands such as the
“Addscore
” command,
where the comma is not optional.
The following commands are used for entering tournament results, as well as checking and correcting them:
Command | Example | Description |
---|---|---|
Addscore | a r d | Begin entering new game scores for round r , division d . This command is modal, and keeps prompting for scores until you press “return” on a line without scores. |
CheckRoundScores | crs r d | List all entered scores for round r , division d , to facilitate checking of data entry. |
DELETEscore | delete p1 s1 p2 s2 r d | Delete the previously entered scores s1 for player p1 and s2 for player p2 in round r division d . This syntax is intentionally verbose to discourage the use of this command. |
EditScore | es d p r | Begin editing previously entered game scores, starting with player p in round r , division d . This command is modal and fully documented in the data entry section. |
MISSING | missing r div | List all players in division div whose round r scores have not yet been entered. If div is omitted, all divisions are included. |
showScoreCard | sc d p | Show the correct scorecard for player p in division d , for checking. |
The following commands generate reports
based on tournament results.
You can use the
“Browse
” command to
open your web browser to an index page showing what reports you
have generated so far.
The
“BrowseLast
” command
opens your web browser to the most recent report that you requested,
so that you can easily print it.
Command | Example | Description |
---|---|---|
ABSPgrid | absp d | Shows a results grid suitable for submission for ABSP ratings. |
AUPAIR | aupair d | Creates a .TOU file named for the division, containing ratings input information in AUPAIR.EXE format. |
AVErages | ave div | List average scores for all players in a division. |
HighLoss | hl n div | List top n high losing scores in a division. |
HighWin | hw n div | List top n high winning scores in a division. |
LowLoss | ll n div | List bottom n low losing scores in a division. |
LowWin | lw n div | List bottom n low winning scores in a division. |
LUCKYstiff | stiff n div | List players according to the total of their n closest wins, the opposite of a TUFFluck prize. |
RATings | rat d | Show current division standings (with ratings estimates) for division d . See the “config rating_system ” option. |
ResultsByRound | rbr r1-r2 d | Rank players in division d based only on rounds r1 through r2 , typically to compute “best results, day n” prizes. |
ROTO | roto r | List rotisserie standings as of round r. |
RoundRATings | rrat r d | Show standings with ratings estimates for division d as of round r . |
RoundStandings | rs r d | Show standings for division d as of round r . |
ShowDivisionScoreCards | sdsc d | Generate in HTML form the scorecards for every player in division d , for printing and distribution at the beginning of the tournament. |
ShowManyPairings | smp r1-r2 d | Show pairings for rounds r1-r2 , division d . |
ShowPairings | sp r d | Show pairings for round r , division d . |
STandings | st d | Show current standings for division d . |
showWallChart | wc d | Show correct wall chart for division d , to check against the physical chart. |
SPITroast | spit r d | List UK rotisserie standings for division d as of round r. |
STATisticS | stats | Report on summary statistics for a tournament. |
TeamStandings | ts d | Show current team standings for division d . |
TOTalScore | tots div | List players ranked according to the total number of points each has scored. |
TUFFluck | tuff n div | List players according to the total of their n closest losses, for the NSA’s “Tuff Luck” prize. |
UPSETs | upset d | Show ratings upsets for division d . |
The following commands are used mainly for manually pairing rounds. You will need to know about them if you are configuring tsh before a tournament, or if you encounter an unexpected pairing situation and want to override automatic pairings. See the section on pairing theory for more detailed information about pairing systems.
Command | Example | Description |
---|---|---|
CAMbridgePair | camp d | Set up seven-round pairings as used in Cambridge ON for division d . |
ChewPair | cp sr d | Set up Chew Pairings in division d based on round sr standings. |
FactorPair | fp rd rpt sr d | Pair players permitting rpt repeats based on sr standings in division d, optimally matching players whose ranks differ by rd. |
InitFontes | if nr d | Set up fixed pairings for nr rounds (typically 3) in division d to give later Fontes pairings a place to start. Players are randomly chosen from quartiles and paired in round-robin quads. |
KOTH | koth rpt sr d | Add king-of-the-hill pairings allowing rpt repeats (0 for none, 1 for simple repeats, 2 for threepeats), based on round sr standings in division d . |
NAST | nast d | Add 4 or 5 rounds of fixed NAST pairings. |
NewSwiss | ns rpt sr d | Add a round of Swiss pairings. See KOTH above for descriptions of arguments. |
PAIR | pair p1 p2 r d | Manually pair players p1 and p2 in round r , division d . Use “0 ” as the player number of the opponent of a player with no opponent. |
Pair1324 | p1324 rpt sr d | Pair 1–3, 2–4, 5–7, 6–8, and so on, i.e., factored pairings with factor two. See KOTH above for descriptions of arguments. |
PairMany | pm r d | Begin manually pairing a large number of players in round r , division d . This command is modal. |
RandomPair | rp rpt sr d | Add a round of random pairings to a division. |
RoundRobin | rr n d | Add a full round robin to a division. If n is specified, it is the number of times each player should play each opponent consecutively; n defaults to the value 1. |
UnPairRound | upr r d | Delete all round r pairings from division d . Only the last round’s pairings may be deleted, and only if no scores have been entered. Use DELETEscore to delete scores, or edit the “.t” files directly. |
The following pairing commands are deprecated, but are listed in case
there is anyone who is still using them.
All of these commands have been replaced by NewSwiss
,
which produces much better quality Swiss pairings.
Command | Example | Description |
---|---|---|
BYE | bye p s r d | Deprecated: use PAIR and Addscore instead. |
PrePreSwiss | ppsw rpt p1 p2 d | Deprecated: use NewSwiss instead. |
PRESWiss | ppsw rpt p1 p2 d | Deprecated: use NewSwiss instead. |
SWiss | sw rpt sr d | Deprecated: use NewSwiss instead. |
And here all the commands which don’t fit into one of the above categories:
Command | Example | Description |
---|---|---|
Browse | b | Opens your web browser to the tournament report index. |
BrowseLast | bl | Opens your web browser to the last report you generated. |
DEBUG | debug code level | Turns debugging for sections labelled with code on if level is 1 or off if 0. Examine the tsh source code to find applicable codes. |
DRYrun | dry r d | Simulates an entire tournament for a division, using random data and whatever pairings you have configured. If you specify a round number, the simulation begins after that round, and you must have exactly that many rounds completed in your data files. If you omit the round number or give it as 0, the simulation begins at the start of the tournament. |
EVAL | eval code | Evaluate arbitary perl code. Use only if you know what you’re doing. |
HELP | help topic | Displays builtin documentation. topic is typically a command name. |
HUH | huh code | Give a detailed explanation of a diagnostic message that included a [code]. |
LOOK | l word | Look up word in dictionary. SOWPODS 2003 and TWL 2006 lexicon files available as a separate download. |
Quit | q | Quit tsh. |
RANDomscores | rand d... | Give each player in division d a random score, to help simulate a tournament’s pairing system. Entering more than one division acts on each division, entering a division name more than once adds more than one round’s worth of random data. |
RESETEVERYTHING | reseteverything | Delete all pairings, scores, start information and board assignments from tournament data files, and delete all journal and print files. Use with extreme caution. |
SUBMIT | submit | Submit ratings data to the NSA web site. |
TRUNCATEROUNDS | truncaterounds r d | Discards all data in a division after the given round (if 0, discard all data). Use with caution. |
There may also be external (plug-in) commands installed in your particular copy of tsh. These will be in a directory called ‘bin’, and listed in a configuration file there called ‘tshxcfg.txt’. They have been tested with OS/X (and should therefore work with most other flavours of Unix) and Windows XP, but may not work with more primitive operating systems. If not, you may still be able to use externals by running them separately from the command line. The following externals are part of the default distribution.
Command | Example | Description |
---|---|---|
high-loss-round | high-loss-round div | List highest losing score in each round in a division. |
high-win-round | high-win-round div | List highest winning score in each round in a division. |
maketm | maketm div | Make a TourneyMan data file for a division. |
nssc | nssc div | List School Championship prizes for a division. |
show12 | show12 div | List firsts and seconds for all players in a division. |
update | update | Update tsh software using a web connection. |
update-dict | update-dict | Update the lexica (word lists) used by the LOOK command. |
update-pix | update-pix | Update the photo database used by the “ShowPairings ” command. |
There are also a number of standalone utilities found in the “util/” directory, which are currently provided on an as-is basis.
How to enter tournament results using tsh.
Updated Tue Dec 4 10:15:48 EST 2007 for tsh 3.220.
tsh supports two styles of data entry, controlled by the
“config entry
”
configuration option.
The default value of the option is
“'scores'
”,
meaning that tsh keeps track of the number of points that
each player has scored in each game.
The other possible value is
“'spread'
”,
meaning that tsh keeps track only of the difference between
the two players’ scores in each game.
If you have specified
“config realm = 'absp'
”,
then spread entry will be the default.
You should in general use whichever entry style is the default for your realm.
At the end of the round, have players or runners bring their scoreslips to you. Sort them by division, and then for each division do the following.
Scores Entry | Spread Entry |
---|---|
Enter the command (e.g.)
“
If the player has not recorded their player number, or has misrecorded
it, you can enter their name instead of their number.
To do so, enter as much as is necessary of their last and first names
to disambiguate them from anyone else in the division, joined by a
comma, and with no spaces.
For example, you might enter “ |
Enter the command (e.g.)
“
If the player has not recorded their player number, or has misrecorded
it, you can enter their name instead of their number.
To do so, enter as much as is necessary of their last and first names
to disambiguate them from anyone else in the division, joined by a
comma, and with no spaces.
For example, you might enter “ |
If you want to enter a bye, just enter one player number and one score
(at NSA tournaments usually 50, or -50 for a forfeit).
If you want to switch to entering results for a different division,
enter the name of the division by itself.
If you want to correct a mistake in the scores that you just entered,
enter “es
” (see below).
If you want to see which results are still missing, enter
“missing
” or just “m
”.
Whenever you want to save what you’ve entered, press the return
key without entering any scores to return to the
“tsh>
” prompt.
You will also be returned to the
“tsh>
” prompt
if you enter something that tsh does not understand.
If you have tsh set to
track but not
assign
who went first or second in
each game, you must enter game scores in player order, with the number
and score of the player who went first appearing first on the line.
If tsh knows who was supposed to go first
(because that player had had fewer firsts than his/her opponent),
then it will complain that the players determined who went
first incorrectly.
If it doesn’t know, it will assume that you have entered them correctly and
update its information about who went first.
You can use the
“EditScore
” command to edit
whom tsh thinks went first or should go first.
When you’re close to having all the scores in for a round, entering
“missing 6 b
” (e.g.) will list all the results you’re still missing
for round 6 in division B. Omitting the “b
”
will list missing players in all divisions.
You can then ask a runner or word judge to politely
ask the players to pause their post mortem long enough to fill out
their paperwork.
As noted above, you can also just
enter “m
” in AddScore
mode.
If you make a mistake entering the score
for division B player 4
in round 3, enter “es b 4
3
”
at the
“tsh>
” prompt. You’ll get
a mockup of the player’s scorecard as it currently reads,
a sub-prompt that gives you that player’s score that round and their
opponent’s score that round, and you can reenter both (separated
by a space, or just one score if a bye),
choose a different division, round or player if you made
more than one mistake,
or enter “first
” or “second
” if you have
tsh set to track firsts and seconds but have misentered one player’s
information.
You can also use the
“EditScore
” command to make corrections to player
pretournament ratings.
If you have not entered any scores yet, you may ask to edit the scores for
the fictitious “Round 0” in order to change ratings.
If you catch your mistake while you’re still in “Addscore
”
mode, you can just enter “es
” (without any additional arguments)
at the “Addscore
”
prompt.
You’ll go temporarily into “EditScore
” mode, looking at the
data that you just entered.
When you leave “EditScore
” mode, you will return to
“Addscore
” mode.
Similarly, you can use the
“LOOK
” command within
“Addscore
” mode
to adjudicate challenges.
You may wish to check what you have entered against player scorecards
or against the tournament wall charts.
See the section on generating reports
and in particular the
“CheckRoundScores
” command
for information on how to do this.
If you have a serious problem, you may need to edit the tournament data files directly. Pay particular attention to the information in the preceding link about how to find copies of older, journalled versions of data files. For example, if you find after entering half of the results for a round that the other half of the players used a different round’s pairings to find their opponents, you will have some careful typing to do to fix the files. (Not that this has ever happened to the author, though he has lain awake at night worrying about similar scenarios.)
As soon as you have finished entering and checking results for a round, you should prepare and print all necessary reports for the next round.
How to list standings, pairings and more using tsh.
Updated Wed Dec 5 09:28:45 EST 2007 for tsh 3.222.
After you have entered scores for your tournament, you will likely want to produce and print reports such as standings and pairings tables using tsh. Each type of report is generated using its own command, and most report-generating commands display some information on your screen while saving it to an HTML file which you may print.
To print the most recent report that you generated, enter the “BrowseLast” command to open the report in a new browser window, then use your browser’s print command. To print older reports, and to see which ones are available, enter the “Browse” command to open a report index in a new browser window.
By default, HTML files are created in the “html” subdirectory
of your event directory.
If your computer runs its own locally accessible web server
(most computers can be configured to do so), then you may wish to
create the HTML files directly in the server directory using
“config html_directory
” so that your players can check reports on their laptops
or at browser kiosks that you have set up at your tournament.
If you would like to have the HTML files directly in the event directory
as well as in a subdirectory, you may use the
“config html_in_event_directory
” configuration option (this was default behaviour prior to version 3.170).
The formatting of the HTML file is controlled by a CSS stylesheet called “tsh.css” If you want to copy your report files to a remote web server, you must include a copy of this file in the same directory as your report files, or they will not be displayed correctly. tsh includes master versions of the stylesheet for various realms, and if there is no stylesheet in your HTML directory, it installs a copy of the appropriate one. Once it has done so, you may make your own local changes to it if you do not care for the default style, but if you think your changes might be of general use, please send them in for inclusion in the tsh distribution.
For the sake of backward compatibility and in case tsh
is run on a computer without a web browser, reports are also saved
in text format.
If you do not want text files to clutter your event directory, use the
“config no_text_files
”
configuration option.
Before each round begins, you need to print up pairings, showing who is playing whom where. If you are using Fontes Swiss pairings, these pairings will typically be available sometime in the middle of the preceding round, as soon as you have finished entering and checking the second preceding round’s results. You should post them as quickly as possible, so that anyone who finishes their game early will know right away who their next opponent is.
The pairings for a given division and round may have already been computed (and will be displayed right away), may need to be computed (and will be displayed after a brief delay), or may not yet be computable (and you’ll see an error message if you ask for them, instructing you to enter more scores before asking for the pairings).
You show pairings using the
“ShowPairings round division
”
command.
To list pairings (e.g.) for round 5, division C, enter the command
“sp 5 c
”. (If you have only one division, you may
omit it, so you’d enter
“sp 5
”.)
As noted at the beginning of this section,
this will display on your screen who is playing whom where,
create two printable HTML files called
“C-alpha-pairings-005.html”
(in alphabetical order of player name)
and
“C-pairings-005.html”
(by player rank, unless you have specified
“config no_ranked_pairings
”),
and possibly one text file called “C-pairings.doc”.
If you specify
“config player_photos = 1
”
in your configuration file,
tsh will display photos of each opponent in the alpha pairings file.
To fetch a copy of the photo library, use the
“update-pix
” command.
(This may take a while on a slow Internet connection.)
At present, the photos used come from the National Scrabble Association’s player database.
Directors from outside the NSA’s jurisdiction who would like to provide access to
a separate photo library are invited to contact John Chew.
You may also use the
“ShowManyPairings r1-r2 division
”
command to produce pairings reports for multiple rounds,
similar to those used at the U.S. Open.
This is particularly appropriate when you are pairing many rounds
at a time, as for example in a round-robin tournament.
The “RATings division
” command shows
current standings with estimates
of new (Elo/NSA, Elo/NSA-LCT or ABSP depending on the
value of “config rating_system
”) player ratings.
“rat a
” will tell you what
Division A ratings would be if the tournament ended right now.
If the previous round’s results are available when this command
is used, an extra column will show who went first against whom and
the game score unless
“config no_show_last = 1
” was specified
If the next round pairings are available when this command is used,
an extra column will show each player’s next opponent.
You should use this command when all the scores are in for a round,
and print its report.
Files are created as with pairings.
You can show standings from earlier rounds using the
“RoundRATings round division
” command.
Entering “rrat 3 c
” will give you the
standings as of round 3 for division C.
The now deprecated
“STandings division
” command
does what the
“RATings
” command
does, but without the ratings estimates,
and is kept largely for use at nonrated events.
Entering
“st c
” will give you the
current standings for Division C.
Files are created as with pairings.
You can show standings from earlier rounds using the
“RoundStandings round division
” command.
Entering “rs 4 d
” will give you the
standings as of round 4 for division D.
If you used the “classes
”
configuration command, then the class to which each player belongs will
be shown in standings and ratings reports.
If you are using the
“team
” extension field
in your “.t” file, you can use the
“TeamStandings division
” command to list team standings.
tsh creates ratings data files in three different formats, depending on which rating system you will be submitting your data to.
There are two ways to submit ratings data to the NSA.
The much easier way is to connect to the Internet, then enter the
“SUBMIT
” command.
In order to use this command, you must correctly set the
configuration parameters
“director_name
”,
“event_date
”,
“event_name
”,
“rating_system
”
and
“ratings_note
”.
as in the following example:
# The first two lines identify your tournament for Joe Edley config event_name = "Dallas, TX" config event_date = "March 7-9, 2008" # The next line is in case there's anything else you need to tell him config ratings_note = "Hi, Joe!" # The next line is to tell him who to contact if there is a problem config director_name = "Mary Rhoades" # The last line is unnecessary if you have not overridden the default realm config rating_system = 'nsa'
If you cannot directly connect your tsh machine
to the Internet, you can use the following older procedure.
The NSA web site accepts tsh’s own
“.t” files for ratings data submission,
and Joe Edley prefers that one data file be submitted per tournament
rather than one data file per division.
There is a stopgap script that can be used at the shell prompt (in Unix)
to create a combined submission file for a multidivisional tournament:
“util/concat-t folder/*.t
”, which
creates a file called
“all.t” from all
“.t” files in the folder named
“folder”.
The
“ABSPgrid
”
command generates a ratings grid for submission to the ABSP. The
grid is a text file which is displayed on the screen and saved to
a file.
The
“AUPAIR
”
command generates a “.TOU” file in the format used
by the “AUPAIR.EXE” program.
The file is not displayed on the screen.
“AUPAIR.EXE” is used by Bob Jackman and his International
SOWPODS Rating System, and by many countries in southeast Asia.
The experimental
“PRiZes
” command
generates a table listing all the prizes that you will be awarding,
with the current leading candidate for each.
It’s designated experimental for two reasons. First, it only supports
so far those prizes that I have awarded at my own tournaments since
I created the command, but I’m willing to add any other prizes on
request. Second, the configuration command needed to specify the
prizes is currently really awkward, and I’m loath to inflict it on
users before the graphical user interface is fully developed.
If you want to see an example of the output, make sure you have a
division called "A" and enter the command “prz
”.
If you’d like to use it, let me know and I’ll send you the appropriate
configuration information.
You can show standings based on a range of rounds using the
“ResultsByRound firstround-lastround division
” command.
Entering “rbr 1-7 b
” will give you the
standings based on the first seven rounds for Division B.
Files are created as with pairings.
This command is typically used to compute "best result day n" prizes.
The
“HighWin count division
”,
“HighLoss count division
”,
“LowWin count division
”
and
“LowLoss count division
”
commands list players who have excelled in each of those categories.
For example,
“hw 20 a
”
lists the top twenty game scores in division A, the rounds in which
they took place, the losing score and the names of the players involved.
The
“AVErages division
”
commands lists average scores for all players in the given division.
For example,
“ave d
”
lists average scores for all players in division D.
The
“TOTalScore division
”
commands lists total scores for all players in the given division.
For example,
“ave d
”
lists average scores for all players in division D.
The
“STATisticS
”
commands lists summary statistics for each division in the tournament.
For example,
“stats
”
lists stats like the minimum, mean, median and maximum rating in each
division, the percentage of time the higher-rated or starting player
won, etc.
Suggestions for additional statistics are very welcome.
There is a command for computing the NSA’s
“Tuff Luck” prize based on the lowest total of six
losing spreads:
“tuff 6 a
”
lists the
“Tuff Luck” standings for Division A.
The opposite of this command is the
“luckySTIFF
” command, which lists players
based on the sum of their closest winning spreads:
“stiff 3 b
”
lists those players in Division B who have won three games by the
smallest combined spread.
If you run a U.S.-style rotisserie pool, you can use the
rotofile configuration option to specify
the location of a text file giving the structure of that pool,
then use the
“ROTO
” command to display current standings.
Each team is represented by a list of names, followed by a blank line.
The team owner’s name is preceded by the word
“owner
”
and a space,
each team member’s name is preceded by the word
“player
”
and a space.
If you run a U.K.-style rotisserie pool, you can use the
spitfile configuration option to specify
the location of a text file giving the structure of that pool,
then use the
“SPITroast
” command to display current standings.
Each line in the text file consists of all the player numbers in the
division in the order in which a team owner expects them to finish,
a semicolon, the team owner’s name, a semicolon, and the team name.
Team names must be unique.
The
“UPSETs
” command lists the top twenty ratings
upsets: games in which a significant ratings underdog managed to win.
tsh includes commands for producing electronic versions of player scorecards and tournament wall charts. These were originally intended to allow you to check these documents and correct your data. As of 2005, the only official version of NSA tournament results is deemed to be the data that you entered from the result slips, so these commands should be used only to point out and explain errors in the printed documents, or to replace a lost scorecard at a player’s request.
You may wish to recheck
your data entry in the middle of each round. To facilitate your
doing so, the
“CheckRoundScores round division
”
will list what has been entered for each game.
Entering
“crs 3 h
”
will list scores for Round 3 in Division H.
A file called
“H-scores-003.html”
will be created, which can be printed and given to a checker to work
offline with the result slips.
You can show a scorecard using the
“ShowscoreCard division player
”
command.
Entering
“sc j 5
”
will give you the scorecard
for player J5.
A file called
“J-scorecard.html”
will be created, which can be printed and given to a player who has
lost their original scorecard.
Scorecards are also displayed whenever you use the
“EditScores
”
command.
When a score has been added to a scorecard within the last two hours,
the age of that modification in minutes is shown at the top of the card.
This is to help determine whether an absent player may be away taking
a break from a game that ran unusually late.
You can generate an HTML file containing all
scorecards for a division with the
“ShowDivisionScoreCards division
”
command.
Entering
“sdsc a
”
will create a file called
“A-scorecard.html”
containing the scorecards for all players, which can be printed
and given to players at the beginning of the tournament.
This is particularly useful when most or all of the pairings
are predetermined, as for example in a round robin schedule.
Depending on the length of your tournament, you may need to edit
the CSS stylesheet to make the scorecards
fit nicely on each page.
You can show a wallchart using the
“showWallChart division
” command.
Entering
“wc g
”
will give you the wall chart for division G.
Typing a round number before the division name will start the wall
chart at that round, in case your wall chart would otherwise be too
wide to print nicely.
Files are created as with pairings; the HTML version includes much
more information than can fit into the text or screen versions.
How to obtain and install what you need to run tsh.
Updated Sat Oct 6 09:40:12 EDT 2007 for tsh 3.200.
You need a copy of Perl, a text editor to edit configuration files, master sheets from which to print score slips and other forms, and the ZIP archive of the complete tsh distribution.
First, you should make sure that you have a recent version of the freely available Perl interpreter installed on your machine. Perl runs under several operating systems, including but not limited to Unix, MacOS, VMS and Windows. If you don’t have a copy installed on your machine, you can download one from www.perl.com. Pre-OS/X Macintosh users can download a pre-compiled application from www.macperl.com (but be warned that the current version is not guaranteed to be Classic MacOS compatible — contact me for details); OS/X and many other versions of Unix come with Perl. Windows users can find a good Perl interpreter at ActiveState (look for ActivePerl, go to the free download section and download and run the Windows MSI installer).
You will also need a text editor. You will use it to set up config.tsh, your settings file. You may also use it to edit tournament (".t") files if you find you need to do something in the heat of a tournament that I didn’t expect you to need. If you’re a Unix user, you know which editor is the One True Editor and don’t need to be told. (It’s vim, of course.) If you’re a Classic MacOS user, SimpleText will do in a pinch, but BBEdit is much better. Mac OS/X users can use vim, vi, pico, or TextEdit, but they should not use a Classic mode editor like BBEdit unless they are careful to specify Unix line breaks. Windows users can use Notepad or Wordpad.
Score slips should be prepared to work best with tsh’s workflow. If you are entering scores and not just spread, the slips should contain the following information in the following layout:
1st player (start): 1ST-NUMBER 1ST-SCORE 1ST-NAME 1ST-INITIALS 2nd player (reply): 2ND-NUMBER 2ND-SCORE 2ND-NAME 2ND-INITIALS
The fields may be rearranged to some extent to suit layout constraints, but the important thing is that the numeric information that needs to be entered into tsh appears in the “1st-player-number, 1st-score, 2nd-player-number, 2nd-score” order in which it will be needed.
If you have configured spread-based entry, your slip should look something like this:
1st player (start): 1ST-NUMBER 1ST-NAME 1ST-INITIALS 2nd player (reply): 2ND-NUMBER 2ND-NAME 2ND-INITIALS SPREAD
If you use a self-posting wall chart, it should be set up so that the player names read down the left side and the round numbers across the top.
I have master sheets for stickers and score slips available for download in PDF format.
All of the basic files you need to use tsh, except for configuration files specific to your event, can be downloaded in one zip archive. When you have downloaded and expanded the archive, you then need to set up those configuration files.
tsh is a work in progress: it’s updated several times per year to include helpful suggestions from its users. Older versions are available for download from the tsh web site but are not supported. You should be sure to upgrade to the current version when you get ready to run a tournament.
If you have a copy of tsh 2.975 or later and a modern
operating system (such as OS/X or some other kind of Unix, or even
Windows XP), you can update your copy of tsh by simply
entering the
“update
”
command at the
“tsh>” prompt.
Your machine must be connected to the Internet when you enter the
command for this to work,
and any personal firewall must
permit Perl to connect to external web sites at port 80.
If you lose your connection during an update, just enter
“update
” again when your connection is
restored.
The
“update
” command gives you the
newest possible version of each file, which may be newer than the
currently posted official ZIP archive.
If you can’t run tsh to use the
“update
” command,
try running the
“get-tsh.pl” script in your
tsh folder.
If you have an older version of tsh, download the current ZIP archive, and don’t forget to copy over your event files to the newly created folder.
The main distribution described above does not include two optional extras, which are kept separate because they are large and not every director may find them necessary.
The “LOOK
”
command can be used for word adjudication.
To do so, you must first install the dictionary files using the
The “UPDATE-DICT
” command.
At least one command will display photos of players when they are
available.
To install the photo database, use
the “UPDATE-PIX
” command.
How to set up tsh for your particular tournament.
Updated Fri Feb 22 21:55:32 EST 2008 for tsh 3.220.
After you’ve installed tsh, you need to set up a subfolder (directory) of your tsh folder containing a configuration file (“config.tsh”, formerly known as “tsh.config”) describing your tournament, and one (“.t”) data file for each division. You can run as many tournaments as you like with one installation of tsh, but each one should have its own folder.
You need to have a text file called “config.tsh” in your tournament folder/directory. You can ask me (John Chew, jjchew@math.utoronto.ca) to create one for you if you give me a few weeks’ notice. There are also a few sample tournaments that come with the tsh distribution, and you can try modifying one of their configuration files to make your own.
Your configuration file consists of a sequence of lines. The order of the lines sometimes matters: you may run into trouble if you try to specify the properties of a division before you declare its existence. The first word on a line determines its type, of which there are currently six:
Here is a very short sample “config.tsh” file.
# This is a comment because it starts with a '#'. # The next line that you will store the data for Division a in file a.t. division a a.t # The next line says that for prize purposes the division is subdivided # into three classes classes a 3 # The next line says that you want to keep track of 1sts/2nds (starts/replies) config track_firsts = 1 # The next line says that Division A will play a simple round robin autopair a 0 1 rr a # The next line demonstrates the 'perl' command perl print "Hello, world\n";
The following subsections discuss each type of line in detail.
Comments begin with a ‘#
’.
You may add as many comments as you like to your configuration file, and it’s a good idea to be verbose so that the next person who runs your tournament for you will know what you were thinking.
Your configuration file must contain at least one division declaration,
beginning with the word ‘division
’,
then followed by a space, a case-insensitive division name,
another space, and a filename.
Division declarations must come before any other reference to a division
in a configuration line.
Filenames may or may not be case-sensitive depending on your operating system.
You may have as many divisions as you like, but each one has to have its
own division name and file name.
All divisions should play the same number of rounds at roughly the
same schedule; if not, you should set up separate directories and
configuration files for differently scheduled divisions, and run
separate copies of tsh.
If you have only one division in your tournament, it does not matter what you name it, and you won’t ever have to type its name. If you do type its name, some older commands may give you cryptic error messages. If you have more than one division, you should keep your division names short as you will be typing them frequently.
Your configuration file may contain one or more class declarations,
beginning with the word ‘classes
’,
then followed by a space, a case-insensitive division name,
another space, and an integer greater than 1.
Classes are typically used to award
prizes to deserving lower-ranked players in a division.
If you specify how many classes a division has, then players will be assigned to equal-sized classes according to their pretournament ranking. Classes are named ‘A’, ‘B’, ‘C’... and are listed in the ratings and standings reports.
There are a number of configuration options that you can set using lines
beginning with the “config
” keyword.
Perl hackers should note that “config
whatever” results simply
in the evaluation of “$config::whatever
” others should ignore
this sentence.
Here are all currently available configuration options:
Option | Example | Description |
---|---|---|
allow_gaps | allow_gaps = 1 | If this option is specified, tsh will let you leave unassigned gaps in the pairing schedule. Don’t specify it unless you have a good reason to do so, such as running a Human vs Computer tournament where you have to schedule a large number of future byes. |
alpha_pair_page_break | alpha_pair_page_break = 15 | tsh will force a page break after this many rows (defaulting to 10) are shown in two-column alpha pairings. If you choose a value that is too small, then some rows may be split across pages and hard to read. |
assign_firsts | assign_firsts = 1 | Have tsh randomly determine who goes first when players would otherwise have to draw. |
autopair | Set using the autopair instruction. It’s not a good idea to mess with this directly. | |
backup_directory | backup_directory = './notold/' | Override the default “./old/” as a place to keep journalled “.t” files. Must end with a “/” or other locally appropriate path separator. |
board_stability | board_stability = 1 | If set to 1 , try to keep one of the two players in each game at the same board in the next round during sessions (if you do not specify “config session_breaks ” the entire tournament is treated as a single session). If not set, boards will be reassigned each round to place high-ranked players at low-numbered boards. |
bye_spread | bye_spread = 75 | Defaults to 50 unless “realm = 'absp' ”. Sets the number of points of spread awarded to a player who is assigned a bye. You should probably adjust the value of “realm ” rather than change this directly; contact John Chew if this is not possible. |
check_by_winner | check_by_winner = 1 | Instructs the “CheckRoundScores ” command to sort rows by winning player rather than starting player. |
colour | colour = 'no' | Enables use of ANSI colour escape sequences to highlight text in the tsh session. |
colour = 'yes' | ||
director_name | director_name = "John Chew" | Used to identify the tournament director, particularly when submitting ratings data. |
entry | entry = "spread" | Used to specify data entry mode. Default value is "scores", where you enter scores; the only other possible value is "spread", where you enter spread. |
event_date | event_date = "September 30, 2005" | Used to specify the event date, particularly when submitting ratings data. |
event_name | event_name = "Toronto 2005" | Used to identify the event, particularly when submitting ratings data. |
exagony | exagony = 1 | If used, prevents players from the same team from facing each other in KOTH and NewSwiss pairings. See also the “team ” extension field. |
external_path | external_path = ['./bin','../bin'] | Used to specify where external commands can be found. Default value is ['./bin']. |
flight_cap | flight_cap = 'TSH::PairingCommand::FlightCapNSC' | Lets you override the default algorithm for capping the number of players who can be considered in contention when using the Chew pairing algorithm. Talk to John Chew if you need to adjust this. The example given is suitable for a tournament which is used to select two finalists. This parameter is also used in estimating pairings flights when choosing an opponent for a Gibsonized player. |
force_koth | force_koth = 1 | When using default pairings, makes the last round be KOTH with unlimited repeats, rather than Chew pairings. |
gibson | gibson = 1 | Enable automatic detection of Gibson situations. When using default or Chew pairings, tsh always looks for possible Gibson situations. When using automatic pairings, tsh does or does not check depending on the value of this option. |
gibson_groups | gibson_groups{'A'} = [[1,2]] | Indicates final ranks that are to be considered equivalent when testing for Gibsonization. Works only with Chew pairings. If not specified, each final rank is considered to be of different value to a player. The example given should be used where the current event is a preliminary to qualify players for a two-player final match and it doesn’t matter whether a player finishes first or second. In the unlikely event that you wanted to have players ranked 3 through 6 compete in a separate final match, you could specify the value “[[1,2],[3,4,5,6]] ”. |
html_directory | html_directory = '/Library/WebServer/Documents/myevent/tsh/' | Override the default “./html/” as a place to keep round-by-round “.html” reports. Must end with a “/” or other locally appropriate path separator. The example given places reports on the local machine’s public web server under OS/X. |
html_in_event_directory | html_in_event_directory = 1 | Stores an extra copy of printable HTML reports directly in the event directory, where they may be easy to find, but may cause clutter. Note that player photos will not be correctly linked in event directory web pages unless you manually copy the photo directory into the event directory as well. |
html_top | html_top = '<p align=center><a href="event url"><img src="event logo"></a></p>' | If defined, appears between the body and h1 tags at the top of each HTML page. |
initial_exagony | initial_exagony = 1 | If used, prevents players from the same team from facing each other in first-round random pairings. See also the “team ” extension field. |
initial_random | initial_random = 1 | When using Chew pairings either explicitly or as the default pairing algorithm, specifies one initial round of random pairings, as required at the WSC. |
initial_schedule | initial_schedule = 3 | When using Chew pairings either explicitly or as the default pairing algorithm, it is often useful to start with a semirandomized fixed schedule generated by the InitFontes command. This parameter (which defaults to zero) specifies the number of rounds that that schedule should run. |
manual_pairings | manual_pairings = 1 | Use neither auto-pairings even if configured, nor Chew pairings in the absence of auto-pairings. Deprecated in favour of “pairing_system = 'manual' ”. |
max_name_length | max_name_length = 22 | Specify minimum width of name fields, may get automatically increased by the presence of longer names in a “.t” file. |
max_div_rounds | max_div_rounds{'A'} = 12 | Like “config max_rounds ” but applies only to one division. If you only specify the maximum number of rounds in some divisions, the largest value you give is assumed for the rest. |
max_rounds | max_rounds = 12 | Specify the last round in the tournament. Used in Gibson detection, and to check for illegal round numbers in commands. |
name_format | name_format = "%-22s" | Specify sprintf(3) formatting of player names. |
no_ranked_pairings | no_ranked_pairings = 1 | Do not show ranked pairings in “ShowPairings ”, only alphabetical ones. |
no_show_last | no_show_last = 1 | Do not show information about the last round’s results in “RoundRATings ” or “RATings ”. Use if you find the information too cluttered or hard to understand. |
no_text_files | no_text_files = 1 | Do not create text versions of reports. Useful if you only want HTML files, and don’t want your directories cluttered with text files. |
pairing_system | pairing_system = 'auto' | Explicitly declares that automatic pairings should be used; not necessary if au. |
pairing_system = 'chew' | Explicitly declares that Chew pairings should be used; the default value. | |
pairing_system = 'manual' | Explicitly declares that Manual pairings should be used; is equivalent to “manual_pairings = 1 ”. | |
pairing_system = 'nast' | Specifies the use of NAST pairings. | |
pair_page_break | pair_page_break = 15 | If this option is specified, tsh will force a page break after this many rows are shown in rank-ordered (not alpha) pairings. If this option is not used, player names may be split across page breaks. |
player_number_format | player_number_format = "#%s" | Specify sprintf(3) formatting of player numbers. By default, a "#' is prepended to the number for clarity if there is only one division. |
player_photos | player_photos = 1 | If specified, display photos of opponents in alpha pairings reports. |
port | port = 7777 | If this is set to a nonzero value, tsh will use its web interface instead of its command-line interface. Still in early development and incomplete but feel free to see what is there so far. |
prize_bands | prize_bands{'A'} = [2,3,4,5] | Specifies which final ranks are to be considered equivalent for pairings purposes: the numbers given mark the end of each band (range) of equivalent prizes (ranks). Only used in Chew pairings, which try to pair players who are in contention for one prize band with each other. In the example, the top prize band goes from 1st place to 2nd place (presumably because the top two finalists qualify for a playoff); each of 3rd, 4th and 5th place is its own prize band (presumably awarding players cash prizes); and everything from 6th place on is the last prize band (presumably winning nothing). If this option is omitted when required, a warning is displayed and a default value is assigned which assumes prizes are assigned to the top quarter of the division. Note that Gibsonization won’t work with a value of “[1] ”, because the “highest ranked player out of contention for prize money” that the Gibsonized player ought to play ends up being the second-ranked player. |
prizes | currently too complex to document | Specifies the structure of prizes for the “PRiZes ” command. |
rating_system | rating_system = 'absp' | If set to 'absp' , computes ABSP ratings instead of NSA ratings in the “RATings ” command. If set to 'nsa lct' enables local club tournament ratings multipliers. Also affects the way pretournament ratings are used to influence the scores generated by the “RANDomscores ” command. Default is 'nsa', indicating NSA ORT ratings, but is typically overridden by “realm ”. Must be set when using the “SUBMIT ” command. |
ratings_note | ratings_note = "Please rate this after the early bird." | Specifies a note to include when submitting ratings data. |
realm | realm = 'absp' | Specifies default values for several parameters:
“alpha_pair_page_break = 10000 ”,
“bye_spread = 75 ”,
“entry = 'spread' ”,
“rating_system = 'absp' ”,
“surname_last = 1 ”,
“table_method = 'consecutive' ”,
and also uses the ABSP-specific version of the ‘tsh.css’ CSS style sheet and specifies the use of ABSP-specific terminology.
|
realm = 'nsa' | Specifies default values for several parameters:
“bye_spread = 50 ”,
“entry = 'scores' ”,
“rating_system = 'nsa' ”,
and also uses the NSA-specific version of the ‘tsh.css’ CSS style sheet and specifies the use of NSA-specific terminology.
This is the default value of this option. | |
realm = 'sgp' | Specifies default values for several parameters:
“alpha_pair_page_break = 100005 ”,
“bye_spread = 50 ”,
“entry = 'scores' ”,
“rating_system = 'nsa' ”,
“surname_last = 1 ”,
and also uses the Singapore-specific version of the ‘tsh.css’ CSS style sheet and specifies the use of Singapore-specific terminology.
| |
reserved | reserved{'P'}[13] = 4 | Permanently assigns player P13 to board 4. Typically used when you have a player with special needs. |
rotofile | rotofile = 'roto.txt' | Specify the name of a rotisserie pool file to be used in producing U.S.-style rotisserie pool reports. |
save_interval | save_interval = 10 | Specifies how often results should be saved to disk in “Addscore ”. Defaults to every ten new entries. |
session_breaks | session_breaks = [3,6,8,11,12] | Specifies after which rounds there is enough time in the schedule to wait for all results to come in before computing pairings. Used when the “ChewPair ” is automatically invoked. |
show_divname | show_divname = 1 | Show division names in report headings even when you have only one division. Use this if you have to split a tournament into different tsh events because you have more than one computer for data entry, but you want to be able to tell which reports came from which division. |
show_teams | show_teams = 1 | Show team names with player names. |
sort_by_first_name | sort_by_first_name = 1 | Sort players by first name (when names are being presented in "given_names surnames" order). |
spitfile | spitfile{'A'} = 'spita.txt' | Specify the name of a rotisserie pool file to be used in producing U.K. rotisserie pool reports for a given division. |
split1 | split1 = 9 | Specifies after which round a long tournament should be split-rated when using Elo ratings. (This option is no longer needed, and is therefore deprecated.) |
surname_last | surname_last = 1 | If specified, raw names of the form ‘surnames, given names’ in ‘.t’ files are translated to ‘given names surnames’ whenever displayed. |
table_format | table_format = '%3s' | sprintf(3) description of how table numbers are formatted. |
table_method | table_method = 'consecutive' | If set to 'consecutive', assigns boards to table numbers consecutively across divisions. If left unset, or set to the default value of 'none', does not assign boards to tables automatically. |
table_title | table_title = "Room" | Specify what tables are called in titles. The default value is "Table". |
tables | tables{'A'} = [1,1,2,2,3,3,4,4,5,5] | List which board is at which table. Division name must be capitalized. If you don’t give information for enough boards, you’ll get cryptic error messages. You may use Perl expressions like 1..20 or map { $_, $_ } 1..20 to save typing. If you don't want to have board or table numbers at all, try tables{'A'} = [('')x1000] |
track_firsts | track_firsts = 1 | Make tsh care about who played first and second in each game. If this option is set and assign_firsts is not set, tsh will use the order in which scores are entered to determine who played first, and complain if the wrong player did. If this option is set and you use Chew pairings, the pairing algorithm will have a weak preference for pairing players due to go first with players due to go second. |
tsh has a number of pairings commands, each of which adds one or more rounds of who-plays-whom information to the player data (“.t”) files. Pairing information must be entered before scoring information: the score entry command will not accept scores for players whose opponents are not yet known to the program. You should be familiar with the contents of the section on pairing theory and have decided on one or more of the pairing systems described in that section for your tournament before reading further.
There are four ways of telling tsh what kind of pairings to use: default, automatic, NAST and manual pairings.
With default pairings the only thing you need to tell tsh is how many rounds your tournament is:
# The following config.tsh line says that this tournament has 12 rounds. config max_rounds = 12
After you enter the results for each round, ask tsh
for the next round’s pairings using the
“ShowPairings
” command
and it will compute
Chew pairings.
(If the number of rounds is large compared to the number of players,
one or more round robins will be scheduled first.)
The following
configuration options
can be set to control how
these
default pairings work.
See the detailed description of
configuration options
for their syntax.
Option | Effect | Usefulness |
---|---|---|
flight_cap | If set, overrides the cap on the size of the top flight. | Do not use, unless you are a pairings wizard. |
force_koth | If set, the last round will be KOTH even when default pairings are being used. | You might want to use this, if your (likely North American players) will rebel at the thought of a tournament that doesn’t end in a KOTH. |
initial_schedule | If set, specifies a number of initial rounds that will be paired in a fixed schedule. | It’s not a bad idea to set this if you have the number of players is much larger than the number of rounds, or if you want to give yourself some breathing space early in your tournament. |
max_rounds | Specifies the length of the tournament in rounds. | Required. |
pairing_system | Explicitly set to indicate which of 'auto', 'chew', 'manual' or 'nast' pairings you want. | Required when using NAST pairings, optional otherwise. |
prize_bands | Should be set to indicate which final ranks are equivalent. If you do not set it, you will be warned that you have not set it each time pairings are calculated. | Strongly advised. |
session_breaks | If set, pairings may be calculated based Fontes-style on the second preceding round’s scores during sessions. If not set, pairings will only be calculated once the immediately preceding round’s scores have all been entered. | Strongly advised. |
If you prefer to have more control over your tournament’s pairings, or have advertised the use of a specific system that is not the tsh default, you should use automatic pairings. This involves pre-entering all the pairings commands that you expect to use into the configuration file, where they will be automatically triggered when the time is right.
Each
auto-pairing configuration
line consists of the command word “autopair
”,
a division name, the number of the round whose results must all
be in before pairings can be calculated, the number of the round
whose pairings will be calculated, and then a tsh command that
generates the pairings.
For example, you can tell tsh that the first seven rounds of your two-division event is a round-robin, and the eighth round is a king-of-the-hill (KOTH):
# When Div. A has no scores and needs Rd. 1 pairings: RoundRobin A autopair a 0 1 rr a # When Div. B has no scores and needs Rd. 1 pairings: RoundRobin B autopair b 0 1 rr b # When Div. A has Rd. 7 scores and needs Rd. 8 pairings: # KOTH with one repeat allowed based on Rd. 7 standings, Division A autopair a 7 8 koth 1 7 a # When Div. B has Rd. 7 scores and needs Rd. 8 pairings: # KOTH with one repeat allowed based on Rd. 7 standings, Division B autopair b 7 8 koth 1 7 b
When you ask for the first round’s pairings tsh will compute the round-robin, then later on when you have entered scores for the first seven rounds you can ask tsh for the eight round’s pairings and it will compute the KOTH. If you ask for Round 8 pairings before all results are in for Round 7, tsh will remind you that it can’t compute them yet.
Here’s a slightly more complicated example, for a six-round
two-division tournament where the first three rounds are paired
using the
“InitFontes
” command,
the next two are paired Swiss based on Round 3 standings
but with no repeats, and
the last is a KOTH based on Round 5 standings with repeats permitted:
autopair a 0 1 if 3 a autopair a 3 4 ns 0 3 a autopair a 3 5 ns 0 3 a autopair a 5 6 koth 1 5 a autopair b 0 1 if 3 b autopair b 3 4 ns 0 3 b autopair b 3 5 ns 0 3 b autopair b 5 6 koth 1 5 b
As explained in the next section, you might still need to resort to manual pairings even when you have planned on using automatic pairings.
You should use NAST pairings if you are directing a satellite event of the North American Scrabble Tour, which has specific requirements for the pairings of such events. The exact system depends on the number of players in the tournament, and consists of either four rounds of fixed pairings and one round of Swiss pairings or five rounds of fixed pairings, followed by one round of KOTH pairings.
You should use manual pairings if you do not know in advance exactly how you will be pairing the tournament, such as when you haven’t decided when to start allowing repeats.
You might also find during your tournament that the automatic system you specified is impossible. For example, you might have asked for a round-robin followed by a KOTH with no repeats. You can quit tsh, edit the automatic pairing instructions and then try again, but if you’re under time pressure you’ll likely prefer to just enter the pairings commands directly and manually.
Experienced thrill-seekers may also add lines to the “config.tsh” file
which begin with the keyword
“perl
”. This is about as safe as using
the tsh shell command
“eval
”, and does the same thing: it evaluates
its argument as a string.
There is currently no good reason for using this feature.
A “.t” file contains all the information for a division, and must be in the same subdirectory as your “config.tsh” file. It’s a text file that can be edited with a text editor if need be, and is usually created in the first place using a text editor. You may have received “.t” files for your tournament with your tsh distribution, but you should be familiar with the content of this section in case of no-shows and walk-ins.
There is an experimental script for importing data from TourneyMan files. It’s called “parsetm”, is found in the “util/” directory and can be invoked from the command-line to turn one “.ltm” file at a time into a “.t” file. It has been thoroughly tested on the version of TourneyMan to be used at the 2005 US NSC.
A “.t” file should contain one line per player. The line should look something like this:
Chew, John 1850 400 450 350; 10 4 3; p12 1 2 2; board 1 1 3
In this example, a player named John Chew entered the tournament with a rating of 1850. In round 1, he played player #10 and scored 400 points. In round 2, he played player #4 and scored 450 points. In round 3, he played player #3 and scored 350 points. He went first in round 1 and second in rounds 2 and 3. He played at board #1 in rounds 1 and 2, and at board #3 in round 3. Anywhere where there is a space on the line, tsh will tolerate as many spaces as you like, but please do not use tabs. Of course, adding spaces within a player’s name will make many reports look odd.
Scores and opponent numbers may have the special value
“00
”,
indicating that the value
has not yet been assigned.
This should not be confused with the
“0
”
that indicates a bye.
Players must be listed in order of player number, beginning with player number 1. Note that this means that players must be numbered within each division starting at 1. Unless you feel strongly otherwise, you should number players beginning with the highest-rated. If you want to number players in two divisions in one numbering system without restarting from 1 at the top of the second division, you must call the two divisions one division for data entry purposes.
When you first set up a tournament file, it will probably contain only player names and ratings. So your file will look something like:
Chew, John 1850 Saint John, Sherrie 1300 Chew, Kristen 1200
Player names may include any characters other than semicolons, and must not end in a digit. If you really have to have a player name that ends in a digit (it has happened), put a comma after the final digit and the comma will be silently omitted in reports. Player names should be entered as shown above, with the surname (last name) first followed by a comma. If you do not do so, a few commands which need to know how to split names into given names (first names) and surnames will not function.
Not all files contain the same information for players. Some information only appears if some optional features are enabled. Each set of optional data is preceded by a semicolon and an identifying keyword. At present, the following extensions are in use:
Keyword | Data |
---|---|
board |
Lists at which board the player played in each round.
This is typically set by the “ShowPairings ”
command the first time pairings for the round are shown, and
not changed thereafter.
|
cume | Is present if the player’s cume must be set to a given value. It should be used with extreme caution, as it will override the regular calculation of cume in all rounds. This feature is not yet fully implemented. |
cumeadj | Is present if the player’s cume must be adjusted, typically to compensate for a misadjudication. It should be followed by one or two values, the first the amount of the adjustment, the second the round in which the adjustment should first be applied. This feature is not yet fully implemented. |
lifeg | If set, indicates the number of games that the player has played in his life, used for ratings computations. If not set, a value of 50 is assumed. |
off | Is present if the player is inactive for pairing purposes. It is followed by a single integer, indicating what spread ought to be awarded to them for each missed game. This feature is not yet fully implemented. |
p12 | Lists whether the player went first (1) or second (2) in each round. Rounds where the player went neither first nor second are marked 0, rounds where the player is paired but has to randomly determine whether or not s/he goes first are marked 3, rounds where tsh is not sure who will go first or even whether a random determination will be required are marked 4. |
team |
Names the player’s team, for use when
“config initial_exagony ”
or
“config exagony ”
are enabled,
or the
“TeamStandings ” command.
The value is a case-sensitive single-word code with no spaces.
|
Once you have everything set up, preferably a few days before your
tournament, you should try a dry run of your event.
The easiest way to do this is to use the
“DRYrun
” command,
which runs an entire tournament for one division on random data using
the pairings you configured.
After you’ve looked at all the reports it has generated, use the
“RESETEVERYTHING
” command
to delete all the test data.
If you want finer control over the dry run, you can do what it does
manually using the
“ShowPairings
” and
“RANDomscores
”
commands.
There are also a number of unsupported scripts in the “util/” folder which do further analysis on dry runs, for the purposes of compiling statistics on pairing systems and predicting event winners.
Now is a good time to think about what to do if disaster strikes. You should always bring an extra computer, extra printer and extra ink cartridges. If you are running a multidivision tournament and have extra staff, then you can use the extra equipment to split the data entry task across two installations of tsh, combining the two if some of your hardware fails.
tsh journals a copy of every “.t” file after every change, which is useful for correcting errors, but not helpful if your hard disk crashes or your computer dies. Follow the standard rule for backups: make a copy of important files often enough that you don’t mind having to type in any changes since your last backup. For “.t” files, this should be somewhere between every round (to be safe) and every session (to live dangerously). Back up files to other computers, the net, and/or removable media.
If your computer fails and you do not have a spare computer, announce what has happened, gather scorecards and any qualified directors and do pairings by hand. Then write out “I will not run a tournament without a spare computer” enough times by hand that you learn your lesson.
If your printer fails or you run out of ink, in a small tournament you can probably write out or announce pairings aloud, especially if you just need to cover until you can find a replacement cartridge.
Development notes on the experimental GUI.
Updated Fri Sep 14 09:13:49 EDT 2007 for tsh 3.200.
An experimental version of the tsh GUI first shipped with version 3.190. This file documents the GUI, and will be entitled Notes to remind the reader of the experimental status of the module until it is ready for formal release.
The tsh graphical user interface (GUI) is implemented by having tsh run a lightweight web server on a nonstandard port. If the host machine supports it, the classic command-line interface (CLI) may be run simultaneously with the GUI.
The experimental code is tested regularly under OS/X 10.4 and Windows XP. It is not guaranteed to work at all under other operating systems.
Earlier versions of Perl 5.8 did not return the correct value from threads::shared::share(). 5.8.6 works, 5.8.0 does not. Always use the latest greatest version of Perl. (Of course, versions of Perl prior to 5.8 did not support the current threads library at all, and don’t have a hope of running the threaded code.)
To enable the GUI, add the line “config port = 7777
”
to your event’s ‘config.tsh’ file, where the value 7777
may be changed to any convenient value between 1024 and 65535.
To enable multithreaded operation, that is, simultaneous operation of the CLI and GUI, create a file called ‘threads.txt’ in the ‘lib’ directory. Yes, I know this is a hack, but it’s set up this way because enabling threading induces potential instability in the software (because of ridiculous restrictions on thread-shared data in the current release of the Perl threads library, which itself is not a mature product). I want to make sure that a user does not accidentally turn on multithreading until I’m 100% sure that the code won’t is sound. Another problem is that the way the code is written right now, and the way threads work in the current version of Perl, the obvious solution (a line in ‘config.tsh’) doesn’ work because by the time the configuration file is being read, it’s too late to activate multithreading (because the configuration file data itself would need to have been labelled as thread-shared).
If you’re successful, then when you run tsh, your CLI should appear briefly, then be superseded by a browser window showing something like a wall chart. If you’re running multithreaded, you can work alternately in the CLI and GUI windows.
It’s just a proof-of-concept right now, and I don’t like the way any of it looks or functions. I’ll be reworking it over the next few months, at which point suggestions will be welcome.
If you close your browser window, you can reconnect to the GUI
either by remembering the URL – ‘http://localhost:7777’
(if you chose 7777 as your port number), or looking for the URL in
your browser history.
If you have the CLI running too, you may use the
“GUI
” command to open a browser window
to the GUI.
If you have the CLI running, quitting the CLI should shut down the GUI. Actually, there's a bug in the current version that prevents it from doing so under Windows, so press Control-C to kill the tsh process.
If not, you'll just have to press Control-C for now. Eventually there will be a button in the GUI to shut down the server.
Some background on how pairing systems work.
Updated Tue Dec 4 11:01:51 EST 2007 for tsh 3.220.
This section discusses the theory behind scheduling pairings for tournaments and the details of the pairing systems implemented in tsh. See elsewhere the table of tsh’s pairing commands, and the discussion of how and when to use them.
The following are desirable properties of a pairing system. It is impossible to satisfy all of these properties simultaneously.
Property | Description |
---|---|
“Aristomachy” | Top players should be paired with each other, especially toward the end of the tournament. King-of-the-Hill pairings do this best, Round Robin pairings do this worst. |
Division Sizing | Some pairing systems (notably round robin) require specific numbers of players. The number of players is usually not under the director’s control, though often their assignment to divisions is. A small number of large divisions permits smaller number of larger prizes but requires players to face opponents of more widely ranging ratings. |
“Exagony” | Players travelling together to a tournament do not like to play each other, as many players travel to vary their opponents. At the World Championships, unnecessarily pairing together players from the same country may make it difficult for them to earn an additional place at the next WSC. |
Fairness | The final ranking of players by the customary win-loss record and cumulative spread should be equivalent to a ranking according to their level of performance in the tournament. Three possible ways of measuring the latter are to average the final rankings of the opponents of each player (Average Opponent Ranking or AOR, to add the number of wins and spread of the opponents of each players (Sum of Opponent Scores, SOS or Buchholz), and uninitialised iterated performance ratings (IPR, the ratings that players would have if they had all arrived at the tournament unrated). |
Implementability | A good human director can pair 50–100 players by hand if a dynamic pairing system is not too computationally demanding. Computers can currently do brute-force exhaustive searches for optimal pairings up to groups of about 16 (for which there are 2,027,025 possible pairings), use smarter algorithms for very difficult pairing situations involving twice as many players, and can easily apply complex rules to larger groups to find pairings which match well-designed criteria. |
Incentivization | A player should not be placed in a position where tieing or losing is strategically preferably to winning. For example, a player who has clinched a place in a two-player final should not be paired with a possibly weak player whose victory would send him to the finals. |
Inclusivity | A player should not needlessly be excluded from contention for a prize by being paired with someone who is out of contention. For example, if with one round left to play the top three players have N, N and N–1 wins and the top two have a 500-point spread advantage over #3, then #3 needs to play #1 or #2 in order to have any reasonable chance of finishing first. |
“Monagony” | Players should play each other as few times as possible. Repeat pairings can prevent other players from catching up to the repeaters, and do not accurately measure the repeating players’ ability to defeat a wider field. Players also do not in general like playing each other in consecutive rounds. |
Monotony | A lower-ranked player should not be paired so as to make it more likely that he will become the overall winner than that a higher-ranked player will. |
Suspense | The outcome of the tournament should be determined as late as possible. |
David Gibson, the all-time top money winner in the history of Scrabble, has made a habit of clinching victory in major events without waiting for the final round. Because of this, players are said to be “Gibsonized” when after clinching, they are paired with lower-ranked players to avoid affecting the ranking of runners-up. tsh has two mechanisms for detecting Gibson situations.
The Chew pairing system automatically detects and assign Gibson pairings. Gibson situations are detected based on wins and generalised NSA spread thresholds (a player may hope to win one game by 250 points, two games by an average of 175 points, and more games by an average of 150 points each). If there is more than one Gibson, as many of them as possible (all of them if the total number is even) are paired with each other KOTH minimizing rematches and consecutive rematches. If all players are still in contention for some sort of prize, it will pair any remaining Gibson with the lowest ranked player who has played him/her least often. If some players are out of contention for any prize, it will pair any remaining Gibson with the highest ranked such player who has played him/her least often.
If you specify “config gibson = 1
” in your configuration file,
tsh will also perform Gibsonization when using
KOTH or Swiss pairings.
It is important to note that if you are using Fontes pairings, a Gibson situation may develop in round n, paired based on round n–2, as a result of games played in round n–1. tsh does not currently check for this situation, and in practice the players involved might already even have started playing round n before anyone notices what has happened. If you do find yourself in this situation, try to manually repair the top few boards, if they have not already started their games. If no one has started a game, use the UnPairRound command to remove your previously calculated pairings, use the PAIR command to manually pair the Gibson with a reasonable victim, then recompute the pairings for the rest of the division.
tsh currently supports the following pairing systems, in order of increasing sophistication. If you have a need for a different pairing system, please contact John Chew at least two months in advance of your tournament. There is also a partial implementation of the NSC factored pairing system, but it is not yet ready for tournament use.
Random pairings match players based on a statistical hashing function of their name and player number. They are random in that who plays whom will not appear to follow any pattern, but only pseudorandom in the sense that if you do not change the names and order of your players the pairings will always be generated the same way.
You might want to use random pairings when assigning first-round pairings for a group of players who do not have a reliable past tournament record.
The general command for random pairings in tsh is
“randompair repeats based-on-round division
”.
For example, to ask for random pairings with no repeats allowed, based on
standings in round 7 for division D, use the command
“rp 0 7 d
”.
This example is somewhat contrived though, as after the first round
it would be foolish to use random pairings rather than some sort of
standings-based pairings.
See also the
“config initial_exagony
”
configuration variable for avoiding pairing players from the same
team in the first round.
If you use this variable and do not assign players to teams,
pairings will fail because everyone will appear to belong
to the same unnamed team.
As it does with other pairing commands, tsh will try to minimize repeats and avoid successive repeats where possible, though in the first round this is irrelevant.
Sometimes, you can’t use a computer to do all your pairings. For theatrical purposes you might have the first round’s pairings be done by a physical draw. You might need to tweak computer pairings because someone has taken ill after you’ve computed your pairings and some people have started to play. You might want to manually pair a few players and allow the rest to be automatically paired. Or something really weird and unexpected might have happened.
tsh provides two commands for manual pairings.
If you’re just doing a few, then use
“PAIR p1 p2 round division
”.
For example,
“pair 1 2 5 a
”
pairs players 1 and 2 in round 5 in Division A.
To assign a player a bye, pair them against the fictitious player 0.
If you need to do a lot of pairings, use the
“PairMany round division
”
command.
For example,
“pm 3 b
”
lets you enter pairings for round 3, division B and prompts
you to enter pairs of player numbers, one pair per line.
If you enter a division name by itself, you will switch to entering
pairings for that division.
If you enter a round number preceded by an R and a space, e.g.
“r 5
”
you will switch to entering pairings for that round.
If you enter anything else, you will return to the main prompt.
You cannot assign pairings for a round until all previous pairings for
both players have been assigned, and tsh will stop you if
you try.
You can reassign pairings for players who have already recorded scores,
but should do so only with extreme caution, and you
will likely need to use the
“EditScores
”
or
“DELETEscore
”
command.
Use the
“ShowPairings
”
command to check your pairings after any manual changes, to make sure
that all players are paired and none are multiply paired (tsh
will warn you of either situation).
If you want to pair partially manually and partially automatically,
remember that tsh invokes its automatic and default
pairing mechanisms when you use the
“ShowPairings
”
command.
Specify any manual pairings before using that command.
If you forget and do a
“ShowPairings
”
first, then use the
“UnPairRound
”
command to unpair all of the last round’s pairings from a division.
In King-of-the-Hill (KOTH) pairings, the top two players are paired with each other, then the next two, and so on.
KOTH pairings are often used in the final round(s) of a tournament to ensure that contenders face each other, often with an extra repeat permitted so that contenders face each other again even when they have already played each other.
The general command for KOTH pairings in tsh is
“koth repeats based-on-round division
”.
For example, to ask for KOTH with one repeat allowed, based on
standings in round 11 for division B, use the command
“koth 1 11 b
”.
If the players who are supposed to play each other have already played each other too often, tsh will look for the nearest available player, breaking ties to avoid consecutive repeats, match starts with replies and minimize repeats. If the number of players is odd, tsh will assign a bye to the lowest-ranked player who has had the fewest byes.
Factored Pairings (FP) are the same as KOTH except that the optimum rank separation of players is some fixed number (the factor) greater than the value of one used in KOTH.
A version of FP is used in the (US) NSC in preliminary rounds, with factors gradually decreasing from 20 to 2, to artificially control the rate at which the contender pool shrinks. (At the NSC, pairing is done in groups of four to eight players, three or four rounds at a time.)
The general command for FP in tsh is
“FactorPair distance repeats based-on-round division
”.
For example, to ask for FP(2) with no repeats allowed, based on
standings in round 14 for division C, use the command
“fp 2 0 14 c
”.
The “Pair1324
” command is a synonym for
“fp 2
”.
If the players who are supposed to play each other have already played each other too often, tsh will look for the nearest available player(s) to the optimum opponent(s), breaking ties to avoid consecutive repeats, match starts with replies and minimize repeats. If the number of players is odd, tsh will assign a bye to the lowest-ranked player who has had the fewest byes.
In Round Robin (RR) pairings, every player plays every other player once.
RR pairings are used when the number of players is no more than one more than the number of rounds scheduled. If the number of players is a little less than that number, than the remaining rounds are often paired KOTH. While RR pairings are fair and give each player the widest possible field of opponents, if the skill levels of the players vary greatly then it may be more fair to use a more flexible system that will allow the top contenders to play each other more than once. It is also difficult but not always impossible to schedule an RR so that contenders face each other in the final round.
The general command for RR pairings in tsh is
“rr division
”.
For example, to ask for a set of RR pairings to be added to division A,
use the command
“rr a
”.
There is also a specialized command for doing partial round robin
pairings for use at Cambridge ON.
Use the “camp division
”
command to add fixed pairings for a seven-round tournament with any number
of players.
Steve Pellinen’s North American Scrabble Tour prescribes a specific hybrid pairing system for its satellite events. For most division sizes, this consists of four fixed rounds of pairings, one swiss-paired round with repeats allowed, and one KOTH round with unlimited repeats allowed. tsh currently handles NAST pairings for groups of up to 48 players. If you would like to run NAST pairings for a larger group, please contact John Chew at least two weeks before your event.
There is a manual command
“NAST
”
that generates the initial fixed schedule of four or five rounds,
but you should never need to use it.
It is available so that it can be invoked if you specify a NAST event by adding the
line
“config pairing_system = 'nast'
”
to your configuration file.
In Swiss pairings, players are divided into “win groups” according to how many wins they have scored. The top half of each win group plays the bottom half, in order.
Several different systems of Swiss pairings are popular in Chess, where Swiss pairings originated. Swiss pairings work well for divisions where the number of players is large and the number of rounds is small.
Regular Swiss pairings cause delays in tournaments because the pairings for the next round cannot be computed until all the results are in for the previous round. Fontes (or Portland) Swiss pairings trade off some pairings accuracy for speed by computing pairings based on the second previous round’s results. As a compromise, some directors use regular Swiss pairings immediately after session breaks and Fontes Swiss pairings at other times.
The general command for Swiss pairings in tsh is
“ns repeats based-on-round division
”.
For example, to ask for Swiss pairings with two repeats allowed, based on
standings in round 17 for division C, use the command
“koth 2 17 c
”.
If you ask for Swiss pairings based on round 0, tsh will rank players by pretournament rankings, breaking ties randomly. This effectively pairs the top half of the field against the bottom, which may be something you want to do even if you aren’t pairing the rest of the tournament Swiss.
There is a special command for starting a Fontes Swiss tournament.
Because you will need at least two rounds of scores before you can
pair Fontes Swiss, the
“InitFontes number-of-rounds division
”
command divides players into groups of four and schedules them
to play in round robins.
This takes three rounds (3 is the recommended value for
number-of-rounds
) and provides a fair start to
the Swiss system,
as well as giving you three hours to get used to doing data entry
before you need to worry about pairings.
If the number of players is not divisible by four, there may be
a group of six players who play a partial round robin.
The players in each group are chosen randomly, one from
each quartile (or sextile).
Early in the tournament, you should use 0 repeats. At some point in a long tournament, you should start increasing the number of repeats or else the top players will begin much lower-ranked players because they have already all played each other. You can try simulating the outcome of the tournament to get a feel for when this is likely to happen, use your intuition based on past similar tournaments, or keep an eye on who the top-ranked player is playing each round and decide for example once they are paired with someone out of the top ten. Most Swiss tournaments end with one or two rounds of KOTH to ensure that contenders play each other often enough.
tsh chooses an opponent within the win group who
(in decreasing order of importance):
minimizes repeats,
is not the previous round’s opponent,
is due to play first if the current player is due to play second
(and vice versa, but in either case only if
“config track_firsts
” is active),
and is as close as possible to half a win group away in ranking.
For the sake of computational efficiency, tsh looks for
opponents first for those players who have the fewest candidate
opponents (with ties broken by current ranking).
If a win group is odd, the top player in the next group is promoted
to join it.
If a win group cannot be paired, two more players are promoted.
If the entire division cannot be paired in one big group, an error
message is displayed, and you should increase the number of allowed
repeats.
If the number of players is odd, tsh will assign a
bye to the lowest-ranked player who has had the fewest byes.
Chew pairings draw on Swiss pairings and the two-victor “Basic Approach” pairing system developed for the 2003 CNSC and refined at the 2004 NSC, 2005 CNSC and 2005 NSC. Tournament simulations determine which players are still in contention; the minimum number of repeats required to pair those players is computed; the contenders are split into leaders and nonleaders so as to minimize the number of leaders while not increasing the required number of repeats. Beginning at the top, each leader is paired with the lowest-ranked other leader who can catch up to him/her; the nonleaders are paired Swiss.
Chew (or similar) pairings should be used in tournaments where after a number of preliminary rounds two or more top players are selected to compete in final rounds. They are also sufficiently flexible that they may be used in any sort of tournament, and are therefore used as tsh’s default pairing algorithm. As with Swiss pairings, they may be computed based on the immediately preceding round’s standings or those of the second preceding round, depending on event scheduling.
The general command for Chew pairings in tsh is
“cp based-on-round division
”.
For example, to ask for Chew pairings based on round 5 in division D,
use the command
“cp 5 d
”.
As explained in the discussion on
default pairings,
if you do not specify any pairing system, manual or automatic,
tsh will use Chew pairings.
You must specify
“config max_rounds
”
and should specify
“config gibson_groups
”,
“config initial_schedule
”
and
“config prize_bands
”
when using Chew pairings.
Here is the Chew pairing algorithm in greater detail.
config gibson_groups
”
and is typically 0, 1 or 2.
That number is reduced by one at a time
while the lowest-ranked possible Gibson
can be caught by the next-ranked player.
To try to catch a Gibson, a player is assumed to be paired
repeatedly with that player, and to win all his/her games
with a spread of +250 in one round, +175/round in two rounds,
or +150/round for more rounds.
config flight_cap
”)A chronological list of changes to tsh.
Updated Wed Mar 12 09:30:31 EDT 2008 for tsh 3.220.
Changes are made to tsh for just about every tournament at which it is used. This means two things: firstly, you should be sure to update to the most recent version before your tournament; and secondly, if there’s a feature that you’d like added please be sure to mention it, preferably with about a month’s lead time.
Version | Event | Changes |
---|---|---|
3.220 | 2008 Dallas Open |
|
3.210 | WSC 2007 |
|
3.200 | 2007 Big Apple ST |
|
3.190 | September 2007 Toronto 2007 UK NSC Semi-Finals |
|
3.180 | 2007 Players Championship |
|
3.170 | Toronto LCT |
|
3.160 | 2007 Dallas Open |
|
3.150 | Toronto Open |
|
3.140 | 2006 MWMST |
|
3.130 | 2006 BMSC |
|
3.120 | 2006 USSO |
|
3.110 | Saxon 2006 |
|
3.100 | July 2006 Toronto |
|
3.090 | 2006 Toronto LCT |
|
3.080 | BAT 2006 |
|
3.070 | NSSC 2006 |
|
3.060 | Toronto vs. Mississauga 2006 |
|
3.050 | Dallas Open 2006 |
|
3.040 | Oshawa 2006 |
|
3.030 | WSC 2005 |
|
3.020 | Kingston 2005 ("Now... with tint control!") |
|
3.010 | Kingston 2005 |
|
3.000 | MWMST 2005 |
|
2.980 | NSC 2005 |
|
2.975 | ABSP compatibility |
|
2.960 | Albany NY |
|
2.950 | Toronto LCT |
|
2.940 | Stamford CT |
|
2.930 | CNSC 2005 |
|
2.920 | Thunder Bay ON 2005 |
|
2.910 | BAT 2005 |
|
2.900 | BAT 2005 |
|
2.850 | NSSC 2005 |
|
2.840 | NSSC 2005 |
|
2.830 | NSSC 2005 |
|
2.820 | NSSC 2005 |
|
2.810 | NSSC 2005 |
|
2.800 | NSSC 2005 |
|
2.740 | Newsday SSC |
|
2.730 | Newsday SSC |
|
2.720 | Newsday SSC |
|
2.710 | Newsday SSC |
|
2.700 | Newsday SSC |
|
2.600 | Oshawa 2005 |
|
2.500 | MWMST 2004 |
|
2.400 | Albany 2004 |
|
2.300 | BAT 2004 |
|
2.210 | Montreal QC 2004-03 LCT |
|
2.200 | Cambridge ON 2004 |
|
2.100 | CNSC 2003 |
|
2.000 | MWMST 2003 |
|
1.900 | CWSCQT 2003 |
|
1.800 | Albany 2003 |
|
1.700 | Boston 2003 |
|
1.600 | Boston 2001 |
|
1.500 | Toronto 2001 |
|
1.400 | Boston 2001 |
|
1.300 | Danbury 2001 |
|
1.200 | 2000 CNSC |
|
1.103 | 1999 MWMST |
|
1.000 | None |
|
tsh bugs and requested features.
Updated Fri Feb 29 08:09:52 EST 2008 for tsh 3.220.
Contact John Chew to report bugs or request new features. Bugs will be fixed according to their urgency; features will be added according to urgency, utility and ease of implementation.
ID | Type | Priority | Difficulty | Submission Date |
Scheduled Date |
Submitter | Description |
---|---|---|---|---|---|---|---|
1 | new | low | medium | 2007-03-01 | open | John Chew | tsh should understand page sizes and insert page breaks with repeated headings as appropriate. |
3 | bug | high | medium | 2007-07-01 | 2007-08-15 | Stewart Holden | “config exagony ” and “ChewPair &rdquo do not always interact well. |
7 | new | low | medium | 2007-07-02 | open | John Chew | Request for a command that purges all journalled files after a tournament is over. |
9 | new | medium | medium | 2007-07-04 | open | John Chew | Request for pairings commands specifically for inter-team matches, such as team vs. team round robin. |
10 | new | medium | high | 2007-07-04 | open | John Chew | tsh should warn when delayed Gibsonization is detected when Fontes pairings are in effect. |
11 | bug | medium | medium | 2007-07-04 | open | John Chew | Pairings commands should not pair past “config max_rounds ”. |
12 | bug | high | medium | 2007-07-04 | 2007-09-01 | John Chew | A large number of bug reports and new feature requests are embedded in source documentation and should be moved to this file. |
13 | new | medium | high | 2007-07-04 | open | John Chew | webupdater should be configurable, documented and Windows-compatible. |
14 | new | low | high | 2007-07-04 | open | John Chew | Interactive config.tsh editor. |
15 | bug | low | high | 2007-07-04 | open | John Chew | Supplying one argument to “PAIR ” should unpair the identified player. |
16 | new | low | high | 2007-07-04 | open | John Chew | It should be possible to request that commands be triggered when all data has been entered (and possibly checked) for a round in a division. |
17 | new | low | medium | 2007-07-04 | open | John Chew | Photos on scorecards. |
18 | new | low | high | 2007-07-04 | open | John Chew | Virtual scorecards on the web. |
19 | new | low | high | 2007-07-04 | open | John Chew | Printing from within tsh. |
20 | bug | low | medium | 2007-07-04 | open | John Chew | Add more internal cross-references in the documentation |
21 | bug | low | medium | 2007-07-04 | open | John Chew | Proofread documentation for typographic style. |
22 | new | low | high | 2007-07-04 | open | John Chew | Load large divisions in separate threads, when the Perl thread model makes this faster. |
23 | new | high | medium | 2007-09-01 | open | John Chew | A report that lists the last lines of scorecards for all players, so that players can check their results. |
24 | new | medium | medium | 2007-07-04 | open | John Chew | Choose random seed for firsts/seconds in a way that can't be jiggered by a director. |
25 | new | low | high | 2007-07-04 | open | John Chew | Correctly rate NSA players who are on high multipliers. |
26 | new | low | medium | 2007-07-04 | open | John Chew | Hovering on photos should enlarge them. |
27 | new | low | low | 2007-07-04 | open | John Chew | Using the manual PAIR command sometimes leads to more than one game at one board. It should swap boards as necessary. |
28 | new | low | high | 2007-07-04 | open | John Chew | Swiss pairings should try to minimize the number of players promoted between groups each round. |
29 | new | low | high | 2007-07-04 | open | John Chew | Commands should have alternate syntaxes. For example, the input for Addscore should be parsed as [[keyword(missing)],[keyword(division), division],[player score],[player score player score]]. |
30 | new | high | medium | 2005-01-01 | open | Graeme Thomas | Swiss pairings should arguably rank players first on sum of opponent scores (SOS), then cume. |
31 | new | high | high | 2007-07-04 | 2007-09-01 | John Chew | Should try provisionally assigning the higher-rated player in each game a win in the current round when pairing Fontes. |
32 | new | low | high | 2007-07-04 | open | John Chew | Web interface should highlight recently updated information. |
39 | new | low | low | 2007-08-16 | open | John Chew | If tsh chooses a sample event, the user should be given the option of interactively creating a new event, as per issue 14. |
40 | new | medium | high | 2007-08-16 | open | John Chew | TSH::Config::Export() should be removed once it is no longer necessary. |
41 | new | low | medium | 2007-08-16 | open | John Chew | ‘tshxcfg.txt’ should be read in and eval’ed, so that its code can have access to a lexical copy of $tournament. |
42 | new | low | medium | 2007-08-16 | 2007-12-01 | Dan Pratt | ‘util/rr.pl’ should be replaced by an algorithm in ‘RoundRobin.pm’ that uses Clark pairings alternating starts/replies for the side of the table that has player 1, randomly choosing what player 1 does in the first round. |
44 | new | high | high | 2007-08-19 | open | NSA Tech Committee | Connect to NSA ratings database so that player names do not have to be misentered manually, and so that current ratings can optionally be imported (though not for a ME after EB). Also connect to the player database to access/maintain contact information |
45 | new | high | low | 2007-08-19 | open | NSA Tech Committee | A command to move players between divisions before the tournament begins. |
46 | new | high | high | 2007-08-27 | open | John Chew | A command that automatically assigns players to divisions according to rules set out in the configuration file. |
47 | new | high | medium | 2007-08-19 | open | NSA Tech Committee | A command to perform Snake pairings |
48 | new | high | medium | 2007-08-19 | open | NSA Tech Committee | event triggers should include a prompt asking user if they want to compute/print pairings and standings |
49 | new | high | medium | 2007-08-19 | open | NSA Tech Committee | Byes should not be assigned to unrated players in the first round. |
50 | new | high | medium | 2007-08-19 | open | NSA Tech Committee | During data entry, the most recently entered game's spread should be optionally displayed. |
51 | new | high | medium | 2007-08-19 | open | NSA Tech Committee | The “EditScore ” command should let the user set cumeadj. |
52 | new | high | medium | 2007-08-19 | open | NSA Tech Committee | A new command that prints a player address list. |
53 | new | high | medium | 2007-08-19 | open | NSA Tech Committee | A new command that prints just player numbers, ratings and names. |
54 | new | high | high | 2007-08-19 | open | NSA Tech Committee | Optionally allow portrait/landscape orientation choice in tsh (without using Page Setup), by rendering as a PDF. This would also help give finer layout control, enable direct printing from tsh in OS/X, and would generally be a good thing. |
55 | new | high | medium | 2007-08-19 | open | NSA Tech Committee | Explain to specifications authors why it is impossible to prevent some fields in printouts from wrapping under some conditions. |
56 | new | high | high | 2007-08-19 | open | NSA Tech Committee | User interface should be intuitive to more people. |
57 | new | high | medium | 2007-08-19 | open | NSA Tech Committee | Pairings reports should optionally include brief notes explaining how the pairings were computed. |
58 | new | medium | low | 2007-08-28 | open | Stewart Holden | MISSING can be abbreviated to M only when invoked from within Addscore. |
59 | new | medium | low | 2007-08-28 | open | Stewart Holden | MISSING should not require its round number unless “config allow_gaps = 1 ” is in effect. |
60 | new | medium | high | 2007-08-28 | open | Stewart Holden | It would be nice to be able to specify the order of rounds in a round robin, so that, e.g., players who needed byes in specific rounds could be accommodated. |
61 | new | medium | medium | 2007-08-28 | open | Stewart Holden | The order of rounds in a round robin ought to depend on the division name, so as to reduce the likelihood of data entry confusion. |
66 | new | medium | medium | 2007-09-17 | open | Stewart Holden | The stats command incorrectly reports a large number of start/reply errors when round robin pairings are used. This problem may be resolved as part of a planned rewrite of the round robin code, or may need to be specifically addressed. |
67 | new | high | high | 2007-09-17 | open | John Chew | The following situation might be an example calling for a change to the current Chew pairing algorithm. With a flight cap of 4, there are four contenders with more or less the same record. All pairs have played each other except 1-3 and 1-4. As things stand, because the four require one repeat to be paired, this is accepted as the repeat tolerance, the players are split after second place and paired 1-2, 3-4. Although it would be computationally prohibitive for large flights, it might be worth trying to minimize the total number of repeats for small flights like this to achieve 1-4, 2-3 pairings. Also, when the top two places are Gibson-equivalent, it is imperative that 1-2 not play each other if 3 or 4 are in contention. |
69 | new | low | high | 2007-09-29 | open | John Chew | In order to use tsh to look after Scrabble clubs, the following features are required and likely more: the chronological concatenation of sessions (each with its own ‘.t’ file) into seasons, where the output ratings from one session become the input ratings of the next and only one session is active at a time; overall season statistics including performance rating calculations; and something like Washington Go first-available pairings. |
75 | new | medium | low | 2007-09-12 | open | Stewart Holden | An extra page break appears after the value of config html_top ” in the output of “ShowDivisionScoreCards ”. |
76 | new | medium | high | 2007-10-07 | open | John Chew | More basic statistical research is required to determine the distribution of scores as a function of player ratings, start/reply and playing environment. |
77 | new | medium | high | 2007-10-07 | open | John Chew | The research of issue 76 needs to be applied to more accurately model possible future outcomes in Chew pairings. |
78 | new | medium | medium | 2007-09-12 | open | John Chew | The research of issue 76 needs to be applied to more accurately determine Gibsonization thresholds. |
80 | new | medium | low | 2007-10-21 | open | John Chew | Ratings data submitted should include configuration settings where possible, to facilitate subsequent analysis. |
81 | new | medium | low | 2007-12-03 | open | Jim Hughes | “config force_koth ” should accept values greater than 1 to have more than one late round of KOTH pairings. |
82 | new | medium | low | 2007-12-03 | open | Jim Hughes | “config repeats{DIV} ” should specify when repeats will be permitted. |
83 | new | medium | low | 2007-12-03 | open | Jim Hughes | The manual needs an index. |
84 | new | high | medium | 2007-12-05 | open | Jim Hughes | HTTP routines should use LWP where available. |
85 | new | medium | medium | 2007-12-05 | open | Jim Hughes | RSS feed for web pages. |
87 | new | medium | low | 2008-02-09 | open | Ronan Webb | CSS customisation by including a second stylesheet. |
ID | Type | Priority | Difficulty | Submission Date |
Resolution Date |
Submitter | Description |
---|---|---|---|---|---|---|---|
34 | bug | low | low | 2007-07-30 | 2007-07-30 | Stewart Holden | “showWallChart ” displays one too many rounds. |
35 | bug | high | low | 2007-08-01 | 2007-08-01 | John Chew | “config board_stability ” tries to keep board stable even across session breaks. |
36 | bug | high | medium | 2007-08-01 | 2007-08-01 | John Chew | “InitFontes ” ignores board reservations specified using “config reserved ”. |
37 | bug | high | low | 2007-08-03 | 2007-08-03 | John Chew | “ChewPair ” overestimates the number of players in contention. |
38 | bug | high | low | 2007-08-11 | 2007-08-11 | John Chew | “Addscore ” does not take into account “config entry = 'spread' ” when assessing validity of scores. |
6 | new | medium | medium | 2007-07-01 | 2007-08-12 | Evan Simpson | Request for a new type of roto command that lets people predict ranks of everyone in a division |
5 | new | medium | low | 2007-07-01 | 2007-08-16 | Stewart Holden | “MISSING ” should accept an optional argument specifying a division. |
43 | new | low | low | 2007-04-19 | 2007-08-19 | Stewart Holden | “RANDomscores ” always assigns 300 points to an ABSP unrated player. |
33 | bug | high | medium | 2007-07-28 | 2007-08-21 | Stewart Holden | “config gibson ” does not work with KOTH command. |
62 | new | medium | medium | 2007-08-28 | 2007-08-28 | Stewart Holden | ‘tsh.css’ needs to be copied to the event directory when “config html_in_event_directory = 1 ” is in effect. |
63 | new | high | low | 2007-09-04 | 2007-09-04 | Barry Harridge | “AUPAIR ” does not correctly handle byes. |
64 | new | low | low | 2007-09-09 | 2007-09-12 | Stewart Holden | “ABSPgrid ” HTML output does not need to be indexed. |
2 | new | low | high | 2007-03-01 | 2007-09-13 | John Chew | tsh should be rewritten as a multithreaded, multiuser system. |
65 | new | low | low | 2007-09-13 | 2007-09-14 | Stewart Holden | “ShowPairings ” should default to not rendering in two columns in the ABSP realm. |
8 | new | medium | low | 2007-07-03 | 2007-09-17 | Stewart Holden | Request for a configuration option that specifies rewrites player names with first names first and last names last. |
68 | new | high | medium | 2007-09-17 | 2007-09-18 | Stewart Holden | The DOC command apparently suspends all future terminal output under Windows. |
4 | new | low | low | 2007-07-01 | 2007-09-30 | Stewart Holden | Request for a configuration option that suppresses ranked pairings files for directors who will always use alpha pairings. |
74 | new | high | low | 2007-09-12 | open | Stewart Holden | Under some circumstances, Gibsonization was failing for non-Chew pairings because the correct code module was not loaded at the right time. |
79 | new | high | low | 2007-10-09 | open | Stewart Holden | “HighLoss ” and similar commands were giving erroneous results for large divisions. |
86 | new | high | low | 2007-12-10 | open | Ryan Fischer | “RESETEVERYTHING ” was incorrectly deleting tsh.css |