Skip to content

feat(#2866): gate App Space completions to the event time window - #2868

Merged
jung-thomas merged 4 commits into
DEVfrom
worktree-issue-2866-appspace-window
Oct 21, 2026
Merged

jung-thomas merged 4 commits into
DEVfrom
worktree-issue-2866-appspace-window

Conversation

@jung-thomas

Copy link
Copy Markdown
Contributor

Closes #2866.

What & why

App Space prize credit (and the QR barcode) must reflect work done during the event. Previously completion was time-agnostic — anyone with a COMPLETED TaskRecord for the track's tutorials could walk up and collect a prize, even if they finished months before TechEd. This gates App Space completion to the event's time window.

Change

  • Server (srv/developer-service.js, getAppSpaceProgress only): a COMPLETED TUTORIAL whose completionDate falls outside the event's inclusive [startDate, endDate] is re-emitted with status COMPLETED_OUT_OF_WINDOW. The returned status is a plain String, so no schema change.
    • Fail-open: gate only when both dates are present; if either is null → no gating (protects un-dated / non-TechEd events).
    • Null completionDate on a gated event → out-of-window.
    • TUTORIAL items only; CHECKPOINT/PRIZE pass through unchanged.
    • getEventProgress and the scanner/claim path are untouched.
  • UI (hugo-apps/src/app-space/AppSpace.vue): distinct "redo" state (step--redo class, refresh-arrows glyph, inline hint) for out-of-window items, pointing at the existing reset feature. The client already gates track/prize completion strictly on === 'COMPLETED', so a downgraded item does not advance the track or unlock the prize barcode.

Attendees who completed a tutorial early use the existing reset, then re-complete during the event to earn credit.

Tests

  • 10 new unit tests in test/app-space-completion-window.test.js: in-window, before-start, after-end, both inclusive boundaries, null completionDate, both fail-open (null-start / null-end), IN_PROGRESS pass-through, non-TUTORIAL never downgraded.
  • Scoped run green: app-space-completion-window + app-space-fk-resolution + developer-service → 37/37. Full suite runs in CI.

Deferred (minor, non-blocking)

  • .step--redo has no sapphire-theme–specific override (renders amber/critical in all themes via --sapCriticalColor; only the sapphire tuning that step--earned has is absent).
  • No committed automated UI assertion for the redo state — covered by the post-deploy e2e job per the repo's e2e-coverage pattern.

Design + plan: docs/superpowers/specs/2026-10-20-app-space-completion-window-design.md, docs/superpowers/plans/2026-10-20-app-space-completion-window.md.

@jung-thomas
jung-thomas merged commit 80b86d0 into DEV Oct 21, 2026
6 checks passed
@jung-thomas
jung-thomas deleted the worktree-issue-2866-appspace-window branch October 21, 2026 00:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant