Skip to content

Add explicit startup experience hub - #334

Draft
MajorIncident wants to merge 46 commits into
mainfrom
feature/startup-experience-hub
Draft

MajorIncident wants to merge 46 commits into
mainfrom
feature/startup-experience-hub

Conversation

@MajorIncident

Copy link
Copy Markdown
Owner

Issue

Implements #330.

Current implementation

Startup detection

  • deterministic substantive saved-Intake predicate;
  • ignores automatic/presentation-only noise such as saved timestamps, bridge time, theme, Notes open state, table labels, action analysis IDs, and unchecked steps;
  • detects saved Intake, Student resume, and Instructor resume independently;
  • expired Classroom envelopes are not offered as Continue choices;
  • safe #join=<human-code> is detected but not auto-admitted.

Explicit startup hub

  • ordinary startup no longer silently resumes a stored experience preference;
  • explicit Standalone ?workspace= links remain authoritative and bypass the hub;
  • Continue section renders independent cards for saved Intake, Student class, and Instructor class;
  • Start / Join section uses Work independently, Join a class, and Run a class;
  • Administration / Maintenance remains a secondary privileged entry;
  • a join link highlights Join a class and leaves the human code untouched until normal Student routing consumes it;
  • opening the hub never clears saved work;
  • starting a fresh independent Intake requires confirmation when substantive saved Intake exists;
  • choosing a different Student/Instructor experience explicitly confirms replacement of the same-type valid resume;
  • expired same-type resumes are cleared only when the user explicitly chooses that new intent.

Resume recovery

  • Student/Instructor lifecycle controllers remain authoritative;
  • invalid/expired server-backed resumes can return to the required startup hub with a human-facing explanation rather than leaving a dead shell.

Coverage already added/updated

  • startup substantive-detection unit tests;
  • production-markup startup hub feature tests;
  • experience-role tests updated for no implicit preference/#join routing;
  • Standalone/Student/Instructor reload E2E now clicks the correct Continue card;
  • join-link integration now proves explicit startup Join before admission;
  • expired Student E2E proves stale context cannot silently resume.

Still in progress

  • run/fix repository quality + required browser gate;
  • startup-hub accessibility/mobile/reduced-motion audit;
  • README/architecture/security/workstream documentation reconciliation;
  • final exact-head validation and production verification.

Cold restart

Continue from feature/startup-experience-hub. Read #330 and docs/preproduction-hardening.md. Preserve the key invariant: startup intent is navigation/session state, not Intake persistence, and multiple resumable contexts must remain separate choices.

Copy link
Copy Markdown
Owner Author

Mini milestone — startup browser-gate repair

Head: 3f3cfad3a3b350d90f07a60f662e5d3f7fbdf9cb

Proven before this head:

  • repository npm run quality: green;
  • Dependency Review: green;
  • Template Manifest Guard: green;
  • CodeQL: green;
  • Classroom feature harnesses now explicitly activate Student/Instructor roles and the unit cascade is resolved.

Browser failure isolated from run #1552:

  • 26 browser tests passed, 12 skipped;
  • only 4 Standalone journeys failed;
  • clicking Work independently stayed data-experience-role="unselected".

Root cause:

  • isSubstantiveSavedIntake() compared the entire normalized Major Incident object shape against a synthetic baseline;
  • the real blank DOM collector includes empty changeControl.rollbackPlan / verification.result keys, while the synthetic baseline omitted them;
  • therefore the app-generated bridge timestamp autosave was falsely classified as substantive and triggered the replacement confirmation; Playwright auto-dismissed it.

Fix on this head:

  • Major Incident substantive detection is semantic, not structural;
  • default owner/risk/change-control/verification values do not count as work;
  • actual decision/risk content still does;
  • regression test now models the real blank Major Incident collector shape.

Next action: inspect exact-head CI and fix only concrete remaining validation failures.

This branch has not been deployed

No deployments
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