From 2a894fcecf7009e5e809daf5e086ef07c0792a98 Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Thu, 18 Apr 2024 23:10:20 +0100
Subject: [PATCH 01/57] Add line following guide

The path is intentionally suboptimal, and long, so it's not the obviously optimal strategy.
---
 src/fig-arena.svg | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/src/fig-arena.svg b/src/fig-arena.svg
index 0d05bd0..950a279 100644
--- a/src/fig-arena.svg
+++ b/src/fig-arena.svg
@@ -20,6 +20,12 @@
           stroke-width: .02;
       }
 
+      .line-follow-guide {
+          fill: none;
+          stroke: #AAA;
+          stroke-width: .01;
+      }
+
       .arena-wall {
           fill: none;
           stroke: #555;
@@ -158,12 +164,17 @@
             y1="1.22"
             x2="2.7"
             y2="2.7" />
+
       <!-- Start zone -->
       <rect width="1"
             height="1"
             x="2.71"
             y="0.24"
             class="start-zone"/>
+
+      <!-- Line following guide -->
+      <polyline points="3.72,0.74 1.96,0.74 1.96,1.96 0.6,1.96 0.6,3.92 1.36,4.66 1.68,4.66" class="line-follow-guide" />
+
       <g transform="translate(3.21 0.74)">
         <use xlink:href="#robot"/>
       </g>
@@ -343,5 +354,15 @@
        class="legend-label"
        y="2.2"
        x="5.2">Inner wall</text>
+
+    <line class="line-follow-guide"
+            x1="4.75"
+            y1="3.1"
+            x2="4.75"
+            y2="3.7" />
+    <text
+       class="legend-label"
+       y="3.4"
+       x="5.2">Line follow guide</text>
   </g>
 </svg>

From c61bc7ddb51fe1e6fe7d6c3e736cd1ded9a5d531 Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Thu, 25 Apr 2024 18:04:38 +0100
Subject: [PATCH 02/57] Use thicker black line for scale

---
 src/fig-arena.svg | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/fig-arena.svg b/src/fig-arena.svg
index 950a279..66ab7a3 100644
--- a/src/fig-arena.svg
+++ b/src/fig-arena.svg
@@ -22,8 +22,8 @@
 
       .line-follow-guide {
           fill: none;
-          stroke: #AAA;
-          stroke-width: .01;
+          stroke: black;
+          stroke-width: .03;
       }
 
       .arena-wall {

From a3c64783e300360384c797fd9e4f64dfcdb220be Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Thu, 9 May 2024 21:40:24 +0100
Subject: [PATCH 03/57] Update league points from game points

This is only true for 4 robot games
---
 src/index.html | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/index.html b/src/index.html
index 738f2a8..b94160b 100644
--- a/src/index.html
+++ b/src/index.html
@@ -221,13 +221,13 @@ <h3><a class="anchor" id="matches"></a>Matches</h3>
         <li>
           At the end of a game, league points will be awarded as follows:
           <ul>
-            <li>The team with the most game points will be awarded 8 points towards the competition league.
-            <li>The team with the second most will be awarded 6.
+            <li>The team with the most game points will be awarded 4 points towards the competition league.
+            <li>The team with the second most will be awarded 2.
             <li>Teams whose robot was not entered into the round, or who were disqualified from the round, will be awarded no points.
           </ul>
         <li>
           If a match ends in a tie, robots will be awarded the average of the points that their combined
-          positions would be awarded, in this case 7 (since this is (8 + 6) &div; 2).
+          positions would be awarded, in this case 3 (since this is (4 + 2) &div; 2).
         <li>
           At the end of the leagues, positions in the leagues are used to seed a
           knockout. This will be used to determine the final 1<sup>st</sup>,

From 4868bedf1a7c0a6350a7da14e14be104e2ec16bf Mon Sep 17 00:00:00 2001
From: Will Barber <WillB97@users.noreply.github.com>
Date: Fri, 24 May 2024 19:03:40 +0100
Subject: [PATCH 04/57] Started at the direction of match officials

---
 src/index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/index.html b/src/index.html
index 738f2a8..91ea5ee 100644
--- a/src/index.html
+++ b/src/index.html
@@ -53,7 +53,7 @@ <h2><a class="anchor" id="game-rules"></a>Game Rules</h2>
         <li>
           Each match lasts for <strong>150</strong> seconds.
         <li>
-          Robots will be started by, or at the direction of, match officials.
+          Robots will be started at the direction of match officials.
         <li>
           Game points will be awarded as follows:
           <ol type="a">

From 27510750e24e58b42300c3fa5b04704e0ae1de0b Mon Sep 17 00:00:00 2001
From: Will Barber <WillB97@users.noreply.github.com>
Date: Fri, 24 May 2024 19:04:58 +0100
Subject: [PATCH 05/57] Drop the 40 second rule We haven't managed to follow
 this in years

---
 src/index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/index.html b/src/index.html
index 91ea5ee..3a291c9 100644
--- a/src/index.html
+++ b/src/index.html
@@ -44,7 +44,7 @@ <h2><a class="anchor" id="game-rules"></a>Game Rules</h2>
             <li>Present their robot in the staging area, adjacent to the arena, before the scheduled close of staging time. The staging area will be clearly marked on the day.
             <li>Attach a <a href="#flag-specification">robot flag</a>. Robot flags will be provided by SourceBots officials in the staging area.
             <li>Place their robot in the starting area that they are assigned. The robot must be placed such that it is entirely within this starting area, with no parts overhanging its boundary. Its orientation does not matter.
-            <li>Vacate the arena 40 seconds before the scheduled start time. During the 40 second period prior to the start of the match there must be no interaction with the robot.
+            <li>Vacate the arena before the scheduled start time. At this point there must be no interaction with the robot.
             <li>Follow the directions of the match officials.
           </ul>
           Teams that fail to comply with these rules – such as by arriving late – may forfeit the match, at the discretion of the judge.

From c3261083a90f853e2a33be71a479603a9efd2cd4 Mon Sep 17 00:00:00 2001
From: Will Barber <WillB97@users.noreply.github.com>
Date: Fri, 24 May 2024 19:05:44 +0100
Subject: [PATCH 06/57] Clarify crossing a line

---
 src/index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/index.html b/src/index.html
index 3a291c9..51a03d4 100644
--- a/src/index.html
+++ b/src/index.html
@@ -67,7 +67,7 @@ <h2><a class="anchor" id="game-rules"></a>Game Rules</h2>
             <li>
               At the end of each lap - defined as every sixth scoring line crossed in a forward direction - a robot is awarded an additional <strong>4</strong> points above the points it would normally get for the crossing.
             <li>
-              A robot is deemed to have passed a scoring line when the back of the robot passes the line.
+              A robot is deemed to have passed a scoring line when the whole robot passes the line.
             <li>
               If a robot passes backwards (i.e: clockwise) over any scoring line it must "undo" these before any further forwards line crossings will be counted.
             <li>

From b9cb823d8985008d9120defc996445878748dc64 Mon Sep 17 00:00:00 2001
From: Will Barber <WillB97@users.noreply.github.com>
Date: Fri, 24 May 2024 19:58:09 +0100
Subject: [PATCH 07/57] Add reasonable wall height

---
 src/index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/index.html b/src/index.html
index 51a03d4..9e454ab 100644
--- a/src/index.html
+++ b/src/index.html
@@ -173,7 +173,7 @@ <h3><a class="anchor" id="arena-specification"></a>Arena</h3>
         <li>
           The floor of the arena is covered with a closed-loop, short pile carpet.
         <li>
-          The perimeter of the arena floor is delimited by the arena wall, which has a minimum height of 100mm.
+          The perimeter of the arena floor is delimited by the arena wall, which has a minimum height of 250mm.
         <li>
           Starting areas are 1000 ±50mm squares and will be marked by tape which is considered part of the starting area.
         <li>

From 17646083a5fcd4d5cd33e9341fe19625d8ecdab3 Mon Sep 17 00:00:00 2001
From: Will Barber <WillB97@users.noreply.github.com>
Date: Fri, 24 May 2024 20:02:21 +0100
Subject: [PATCH 08/57] Arrange specifications logically

---
 src/index.html | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/src/index.html b/src/index.html
index 9e454ab..d5368c9 100644
--- a/src/index.html
+++ b/src/index.html
@@ -175,13 +175,11 @@ <h3><a class="anchor" id="arena-specification"></a>Arena</h3>
         <li>
           The perimeter of the arena floor is delimited by the arena wall, which has a minimum height of 250mm.
         <li>
-          Starting areas are 1000 ±50mm squares and will be marked by tape which is considered part of the starting area.
-        <li>
-          Starting area 1 is at the top of the arena diagram, and area 2 is at the bottom.
+          The inner walls of the arena have a minimum height of 170mm.
         <li>
-          The green boxes denote a robot in their start locations, shown in yellow. Robots may start anywhere inside their starting area facing any direction.
+          Starting areas are 1000 ±50mm squares and will be marked by tape which is considered part of the starting area. Robots may start anywhere inside their starting area facing any direction.
         <li>
-          The inner walls of the arena have a minimum height of 170mm.
+          Starting area 1 is at the top of the arena diagram, and area 2 is at the bottom.
         <li>
           SourceBots reserves the right to have match officials in the arena during games.
       </ol>

From b663030c4b47d4b23cac84c4e5cbac63a77276a5 Mon Sep 17 00:00:00 2001
From: Will Barber <WillB97@users.noreply.github.com>
Date: Fri, 24 May 2024 20:05:04 +0100
Subject: [PATCH 09/57] We print the markers They are also clearly just black
 and white so the point is redundant

---
 src/index.html | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/src/index.html b/src/index.html
index d5368c9..d53e730 100644
--- a/src/index.html
+++ b/src/index.html
@@ -155,9 +155,6 @@ <h3><a class="anchor" id="marker-specification"></a>Markers</h3>
           </tr>
         </tbody>
       </table>
-      <p>
-        The markers can be printed on a black-and-white printer.
-      </p>
       <p>
         Sixteen arena wall markers are positioned around the arena as shown in the <a href="#arena-specification">arena specification</a>. Marker codes are mirrored on each side of the arena.
       </p>

From d2a0e60498f54ba27f2ce8a197b1772f3d2dc775 Mon Sep 17 00:00:00 2001
From: Will Barber <WillB97@users.noreply.github.com>
Date: Fri, 24 May 2024 20:08:33 +0100
Subject: [PATCH 10/57] Ambiguous this

---
 src/index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/index.html b/src/index.html
index d53e730..2ac7177 100644
--- a/src/index.html
+++ b/src/index.html
@@ -225,7 +225,7 @@ <h3><a class="anchor" id="matches"></a>Matches</h3>
           positions would be awarded, in this case 7 (since this is (8 + 6) &div; 2).
         <li>
           At the end of the leagues, positions in the leagues are used to seed a
-          knockout. This will be used to determine the final 1<sup>st</sup>,
+          knockout. The knockouts will be used to determine the final 1<sup>st</sup>,
           2<sup>nd</sup> and 3<sup>rd</sup> awards.
         <li>
           In the event of a tie in a knockout match, the team that ranked highest in the league will

From 1043f2321dab254529bc3ec9d0d793aae558c0fd Mon Sep 17 00:00:00 2001
From: Will Barber <WillB97@users.noreply.github.com>
Date: Fri, 24 May 2024 20:13:44 +0100
Subject: [PATCH 11/57] Not just the starting size

---
 src/index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/index.html b/src/index.html
index 2ac7177..1ac4259 100644
--- a/src/index.html
+++ b/src/index.html
@@ -186,7 +186,7 @@ <h3><a class="anchor" id="flag-specification"></a>Robot flags</h3>
         <li>
           A "robot flag" is a removable identifier that will be attached to a robot throughout a match. It allows spectators to easily associate a robot with its starting area.
         <li>
-          Flags are not counted when considering the starting size of the robot.
+          Flags are not counted when considering the size of the robot.
         <li>
           The identifying part of the robot flag must be visible when attached to the mount.
         <li>

From 01b6955e13c501d9889034d72b4f66c2dc48577a Mon Sep 17 00:00:00 2001
From: Will Barber <WillB97@users.noreply.github.com>
Date: Fri, 24 May 2024 22:08:04 +0100
Subject: [PATCH 12/57] Refactor regulations Provide a more logical grouping
 Group safety regs into a sublist Remove redundant regs

---
 src/index.html | 48 +++++++++++++++++++++++-------------------------
 1 file changed, 23 insertions(+), 25 deletions(-)

diff --git a/src/index.html b/src/index.html
index 1ac4259..d37a788 100644
--- a/src/index.html
+++ b/src/index.html
@@ -90,41 +90,39 @@ <h2><a class="anchor" id="regulations"></a>Regulations</h2>
         <li>
           Teams must conduct themselves within the principles of good sporting conduct.
         <li>
-          Any assistance from Smallpeice Trust staff and volunteers is provided without guarantees.
+          Robots must be fully autonomous. No remote control systems or receivers are permitted.
         <li>
-          No remote control systems or radio transmitters or receivers are permitted.
+          Robots must pass a safety inspection before they can compete.
+          <ol>
+            <li>
+              Robots must not have any sharp edges or points.
+            <li>
+              Robots must have all electronics securely mounted and easily removable.
+            <li>
+              Robots must provide adequate protection to the batteries they use, including
+              protection from mechanical damage.
+            <li>
+              Robots must have a power switch, obvious and on top, which will completely immobilise
+              the robot.
+          </ol>
         <li>
           While accidental bumps and scrapes are inevitable, the sport is non-contact.
         <li>
-          Robots must pass a safety inspection before they can compete.
-        <li>
-          Robots must have a mass of less than 10kg.
+          Robots must not intentionally damage anything inside the arena.
+          At the discretion of the judge, teams who deliberately engage in collisions
+          or take insufficient precautions against collisions may be penalised,
+          including disqualification from rounds and deduction of league points.
         <li>
-          Robots must not intentionally damage anything inside the arena. At the discretion of the judge, teams who deliberately engage in collisions or take insufficient precautions against collisions may be penalised, including disqualification from rounds and deduction of league points.
+          Robots must have a spare USB slot accessible to match officials,
+          so that a dongle can be connected to enable competition mode on the robot.
         <li>
-          Robots must fit within a 500mm ⨉ 500mm ⨉ 500mm cube at the start of each match.
+          Robots must fit within a 500mm ⨉ 500mm ⨉ 500mm cube.
         <li>
-          Robots must fit within a 500mm ⨉ 750mm ⨉ 750mm cube, with one 750mm axis vertical,
-          at all times during each match.
+          Robots must have a mass of less than 10kg.
         <li>
           Robots must not deliberately drop any part of themselves onto the arena.
         <li>
-          Robots must have all electronics securely mounted and easily removable.
-        <li>
-          Robots must provide adequate protection to the batteries they use, including
-          protection from mechanical damage.
-        <li>
-          Robots must not have any devices designed to produce noise except where included
-          in the SourceBots kit.
-        <li>
-          Robots must not have any fiducial markers visible to other robots.
-        <li>
-          Robots must have a spare USB slot accessible to match officials.
-        <li>
-          Robots must have a power switch, obvious and on top, which will completely immobilise
-          the robot.
-        <li>
-          Robots must not have any sharp edges or points.
+          Any assistance from Smallpeice Trust staff and volunteers is provided without guarantees.
         <li>
           Robots must have a <a href="#flag-specification">flag mounting</a>.
       </ol>

From b83ebd58ca592c3cff4f855e62c49f643a47d3cd Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Sat, 25 May 2024 09:30:04 +0100
Subject: [PATCH 13/57] Ensure guide is centred to track

---
 src/fig-arena.svg | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/fig-arena.svg b/src/fig-arena.svg
index 66ab7a3..2288765 100644
--- a/src/fig-arena.svg
+++ b/src/fig-arena.svg
@@ -173,7 +173,7 @@
             class="start-zone"/>
 
       <!-- Line following guide -->
-      <polyline points="3.72,0.74 1.96,0.74 1.96,1.96 0.6,1.96 0.6,3.92 1.36,4.66 1.68,4.66" class="line-follow-guide" />
+      <polyline points="3.72,0.74 1.96,0.74 1.96,1.96 0.75,1.96 0.75,3.92 1.36,4.66 1.68,4.66" class="line-follow-guide" />
 
       <g transform="translate(3.21 0.74)">
         <use xlink:href="#robot"/>

From 56c4c8764f953bb8d0bc51894a7833d7a82e3dcb Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Sat, 25 May 2024 19:31:15 +0100
Subject: [PATCH 14/57] Fix line following alignment behind robot

---
 src/fig-arena.svg | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/fig-arena.svg b/src/fig-arena.svg
index 2288765..f7c0598 100644
--- a/src/fig-arena.svg
+++ b/src/fig-arena.svg
@@ -173,7 +173,7 @@
             class="start-zone"/>
 
       <!-- Line following guide -->
-      <polyline points="3.72,0.74 1.96,0.74 1.96,1.96 0.75,1.96 0.75,3.92 1.36,4.66 1.68,4.66" class="line-follow-guide" />
+      <polyline points="3.72,0.74 1.96,0.74 1.96,1.96 0.75,1.96 0.75,3.92 1.5,4.66 1.68,4.66" class="line-follow-guide" />
 
       <g transform="translate(3.21 0.74)">
         <use xlink:href="#robot"/>

From b817f146f207af9edd04155912e8e209a11ed3cb Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Sat, 25 May 2024 20:59:20 +0100
Subject: [PATCH 15/57] Reduce marker spacing

---
 src/fig-arena.svg | 77 +++++++++++++++++++++++------------------------
 1 file changed, 37 insertions(+), 40 deletions(-)

diff --git a/src/fig-arena.svg b/src/fig-arena.svg
index f7c0598..c1c913d 100644
--- a/src/fig-arena.svg
+++ b/src/fig-arena.svg
@@ -53,7 +53,7 @@
           fill: none;
       }
 
-      .marker {
+      #marker {
           stroke: red;
           stroke-width: 0.04;
       }
@@ -146,6 +146,10 @@
     <rect width="0.5" height="0.3"
           x="-0.25" y="-0.15"
           id="robot"/>
+    <g id="marker-pair">
+      <use xlink:href="#marker" transform="translate(0.075)" class="marker"/>
+      <use xlink:href="#marker" transform="translate(-0.075)" class="marker"/>
+    </g>
     <g id="side-zone">
 
       <!-- passing lines -->
@@ -201,17 +205,10 @@
       <polygon points="5.4,0 4.18,0 5.4,1.22" class="inner-wall" />
 
       <!-- Markers -->
-      <use xlink:href="#marker" transform="translate(1.24 0.51) rotate(90)" class="marker"/>
-      <use xlink:href="#marker" transform="translate(1.24 0.71) rotate(90)" class="marker"/>
-
-      <use xlink:href="#marker" transform="translate(2.19 2.69)" class="marker"/>
-      <use xlink:href="#marker" transform="translate(1.99 2.69)" class="marker"/>
-
-      <use xlink:href="#marker" transform="translate(0.02 2.1) rotate(90)" class="marker"/>
-      <use xlink:href="#marker" transform="translate(0.02 1.9) rotate(90)" class="marker"/>
-
-      <use xlink:href="#marker" transform="translate(4.861 0.681) rotate(45)" class="marker"/>
-      <use xlink:href="#marker" transform="translate(4.721 0.539) rotate(45)" class="marker"/>
+      <use xlink:href="#marker-pair" transform="translate(1.24 0.61) rotate(90)" />
+      <use xlink:href="#marker-pair" transform="translate(2.09 2.69)" />
+      <use xlink:href="#marker-pair" transform="translate(0.02 1.96) rotate(90)" />
+      <use xlink:href="#marker-pair" transform="translate(4.79 0.61) rotate(45)" />
     </g>
   </defs>
   <!-- white background -->
@@ -230,29 +227,29 @@
           class="arena-wall"/>
 
     <!-- Marker labels -->
-    <text class="marker-label" y="0.51" x="1.3">0</text>
-    <text class="marker-label" y="0.71" x="1.3">1</text>
+    <text class="marker-label" y="0.54" x="1.3">0</text>
+    <text class="marker-label" y="0.69" x="1.3">1</text>
 
-    <text class="marker-label" y="4.9" x="4">0</text>
-    <text class="marker-label" y="4.7" x="4">1</text>
+    <text class="marker-label" y="4.88" x="4">0</text>
+    <text class="marker-label" y="4.71" x="4">1</text>
 
-    <text class="marker-label" y="2.58" x="2.15">2</text>
-    <text class="marker-label" y="2.58" x="1.95">3</text>
+    <text class="marker-label" y="2.58" x="2.13">2</text>
+    <text class="marker-label" y="2.58" x="1.98">3</text>
 
-    <text class="marker-label" y="2.85" x="3.16">2</text>
-    <text class="marker-label" y="2.85" x="3.36">3</text>
+    <text class="marker-label" y="2.85" x="3.19">2</text>
+    <text class="marker-label" y="2.85" x="3.35">3</text>
 
-    <text class="marker-label" y="1.9" x="0.1">4</text>
-    <text class="marker-label" y="2.1" x="0.1">5</text>
+    <text class="marker-label" y="1.89" x="0.1">4</text>
+    <text class="marker-label" y="2.04" x="0.1">5</text>
 
-    <text class="marker-label" y="3.52" x="5.22">4</text>
-    <text class="marker-label" y="3.32" x="5.22">5</text>
+    <text class="marker-label" y="3.53" x="5.22">4</text>
+    <text class="marker-label" y="3.37" x="5.22">5</text>
 
-    <text class="marker-label" y="4.63" x="0.58">6</text>
+    <text class="marker-label" y="4.66" x="0.59">6</text>
     <text class="marker-label" y="4.77" x="0.73">7</text>
 
-    <text class="marker-label" y="0.77" x="4.72">6</text>
-    <text class="marker-label" y="0.63" x="4.58">7</text>
+    <text class="marker-label" y="0.73" x="4.72">6</text>
+    <text class="marker-label" y="0.62" x="4.6">7</text>
 
     <!-- Dimensions -->
     <line x1="0" y1="1.28" x2="1.22" y2="1.28" class="dimension" />
@@ -262,9 +259,9 @@
     <line x1="1.22" y1="1.22" x2="1.78" y2="1.22" class="dimension-guide" />
     <text class="dimension" transform="rotate(-90, 1.85 0.61)" y="0.61" x="1.85">1200±100mm</text>
 
-    <line x1="1.48" y1="0" x2="1.48" y2="0.46" class="dimension" />
-    <line x1="1.22" y1="0.46" x2="1.48" y2="0.46" class="dimension-guide" />
-    <text class="dimension" transform="rotate(-90, 1.6 0.3)" y="0.3" x="1.6">460±10mm</text>
+    <line x1="1.48" y1="0" x2="1.48" y2="0.485" class="dimension" />
+    <line x1="1.22" y1="0.485" x2="1.48" y2="0.485" class="dimension-guide" />
+    <text class="dimension" transform="rotate(-90, 1.6 0.3)" y="0.3" x="1.6">490±10mm</text>
 
     <line x1="0" y1="3.9" x2="1.48" y2="3.9" class="dimension" />
     <text class="dimension" y="3.82" x="0.78">1500±100mm</text>
@@ -283,19 +280,19 @@
     <line x1="3.01" y1="3.3" x2="3.01" y2="2.77" class="dimension-guide" />
     <text class="dimension" y="3.4" x="3.02">300±20mm</text>
 
-    <line x1="3.46" y1="3" x2="3.92" y2="3" class="dimension" />
-    <line x1="3.46" y1="3" x2="3.46" y2="2.7" class="dimension-guide" />
+    <line x1="3.425" y1="3" x2="3.92" y2="3" class="dimension" />
+    <line x1="3.425" y1="3" x2="3.425" y2="2.7" class="dimension-guide" />
     <line x1="3.92" y1="3" x2="3.92" y2="2.7" class="dimension-guide" />
-    <text class="dimension" y="3.15" x="3.7">450±10mm</text>
+    <text class="dimension" y="3.15" x="3.7">490±10mm</text>
 
-    <line x1="0.4" y1="1.9" x2="0.4" y2="2.1" class="dimension" />
-    <line x1="0" y1="1.9" x2="0.4" y2="1.9" class="dimension-guide" />
-    <line x1="0" y1="2.1" x2="0.4" y2="2.1" class="dimension-guide" />
-    <text class="dimension" y="2" x="0.75">200±10mm</text>
+    <line x1="0.4" y1="1.885" x2="0.4" y2="2.035" class="dimension" />
+    <line x1="0" y1="1.885" x2="0.4" y2="1.885" class="dimension-guide" />
+    <line x1="0" y1="2.035" x2="0.4" y2="2.035" class="dimension-guide" />
+    <text class="dimension" y="1.96" x="0.75">150±10mm</text>
 
-    <line x1="0.25" y1="2.15" x2="0.25" y2="2.7" class="dimension" />
-    <line x1="0" y1="2.15" x2="0.25" y2="2.15" class="dimension-guide" />
-    <text class="dimension" y="2.4" x="0.55">560±10mm</text>
+    <line x1="0.25" y1="2.1" x2="0.25" y2="2.7" class="dimension" />
+    <line x1="0" y1="2.085" x2="0.25" y2="2.085" class="dimension-guide" />
+    <text class="dimension" y="2.4" x="0.55">600±10mm</text>
 
     <line x1="4.79" y1="0.61" x2="5.4" y2="0" class="dimension-guide" />
     <text class="dimension" y="1.31" x="4.79">1200±100mm</text>

From 38c0a5d324929af82dd5deac428de3dc54f944d5 Mon Sep 17 00:00:00 2001
From: Will Barber <WillB97@users.noreply.github.com>
Date: Tue, 25 Jun 2024 08:45:53 +0100
Subject: [PATCH 16/57] Use marker centerlines and correct dimensions (#42)

---
 src/fig-arena.svg | 39 +++++++++++++++++++--------------------
 1 file changed, 19 insertions(+), 20 deletions(-)

diff --git a/src/fig-arena.svg b/src/fig-arena.svg
index c1c913d..b1d40c4 100644
--- a/src/fig-arena.svg
+++ b/src/fig-arena.svg
@@ -230,8 +230,8 @@
     <text class="marker-label" y="0.54" x="1.3">0</text>
     <text class="marker-label" y="0.69" x="1.3">1</text>
 
-    <text class="marker-label" y="4.88" x="4">0</text>
-    <text class="marker-label" y="4.71" x="4">1</text>
+    <text class="marker-label" y="4.87" x="4">0</text>
+    <text class="marker-label" y="4.72" x="4">1</text>
 
     <text class="marker-label" y="2.58" x="2.13">2</text>
     <text class="marker-label" y="2.58" x="1.98">3</text>
@@ -242,7 +242,7 @@
     <text class="marker-label" y="1.89" x="0.1">4</text>
     <text class="marker-label" y="2.04" x="0.1">5</text>
 
-    <text class="marker-label" y="3.53" x="5.22">4</text>
+    <text class="marker-label" y="3.52" x="5.22">4</text>
     <text class="marker-label" y="3.37" x="5.22">5</text>
 
     <text class="marker-label" y="4.66" x="0.59">6</text>
@@ -253,52 +253,51 @@
 
     <!-- Dimensions -->
     <line x1="0" y1="1.28" x2="1.22" y2="1.28" class="dimension" />
-    <text class="dimension" y="1.37" x="0.61">1200±100mm</text>
+    <text class="dimension" y="1.37" x="0.61">1220±100mm</text>
 
     <line x1="1.78" y1="0" x2="1.78" y2="1.22" class="dimension" />
     <line x1="1.22" y1="1.22" x2="1.78" y2="1.22" class="dimension-guide" />
-    <text class="dimension" transform="rotate(-90, 1.85 0.61)" y="0.61" x="1.85">1200±100mm</text>
+    <text class="dimension" transform="rotate(-90, 1.85 0.61)" y="0.61" x="1.85">1220±100mm</text>
 
-    <line x1="1.48" y1="0" x2="1.48" y2="0.485" class="dimension" />
-    <line x1="1.22" y1="0.485" x2="1.48" y2="0.485" class="dimension-guide" />
-    <text class="dimension" transform="rotate(-90, 1.6 0.3)" y="0.3" x="1.6">490±10mm</text>
+    <line x1="1.48" y1="0" x2="1.48" y2="0.61" class="dimension" />
+    <line x1="1.22" y1="0.61" x2="1.48" y2="0.61" class="dimension-guide" />
+    <text class="dimension" transform="rotate(-90, 1.6 0.3)" y="0.3" x="1.6">610±10mm</text>
 
     <line x1="0" y1="3.9" x2="1.48" y2="3.9" class="dimension" />
-    <text class="dimension" y="3.82" x="0.78">1500±100mm</text>
+    <text class="dimension" y="3.82" x="0.78">1480±100mm</text>
 
     <line x1="4.18" y1="-0.06" x2="5.4" y2="-0.06" class="dimension" />
-    <text class="dimension" y="-0.13" x="4.79">1200±100mm</text>
+    <text class="dimension" y="-0.13" x="4.79">1220±100mm</text>
 
     <line x1="4.18" y1="3.92" x2="5.4" y2="3.92" class="dimension" />
-    <text class="dimension" y="3.85" x="4.79">1200±100mm</text>
+    <text class="dimension" y="3.85" x="4.79">1220±100mm</text>
 
     <line x1="3.8" y1="5.4" x2="3.8" y2="3.92" class="dimension" />
     <line x1="3.8" y1="3.92" x2="4.18" y2="3.92" class="dimension-guide" />
-    <text class="dimension" transform="rotate(90, 3.7 4.66)" y="4.66" x="3.7">1400±100mm</text>
+    <text class="dimension" transform="rotate(90, 3.7 4.66)" y="4.66" x="3.7">1480±100mm</text>
 
     <line x1="2.7" y1="3.3" x2="3.01" y2="3.3" class="dimension" />
     <line x1="3.01" y1="3.3" x2="3.01" y2="2.77" class="dimension-guide" />
     <text class="dimension" y="3.4" x="3.02">300±20mm</text>
 
-    <line x1="3.425" y1="3" x2="3.92" y2="3" class="dimension" />
-    <line x1="3.425" y1="3" x2="3.425" y2="2.7" class="dimension-guide" />
+    <line x1="3.31" y1="3" x2="3.92" y2="3" class="dimension" />
+    <line x1="3.31" y1="3" x2="3.31" y2="2.7" class="dimension-guide" />
     <line x1="3.92" y1="3" x2="3.92" y2="2.7" class="dimension-guide" />
-    <text class="dimension" y="3.15" x="3.7">490±10mm</text>
+    <text class="dimension" y="3.15" x="3.7">610±10mm</text>
 
     <line x1="0.4" y1="1.885" x2="0.4" y2="2.035" class="dimension" />
     <line x1="0" y1="1.885" x2="0.4" y2="1.885" class="dimension-guide" />
     <line x1="0" y1="2.035" x2="0.4" y2="2.035" class="dimension-guide" />
     <text class="dimension" y="1.96" x="0.75">150±10mm</text>
 
-    <line x1="0.25" y1="2.1" x2="0.25" y2="2.7" class="dimension" />
-    <line x1="0" y1="2.085" x2="0.25" y2="2.085" class="dimension-guide" />
-    <text class="dimension" y="2.4" x="0.55">600±10mm</text>
+    <line x1="0.25" y1="1.96" x2="0.25" y2="2.7" class="dimension" />
+    <line x1="0" y1="1.96" x2="0.25" y2="1.96" class="dimension-guide" />
+    <text class="dimension" y="2.4" x="0.55">740±10mm</text>
 
     <line x1="4.79" y1="0.61" x2="5.4" y2="0" class="dimension-guide" />
-    <text class="dimension" y="1.31" x="4.79">1200±100mm</text>
+    <text class="dimension" y="1.31" x="4.79">1220±100mm</text>
 
     <line x1="4.18" y1="1.22" x2="5.4" y2="1.22" class="dimension" />
-    <text class="dimension" y="1.31" x="4.79">1200±100mm</text>
 
     <line x1="0" y1="5.5" x2="5.4" y2="5.5" class="dimension" />
     <text class="dimension" y="5.6" x="2.7">5400±100mm</text>

From b4d07db2be45e1738f7234275ed2250c2710d6df Mon Sep 17 00:00:00 2001
From: Jake Howard <RealOrangeOne@users.noreply.github.com>
Date: Thu, 18 Jul 2024 20:20:34 +0100
Subject: [PATCH 17/57] Rebrand as SRO (#44)

---
 src/index.html | 12 ++++++------
 src/index.scss |  2 +-
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/index.html b/src/index.html
index ab6a65f..dde80ea 100644
--- a/src/index.html
+++ b/src/index.html
@@ -4,16 +4,16 @@
     <meta charset="utf-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
-    <title>Rules 2023 &mdash; Tin Can Rally | SourceBots</title>
+    <title>Rules 2023 &mdash; Tin Can Rally | SRO</title>
     <link rel="stylesheet" href="./index.scss">
     <link rel="stylesheet" href="../node_modules/normalize.css/normalize.css">
-    <link rel="shortcut icon" href="https://sourcebots.co.uk/favicon.ico">
+    <link rel="shortcut icon" href="https://roboticsoutreach.org/favicon.ico">
   </head>
   <body>
     <header>
       <a class="anchor" id="top"></a>
-      <a href="https://www.sourcebots.co.uk/">
-        <img width="300" src="https://sourcebots.co.uk/img/logo-white.svg" alt="SourceBots">
+      <a href="https://roboticsoutreach.org/">
+        <img width="300" src="https://raw.githubusercontent.com/roboticsoutreach/art/master/sro_logo_arm.svg" alt="SRO">
       </a>
       <h1 id="header">
         <a href="#top">TIN CAN RALLY</a>
@@ -176,7 +176,7 @@ <h3><a class="anchor" id="arena-specification"></a>Arena</h3>
         <li>
           Starting area 1 is at the top of the arena diagram, and area 2 is at the bottom.
         <li>
-          SourceBots reserves the right to have match officials in the arena during games.
+          SRO reserves the right to have match officials in the arena during games.
       </ol>
       <h3><a class="anchor" id="flag-specification"></a>Robot flags</h3>
       <img src="./fig-flag.svg" alt="Robot flag" width="40%" height="auto">
@@ -231,7 +231,7 @@ <h3><a class="anchor" id="matches"></a>Matches</h3>
       </ol>
     </section>
     <footer class="no-print">
-        <p>© SourceBots</p>
+        <p>© SRO</p>
     </footer>
   </body>
 </html>
diff --git a/src/index.scss b/src/index.scss
index 68b8bb5..07eeff4 100644
--- a/src/index.scss
+++ b/src/index.scss
@@ -1,4 +1,4 @@
-$primary: #4b35b3;
+$primary: #02A6F2;
 $content-width: 900px;
 
 html, body {

From 0ff128b110bb02def803f1f81b4edd36c3e804f5 Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Thu, 18 Jul 2024 21:47:58 +0100
Subject: [PATCH 18/57] Drop starting area name

---
 src/index.html | 2 --
 1 file changed, 2 deletions(-)

diff --git a/src/index.html b/src/index.html
index dde80ea..c9cfeac 100644
--- a/src/index.html
+++ b/src/index.html
@@ -173,8 +173,6 @@ <h3><a class="anchor" id="arena-specification"></a>Arena</h3>
           The inner walls of the arena have a minimum height of 170mm.
         <li>
           Starting areas are 1000 ±50mm squares and will be marked by tape which is considered part of the starting area. Robots may start anywhere inside their starting area facing any direction.
-        <li>
-          Starting area 1 is at the top of the arena diagram, and area 2 is at the bottom.
         <li>
           SRO reserves the right to have match officials in the arena during games.
       </ol>

From 28034764cd129dd1f1eaefb7984b4e439da02cc7 Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Sat, 20 Jul 2024 17:22:18 +0100
Subject: [PATCH 19/57] Cans may or may not be conductive

---
 src/index.html | 2 --
 1 file changed, 2 deletions(-)

diff --git a/src/index.html b/src/index.html
index c9cfeac..78b1c28 100644
--- a/src/index.html
+++ b/src/index.html
@@ -196,8 +196,6 @@ <h3><a class="anchor" id="can-specification"></a>Cans</h3>
           Cans are 67mm ±3mm in diameter with a height of 100mm ±5mm.
         <li>
           Cans will be arranged as shown in the <a href="#arena-specification">arena specification</a>.
-        <li>
-          Cans are electrically conductive and ferromagnetic.
       </ol>
     </section>
     <section>

From e901c304fca5873fac4be0a9ebc8a651fb6edc28 Mon Sep 17 00:00:00 2001
From: Jake Howard <RealOrangeOne@users.noreply.github.com>
Date: Fri, 26 Jul 2024 20:47:33 +0100
Subject: [PATCH 20/57] Update missed SourceBots reference

Co-authored-by: Sam Martin <82397538+samjmartin04@users.noreply.github.com>
---
 src/index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/index.html b/src/index.html
index 78b1c28..620c774 100644
--- a/src/index.html
+++ b/src/index.html
@@ -42,7 +42,7 @@ <h2><a class="anchor" id="game-rules"></a>Game Rules</h2>
           Before a match begins, participating teams must:
           <ul>
             <li>Present their robot in the staging area, adjacent to the arena, before the scheduled close of staging time. The staging area will be clearly marked on the day.
-            <li>Attach a <a href="#flag-specification">robot flag</a>. Robot flags will be provided by SourceBots officials in the staging area.
+            <li>Attach a <a href="#flag-specification">robot flag</a>. Robot flags will be provided by SRO officials in the staging area.
             <li>Place their robot in the starting area that they are assigned. The robot must be placed such that it is entirely within this starting area, with no parts overhanging its boundary. Its orientation does not matter.
             <li>Vacate the arena before the scheduled start time. At this point there must be no interaction with the robot.
             <li>Follow the directions of the match officials.

From 69aa5eda5935379ec12fab0287b4e0bd641eda55 Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Thu, 18 Apr 2024 22:44:44 +0100
Subject: [PATCH 21/57] Change cans to be just obsticles

This means teams are less likely to waste time building complex mechanisms to pick them up, and instead focus on driving around.
---
 src/fig-arena.svg | 34 +++++++++++++++++++++-------------
 src/index.html    | 11 ++---------
 2 files changed, 23 insertions(+), 22 deletions(-)

diff --git a/src/fig-arena.svg b/src/fig-arena.svg
index b1d40c4..f75164b 100644
--- a/src/fig-arena.svg
+++ b/src/fig-arena.svg
@@ -154,9 +154,9 @@
 
       <!-- passing lines -->
       <line class="scoring-line"
-            x1="2.7"
+            x1="3.92"
             y1="0"
-            x2="2.7"
+            x2="3.92"
             y2="1.48" />
       <line class="scoring-line"
             x1="0"
@@ -185,9 +185,10 @@
 
       <!-- cans -->
       <use xlink:href="#can" transform="translate(4.18 1.22)" class="can"/>
-      <use xlink:href="#can" transform="translate(1.22 1.48)" class="can"/>
-      <use xlink:href="#can" transform="translate(2.39 2.62)" class="can"/>
-      <use xlink:href="#can" transform="translate(0.07 2.77)" class="can"/>
+      <use xlink:href="#can" transform="translate(1.22 1.78)" class="can"/>
+      <use xlink:href="#can" transform="translate(2.24 2.1)" class="can"/>
+      <use xlink:href="#can" transform="translate(0.37 2.77)" class="can"/>
+      <use xlink:href="#can" transform="translate(1.11 2.77)" class="can"/>
 
       <!-- Inner wall -->
       <rect width="1.22"
@@ -269,16 +270,15 @@
     <line x1="4.18" y1="-0.06" x2="5.4" y2="-0.06" class="dimension" />
     <text class="dimension" y="-0.13" x="4.79">1220±100mm</text>
 
-    <line x1="4.18" y1="3.92" x2="5.4" y2="3.92" class="dimension" />
-    <text class="dimension" y="3.85" x="4.79">1220±100mm</text>
+    <line x1="4.18" y1="3.62" x2="5.4" y2="3.62" class="dimension" />
+    <text class="dimension" y="3.72" x="4.79">1220±100mm</text>
 
-    <line x1="3.8" y1="5.4" x2="3.8" y2="3.92" class="dimension" />
-    <line x1="3.8" y1="3.92" x2="4.18" y2="3.92" class="dimension-guide" />
-    <text class="dimension" transform="rotate(90, 3.7 4.66)" y="4.66" x="3.7">1480±100mm</text>
+    <line x1="3.8" y1="5.4" x2="3.8" y2="3.62" class="dimension" />
+    <line x1="3.8" y1="3.62" x2="4.18" y2="3.62" class="dimension-guide" />
+    <text class="dimension" transform="rotate(90, 3.7 4.66)" y="4.66" x="3.7">1700±100mm</text>
 
-    <line x1="2.7" y1="3.3" x2="3.01" y2="3.3" class="dimension" />
-    <line x1="3.01" y1="3.3" x2="3.01" y2="2.77" class="dimension-guide" />
-    <text class="dimension" y="3.4" x="3.02">300±20mm</text>
+    <line x1="2.24" y1="2.11" x2="2.24" y2="2.7" class="dimension" />
+    <text class="dimension" y="2.35" x="1.96">300±20mm</text>
 
     <line x1="3.31" y1="3" x2="3.92" y2="3" class="dimension" />
     <line x1="3.31" y1="3" x2="3.31" y2="2.7" class="dimension-guide" />
@@ -299,6 +299,14 @@
 
     <line x1="4.18" y1="1.22" x2="5.4" y2="1.22" class="dimension" />
 
+    <line x1="5.03" y1="2.77" x2="5.4" y2="2.77" class="dimension" />
+    <line x1="5.03" y1="2.77" x2="5.03" y2="2.7" class="dimension-guide" />
+    <text class="dimension" y="2.9" x="5.05">370±100mm</text>
+
+    <line x1="3.92" y1="2.5" x2="4.29" y2="2.5" class="dimension" />
+    <line x1="4.29" y1="2.5" x2="4.29" y2="2.56" class="dimension-guide" />
+    <text class="dimension" y="2.4" x="4.26">370±100mm</text>
+
     <line x1="0" y1="5.5" x2="5.4" y2="5.5" class="dimension" />
     <text class="dimension" y="5.6" x="2.7">5400±100mm</text>
 
diff --git a/src/index.html b/src/index.html
index 620c774..193084e 100644
--- a/src/index.html
+++ b/src/index.html
@@ -37,7 +37,7 @@ <h2>Table of Contents</h2>
       <h2><a class="anchor" id="game-rules"></a>Game Rules</h2>
       <ol>
         <li>
-          The objective of the game, called <strong>Tin Can Rally</strong>, is to race around a track, picking up tin cans along the way.
+          The objective of the game, called <strong>Tin Can Rally</strong>, is to race around a track, avoiding tin cans along the way.
         <li>
           Before a match begins, participating teams must:
           <ul>
@@ -60,18 +60,11 @@ <h2><a class="anchor" id="game-rules"></a>Game Rules</h2>
             <li>
               <strong>1</strong> point is awarded each time a robot crosses a scoring line in the anti-clockwise direction.
             <li>
-              Robots can pick up tin cans which are in the track.
-              For every can a robot is carrying when it crosses a scoring line, the number of points awarded is <strong>doubled</strong>.
-              <br>
-              For example, a robot carrying two cans is awarded four points.
-            <li>
-              At the end of each lap - defined as every sixth scoring line crossed in a forward direction - a robot is awarded an additional <strong>4</strong> points above the points it would normally get for the crossing.
+              At the end of each lap - defined as every forward crossing of the scoring line immediately behind the robot's starting area - a robot is awarded an additional <strong>4</strong> points for the crossing.
             <li>
               A robot is deemed to have passed a scoring line when the whole robot passes the line.
             <li>
               If a robot passes backwards (i.e: clockwise) over any scoring line it must "undo" these before any further forwards line crossings will be counted.
-            <li>
-              At the end of a match, each robot is awarded <strong>2</strong> additional points for each tin can it is carrying.
           </ol>
         <li>
           At the end of the match the robot with the most points wins.

From 3c56a6ba74b802cb1c1669bb6bdfa7a501d6e80b Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Sat, 25 May 2024 09:38:03 +0100
Subject: [PATCH 22/57] Restore starting scoring line

This helps with the barrier to entry for getting at least 1 point
---
 src/fig-arena.svg | 4 ++--
 src/index.html    | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/fig-arena.svg b/src/fig-arena.svg
index f75164b..778511e 100644
--- a/src/fig-arena.svg
+++ b/src/fig-arena.svg
@@ -154,9 +154,9 @@
 
       <!-- passing lines -->
       <line class="scoring-line"
-            x1="3.92"
+            x1="2.7"
             y1="0"
-            x2="3.92"
+            x2="2.7"
             y2="1.48" />
       <line class="scoring-line"
             x1="0"
diff --git a/src/index.html b/src/index.html
index 193084e..de584ed 100644
--- a/src/index.html
+++ b/src/index.html
@@ -60,7 +60,7 @@ <h2><a class="anchor" id="game-rules"></a>Game Rules</h2>
             <li>
               <strong>1</strong> point is awarded each time a robot crosses a scoring line in the anti-clockwise direction.
             <li>
-              At the end of each lap - defined as every forward crossing of the scoring line immediately behind the robot's starting area - a robot is awarded an additional <strong>4</strong> points for the crossing.
+              At the end of each lap - defined as every subsequent forward crossing of the scoring line immediately in front of the robot's starting area - a robot is awarded an additional <strong>4</strong> points for the crossing.
             <li>
               A robot is deemed to have passed a scoring line when the whole robot passes the line.
             <li>

From d4b60d16549916d0895055d034fa63d4bd04bc92 Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Sat, 25 May 2024 09:46:52 +0100
Subject: [PATCH 23/57] Add missing dimension

---
 src/fig-arena.svg | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/fig-arena.svg b/src/fig-arena.svg
index 778511e..2540319 100644
--- a/src/fig-arena.svg
+++ b/src/fig-arena.svg
@@ -277,8 +277,11 @@
     <line x1="3.8" y1="3.62" x2="4.18" y2="3.62" class="dimension-guide" />
     <text class="dimension" transform="rotate(90, 3.7 4.66)" y="4.66" x="3.7">1700±100mm</text>
 
+    <line x1="2.24" y1="2.11" x2="2.7" y2="2.11" class="dimension" />
+    <text class="dimension" y="1.96" x="2.38">460±20mm</text>
+
     <line x1="2.24" y1="2.11" x2="2.24" y2="2.7" class="dimension" />
-    <text class="dimension" y="2.35" x="1.96">300±20mm</text>
+    <text class="dimension" y="2.35" x="1.96">600±20mm</text>
 
     <line x1="3.31" y1="3" x2="3.92" y2="3" class="dimension" />
     <line x1="3.31" y1="3" x2="3.31" y2="2.7" class="dimension-guide" />

From c303d11851f5461df76b28da91cbf085336ee413 Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Fri, 26 Jul 2024 20:49:47 +0100
Subject: [PATCH 24/57] Fix units and tolerance spelling

Units shouldn't be duplicated
---
 src/index.html | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/index.html b/src/index.html
index de584ed..6cf3c0a 100644
--- a/src/index.html
+++ b/src/index.html
@@ -150,7 +150,7 @@ <h3><a class="anchor" id="marker-specification"></a>Markers</h3>
         Sixteen arena wall markers are positioned around the arena as shown in the <a href="#arena-specification">arena specification</a>. Marker codes are mirrored on each side of the arena.
       </p>
       <p>
-        Wall markers are placed such that the bottom of the marker is 20 ±5mm from the arena floor.
+        Wall markers are placed such that the bottom of the marker is 20±5mm from the arena floor.
       </p>
       <h3><a class="anchor" id="arena-specification"></a>Arena</h3>
       <img src="./fig-arena.svg" alt="Arena diagram" width="90%" height="auto">
@@ -165,7 +165,7 @@ <h3><a class="anchor" id="arena-specification"></a>Arena</h3>
         <li>
           The inner walls of the arena have a minimum height of 170mm.
         <li>
-          Starting areas are 1000 ±50mm squares and will be marked by tape which is considered part of the starting area. Robots may start anywhere inside their starting area facing any direction.
+          Starting areas are 1000±50mm squares and will be marked by tape which is considered part of the starting area. Robots may start anywhere inside their starting area facing any direction.
         <li>
           SRO reserves the right to have match officials in the arena during games.
       </ol>
@@ -184,9 +184,9 @@ <h3><a class="anchor" id="flag-specification"></a>Robot flags</h3>
       <h3><a class="anchor" id="can-specification"></a>Cans</h3>
       <ol>
         <li>
-          Cans are cylindrical metallic containers weighing 350g ±20g.
+          Cans are cylindrical metallic containers weighing 350±20g.
         <li>
-          Cans are 67mm ±3mm in diameter with a height of 100mm ±5mm.
+          Cans are 67±3mm in diameter with a height of 100±5mm.
         <li>
           Cans will be arranged as shown in the <a href="#arena-specification">arena specification</a>.
       </ol>

From 17346f4e24ca5462ef13649e35c7929f2c299927 Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Fri, 26 Jul 2024 20:54:04 +0100
Subject: [PATCH 25/57] Mention provided battery box

---
 src/index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/index.html b/src/index.html
index 6cf3c0a..27b8bab 100644
--- a/src/index.html
+++ b/src/index.html
@@ -93,7 +93,7 @@ <h2><a class="anchor" id="regulations"></a>Regulations</h2>
               Robots must have all electronics securely mounted and easily removable.
             <li>
               Robots must provide adequate protection to the batteries they use, including
-              protection from mechanical damage.
+              using the provided battery box.
             <li>
               Robots must have a power switch, obvious and on top, which will completely immobilise
               the robot.

From 7da996b5f8112455330455dbe60b12b3ebd28966 Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Fri, 26 Jul 2024 21:10:55 +0100
Subject: [PATCH 26/57] Clarify arena size

---
 src/index.html | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/src/index.html b/src/index.html
index 27b8bab..cbf327b 100644
--- a/src/index.html
+++ b/src/index.html
@@ -156,8 +156,7 @@ <h3><a class="anchor" id="arena-specification"></a>Arena</h3>
       <img src="./fig-arena.svg" alt="Arena diagram" width="90%" height="auto">
       <ol>
         <li>
-          The above figure represents, to scale, a birds eye view of the arena. The arena is
-          <strong>5.4m</strong> square.
+          The above figure represents, to scale, a birds eye view of the arena. The arena is a square with side length <strong>5.4m</strong>.
         <li>
           The floor of the arena is covered with a closed-loop, short pile carpet.
         <li>

From 8794d28dbfd63961cc6e7653322e09e7ca4a8145 Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Fri, 26 Jul 2024 21:20:14 +0100
Subject: [PATCH 27/57] Use mass rather than weight

---
 src/index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/index.html b/src/index.html
index cbf327b..519693b 100644
--- a/src/index.html
+++ b/src/index.html
@@ -183,7 +183,7 @@ <h3><a class="anchor" id="flag-specification"></a>Robot flags</h3>
       <h3><a class="anchor" id="can-specification"></a>Cans</h3>
       <ol>
         <li>
-          Cans are cylindrical metallic containers weighing 350±20g.
+          Cans are cylindrical metallic containers with a mass of 350±20g.
         <li>
           Cans are 67±3mm in diameter with a height of 100±5mm.
         <li>

From 5592ff3876b6616fc240ceaee390c0fe946860b0 Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Fri, 26 Jul 2024 21:30:35 +0100
Subject: [PATCH 28/57] Document line follow guide

---
 src/index.html | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/src/index.html b/src/index.html
index 519693b..9c5a0a1 100644
--- a/src/index.html
+++ b/src/index.html
@@ -180,14 +180,12 @@ <h3><a class="anchor" id="flag-specification"></a>Robot flags</h3>
         <li>
           The mounting cylinder must be permanently affixed to the main chassis of a robot, and vertical when the robot is in its typical stopped position.
       </ol>
-      <h3><a class="anchor" id="can-specification"></a>Cans</h3>
+      <h3><a class="anchor" id="line-follow-specification"></a>Line follow guide</h3>
       <ol>
         <li>
-          Cans are cylindrical metallic containers with a mass of 350±20g.
+          The line follow guide is marked with tape on the arena floor.
         <li>
-          Cans are 67±3mm in diameter with a height of 100±5mm.
-        <li>
-          Cans will be arranged as shown in the <a href="#arena-specification">arena specification</a>.
+          The guide is marked using black take with width 50mm.
       </ol>
     </section>
     <section>

From ad5d359b8d916ce1f19e2189ef2b0392cb6d57b8 Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Fri, 26 Jul 2024 21:52:01 +0100
Subject: [PATCH 29/57] Update year in title

---
 src/index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/index.html b/src/index.html
index 9c5a0a1..bdf5348 100644
--- a/src/index.html
+++ b/src/index.html
@@ -4,7 +4,7 @@
     <meta charset="utf-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
-    <title>Rules 2023 &mdash; Tin Can Rally | SRO</title>
+    <title>Rules 2024 &mdash; Tin Can Rally | SRO</title>
     <link rel="stylesheet" href="./index.scss">
     <link rel="stylesheet" href="../node_modules/normalize.css/normalize.css">
     <link rel="shortcut icon" href="https://roboticsoutreach.org/favicon.ico">

From 702bd3e0058b003fb54f179f24ed7441489d8bdb Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Fri, 26 Jul 2024 21:53:06 +0100
Subject: [PATCH 30/57] Securely mount the battery box

---
 src/index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/index.html b/src/index.html
index bdf5348..0a54dc9 100644
--- a/src/index.html
+++ b/src/index.html
@@ -93,7 +93,7 @@ <h2><a class="anchor" id="regulations"></a>Regulations</h2>
               Robots must have all electronics securely mounted and easily removable.
             <li>
               Robots must provide adequate protection to the batteries they use, including
-              using the provided battery box.
+              using the provided battery box which must be securely mounted to the robot.
             <li>
               Robots must have a power switch, obvious and on top, which will completely immobilise
               the robot.

From 553318f0267ef5d07dcf4589f70cf83673980b79 Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Sat, 27 Jul 2024 14:30:55 +0100
Subject: [PATCH 31/57] Fix typo

---
 src/index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/index.html b/src/index.html
index 0a54dc9..73b3a3c 100644
--- a/src/index.html
+++ b/src/index.html
@@ -185,7 +185,7 @@ <h3><a class="anchor" id="line-follow-specification"></a>Line follow guide</h3>
         <li>
           The line follow guide is marked with tape on the arena floor.
         <li>
-          The guide is marked using black take with width 50mm.
+          The guide is marked using black tape with width 50mm.
       </ol>
     </section>
     <section>

From 0acabb1a3e7961edcb9c426cab353cee24a797d6 Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Sat, 27 Jul 2024 16:53:27 +0100
Subject: [PATCH 32/57] Update dimensions of line follow guide

---
 src/fig-arena.svg | 9 ++++++++-
 src/index.html    | 2 +-
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/fig-arena.svg b/src/fig-arena.svg
index 2540319..e9edb2c 100644
--- a/src/fig-arena.svg
+++ b/src/fig-arena.svg
@@ -23,7 +23,13 @@
       .line-follow-guide {
           fill: none;
           stroke: black;
-          stroke-width: .03;
+          stroke-width: .012;
+      }
+
+      .line-follow-guide-back {
+          fill: none;
+          stroke: white;
+          stroke-width: .05;
       }
 
       .arena-wall {
@@ -177,6 +183,7 @@
             class="start-zone"/>
 
       <!-- Line following guide -->
+      <polyline points="3.72,0.74 1.96,0.74 1.96,1.96 0.75,1.96 0.75,3.92 1.5,4.66 1.68,4.66" class="line-follow-guide-back" />
       <polyline points="3.72,0.74 1.96,0.74 1.96,1.96 0.75,1.96 0.75,3.92 1.5,4.66 1.68,4.66" class="line-follow-guide" />
 
       <g transform="translate(3.21 0.74)">
diff --git a/src/index.html b/src/index.html
index 73b3a3c..a4c6181 100644
--- a/src/index.html
+++ b/src/index.html
@@ -185,7 +185,7 @@ <h3><a class="anchor" id="line-follow-specification"></a>Line follow guide</h3>
         <li>
           The line follow guide is marked with tape on the arena floor.
         <li>
-          The guide is marked using black tape with width 50mm.
+          The guide is marked using black tape with width 12±1mm. The black tape is positioned centrally on a piece of white tape with width 50±5mm.
       </ol>
     </section>
     <section>

From 554b849405da10bb815a1504cf52465a97243cdd Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Sat, 27 Jul 2024 18:04:28 +0100
Subject: [PATCH 33/57] Make scoring line size to scale

---
 src/fig-arena.svg | 12 ++++++------
 src/index.html    |  2 ++
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/fig-arena.svg b/src/fig-arena.svg
index e9edb2c..44f1695 100644
--- a/src/fig-arena.svg
+++ b/src/fig-arena.svg
@@ -52,9 +52,9 @@
 
       .scoring-line {
           stroke: #333;
-          stroke-width: 0.015;
+          stroke-width: 0.05;
           /*stroke-dasharray: 0.14142135, 0.14142135;*/
-          stroke-dasharray: 0.06 0.06;
+          stroke-dasharray: 0.05 0.03;
           stroke-dashoffset: -50%;
           fill: none;
       }
@@ -160,15 +160,15 @@
 
       <!-- passing lines -->
       <line class="scoring-line"
-            x1="2.7"
+            x1="2.715"
             y1="0"
-            x2="2.7"
+            x2="2.715"
             y2="1.48" />
       <line class="scoring-line"
             x1="0"
-            y1="2.7"
+            y1="2.715"
             x2="1.48"
-            y2="2.7" />
+            y2="2.715" />
       <line class="scoring-line"
             x1="1.22"
             y1="1.22"
diff --git a/src/index.html b/src/index.html
index a4c6181..8f20ec0 100644
--- a/src/index.html
+++ b/src/index.html
@@ -163,6 +163,8 @@ <h3><a class="anchor" id="arena-specification"></a>Arena</h3>
           The perimeter of the arena floor is delimited by the arena wall, which has a minimum height of 250mm.
         <li>
           The inner walls of the arena have a minimum height of 170mm.
+        <li>
+          Scoring lines are marked using tape with width 50±5mm.
         <li>
           Starting areas are 1000±50mm squares and will be marked by tape which is considered part of the starting area. Robots may start anywhere inside their starting area facing any direction.
         <li>

From 00775827999418574a8307ab96105d0a307d7076 Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Sat, 27 Jul 2024 18:05:16 +0100
Subject: [PATCH 34/57] Specify the line following guide is always on top

---
 src/index.html | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/index.html b/src/index.html
index 8f20ec0..0d1a4fa 100644
--- a/src/index.html
+++ b/src/index.html
@@ -188,6 +188,8 @@ <h3><a class="anchor" id="line-follow-specification"></a>Line follow guide</h3>
           The line follow guide is marked with tape on the arena floor.
         <li>
           The guide is marked using black tape with width 12±1mm. The black tape is positioned centrally on a piece of white tape with width 50±5mm.
+        <li>
+          Where the line follow guide passes another taped line, the guide and surrounding contrast will always be on top.
       </ol>
     </section>
     <section>

From 4c6040419485ca2fa0aade6efa829c1fe7d70f8b Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Sun, 28 Jul 2024 15:39:57 +0100
Subject: [PATCH 35/57] Use solid lines for scoring lines

---
 src/fig-arena.svg | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/src/fig-arena.svg b/src/fig-arena.svg
index 44f1695..8fd6f01 100644
--- a/src/fig-arena.svg
+++ b/src/fig-arena.svg
@@ -53,9 +53,6 @@
       .scoring-line {
           stroke: #333;
           stroke-width: 0.05;
-          /*stroke-dasharray: 0.14142135, 0.14142135;*/
-          stroke-dasharray: 0.05 0.03;
-          stroke-dashoffset: -50%;
           fill: none;
       }
 

From a96a8f697061d9c122935bfa2399c43b97702649 Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Thu, 1 Aug 2024 13:54:20 +0100
Subject: [PATCH 36/57] Penalise knocking over cans

---
 src/fig-arena.svg | 8 ++++----
 src/index.html    | 6 ++++--
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/fig-arena.svg b/src/fig-arena.svg
index 8fd6f01..ea59b6e 100644
--- a/src/fig-arena.svg
+++ b/src/fig-arena.svg
@@ -191,8 +191,8 @@
       <use xlink:href="#can" transform="translate(4.18 1.22)" class="can"/>
       <use xlink:href="#can" transform="translate(1.22 1.78)" class="can"/>
       <use xlink:href="#can" transform="translate(2.24 2.1)" class="can"/>
-      <use xlink:href="#can" transform="translate(0.37 2.77)" class="can"/>
-      <use xlink:href="#can" transform="translate(1.11 2.77)" class="can"/>
+      <use xlink:href="#can" transform="translate(0.37 2.81)" class="can"/>
+      <use xlink:href="#can" transform="translate(1.11 2.62)" class="can"/>
 
       <!-- Inner wall -->
       <rect width="1.22"
@@ -307,11 +307,11 @@
     <line x1="4.18" y1="1.22" x2="5.4" y2="1.22" class="dimension" />
 
     <line x1="5.03" y1="2.77" x2="5.4" y2="2.77" class="dimension" />
-    <line x1="5.03" y1="2.77" x2="5.03" y2="2.7" class="dimension-guide" />
+    <line x1="5.03" y1="2.77" x2="5.03" y2="2.68" class="dimension-guide" />
     <text class="dimension" y="2.9" x="5.05">370±100mm</text>
 
     <line x1="3.92" y1="2.5" x2="4.29" y2="2.5" class="dimension" />
-    <line x1="4.29" y1="2.5" x2="4.29" y2="2.56" class="dimension-guide" />
+    <line x1="4.29" y1="2.5" x2="4.29" y2="2.7" class="dimension-guide" />
     <text class="dimension" y="2.4" x="4.26">370±100mm</text>
 
     <line x1="0" y1="5.5" x2="5.4" y2="5.5" class="dimension" />
diff --git a/src/index.html b/src/index.html
index 0d1a4fa..44bf1e2 100644
--- a/src/index.html
+++ b/src/index.html
@@ -58,13 +58,15 @@ <h2><a class="anchor" id="game-rules"></a>Game Rules</h2>
           Game points will be awarded as follows:
           <ol type="a">
             <li>
-              <strong>1</strong> point is awarded each time a robot crosses a scoring line in the anti-clockwise direction.
+              <strong>3</strong> points are awarded each time a robot crosses a scoring line in the anti-clockwise direction.
             <li>
-              At the end of each lap - defined as every subsequent forward crossing of the scoring line immediately in front of the robot's starting area - a robot is awarded an additional <strong>4</strong> points for the crossing.
+              At the end of each lap - defined as every subsequent forward crossing of the scoring line immediately in front of the robot's starting area - a robot is awarded an additional <strong>8</strong> points for the crossing.
             <li>
               A robot is deemed to have passed a scoring line when the whole robot passes the line.
             <li>
               If a robot passes backwards (i.e: clockwise) over any scoring line it must "undo" these before any further forwards line crossings will be counted.
+            <li>
+              If a robot knocks over a can since its last forward scoring line crossing, the next crossing is only worth <strong>1</strong> point.
           </ol>
         <li>
           At the end of the match the robot with the most points wins.

From 631e85bb6f68a12162ac8cf7173bedad53df85c4 Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Thu, 1 Aug 2024 14:30:18 +0100
Subject: [PATCH 37/57] Reword can knocking rule to be positive

---
 src/index.html | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/index.html b/src/index.html
index 44bf1e2..8c09242 100644
--- a/src/index.html
+++ b/src/index.html
@@ -58,7 +58,7 @@ <h2><a class="anchor" id="game-rules"></a>Game Rules</h2>
           Game points will be awarded as follows:
           <ol type="a">
             <li>
-              <strong>3</strong> points are awarded each time a robot crosses a scoring line in the anti-clockwise direction.
+              <strong>2</strong> points are awarded each time a robot crosses a scoring line in the anti-clockwise direction.
             <li>
               At the end of each lap - defined as every subsequent forward crossing of the scoring line immediately in front of the robot's starting area - a robot is awarded an additional <strong>8</strong> points for the crossing.
             <li>
@@ -66,7 +66,7 @@ <h2><a class="anchor" id="game-rules"></a>Game Rules</h2>
             <li>
               If a robot passes backwards (i.e: clockwise) over any scoring line it must "undo" these before any further forwards line crossings will be counted.
             <li>
-              If a robot knocks over a can since its last forward scoring line crossing, the next crossing is only worth <strong>1</strong> point.
+              If a robot doesn't knock over a can since its last forward scoring line crossing, the crossing is worth an additional <strong>1</strong> point.
           </ol>
         <li>
           At the end of the match the robot with the most points wins.

From 3c1a2c14e37760d94bbb591a24cf6943aead5884 Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Thu, 1 Aug 2024 14:38:11 +0100
Subject: [PATCH 38/57] Improve wording around knocking over cans

---
 src/index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/index.html b/src/index.html
index 8c09242..8642596 100644
--- a/src/index.html
+++ b/src/index.html
@@ -66,7 +66,7 @@ <h2><a class="anchor" id="game-rules"></a>Game Rules</h2>
             <li>
               If a robot passes backwards (i.e: clockwise) over any scoring line it must "undo" these before any further forwards line crossings will be counted.
             <li>
-              If a robot doesn't knock over a can since its last forward scoring line crossing, the crossing is worth an additional <strong>1</strong> point.
+              If a robot avoids knocking over any cans since its last forward scoring line crossing, the crossing is worth an additional <strong>1</strong> point.
           </ol>
         <li>
           At the end of the match the robot with the most points wins.

From db75981bdbbe54324fcf68685713ac1eee5368fc Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Thu, 1 Aug 2024 18:22:02 +0100
Subject: [PATCH 39/57] Reduce value of laps

8 is too high
---
 src/index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/index.html b/src/index.html
index 8642596..9a9ab2d 100644
--- a/src/index.html
+++ b/src/index.html
@@ -60,7 +60,7 @@ <h2><a class="anchor" id="game-rules"></a>Game Rules</h2>
             <li>
               <strong>2</strong> points are awarded each time a robot crosses a scoring line in the anti-clockwise direction.
             <li>
-              At the end of each lap - defined as every subsequent forward crossing of the scoring line immediately in front of the robot's starting area - a robot is awarded an additional <strong>8</strong> points for the crossing.
+              At the end of each lap - defined as every subsequent forward crossing of the scoring line immediately in front of the robot's starting area - a robot is awarded an additional <strong>4</strong> points for the crossing.
             <li>
               A robot is deemed to have passed a scoring line when the whole robot passes the line.
             <li>

From 5d6483fac1edfce0a8dbb4097831f7b931744f8c Mon Sep 17 00:00:00 2001
From: Jake Howard <RealOrangeOne@users.noreply.github.com>
Date: Sun, 4 Aug 2024 11:57:33 +0100
Subject: [PATCH 40/57] Simplify assistance from staff definition

Co-authored-by: Alistair Lynn <arplynn@gmail.com>
---
 src/index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/index.html b/src/index.html
index 9a9ab2d..2b07eab 100644
--- a/src/index.html
+++ b/src/index.html
@@ -117,7 +117,7 @@ <h2><a class="anchor" id="regulations"></a>Regulations</h2>
         <li>
           Robots must not deliberately drop any part of themselves onto the arena.
         <li>
-          Any assistance from Smallpeice Trust staff and volunteers is provided without guarantees.
+          Any assistance from staff is provided without guarantees.
         <li>
           Robots must have a <a href="#flag-specification">flag mounting</a>.
       </ol>

From 58444a291153cf4ac138daa0e02a2c78ff0656b1 Mon Sep 17 00:00:00 2001
From: Jake Howard <RealOrangeOne@users.noreply.github.com>
Date: Sun, 4 Aug 2024 12:01:16 +0100
Subject: [PATCH 41/57] Use "match" rather than "SRO" for officials definition

Co-authored-by: Alistair Lynn <arplynn@gmail.com>
---
 src/index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/index.html b/src/index.html
index 2b07eab..f7728a2 100644
--- a/src/index.html
+++ b/src/index.html
@@ -42,7 +42,7 @@ <h2><a class="anchor" id="game-rules"></a>Game Rules</h2>
           Before a match begins, participating teams must:
           <ul>
             <li>Present their robot in the staging area, adjacent to the arena, before the scheduled close of staging time. The staging area will be clearly marked on the day.
-            <li>Attach a <a href="#flag-specification">robot flag</a>. Robot flags will be provided by SRO officials in the staging area.
+            <li>Attach a <a href="#flag-specification">robot flag</a>. Robot flags will be provided by match officials in the staging area.
             <li>Place their robot in the starting area that they are assigned. The robot must be placed such that it is entirely within this starting area, with no parts overhanging its boundary. Its orientation does not matter.
             <li>Vacate the arena before the scheduled start time. At this point there must be no interaction with the robot.
             <li>Follow the directions of the match officials.

From ecbeb0d372ab000f65da3ada1d747e84fa2ce82f Mon Sep 17 00:00:00 2001
From: Jake Howard <RealOrangeOne@users.noreply.github.com>
Date: Sun, 4 Aug 2024 12:01:59 +0100
Subject: [PATCH 42/57] Simplify definition of passing line

Co-authored-by: Alistair Lynn <arplynn@gmail.com>
---
 src/index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/index.html b/src/index.html
index f7728a2..52172fa 100644
--- a/src/index.html
+++ b/src/index.html
@@ -62,7 +62,7 @@ <h2><a class="anchor" id="game-rules"></a>Game Rules</h2>
             <li>
               At the end of each lap - defined as every subsequent forward crossing of the scoring line immediately in front of the robot's starting area - a robot is awarded an additional <strong>4</strong> points for the crossing.
             <li>
-              A robot is deemed to have passed a scoring line when the whole robot passes the line.
+              A robot is deemed to have passed a scoring line when the entire robot has passed the line.
             <li>
               If a robot passes backwards (i.e: clockwise) over any scoring line it must "undo" these before any further forwards line crossings will be counted.
             <li>

From 9dfa105679aaf57c29bd60790809b731b249454e Mon Sep 17 00:00:00 2001
From: Jake Howard <RealOrangeOne@users.noreply.github.com>
Date: Sun, 4 Aug 2024 12:02:31 +0100
Subject: [PATCH 43/57] Require power board on top of robot

Co-authored-by: Alistair Lynn <arplynn@gmail.com>
---
 src/index.html | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/src/index.html b/src/index.html
index 52172fa..b3601ac 100644
--- a/src/index.html
+++ b/src/index.html
@@ -97,8 +97,7 @@ <h2><a class="anchor" id="regulations"></a>Regulations</h2>
               Robots must provide adequate protection to the batteries they use, including
               using the provided battery box which must be securely mounted to the robot.
             <li>
-              Robots must have a power switch, obvious and on top, which will completely immobilise
-              the robot.
+              The power board must be mounted on the top of the robot, with its buttons easily accessible.
           </ol>
         <li>
           While accidental bumps and scrapes are inevitable, the sport is non-contact.

From 19e803028877faebf6304bf3719c897f35c59f4f Mon Sep 17 00:00:00 2001
From: Jake Howard <RealOrangeOne@users.noreply.github.com>
Date: Sun, 4 Aug 2024 12:03:18 +0100
Subject: [PATCH 44/57] Improve alt text of flag diagram

Co-authored-by: Alistair Lynn <arplynn@gmail.com>
---
 src/index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/index.html b/src/index.html
index b3601ac..a571824 100644
--- a/src/index.html
+++ b/src/index.html
@@ -172,7 +172,7 @@ <h3><a class="anchor" id="arena-specification"></a>Arena</h3>
           SRO reserves the right to have match officials in the arena during games.
       </ol>
       <h3><a class="anchor" id="flag-specification"></a>Robot flags</h3>
-      <img src="./fig-flag.svg" alt="Robot flag" width="40%" height="auto">
+      <img src="./fig-flag.svg" alt="A small red flag, attached to a flag pole" width="40%" height="auto">
       <ol>
         <li>
           A "robot flag" is a removable identifier that will be attached to a robot throughout a match. It allows spectators to easily associate a robot with its starting area.

From f96d8dd135ee4a317ef11e452029968fe29e6367 Mon Sep 17 00:00:00 2001
From: Jake Howard <RealOrangeOne@users.noreply.github.com>
Date: Sun, 4 Aug 2024 12:04:11 +0100
Subject: [PATCH 45/57] Use present tense for awarded points

Co-authored-by: Alistair Lynn <arplynn@gmail.com>
---
 src/index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/index.html b/src/index.html
index a571824..033f809 100644
--- a/src/index.html
+++ b/src/index.html
@@ -55,7 +55,7 @@ <h2><a class="anchor" id="game-rules"></a>Game Rules</h2>
         <li>
           Robots will be started at the direction of match officials.
         <li>
-          Game points will be awarded as follows:
+          Game points are awarded as follows:
           <ol type="a">
             <li>
               <strong>2</strong> points are awarded each time a robot crosses a scoring line in the anti-clockwise direction.

From b39e22c255f481b38444f029fb14a8b3cd9639a5 Mon Sep 17 00:00:00 2001
From: Jake Howard <RealOrangeOne@users.noreply.github.com>
Date: Sun, 4 Aug 2024 12:05:12 +0100
Subject: [PATCH 46/57] Use millimetres for all measurements

Co-authored-by: Alistair Lynn <arplynn@gmail.com>
---
 src/index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/index.html b/src/index.html
index 033f809..1f12a58 100644
--- a/src/index.html
+++ b/src/index.html
@@ -157,7 +157,7 @@ <h3><a class="anchor" id="arena-specification"></a>Arena</h3>
       <img src="./fig-arena.svg" alt="Arena diagram" width="90%" height="auto">
       <ol>
         <li>
-          The above figure represents, to scale, a birds eye view of the arena. The arena is a square with side length <strong>5.4m</strong>.
+          The above figure represents, to scale, a birds eye view of the arena. The arena is a square with side length <strong>5400mm</strong>.
         <li>
           The floor of the arena is covered with a closed-loop, short pile carpet.
         <li>

From cb53c7c07d226a12865808dc14dbb6704c1cbf98 Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Sun, 4 Aug 2024 11:52:42 +0100
Subject: [PATCH 47/57] Remove lap bonus points

---
 src/index.html | 2 --
 1 file changed, 2 deletions(-)

diff --git a/src/index.html b/src/index.html
index 1f12a58..959b0a3 100644
--- a/src/index.html
+++ b/src/index.html
@@ -59,8 +59,6 @@ <h2><a class="anchor" id="game-rules"></a>Game Rules</h2>
           <ol type="a">
             <li>
               <strong>2</strong> points are awarded each time a robot crosses a scoring line in the anti-clockwise direction.
-            <li>
-              At the end of each lap - defined as every subsequent forward crossing of the scoring line immediately in front of the robot's starting area - a robot is awarded an additional <strong>4</strong> points for the crossing.
             <li>
               A robot is deemed to have passed a scoring line when the entire robot has passed the line.
             <li>

From 800785f77580493ed0098cd07aae497f5311d794 Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Sun, 4 Aug 2024 11:54:30 +0100
Subject: [PATCH 48/57] Add alt text to logos

---
 src/index.html | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/index.html b/src/index.html
index 959b0a3..ff8faf3 100644
--- a/src/index.html
+++ b/src/index.html
@@ -13,16 +13,16 @@
     <header>
       <a class="anchor" id="top"></a>
       <a href="https://roboticsoutreach.org/">
-        <img width="300" src="https://raw.githubusercontent.com/roboticsoutreach/art/master/sro_logo_arm.svg" alt="SRO">
+        <img width="300" src="https://raw.githubusercontent.com/roboticsoutreach/art/master/sro_logo_arm.svg" alt="SRO Logo">
       </a>
       <h1 id="header">
         <a href="#top">TIN CAN RALLY</a>
       </h1>
     </header>
     <section id="logos">
-        <img src="./smallpeice_logo.jpg" />
-        <img src="./afe-logo.png" />
-        <img src="./uos-logo.svg" />
+        <img src="./smallpeice_logo.jpg" alt="Smallpeice Logo" />
+        <img src="./afe-logo.png" alt="Amazon Future Engineer Logo" />
+        <img src="./uos-logo.svg" alt="University of Southampton Logo"/>
     </section>
     <section class="no-print">
       <h2>Table of Contents</h2>

From e309362234d216e3d6ed80cccb25bb7dae279a43 Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Sun, 4 Aug 2024 11:56:24 +0100
Subject: [PATCH 49/57] Simplify tied points definition

---
 src/index.html | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/index.html b/src/index.html
index ff8faf3..0b6e83c 100644
--- a/src/index.html
+++ b/src/index.html
@@ -19,7 +19,7 @@ <h1 id="header">
         <a href="#top">TIN CAN RALLY</a>
       </h1>
     </header>
-    <section id="logos">
+    <section id="logos">w
         <img src="./smallpeice_logo.jpg" alt="Smallpeice Logo" />
         <img src="./afe-logo.png" alt="Amazon Future Engineer Logo" />
         <img src="./uos-logo.svg" alt="University of Southampton Logo"/>
@@ -208,8 +208,7 @@ <h3><a class="anchor" id="matches"></a>Matches</h3>
             <li>Teams whose robot was not entered into the round, or who were disqualified from the round, will be awarded no points.
           </ul>
         <li>
-          If a match ends in a tie, robots will be awarded the average of the points that their combined
-          positions would be awarded, in this case 3 (since this is (4 + 2) &div; 2).
+          If a match ends in a tie, both robots will be awarded 3 points.
         <li>
           At the end of the leagues, positions in the leagues are used to seed a
           knockout. The knockouts will be used to determine the final 1<sup>st</sup>,

From 3f43475dba686fdfafae6c4bc502432f4b6bc60a Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Sun, 4 Aug 2024 11:59:56 +0100
Subject: [PATCH 50/57] Drop judge

---
 src/index.html | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/index.html b/src/index.html
index 0b6e83c..17941b5 100644
--- a/src/index.html
+++ b/src/index.html
@@ -47,7 +47,7 @@ <h2><a class="anchor" id="game-rules"></a>Game Rules</h2>
             <li>Vacate the arena before the scheduled start time. At this point there must be no interaction with the robot.
             <li>Follow the directions of the match officials.
           </ul>
-          Teams that fail to comply with these rules – such as by arriving late – may forfeit the match, at the discretion of the judge.
+          Teams that fail to comply with these rules – such as by arriving late – may forfeit the match, at the discretion of the match officials.
         <li>
           The game is played between <strong>two</strong> robots.
         <li>
@@ -79,7 +79,7 @@ <h2><a class="anchor" id="regulations"></a>Regulations</h2>
         <li>
           All robots must be safe.
         <li>
-          The judge's decision is final.
+          Decisions by match officials are final.
         <li>
           Teams must conduct themselves within the principles of good sporting conduct.
         <li>
@@ -101,7 +101,7 @@ <h2><a class="anchor" id="regulations"></a>Regulations</h2>
           While accidental bumps and scrapes are inevitable, the sport is non-contact.
         <li>
           Robots must not intentionally damage anything inside the arena.
-          At the discretion of the judge, teams who deliberately engage in collisions
+          At the discretion of match officials, teams who deliberately engage in collisions
           or take insufficient precautions against collisions may be penalised,
           including disqualification from rounds and deduction of league points.
         <li>

From cb4dfdcb47bc54ed370cf35fcb0712e46f5188f2 Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Sun, 4 Aug 2024 12:00:35 +0100
Subject: [PATCH 51/57] Drop easily removably requirement

We better specify how boards should be mounted, and can enforce with mentors.
---
 src/index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/index.html b/src/index.html
index 17941b5..52355d0 100644
--- a/src/index.html
+++ b/src/index.html
@@ -90,7 +90,7 @@ <h2><a class="anchor" id="regulations"></a>Regulations</h2>
             <li>
               Robots must not have any sharp edges or points.
             <li>
-              Robots must have all electronics securely mounted and easily removable.
+              Robots must have all electronics securely mounted.
             <li>
               Robots must provide adequate protection to the batteries they use, including
               using the provided battery box which must be securely mounted to the robot.

From f86631b59abe84fb56f93f96fc8aa80b99f0aad0 Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Sun, 4 Aug 2024 12:06:13 +0100
Subject: [PATCH 52/57] Drop footer

---
 src/index.html |  5 +----
 src/index.scss | 12 ------------
 2 files changed, 1 insertion(+), 16 deletions(-)

diff --git a/src/index.html b/src/index.html
index 52355d0..4dcdca5 100644
--- a/src/index.html
+++ b/src/index.html
@@ -19,7 +19,7 @@ <h1 id="header">
         <a href="#top">TIN CAN RALLY</a>
       </h1>
     </header>
-    <section id="logos">w
+    <section id="logos">
         <img src="./smallpeice_logo.jpg" alt="Smallpeice Logo" />
         <img src="./afe-logo.png" alt="Amazon Future Engineer Logo" />
         <img src="./uos-logo.svg" alt="University of Southampton Logo"/>
@@ -218,8 +218,5 @@ <h3><a class="anchor" id="matches"></a>Matches</h3>
           go through.
       </ol>
     </section>
-    <footer class="no-print">
-        <p>© SRO</p>
-    </footer>
   </body>
 </html>
diff --git a/src/index.scss b/src/index.scss
index 07eeff4..7222b83 100644
--- a/src/index.scss
+++ b/src/index.scss
@@ -72,18 +72,6 @@ section {
     }
 }
 
-footer {
-    background-color: #2a2a2a;
-    color: white;
-    padding: 2em 1em;
-    font-size: 80%;
-    text-align: center;
-
-    p {
-        margin: 0;
-    }
-}
-
 h2, h3, h4, h5, h6 {
     color: $primary;
     margin: 12px 0;

From 06c85b95104238c0f3d7e4849cd64a63a81ab02c Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Sun, 4 Aug 2024 12:28:04 +0100
Subject: [PATCH 53/57] Fix spacing on logos

---
 src/index.scss | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/src/index.scss b/src/index.scss
index 7222b83..4524893 100644
--- a/src/index.scss
+++ b/src/index.scss
@@ -42,16 +42,14 @@ header {
 }
 
 section#logos {
+    display: grid;
+    grid-template-columns: 1fr 1fr 1fr;
     align-items: center;
-    justify-content: space-between;
-    flex-direction: initial;
+    column-gap: 1rem;
 
     img {
         display: block;
-        flex-grow: 1;
-        flex-shrink: 1;
         width: 100%;
-        margin: 1em;
         max-height: 100px;
         object-fit: contain;
 

From 9054de473554acf372ef13bed6973eec7078df58 Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Sun, 4 Aug 2024 12:31:49 +0100
Subject: [PATCH 54/57] Use sans-serif font for arena diagram

---
 src/fig-arena.svg | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/fig-arena.svg b/src/fig-arena.svg
index ea59b6e..5ef9b10 100644
--- a/src/fig-arena.svg
+++ b/src/fig-arena.svg
@@ -8,6 +8,9 @@
      xmlns:xlink="http://www.w3.org/1999/xlink">
   <style type="text/css">
     <![CDATA[
+      svg {
+        font-family: "Open Sans", Arial, sans-serif;
+      }
       .arena-wall {
           fill: none;
           stroke: #555;
@@ -96,6 +99,7 @@
         font-size: 0.11px;
         text-anchor: middle;
         dominant-baseline: central;
+        font-family: monospace;
       }
       .dimension-arrow-head {
         fill: #333;

From 88018abf250a20677b220ced79e68c61788e88d8 Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Sun, 4 Aug 2024 12:35:54 +0100
Subject: [PATCH 55/57] Specify how ties in league points will be handled.

---
 src/index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/index.html b/src/index.html
index 4dcdca5..f4b8ada 100644
--- a/src/index.html
+++ b/src/index.html
@@ -215,7 +215,7 @@ <h3><a class="anchor" id="matches"></a>Matches</h3>
           2<sup>nd</sup> and 3<sup>rd</sup> awards.
         <li>
           In the event of a tie in a knockout match, the team that ranked highest in the league will
-          go through.
+          go through. In the event of a tie in league points, the team which the most game points will go through.
       </ol>
     </section>
   </body>

From 28230752cb3650d6fe6096849bd29bf7973160f7 Mon Sep 17 00:00:00 2001
From: Alistair Lynn <arplynn@gmail.com>
Date: Sun, 4 Aug 2024 11:43:58 +0000
Subject: [PATCH 56/57] Use a vertical layout for logos on narrow screens (#47)

---
 src/index.scss | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/src/index.scss b/src/index.scss
index 4524893..7a45af7 100644
--- a/src/index.scss
+++ b/src/index.scss
@@ -43,9 +43,13 @@ header {
 
 section#logos {
     display: grid;
-    grid-template-columns: 1fr 1fr 1fr;
-    align-items: center;
-    column-gap: 1rem;
+
+    grid-auto-flow: column;
+    grid-auto-columns: 1fr;
+    grid-auto-rows: 1fr;
+
+    place-items: center;
+    gap: 1rem;
 
     img {
         display: block;
@@ -57,6 +61,14 @@ section#logos {
             height: 75px;
         }
     }
+
+    @media (width < 600px) {
+        grid-auto-flow: row;
+
+        img {
+            max-height: 8vh;
+        }
+    }
 }
 
 section {

From 87cfe776c87017152dd9902daea9c51ab1a3a710 Mon Sep 17 00:00:00 2001
From: Jake Howard <jhoward@sourcebots.co.uk>
Date: Sun, 4 Aug 2024 15:02:12 +0100
Subject: [PATCH 57/57] Include additional points for labs and lightning talks

---
 src/index.html | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/src/index.html b/src/index.html
index f4b8ada..89b42f1 100644
--- a/src/index.html
+++ b/src/index.html
@@ -217,6 +217,23 @@ <h3><a class="anchor" id="matches"></a>Matches</h3>
           In the event of a tie in a knockout match, the team that ranked highest in the league will
           go through. In the event of a tie in league points, the team which the most game points will go through.
       </ol>
+      <h3><a class="anchor" id="additional-points"></a>Additional points</h3>
+      <ol>
+        <li>
+          An additional <strong>4</strong> league points are awarded for each team who completes the entire Electronics Lab before Wednesday lunchtime.
+        <li>
+          An additional <strong>4</strong> league points are awarded for each team who completes the entire Robotics Lab before Wednesday lunchtime.
+        <li>
+          At the end of the Lightning Talks, league points will be awarded as follows:
+          <ul>
+            <li>
+              <strong>4</strong> points for the highest scoring team.
+            <li>
+              <strong>2</strong> points for the second highest scoring team.
+            <li>
+              <strong>1</strong> point for the third highest scoring team.
+          </ul>
+      </ol>
     </section>
   </body>
 </html>