...
Each branch (SQ) has it’s own rules
Suspensions do not apply across offices (suspension in office A allows play in office B)
Suspensions
Yellow card
3x accumulation results in a 1 game suspension
Resets after accumulation
Indirect red card
Results in a 1 game suspension
Affects accumulation of yellow cards
Direct red cards
Results in a 1 game suspension
No accumulation side effects
No expiry time component or indefinite rules from game infractions
Suspensions only accumulate with the same office and team
Hockey
Minimum guidelines
Federation (HC) sets minimum baselines guidelines and each branch (BC) can extend baselinesseverity
Suspensions apply across the entire federation/tenant
Suspension rules are based on the schedule office
If a BC team plays in an AB tournament, AB suspension guidelines will be used, unless the player fails to purge the suspension prior to returning to BC, then BC guidelines will take effect and could possibly extend the suspension
e.g., AB may impose a 1 game suspension while BC imposes 2 games, so a player would be required to serve 2 games upon returning to BC
Accumulation
Accumulation based on
penalty codeinfraction or set of
penaltiesinfractions (accumulation groups)
e.g., 7.2(b) will result in a 1 game suspension then a 2 game suspension the second game it happens
e.g., 7.2(b) will result in a 1 game suspension, and 7.3(b) in a latter game will result in an accumulation sanction (AS104) due to ‘any 2 majors’.🚩 Is this a misinterpretation?
Multiple sanctions may be applied from a single game
e.g., in a fight, player may be assessed 7.10 Fighting Major + GM (1 game) + 7.11(a) Instigator (1 game)
e.g., 7.2(c) in game one results in 1 game suspension, then 7.8(c) in next game results in 3 games under 7.8(c) + 5 games under AS107 which is pending until after the 3 game has completed
Accumulation
resets eachis per season
Head contact accumulation resets prior to minor championships
🚩 Waiting to confirm if we’re
isolationisolating the championship office or setting a reset date for this accumulation group
🚩 Waiting to confirm what happens after last defined accumulation
Penalty in the last 10 minutes or OT can affect suspension severity
🚩 Would this be a separate sanction or ?
Some sanctions are based on if the penalty was incurred pre/post game, or if an injury was sustained
Will need to check incident reports for the injury, may need to add additional meta for penalties
🚩 Waiting to confirm if we can skip pre/post meta
Injury attribute added to penalties; pre/post meta is out of scope initially
Team Officials
Team officials may be suspended based on penalty accumulation in the same game
e.g., An official who’s players accumulate 3 majors in a game will be assessed a 1 game suspension, then 3 games the second game that happens, and an indefinite suspension for the third game it happens
Head coach is suspended by default unless they’re not present, then it would be an assistant coach or manager unless the referee reports otherwise
🚩 Possibly implement this based on the signatory of the lineup?
Purging
Minor / Junior
Minor hockey suspensions don’t typically allow purging when transitioning to Junior, but there’s an exception to allow purging if they actually intend to play to help eligibility for next season. This will be handled manually by BC
Suspensions have a total required games and expiry date; will be considered completed when the first criteria is reached
Expiry has breaks (e.g., winter, summer)
Game/expiry ratio is not 1:1 (1/7/15/21/25/30/n*7) and varies by branch. Not defined by HC
Game infractions may result in indefinite suspensions
Only games that were scheduled at the time of suspension may count towards to the serving of a suspension. Therefore, any game that is added to a team’s schedule after the date of a suspension, will not count towards the serving of cannot be used to purge that suspension.
Rule added to avoid working around with an exhibition game mid-week. Did not commit to supporting this on day 1
Team Officials
Team officials may be suspended based on penalty accumulation in the same game
e.g., AS112 for 3 majors in a game, AS113 if that happens again in a second game, AS114 if it happens in a third game. AS118 for fights, AS107 for matches.Head coach is suspended by default unless they’re not present, then it would be an assistant coach or manager unless the referee reports otherwise
View file | ||
---|---|---|
|
View file | ||
---|---|---|
|
...
Rule Models
Infractions are the rules, penalties are violations of infractions, sanctions define infraction accumulation and suspensions are the violation of sanctions.
...
Property | Type | Description |
---|---|---|
id | uuid | |
ruleId | id | |
infractionId | id | |
injury | boolean | Requires the penalty to be marked as injured |
SanctionRule
Alternate option if no accumulation groups are applicable
Property | Type | Description |
---|---|---|
id | uuid | |
infractionId | id | |
positions | enum[] | Optional - Applicable to players or coaches |
sanctionId | uuid | Resulting sanction |
parentId | id | |
officeId | id | |
Accumulation | ||
totals | number[] | Number of games [1, 3, 5, ♾️] |
exclusive | boolean | If an infraction matches this sanction rule it doesn’t count towards other sanctions |
resets | boolean | Accumulation count resets to 0 after reaching last accumulation |
Settings Models
SanctionBreak
Required to define breaks when calculating the suspension expiry date for the season
Property | Type | Description |
---|---|---|
id | uuid | |
startDate | date | |
endDate | date | |
officeId | id |
SanctionRatio
BC Hockey defines a ratio generally, not per game, so it might be better to do the same. When games is undefined, it will serve as the default case and serve as a n:m ratio
Property | Type | Description |
---|---|---|
id | uuid | |
games | number | Optional - Number of games the accumulation requires |
days | number | Number of days |
officeId | id |
Suspension Models
Sanction
Suspensions are linked to a sanction to describe what the suspension is for
...
Property | Type | Description |
---|---|---|
id | uuid | |
gameId | id | Game the suspension originated in |
participantId | id | Participant that was suspended |
teamId | id | Team that the participant is suspended in |
positionGroup | enum | Position that this participant was suspended in. Player, Staff |
sanctionId | id | Sanction that was determined by the rulebook sanction rules |
penaltyId | id | Penalty that resulted in the suspension |
durationType | enum | Definite or Indefinite. This is required to be the same as the sanction duration |
minimumGames | number | Minimum number of games required for this suspension Optional when indefinite. Set by system. |
requiredGames | number | Number of games required to complete the suspension. Optional when Indefinite. Required to be >= minimumGames |
expiry | date | Optional - Date when the suspension will expire if the games requirement isn’t met |
status | enum | Pending, Appealed, Active, Completed, Cancelled, Expired |
externalId | uuid | For syncing with Spordle ID |
Legacy suspension options (deprecated) | ||
| enum | Deprecated, replaced by sanctionId |
...
Required to define breaks when calculating the suspension expiry date for the season
...
Property
...
Type
...
Description
...
id
...
uuid
...
startDate
...
date
...
endDate
...
date
...
officeId
...
id
SanctionRatio
BC Hockey defines a ratio generally, not per game, so it might be better to do the same. When games is undefined, it will serve as the default case and serve as a n:m ratio
...
Property
...
Type
...
Description
...
id
...
uuid
...
games
...
number
...
Optional - Number of games the accumulation requires
...
days
...
number
...
Number of days
...
officeId
...
id
Implementation
Unhardcoding
Status | ||||
---|---|---|---|---|
|
...
If the suspension type is Indefinite, the suspension can never automatically be completed
Status colour Green title COMPLETE Jira Legacy server System JIRA serverId 03e16d48-9e59-3010-89f5-a1a3500d66b7 key SPR-646
If there is an expiry date, the suspension is considered Expired once that date passes if it is not yet completed based on the required games
Status colour Green title COMPLETE This will require a task to run at midnight daily (based on the timezone of the office)
Status colour Blue title TODO Jira Legacy server System JIRA serverId 03e16d48-9e59-3010-89f5-a1a3500d66b7 key SPR-646
A suspension completes once the suspension has the required amount of purges that are completed games
Status colour Green title COMPLETE If there is a pending suspension dependent on a completed suspension, start the dependent suspension
Status colour Blue title TODO
...