Approved Through QA/Ready for UAT
Corporate provisioning: accept employee_id on the bulk CSV path
The manual Add Corporate User form now requires an Employee ID and persists it in normalized form (PR 189, shipped Aug 16 2026). The bulk CSV path at /api/admin/users/corporate/bulk still explicitly rejects an employee_id column and derives keys from the email local part instead. The two paths now behave differently on the same field, which matters ahead of the roughly 8,000-employee bootstrap. Decision needed on whether bulk accepts the column, and if so whether it is required there as it is on the manual form. Source: scoped out of PR 189 deliberately.

Matt Britton about 21 hours ago
New Functionality
Approved Through QA/Ready for UAT
Corporate provisioning: accept employee_id on the bulk CSV path
The manual Add Corporate User form now requires an Employee ID and persists it in normalized form (PR 189, shipped Aug 16 2026). The bulk CSV path at /api/admin/users/corporate/bulk still explicitly rejects an employee_id column and derives keys from the email local part instead. The two paths now behave differently on the same field, which matters ahead of the roughly 8,000-employee bootstrap. Decision needed on whether bulk accepts the column, and if so whether it is required there as it is on the manual form. Source: scoped out of PR 189 deliberately.

Matt Britton about 21 hours ago
New Functionality
Planned, but No Date
Identity resolver: case-insensitive matching at Tier 1
normalizeEmployeeId trims, strips domain, and strips leading zeros, but leaves case untouched, and Tier 1 matches employee_id exactly and case-sensitively. On qa, 39 of 51 corporate rows carry lowercase nickname employee ids, so a differently-cased SSO claim misses Tier 1 and falls through to Tier 1b, which compares on a lowered value. No lockouts today because Tier 1b catches every case, including the 7 rows with no federated_alias. This is tier degradation rather than an access failure. Fix is to lower-case within normalizeEmployeeId or add a lowered candidate to employeeIdCandidates, applied to both the TS module and the sidecar JS copy in server/alb-identity/claims.js. Source: verification of PR 189, Aug 16 2026.

Matt Britton about 21 hours ago
New Functionality
Planned, but No Date
Identity resolver: case-insensitive matching at Tier 1
normalizeEmployeeId trims, strips domain, and strips leading zeros, but leaves case untouched, and Tier 1 matches employee_id exactly and case-sensitively. On qa, 39 of 51 corporate rows carry lowercase nickname employee ids, so a differently-cased SSO claim misses Tier 1 and falls through to Tier 1b, which compares on a lowered value. No lockouts today because Tier 1b catches every case, including the 7 rows with no federated_alias. This is tier degradation rather than an access failure. Fix is to lower-case within normalizeEmployeeId or add a lowered candidate to employeeIdCandidates, applied to both the TS module and the sidecar JS copy in server/alb-identity/claims.js. Source: verification of PR 189, Aug 16 2026.

Matt Britton about 21 hours ago
New Functionality
Planned, With Date
Cut off demo application access for North America and EU store managers
What is happening: Access to the demo application is being cut off for North America and EU store managers. Those users move to the production Coach Pulse application. The demo remains available for Asia, which runs SMC Macau on it. What to build Gate at login: a user whose market resolves to North America or EU cannot enter the demo application. Clear message, not a dead end: a blocked user sees a short message pointing them to the production application. No blank screen, no generic "account not set up" error. Market driven, not store number: scope off the market or region value on the user record so the rule holds for users sitting under a US store record. Reversible mechanism: preferred implementation is a config driven list of permitted markets that flips back without a code deploy. Accounts stay intact: access gate only. No account deletion, no removal of existing demo session history or scores. Assumed scope Surfaces: all demo surfaces, meaning coachpulsedemo.com plus vegas, futurenow and gcx subdomains. Markets retaining access: HK/Macau, Taiwan, Mainland China, Japan, Korea, Singapore, Malaysia, ANZ. Untouched: the production application, and every Asia market path including the Macau SMC build. Timing: launch is Aug 22. This needs to land before launch so no North America or EU manager is sitting on demo when production goes live. Release window Aug 17 to 21. Open items Store managers only, or all North America and EU roles including associates. Whether corporate, admin and FutureProof accounts keep demo access for testing and client demos. Exact wording of the blocked message, and whether it carries a link to the production application. Whether EU is defined by the market field or by store country. Whether the cut off applies to every demo subdomain or only the main demo site.

Matt Britton 3 days ago
New Functionality
Planned, With Date
Cut off demo application access for North America and EU store managers
What is happening: Access to the demo application is being cut off for North America and EU store managers. Those users move to the production Coach Pulse application. The demo remains available for Asia, which runs SMC Macau on it. What to build Gate at login: a user whose market resolves to North America or EU cannot enter the demo application. Clear message, not a dead end: a blocked user sees a short message pointing them to the production application. No blank screen, no generic "account not set up" error. Market driven, not store number: scope off the market or region value on the user record so the rule holds for users sitting under a US store record. Reversible mechanism: preferred implementation is a config driven list of permitted markets that flips back without a code deploy. Accounts stay intact: access gate only. No account deletion, no removal of existing demo session history or scores. Assumed scope Surfaces: all demo surfaces, meaning coachpulsedemo.com plus vegas, futurenow and gcx subdomains. Markets retaining access: HK/Macau, Taiwan, Mainland China, Japan, Korea, Singapore, Malaysia, ANZ. Untouched: the production application, and every Asia market path including the Macau SMC build. Timing: launch is Aug 22. This needs to land before launch so no North America or EU manager is sitting on demo when production goes live. Release window Aug 17 to 21. Open items Store managers only, or all North America and EU roles including associates. Whether corporate, admin and FutureProof accounts keep demo access for testing and client demos. Exact wording of the blocked message, and whether it carries a link to the production application. Whether EU is defined by the market field or by store country. Whether the cut off applies to every demo subdomain or only the main demo site.

Matt Britton 3 days ago
New Functionality
UAT Approved.
Roleplay results relabel: What to Celebrate / Where to Lean In
**What is happening:** The two section labels on the roleplay results screen are being relabeled. This wording is final and supersedes the earlier candidates ("Where to Celebrate", "Where to lean in" in sentence case, "Focus areas", "Wins"). - Strength / Strengths becomes **What to Celebrate** - Opportunity / Opportunities becomes **Where to Lean In** Title case exactly as shown, capital I in "In". The new labels have no plural form. The asymmetry is intentional as written: "What" on the first label, "Where" on the second. **Environments:** Coach Pulse QA and Coach Pulse Demo. Each environment has its own change spec. **Where it lands** - Roleplay results screen (Consumer PWA, Train), including the results summary strip, session history rows and the results card preview - Coach Feedback and session summary copy, including prompt-side wording so generated feedback does not reintroduce the old terms - Localized strings for every language in the picker. Translations come from each market; Greater China follows the GC AI Localization Guide and lands in Traditional Chinese for HKMO and TW - My Team "Strengths & Opportunities" label. Code-only in QA where My Team is hidden and locked for launch; user-visible on Demo - Admin session detail, filter labels and column headers - Export column headers and reporting dimension display names - Other demo surfaces, including the session logs pages - No change to API field names, database columns, scoring rubric criteria or analysis output keys. Display layer only, no backfill and no rescoring - User guide and training materials **Out of scope:** scoring and rubric logic, item counts per section, and any other copy change. The in-app disclaimer stays dropped and the user guide carries the explanation. **Verification:** English results screen, one localized language (must render in language rather than falling back to English), a string sweep of the consumer and admin bundles, admin and export headers, and a pre-change session rendering under the new labels with its scores intact. **Open items:** fallback behavior while a market translation is outstanding; who signs off each market translation and by when; whether any circulated deck, PDF or guide needs a reissue; release path given the Aug 13-14 blackout, the Aug 17-21 window and the Aug 22 launch. **Docs:** CoachPulse_QA_ChangeSpec_v2.docx and CoachPulse_Demo_ChangeSpec_v2.docx. v1 of each is superseded by the celebrate-label correction. **Related, Demo only:** ELX framework scores currently render with decimal points and should render as whole numbers. That change is specified in the Demo doc and is tracked separately from this relabel.

Matt Britton 3 days ago
New Functionality
UAT Approved.
Roleplay results relabel: What to Celebrate / Where to Lean In
**What is happening:** The two section labels on the roleplay results screen are being relabeled. This wording is final and supersedes the earlier candidates ("Where to Celebrate", "Where to lean in" in sentence case, "Focus areas", "Wins"). - Strength / Strengths becomes **What to Celebrate** - Opportunity / Opportunities becomes **Where to Lean In** Title case exactly as shown, capital I in "In". The new labels have no plural form. The asymmetry is intentional as written: "What" on the first label, "Where" on the second. **Environments:** Coach Pulse QA and Coach Pulse Demo. Each environment has its own change spec. **Where it lands** - Roleplay results screen (Consumer PWA, Train), including the results summary strip, session history rows and the results card preview - Coach Feedback and session summary copy, including prompt-side wording so generated feedback does not reintroduce the old terms - Localized strings for every language in the picker. Translations come from each market; Greater China follows the GC AI Localization Guide and lands in Traditional Chinese for HKMO and TW - My Team "Strengths & Opportunities" label. Code-only in QA where My Team is hidden and locked for launch; user-visible on Demo - Admin session detail, filter labels and column headers - Export column headers and reporting dimension display names - Other demo surfaces, including the session logs pages - No change to API field names, database columns, scoring rubric criteria or analysis output keys. Display layer only, no backfill and no rescoring - User guide and training materials **Out of scope:** scoring and rubric logic, item counts per section, and any other copy change. The in-app disclaimer stays dropped and the user guide carries the explanation. **Verification:** English results screen, one localized language (must render in language rather than falling back to English), a string sweep of the consumer and admin bundles, admin and export headers, and a pre-change session rendering under the new labels with its scores intact. **Open items:** fallback behavior while a market translation is outstanding; who signs off each market translation and by when; whether any circulated deck, PDF or guide needs a reissue; release path given the Aug 13-14 blackout, the Aug 17-21 window and the Aug 22 launch. **Docs:** CoachPulse_QA_ChangeSpec_v2.docx and CoachPulse_Demo_ChangeSpec_v2.docx. v1 of each is superseded by the celebrate-label correction. **Related, Demo only:** ELX framework scores currently render with decimal points and should render as whole numbers. That change is specified in the Demo doc and is tracked separately from this relabel.

Matt Britton 3 days ago
New Functionality
UAT Approved.
Hide My Team for launch - QA (temporary, code retained)
What is happening: My Team is being hidden and locked in Coach Pulse QA. The section will not be available to users at launch. This is a pause, not a removal. Code, data pipeline and underlying scoring all stay in place; My Team is switched off at the surface only and will be switched back on later. No date is set for that. What to build Navigation: remove the My Team entry from navigation for all roles. Route: the My Team route should not resolve for a user who reaches it directly. No partial view and no empty state that signals a hidden section. Code retained: no deletion and no rollback. This is a visibility switch, not a teardown. Preferred mechanism: a configuration flag that can be flipped back without a code deploy, so re-enablement does not consume a release window. This is the only change Hiding My Team is the entire scope of this ticket. Nothing else in the application moves with it. No other section changes: Today, Culture, Train, Ask and You are untouched. No copy changes: the Strengths and Opportunities relabel is a separate item and is not bundled here. No data or scoring changes: collection, scoring and reporting continue exactly as they are. No cleanup work: no refactor, no deletion, no rollback taken on the back of this change. Timing Launch August 22, 2026. Must be hidden before that date. Release window August 17 to 21. Blackout August 13 to 14. Re-enablement has no date. Open items to confirm Whether the hide applies globally or is market scoped (global assumed). Whether any admin role retains a view, or the hide is absolute. The flag name and where it is configured, so re-enablement is a single step. Spec doc: CoachPulse_MyTeam_Hide_Spec_v4.docx

Matt Britton 4 days ago
New Functionality
UAT Approved.
Hide My Team for launch - QA (temporary, code retained)
What is happening: My Team is being hidden and locked in Coach Pulse QA. The section will not be available to users at launch. This is a pause, not a removal. Code, data pipeline and underlying scoring all stay in place; My Team is switched off at the surface only and will be switched back on later. No date is set for that. What to build Navigation: remove the My Team entry from navigation for all roles. Route: the My Team route should not resolve for a user who reaches it directly. No partial view and no empty state that signals a hidden section. Code retained: no deletion and no rollback. This is a visibility switch, not a teardown. Preferred mechanism: a configuration flag that can be flipped back without a code deploy, so re-enablement does not consume a release window. This is the only change Hiding My Team is the entire scope of this ticket. Nothing else in the application moves with it. No other section changes: Today, Culture, Train, Ask and You are untouched. No copy changes: the Strengths and Opportunities relabel is a separate item and is not bundled here. No data or scoring changes: collection, scoring and reporting continue exactly as they are. No cleanup work: no refactor, no deletion, no rollback taken on the back of this change. Timing Launch August 22, 2026. Must be hidden before that date. Release window August 17 to 21. Blackout August 13 to 14. Re-enablement has no date. Open items to confirm Whether the hide applies globally or is market scoped (global assumed). Whether any admin role retains a view, or the hide is absolute. The flag name and where it is configured, so re-enablement is a single step. Spec doc: CoachPulse_MyTeam_Hide_Spec_v4.docx

Matt Britton 4 days ago
New Functionality
UAT Approved.
Culture Feed video: second tap on the volume control pauses playback instead of re-muting
Surface: Consumer PWA Β· Culture Feed Β· video card. Environment: Production. Severity: P1. What is happening. Culture Feed videos begin playing with audio off. Tapping the volume control turns audio on and the video keeps playing, as intended. Tapping the volume control a second time β the associateβs attempt to turn audio back off β pauses playback rather than re-muting. Mute state and playback state are being changed by the same gesture. Why it happens. The volume control is nested inside the video card, and the card carries its own tap-to-play/pause handler, so a tap on the volume icon runs both the mute toggle and the playback toggle. The first tap looks correct only because the unmute path calls play() explicitly (browsers block unmuted autoplay, so unmute has to re-kick playback), which immediately undoes the pause the card handler just applied. The mute path has no equivalent play() call, so on the second tap the pause is the only change the associate sees. Steps to reproduce. Open the Culture Feed in the Consumer PWA and scroll to a video post. Video autoplays muted. Tap the volume control β audio turns on, playback continues. Tap the volume control again to turn audio off β the video pauses instead of muting. Proposed fix. Stop the volume controlβs event from reaching the card: call stopPropagation() and preventDefault() in the mute toggle handler, and add nativeEvent.stopImmediatePropagation() if the cardβs play/pause listener is attached natively rather than through React (React 17+ delegates at the root, so a native ancestor listener fires first and is not stopped by Reactβs stopPropagation alone). In the same pass, remove the play() call from the unmute path so mute state and playback state are fully independent. To confirm during the fix. Whether the cardβs play/pause listener is a React onClick or a native addEventListener β that determines whether stopImmediatePropagation is also required. That the volume control is not nested inside a card-level link or anchor wrapper, which would introduce a third handler on the same tap. Verification on a physical iPhone in the installed PWA β iOS Safari can dispatch pointer and click events separately on some button configurations and reproduce the double-toggle even after propagation is handled. Reference: CoachPulse_CultureFeed_VideoAudio_QA_Findings_v1, finding F1.

Matt Britton 4 days ago
Feature Request:
UAT Approved.
Culture Feed video: second tap on the volume control pauses playback instead of re-muting
Surface: Consumer PWA Β· Culture Feed Β· video card. Environment: Production. Severity: P1. What is happening. Culture Feed videos begin playing with audio off. Tapping the volume control turns audio on and the video keeps playing, as intended. Tapping the volume control a second time β the associateβs attempt to turn audio back off β pauses playback rather than re-muting. Mute state and playback state are being changed by the same gesture. Why it happens. The volume control is nested inside the video card, and the card carries its own tap-to-play/pause handler, so a tap on the volume icon runs both the mute toggle and the playback toggle. The first tap looks correct only because the unmute path calls play() explicitly (browsers block unmuted autoplay, so unmute has to re-kick playback), which immediately undoes the pause the card handler just applied. The mute path has no equivalent play() call, so on the second tap the pause is the only change the associate sees. Steps to reproduce. Open the Culture Feed in the Consumer PWA and scroll to a video post. Video autoplays muted. Tap the volume control β audio turns on, playback continues. Tap the volume control again to turn audio off β the video pauses instead of muting. Proposed fix. Stop the volume controlβs event from reaching the card: call stopPropagation() and preventDefault() in the mute toggle handler, and add nativeEvent.stopImmediatePropagation() if the cardβs play/pause listener is attached natively rather than through React (React 17+ delegates at the root, so a native ancestor listener fires first and is not stopped by Reactβs stopPropagation alone). In the same pass, remove the play() call from the unmute path so mute state and playback state are fully independent. To confirm during the fix. Whether the cardβs play/pause listener is a React onClick or a native addEventListener β that determines whether stopImmediatePropagation is also required. That the volume control is not nested inside a card-level link or anchor wrapper, which would introduce a third handler on the same tap. Verification on a physical iPhone in the installed PWA β iOS Safari can dispatch pointer and click events separately on some button configurations and reproduce the double-toggle even after propagation is handled. Reference: CoachPulse_CultureFeed_VideoAudio_QA_Findings_v1, finding F1.

Matt Britton 4 days ago
Feature Request:
Avatar capability for Train personas
Asked directly in the session following the avatar work shown at SMC. No timing set. Decision needed on what to signal to the field. Source: pilot production testing, Aug 11 2026.

Matt Britton 6 days ago
New Functionality
Avatar capability for Train personas
Asked directly in the session following the avatar work shown at SMC. No timing set. Decision needed on what to signal to the field. Source: pilot production testing, Aug 11 2026.

Matt Britton 6 days ago
New Functionality
Culture Feed: authoritative price verification before render
Incorrect prices appeared in generated summaries on a Teri shoulder bag and a cherry charm. Immediate mitigation is suppressing prices from generated summaries. The durable control is verifying any price shown anywhere in the application against an authoritative product source before it renders. Source: pilot production testing, Aug 11 2026.

Matt Britton 6 days ago
New Functionality
Culture Feed: authoritative price verification before render
Incorrect prices appeared in generated summaries on a Teri shoulder bag and a cherry charm. Immediate mitigation is suppressing prices from generated summaries. The durable control is verifying any price shown anywhere in the application against an authoritative product source before it renders. Source: pilot production testing, Aug 11 2026.

Matt Britton 6 days ago
New Functionality
Share Culture Feed content into Playbook daily messages
Store leader asked whether feed items can be carried into Playbook daily messages. Decision needed on whether that path is supported deliberately or left to copy link. Source: pilot production testing, Aug 11 2026.

Matt Britton 6 days ago
New Functionality
Share Culture Feed content into Playbook daily messages
Store leader asked whether feed items can be carried into Playbook daily messages. Decision needed on whether that path is supported deliberately or left to copy link. Source: pilot production testing, Aug 11 2026.

Matt Britton 6 days ago
New Functionality
Manager pin to store for Culture Feed and Ask Pulse answers
Store leaders asked to flag a Culture Feed item or an Ask Pulse answer so their own associates see it marked as a store priority. Copy link is the current workaround. Decision needed on whether the pin lives in Culture Feed, in Playbook, or both. Source: pilot production testing, Aug 11 2026.

Matt Britton 6 days ago
New Functionality
Manager pin to store for Culture Feed and Ask Pulse answers
Store leaders asked to flag a Culture Feed item or an Ask Pulse answer so their own associates see it marked as a store priority. Copy link is the current workaround. Decision needed on whether the pin lives in Culture Feed, in Playbook, or both. Source: pilot production testing, Aug 11 2026.

Matt Britton 6 days ago
New Functionality
Train and Settings: restore Cantonese when voice support is confirmed (F9, F19)
Cantonese is withdrawn from selection for launch because the underlying voice technology does not support it to standard. Mandarin is the interim path. Restore Cantonese as a selectable language once the voice partner confirms support and latency and conversational quality pass QA. Source: pilot production testing, Aug 11 2026.

Matt Britton 6 days ago
New Functionality
Train and Settings: restore Cantonese when voice support is confirmed (F9, F19)
Cantonese is withdrawn from selection for launch because the underlying voice technology does not support it to standard. Mandarin is the interim path. Restore Cantonese as a selectable language once the voice partner confirms support and latency and conversational quality pass QA. Source: pilot production testing, Aug 11 2026.

Matt Britton 6 days ago
New Functionality
Settings: Punjabi and Hindi support for Canada (F20)
Roughly eighty percent of staff and four in five walk-ins at the reporting Canada location speak Punjabi or Hindi. Neither was in the original language set. Feasibility answer required first, then validation through the Canada testers who volunteered. Not in Aug 22 build. Source: pilot production testing, Aug 11 2026.

Matt Britton 6 days ago
New Functionality
Settings: Punjabi and Hindi support for Canada (F20)
Roughly eighty percent of staff and four in five walk-ins at the reporting Canada location speak Punjabi or Hindi. Neither was in the original language set. Feasibility answer required first, then validation through the Canada testers who volunteered. Not in Aug 22 build. Source: pilot production testing, Aug 11 2026.

Matt Britton 6 days ago
New Functionality
Ask Pulse: explain metric redirects and offer a rephrasing (F15)
Metric questions such as how to boost UPT or AOV route to Ask Rexy. The routing rule stands. The improvement is the response: explain why it is redirecting and offer a rephrasing framed as selling behaviour that Coach Pulse will answer. Handled through training until built. Not in Aug 22 build. Source: pilot production testing, Aug 11 2026.

Matt Britton 6 days ago
New Functionality
Ask Pulse: explain metric redirects and offer a rephrasing (F15)
Metric questions such as how to boost UPT or AOV route to Ask Rexy. The routing rule stands. The improvement is the response: explain why it is redirecting and offer a rephrasing framed as selling behaviour that Coach Pulse will answer. Handled through training until built. Not in Aug 22 build. Source: pilot production testing, Aug 11 2026.

Matt Britton 6 days ago
New Functionality
Train: on-screen origin label for example audio (F14)
Managers cannot tell associates whether an example clip is a real associate recording or a generated rendering. Whenever example audio ships, state its origin on screen and mirror the wording in training materials. Source: pilot production testing, Aug 11 2026.

Matt Britton 6 days ago
New Functionality
Train: on-screen origin label for example audio (F14)
Managers cannot tell associates whether an example clip is a real associate recording or a generated rendering. Whenever example audio ships, state its origin on screen and mirror the wording in training materials. Source: pilot production testing, Aug 11 2026.

Matt Britton 6 days ago
New Functionality
Planned, but No Date
Train: reference audio library per scoring area
Field asked what good, better and best actually sound like for cultural fluency and reading the moment. Generated reference examples per scoring category avoid the consent question entirely. Decision needed on whether we build a reference library. Source: pilot production testing, Aug 11 2026.

Matt Britton 6 days ago
New Functionality
Planned, but No Date
Train: reference audio library per scoring area
Field asked what good, better and best actually sound like for cultural fluency and reading the moment. Generated reference examples per scoring category avoid the consent question entirely. Decision needed on whether we build a reference library. Source: pilot production testing, Aug 11 2026.

Matt Britton 6 days ago
New Functionality
Planned, but No Date
Train: named coach that speaks the feedback
Strongest idea of the session. Rather than reading post-session feedback, the associate hears it from a persistent named coach with a chosen voice, building familiarity across sessions. Overlaps with short-form feedback item and should be built together. Source: pilot production testing, Aug 11 2026.

Matt Britton 6 days ago
New Functionality
Planned, but No Date
Train: named coach that speaks the feedback
Strongest idea of the session. Rather than reading post-session feedback, the associate hears it from a persistent named coach with a chosen voice, building familiarity across sessions. Overlaps with short-form feedback item and should be built together. Source: pilot production testing, Aug 11 2026.

Matt Britton 6 days ago
New Functionality
Train: short-form post-session feedback with expand (F13)
Post-session feedback is longer than associates will read. Restructure to lead with score, single highest-impact behaviour, one concrete example, with full detail behind an expand. Sixty percent of staff at one multi-unit work 8 to 12 hours a week. Build alongside the named coach idea. Not in Aug 22 build. Source: pilot production testing, Aug 11 2026.

Matt Britton 6 days ago
New Functionality
Train: short-form post-session feedback with expand (F13)
Post-session feedback is longer than associates will read. Restructure to lead with score, single highest-impact behaviour, one concrete example, with full detail behind an expand. Sixty percent of staff at one multi-unit work 8 to 12 hours a week. Build alongside the named coach idea. Not in Aug 22 build. Source: pilot production testing, Aug 11 2026.

Matt Britton 6 days ago
New Functionality
Planned, but No Date
Train: press to speak control (F12)
Store noise is captured during sessions and personas respond to speech the associate did not make. Requested directly by store leaders. Add a press to speak mode in the Train voice UI as an alternative to open mic, with per-user preference persisted. Interim: headset guidance in launch training plus voice partner tuning. Source: pilot production testing, Aug 11 2026.

Matt Britton 6 days ago
New Functionality
Planned, but No Date
Train: press to speak control (F12)
Store noise is captured during sessions and personas respond to speech the associate did not make. Requested directly by store leaders. Add a press to speak mode in the Train voice UI as an alternative to open mic, with per-user preference persisted. Interim: headset guidance in launch training plus voice partner tuning. Source: pilot production testing, Aug 11 2026.

Matt Britton 6 days ago
New Functionality
Planned, but No Date
Train: session playback consent capture and opt-out (F8)
Playback of another associate audio is removed from the Aug 22 build. Returning it requires a consent system: capture consent at first Train session, record scope of consent, per-associate opt-out honored at retrieval time, and admin visibility into consent state. Defined with Coach Legal and HR. Source: pilot production testing, Aug 11 2026.

Matt Britton 6 days ago
New Functionality
Planned, but No Date
Train: session playback consent capture and opt-out (F8)
Playback of another associate audio is removed from the Aug 22 build. Returning it requires a consent system: capture consent at first Train session, record scope of consent, per-associate opt-out honored at retrieval time, and admin visibility into consent state. Defined with Coach Legal and HR. Source: pilot production testing, Aug 11 2026.

Matt Britton 6 days ago
New Functionality
Approved Through QA/Ready for UAT
Supported provisioning path for corporate and non-HR-feed accounts
Applies to Coach Pulse identity services and the sync-employees job, with an authoring surface in coach-pulse-admin-ui. Repository attribution to be confirmed before QA. **Problem.** Coach Pulse runs a two layer identity architecture. SSO through Cognito and AD handles authentication, but the application only trusts the profiles table, which is populated by the sync-employees job reading the Tapestry HR feed. Corporate and test accounts provisioned directly in AD but absent from the HR feed authenticate successfully and then resolve to nothing: blank name, default role display, no store assignment, no C360 data. Corporate, non store manager users have been the group most affected. **What already exists.** The July 29 identity and access rebuild shipped backfill migrations setting federated aliases for 38 corporate records and keying 50 unkeyed employee IDs, written against dev and QA, so production requires its own backfill pass. The rebuild also made the system fail closed: identities outside approved corporate domains or the HR roster now receive an "account not provisioned" denial rather than a wrong but working session. A break glass provisioning path exists behind QA_IDENTITY_BREAKGLASS and is auditable. **The gap.** Backfill migrations and break glass are both exception handling. Neither is a supported path. The provisioning gap recurs every time Tapestry stands up a new tester or corporate user outside the roster, and the July diagnosis carried a recommendation that FutureProof build a manual seeding path for non HR accounts. That path has been identified and not yet built. **Recommended action.** Build a supported, audited admin path to seed and maintain profile rows for corporate and non HR-feed identities, so the fail closed behavior stays intact while legitimate corporate users can be provisioned without a migration or a feature flag. **Acceptance criteria.** 1. An authorized admin can create a profile row for an identity that authenticates through SSO but does not appear in the HR feed. 2. A seeded profile carries name, role, region and store assignment, and renders identically to an HR sourced profile across Coach Pulse surfaces. 3. Seeded profiles are marked with their provenance so they are distinguishable from HR sourced records in audit. 4. A subsequent sync-employees run does not overwrite or orphan a seeded profile. 5. Every seed, edit and revoke is written to the audit log with actor, timestamp and before and after state. 6. Fail closed behavior is unchanged for identities that are neither seeded nor on the roster. 7. Break glass remains available but is no longer the routine path for corporate provisioning. **Dependencies and out of scope.** Production backfill pass is a prerequisite and is tracked separately. The open SSO token issue affecting corporate accounts is a separate defect and is not resolved by this work. The compliance question around approximately 4,500 indirect market users accessing outside SSO, with Sarah looping in Michael Pearson, is related but distinct and is out of scope here.

Harrison 7 days ago
New Functionality
Approved Through QA/Ready for UAT
Supported provisioning path for corporate and non-HR-feed accounts
Applies to Coach Pulse identity services and the sync-employees job, with an authoring surface in coach-pulse-admin-ui. Repository attribution to be confirmed before QA. **Problem.** Coach Pulse runs a two layer identity architecture. SSO through Cognito and AD handles authentication, but the application only trusts the profiles table, which is populated by the sync-employees job reading the Tapestry HR feed. Corporate and test accounts provisioned directly in AD but absent from the HR feed authenticate successfully and then resolve to nothing: blank name, default role display, no store assignment, no C360 data. Corporate, non store manager users have been the group most affected. **What already exists.** The July 29 identity and access rebuild shipped backfill migrations setting federated aliases for 38 corporate records and keying 50 unkeyed employee IDs, written against dev and QA, so production requires its own backfill pass. The rebuild also made the system fail closed: identities outside approved corporate domains or the HR roster now receive an "account not provisioned" denial rather than a wrong but working session. A break glass provisioning path exists behind QA_IDENTITY_BREAKGLASS and is auditable. **The gap.** Backfill migrations and break glass are both exception handling. Neither is a supported path. The provisioning gap recurs every time Tapestry stands up a new tester or corporate user outside the roster, and the July diagnosis carried a recommendation that FutureProof build a manual seeding path for non HR accounts. That path has been identified and not yet built. **Recommended action.** Build a supported, audited admin path to seed and maintain profile rows for corporate and non HR-feed identities, so the fail closed behavior stays intact while legitimate corporate users can be provisioned without a migration or a feature flag. **Acceptance criteria.** 1. An authorized admin can create a profile row for an identity that authenticates through SSO but does not appear in the HR feed. 2. A seeded profile carries name, role, region and store assignment, and renders identically to an HR sourced profile across Coach Pulse surfaces. 3. Seeded profiles are marked with their provenance so they are distinguishable from HR sourced records in audit. 4. A subsequent sync-employees run does not overwrite or orphan a seeded profile. 5. Every seed, edit and revoke is written to the audit log with actor, timestamp and before and after state. 6. Fail closed behavior is unchanged for identities that are neither seeded nor on the roster. 7. Break glass remains available but is no longer the routine path for corporate provisioning. **Dependencies and out of scope.** Production backfill pass is a prerequisite and is tracked separately. The open SSO token issue affecting corporate accounts is a separate defect and is not resolved by this work. The compliance question around approximately 4,500 indirect market users accessing outside SSO, with Sarah looping in Michael Pearson, is related but distinct and is out of scope here.

Harrison 7 days ago
New Functionality