"""Numeric constants for slide generation layout and Wisent brand colors.""" # Wisent brand palette from wisent-visuals (RGB tuples 0-255) ACCENT_R = 197 ACCENT_G = 255 ACCENT_B = 200 RED_R = 250 RED_G = 90 RED_B = 70 PURPLE_R = 177 PURPLE_G = 158 PURPLE_B = 204 DARK_R = 18 DARK_G = 18 DARK_B = 18 GRID_R = 45 GRID_G = 49 GRID_B = 48 LEGEND_R = 118 LEGEND_G = 153 LEGEND_B = 120 WHITE_VAL = 255 BLACK_VAL = 0 # Font sizes in points PT_TITLE = 36 PT_SUBTITLE = 20 PT_BODY = 16 PT_SMALL = 12 PT_STAT = 48 PT_LABEL = 14 PT_TEAM = 28 # Slide dimensions in inches (for widescreen 16:9) SLIDE_W_INCHES = 10 SLIDE_H_NUMER = 45 SLIDE_H_DENOM = 8 # Position helpers in inches POS_HALF = 0.5 POS_ONE = 1.0 POS_ONE_HALF = 1.5 POS_TWO = 2.0 POS_TWO_HALF = 2.5 POS_THREE = 3.0 POS_THREE_HALF = 3.5 POS_FOUR = 4.0 POS_FOUR_HALF = 4.5 POS_FIVE = 5.0 POS_SIX = 6.0 POS_SEVEN = 7.0 POS_EIGHT = 8.0 POS_NINE = 9.0 # Image dimensions IMG_FIG_W = 7.0 IMG_FIG_H = 3.5 IMG_KANT_W = 3.0 IMG_KANT_H = 4.0 # Column layout COL_LEFT_X = 0.5 COL_RIGHT_X = 5.0 COL_W = 4.5 COL_H = 4.0 # Stat column positions STAT_COL_ONE_X = 0.5 STAT_COL_TWO_X = 3.5 STAT_COL_THREE_X = 6.5 STAT_COL_W = 3.0 # Title position TITLE_X = 0.5 TITLE_Y = 0.3 TITLE_W = 9.0 TITLE_H = 1.0 # Centered text position CENTER_Y = 1.5 CENTER_W = 8.0 CENTER_H = 3.5 CENTER_X = 1.0 # Footer position FOOTER_Y = 4.8 FOOTER_H = 0.5 # Team layout TEAM_NAME_Y = 2.5 TEAM_NAME_H = 1.0 TEAM_COL_ONE_X = 1.0 TEAM_COL_TWO_X = 5.5 TEAM_COL_W = 3.5 # Prisoner's Dilemma payoff constants (T > R > P > S) PD_TEMPTATION = 5 PD_REWARD = 3 PD_PUNISHMENT = 1 PD_SUCKER = 0 # Payoff display strings for PD slide table cells PD_CC = f"({PD_REWARD}, {PD_REWARD})" PD_CD = f"({PD_SUCKER}, {PD_TEMPTATION})" PD_DC = f"({PD_TEMPTATION}, {PD_SUCKER})" PD_DD = f"({PD_PUNISHMENT}, {PD_PUNISHMENT})" PD_NE_LABEL = f"Nash Equilibrium: (Defect, Defect) with payoff ({PD_PUNISHMENT}, {PD_PUNISHMENT})" PD_PO_LABEL = f"Pareto Optimum: (Cooperate, Cooperate) with payoff ({PD_REWARD}, {PD_REWARD})" # Player labels for payoff matrix slides PLAYER_ROW_LABEL = "Player " + str(PD_PUNISHMENT) PLAYER_COL_LABEL = "Player " + str(PD_PUNISHMENT + PD_PUNISHMENT) # PD alignment explanation (no inline digits) PD_EXPLANATION_BODY = ( "The tension between individual rationality and collective welfare " "is the core alignment challenge. An aligned agent should learn to " "cooperate with cooperative partners while resisting exploitation." ) # Font name for slide text FONT_NAME = "Hubot Sans" # EMU (English Metric Units) per inch for Google Slides API EMU_PER_INCH = 914400 # Google Slides file ID for the Kant presentation GSLIDES_FILE_ID = "1sXyiZMKYbTwp6CK6VbSBF9ZvzUHweHvmpxfb34yVZQs" # Revision restore offset (how many revisions back to go) REVISION_RESTORE_OFFSET = 2