Skip to content

Critical Path — Daily Puzzle

Overview

Critical Path is a daily Pipes puzzle built into Objectuve as your second daily habit anchor. Every day, you'll find a fresh grid of scrambled pipe tiles waiting at the /play screen — rotate them so every pipe connects into one leak-free network, watch your time, and earn rewards. The design philosophy: mental stimulation with restraint. Two minutes of focused puzzle-solving, then leave feeling accomplished. This feature succeeds when you open it, play, feel the win, and close the app.

Why it exists: daily puzzles lift 7-day retention by 10–15% for engaged users, because they create a second reason to open Objectuve beyond checking goals. But we've built in hard stops — one play per day, no guilt mechanics, no "you missed yesterday" — to keep the experience brief and anti-addictive.

How to Play

The mechanic: Your puzzle is a grid of pipe tiles (5×5, 6×6, or 7×7), each dealt turned a random way. Tap a tile to rotate it 90° clockwise. Line the pipes up so every end meets a neighbor's end — no loose ends pointing at a wall or a dead tile — and the whole board links into one connected network.

Step by step:

  1. Tap any tile to rotate it a quarter-turn.
  2. Connected pipes light up in the active color; open ones stay dim.
  3. Keep rotating until the lit network grows to cover the whole board.
  4. When there are no open ends and every tile is joined into one network, the puzzle is complete.

Reset: Hit the reset button to return every tile to its dealt orientation and start the board fresh.

Timer: A live clock in the completion screen shows how fast you solved it. The faster you go, the more bonus XP you earn.

One Play Per Day

This is the hardest limit we ship. You get exactly one puzzle per day, UTC midnight to midnight. On your first play, it's recorded on the server. If you come back later, you'll see the locked state: "You already mapped today's path" with your completion time and today's comparison (see Real Percentile Ranking & Personal Pace below). Come back tomorrow.

Why? Two reasons:

  1. Anti-addictive design. If we let you play as much as you want, the game is competing with your goals. That's not why we built it. One play per day keeps it a two-minute anchor, not a time sink.
  2. PBC alignment. Objectuve is a public benefit corporation with a specific mission: help you show up for your goals. One play per day is the only design that keeps the puzzle as a supporting feature, not a replacing feature.

On multiple devices: Server-side persistence means if you play on your phone, your iPad will also show locked. Same thing if you log in on the web. One completion per user per UTC day, across all devices.

No guest play. Critical Path requires sign-in — there's no unauthenticated path. If you land on /play without an active session, you'll see a sign-in prompt instead of a puzzle; the board never mounts without an authenticated user.

Stim XP

Stim XP is earned separately from goal XP. It's a self-contained progression tied only to Critical Path play.

Award formula:

  • Base: 50 Stim XP per completion
  • Speed bonus: starts at +50 XP for times ≤90 seconds, scales linearly down to +0 XP at 300 seconds
  • Example: 90s = 100 total XP (50 base + 50 bonus); 180s = 75 total XP (50 base + 25 bonus); 300s+ = 50 total XP (base only)

Why separate from goal XP? Your rank progression (Open Road → Horizon) is tied entirely to goal work. Stim XP is a parallel progression that celebrates puzzle mastery, not goal completion. The two ledgers never mix. You can be Horizon rank with 0 Stim XP, or have high Stim XP and still be at Open Road. They're independent.

Where to see it: Your total Stim XP and Stim Streak display on the /play screen and in the completion modal. You'll see your XP breakdown after each play: "You earned 87 Stim XP (50 base + 37 speed bonus)."

Stim Streak

Your Stim Streak is the number of consecutive days you've completed at least one puzzle. It resets silently to 0 if you miss a day — no notification, no guilt message, no "comeback" prompt.

Unlike your goal streaks, there are no freeze tokens for Stim Streak. It's a soft signal of consistency, not a penalty mechanic. If you play today, your streak goes up by 1. If you don't play tomorrow, your streak becomes 0 on day 2. Simple.

What you see on the tile: The dashboard Critical Path tile shows your current Stim Streak and Stim XP level. If your streak is 0, the tile shows your Stim XP only — no "0 day streak" message to make you feel bad.

Cosmetic Themes

You've unlocked four visual themes for your puzzle, each earned through consistent play:

ThemeUnlock ConditionVisual
DefaultAlways unlockedExisting design system colors
Forest7-day Stim StreakGreen tones, forest palette
Midnight30-day Stim StreakDeep blue/purple, dark mode emphasis
Solar100-day Stim StreakWarm amber/gold palette

No gameplay change: Themes are pure cosmetics. They change the colors of nodes and edges only. Mechanics, scoring, difficulty — all identical.

All free: Every theme is earned, never purchased. Objectuve doesn't sell cosmetics.

Theme picker: Open the puzzle and look for the theme icon (palette) in the header. Tap it to switch themes. Your choice is saved to your account.

Real Percentile Ranking & Personal Pace

When you finish a puzzle, the completion screen shows one honest comparison — either how you rank against everyone who played today, or how your time compares to your own recent pace. There's no made-up number standing in for a real one.

Exactly one of three states renders, in this order of priority:

  1. Ranked — "Faster than 78% of players today." Shown once at least 10 people have completed today's puzzle. We run a SQL percentile rank across all completions for today: PERCENT_RANK() OVER (ORDER BY elapsed_seconds DESC), clamped to 1–99. Faster times = higher percentile.
  2. Pace comparison — "18s quicker than your usual 1:12.", "12s slower than your usual 58s.", or "Right on your usual 1:05." Shown when today's ranking isn't available yet, but you have at least 3 prior completions at the same grid size (5×5, 6×6, or 7×7) as today's puzzle. Your "usual" time is the median of your last 10 same-size plays before today. A difference within roughly 5% of your usual (minimum 3 seconds) reads as "Right on."
  3. Neither — "One of the first today." Shown when fewer than 10 people have played today's puzzle yet and you don't have 3 same-size plays to compare against either. This is the honest floor, not a broken state — every player sees it for their first few plays at a given grid size, since the pace comparison needs those plays to establish a baseline first.

The slower-than-usual case never shames. All three pace states — quicker, slower, even — use the same visual weight and tone. Objectuve is a coach, not a leaderboard opponent.

If we can't reach the server, the completion screen says so honestly: "Couldn't load today's comparison." It shows a brief loading skeleton first in case the response is just slow, so you never see "no comparison" flash and then flip to a real number a moment later.

Historical comparison: Your completion modal shows your comparison for today only. It doesn't carry forward — each day's puzzle is separate.

Share Card

After completing a puzzle, you'll see a share button. Tap it to create a share card you can send to friends.

What the card shows:

  • Today's date (e.g., "May 15")
  • Your completion time (e.g., "1:47")
  • Your percentile or "One of the first today" (the share card doesn't yet show the pace comparison — only ranked-or-not)
  • Objectuve logo

What it deliberately hides:

  • No node count (so friends don't know the puzzle size)
  • No graph structure (no spoilers)
  • No solution path (they have to figure it out themselves)

The deep link: The share link points to /play — today's puzzle, if they haven't played. No solved-puzzle page exists. Fresh puzzles every day; no archives to peek at.

Sign-in required: Sharing is only available to signed-in players. Unsigned-in (guest) users cannot access the share button. This requirement ensures:

  • The percentile calculation has a stable user context
  • Share analytics are correctly attributed to your account
  • The deep-link recipient can sign in or continue playing seamlessly

On unsupported devices: If the native share sheet isn't available, tapping the share button copies the link to your clipboard with a "Link copied!" confirmation. You can then paste it into messages or social media manually.

Daily Reminder (Opt-In)

You can turn on a daily reminder to play. It's opt-in, defaults to off.

Where to find it: Settings → Notifications → Critical Path daily reminder

What you get: A push notification once per day at your preferred time (default 9 AM local). The message: "Today's Critical Path is ready — 2 minutes to map the path."

Smart behavior:

  • Doesn't fire if you've already completed today's puzzle.
  • Respects your notification quiet hours (same rules as goal notifications).
  • Never says "you missed yesterday" or uses guilt language. Purely invitational.
  • Timezone-aware: reminders based on your local time

Notification settings UI:

  1. Open Settings
  2. Tap Daily Reminders under Notifications
  3. Toggle reminders On
  4. Select your preferred time (e.g., 8:00 AM)
  5. If prompted, confirm your timezone
  6. You're set — reminders start immediately

Changing your reminder time:

  1. Go to Settings > Daily Reminders
  2. Tap the time field and select a new time
  3. Your next reminder will use the new time

Opting out: Disable reminders at any time in Settings > Daily Reminders. No penalty — you can re-enable whenever you like.

Accessibility

Critical Path meets WCAG 2.1 AA and plays well with keyboard and screen readers.

Keyboard:

  • Tab through nodes in left-to-right, top-to-bottom order.
  • Valid next nodes are highlighted with a visible focus ring.
  • Enter or Space to tap the focused node.
  • Modal dialogs (completion, how-to-play) are focus-trapped — Tab stays within the modal while open.

Screen reader:

  • Each tap announces: "Node [label] tapped. [N] of [total] nodes complete."
  • Invalid tap announces the error message via aria-live="assertive" — you hear it immediately.
  • Completion announces: "Puzzle complete. You finished in [time]."
  • All interactive elements have descriptive aria-label text.

Visual:

  • All text meets 4.5:1 contrast ratio (WCAG AA) in light and dark modes.
  • Nodes are at least 44×44 pixels on mobile (tap target size).
  • Animations respect prefers-reduced-motion — no distracting motion for sensitive users.

Focus management: The puzzle canvas is in its own focus zone. After completion, focus moves to the completion modal. Dismissing the modal returns focus to the back button.

Observability

We track eight events to measure how the feature is performing:

EventFired WhenProperties
critical_path_tile_tappedYou tap the dashboard tileis_played_today: bool
critical_path_puzzle_startedGame state changes to "playing"node_count: int, puzzle_date: string, theme_active: string
critical_path_puzzle_completedYou finish the puzzletime_taken_seconds: int, path_moves: int, grid_size: string, percentile: int|null, stim_xp_earned: int|null, theme_active: string
critical_path_puzzle_abandonedYou navigate away mid-gameelapsed_seconds: int, nodes_tapped: int, total_nodes: int
critical_path_tutorial_viewedYou open the how-to-playfirst_time: bool
critical_path_undo_tappedYou hit undopath_length_at_undo: int
critical_path_theme_changedYou switch themesfrom_theme: string, to_theme: string
critical_path_share_tappedYou share your resultpercentile: int|null

Funnel: We monitor the flow from tile tap → puzzle start → puzzle complete. The day-over-day return rate is derived from user cohorts: what % of players who completed on day 1 also completed on day 2, day 7, etc.

Alerts: If the puzzle generator's fallback pool is used more than 5 times in 24 hours, Sentry fires an alert. This signals the generator is having trouble and needs investigation.

Rollout & Feature Flag

Critical Path rolled out in three stages to authenticated users.

Feature flag: critical-path-full-product controls:

  • Stim XP tracking and cosmetic unlocks
  • Share card

Rollout stages: Critical Path is now at 100% rollout and available to all authenticated users. The flag remains in place as a safety switch for operational emergencies.

FAQ

Can I play more than once a day? No — by design. One puzzle per user per UTC day keeps the feature brief and focused. It's a daily anchor, not an endless game.

Do my Stim XP and cosmetic themes affect my goal rank? No. Stim XP is a completely separate ledger from goal XP. Your rank progression depends only on goal work. You can have the highest Stim Streak and still be at Open Road if you're not checking in on goals.

What happens to my Stim Streak if I miss a day? It resets silently to 0. No notification, no guilt message, no "comeback" prompt. Just starts fresh the next day you play. Streaks are a signal, not a punishment.

Where do I turn on the daily reminder? Settings → Notifications → Critical Path daily reminder. It's off by default. Once enabled, you'll get one push notification per day at your preferred time (defaults to 9 AM local).

Will my Stim Streak carry over if I don't play for a while? No. If you skip today, your streak becomes 0 tomorrow. There's no "freeze" mechanic for Stim Streaks like there is for goal streaks. But you can start a new streak anytime.

References

Last updated: 2026-08-31 (OBJ-3024: goal-rank FAQ examples renamed off the streak vocabulary — Open Road → Horizon)

Loading…