Throwaway prototype · not production

Does today’s Inbox (admit + pipeline) feel right?

Logic: @tyrant/domain · Inbox + PipelineAlgorithm via adapter

Named Views: next (first pipeline member), today (full day list), manage (no-op admit, encounter order). Daily admit still filters owner / stamps / cadence / context; pipeline orders next and today. Scrub date and time, switch Views, press outcomes on each row.

View
Context filter

Add activity
Contexts

View · next

    Not admitted (daily)

    Same candidates, rejected by daily admit — with the reason. Hidden on manage (no-op admit).

      Current recipe

      Admit (next / today — all must hold): owned · not deleted · not postponed today · not done today · not dismissed today · cadence relevant · context filter (if any). manage uses no-op admit.

      Pipeline (next / today — top → bottom, successive stable sorts; later override earlier — last wins). manage preserves encounter order:

      1. Postponed-returned (prior day postpone; routines never count)
      2. Among postponed-returned: older postpone first (recent last)
      3. Not deferred today before deferred today
      4. Among deferred today: older defer first (recent last)
      5. Timeframe band: inafter (overdue) → untimedbefore
      6. Among in: shorter length first (open/start-only last)
      7. Among in: earlier window start first
      8. Among in: not deferred before deferred
      9. Among in deferred: older defer first (recent last)

      Walkthroughs

      Each tab resets to a known scene. Press the steps in order.

      Prototype workaround: defer recency on a frozen clock

      The demo clock does not tick. Domain defer stamps deferredAt = clock.now, so several defers at 07:05 would share one instant. Recency would tie and fall back to timeframe order — deferring the top in item would look like a no-op once peers were already deferred.

      Prototype only: each defer in this session adds +1 ms to that stamp (counter resets with the scene). Domain is unchanged. In a live app the wall clock moves, so this offset is unnecessary.