ARCHETIQ MASTER REFERENCE — Personality-Test App¶
This file is the master index for the Archetiq (Personality-Test) codebase. For live access rules, read access-control.md first. Every AI session MUST read and update this file. Every change MUST be logged here. Last updated: 2026-10-11
Reference Order¶
When changing the live system, use this order:
- access-control.md — access rules, roles, gates, admin controls.
- startupOS.md — StartupOS scope, routes, and live workspace behaviour.
- deployment.md — deploy order, runtime layout, and verification.
- api.md — endpoint surface and access notes.
- user-journey.md and features.md — user flow and feature summaries.
If a doc conflicts with the live app, the live app and access-control.md win.
⚠️ AI AGENT INSTRUCTION¶
Before implementing ANY change: 1. Read this file — check the Dependency Map (§9) for ripple effects 2. Check the Gate Logic (§6) — navigation changes cascade to 4 files 3. After every change — update the Change Log (§10) with date + description 4. After deleting/adding pages — update Feature Map (§4) and Nav Structure (§5) 5. After changing user doc shape — update Data Model (§7)
1. App Identity¶
| Property | Value |
|---|---|
| App name | Archetiq (brand) / personality-app (PM2 process) |
| Domain | archetiq.com (redirects) + www.archetiq.com (current live) |
| Version | v1.x (June 2026) |
| Purpose | Malaysian self-awareness PWA — archetype discovery → growth loop → coaching |
| PM2 port | 5002 |
| VPS | root@76.13.211.100 |
| App root | /opt/personality-app/ |
| Public dir | /opt/personality-app/public/ |
| SSH key | ~/.ssh/kvm4-hostinger (key auth only — WSL for complex ops) |
2. Tech Stack¶
| Layer | Technology |
|---|---|
| Frontend | React 19 + TypeScript (strict) + Vite 6 |
| Styling | Tailwind CSS 4 |
| Icons | lucide-react |
| Charts | Recharts + Chart.js 4 + react-chartjs-2 |
| Routing | react-router-dom v7 |
| Auth | VPS JWT (30-day, localStorage key personality_auth) |
| Backend | Express 5, Node 20, PM2 |
| Database | MongoDB — personality_db — raw collections via mongoose.connection.db.collection() |
| AI | @google/genai (Gemini) via /api/ai/* |
| Payments | Stripe Checkout → webhook /api/stripe/* |
| html2canvas-pro + jsPDF | |
| Push | VAPID web push (webPush.js) |
| Module system | ESM — server uses "type": "module" (NO require()) |
Firebase is fully removed. Any reference to Firebase is dead code — delete it.
3. Plan Tiers¶
| Plan | DB value | Description |
|---|---|---|
| Free | 'free' |
Default. Discovery + Report only |
| Explorer | 'explorer' |
Full personal features (expires 1yr, admin = permanent) |
| Coach | 'coach' |
Coach portal access; orgRole: 'coach' grants via org |
| Organisation | 'organisation' |
Team/org tools only — NO personal Explore/Design/Master |
Institution is no longer a standalone plan. It is now an organisation subtype stored on the organisation doc as
kind: 'institution'and mirrored to users asorgKind: 'institution'.
hasPaidAccess() returns true for: admin, orgRole === 'coach', plan === 'coach', plan === 'explorer' (active). Returns false for organisation plan (org users use their own section).
4. Navigation Structure (Current — June 26 2026)¶
Sidebar sections by plan¶
| Section | Visible to | Items |
|---|---|---|
| Home | All | Dashboard |
| Discover | All | Assessment · My Report · optional Learning Strengths reflection |
| Explore | Explorer only | Book Guide · Mind & Body · Money Plan |
| Design | Explorer only | Career Path (Life Simulator) |
| Master | Explorer only | Growth Loop · Chemistry Check |
| Account | All | Profile |
| Coaching | Coach users | Coach Portal |
| Organisation | Org plan / orgRole | Org Dashboard · Team Map · Team Intelligence · Admin Panel |
| Platform | Admin | Admin |
Explore,Design,Mastercondition:hasPaidAccess(profile)— automatically excludes org-only users.
PATH_GROUP auto-expand map¶
/dashboard → Home
/questionnaire → Discover
/report → Discover
/learning-strengths → Discover (shown in sidebar after Discovery is complete; also linked from My Report)
/book → Explore ← moved June 24 2026
/wellness-profile→ Explore
/financial-plan → Explore
/life-simulator → Design ← moved June 24 2026
/growth-loop → Master ← moved June 24 2026
/chemistry → Master
/profile → Account
/organisation → Organisation
/team → Organisation
/team-intelligence → Organisation
/coach-portal → Coaching
/admin → Platform
5. Feature Map — All Pages¶
Public Routes (no auth)¶
| Route | Component | Notes |
|---|---|---|
/ |
LandingPage.tsx |
|
/login |
Login.tsx |
|
/register |
Register.tsx |
|
/reset-password |
ResetPassword.tsx |
|
/verify-email |
VerifyEmailPage.tsx |
|
/pricing |
Pricing.tsx |
Explorer + Coach cards only (institution removed June 24) |
/payment/success |
PaymentSuccess.tsx |
|
/terms |
TermsOfService.tsx |
|
/privacy |
PrivacyPolicy.tsx |
|
/about |
AboutPage.tsx |
|
/share/:token |
SharedView.tsx |
Public share link view |
Protected Routes (auth required)¶
| Route | Component | Gate | Plan |
|---|---|---|---|
/complete-profile |
CompleteProfile.tsx |
auth only | all |
/dashboard |
Dashboard.tsx |
auth only | all |
/questionnaire |
QuestionnairePage.tsx |
auth only | all |
/report |
MyReportPage.tsx |
auth only | all (locked features behind upgrade) |
/learning-strengths |
LearningStrengthsPage.tsx |
Discovery | optional student reflection; separate from Archetiq assessment |
/archetype-reveal |
ArchetypeReveal.tsx |
auth only | all |
/profile |
Profile.tsx |
auth only | all |
/book |
BookPage.tsx |
Explorer/Org plan | Explorer |
/wellness-profile |
WellnessProfilePage.tsx |
Discovery + Explorer | Explorer |
/financial-plan |
FinancialPlanPage.tsx |
Discovery + Explorer | Explorer |
/life-simulator |
LifeSimulatorPage.tsx |
Discovery + Explorer + Money Plan done | Explorer |
/growth-loop |
GrowthLoopPage.tsx |
Discovery + Explorer | Explorer |
/chemistry |
ChemistryPage.tsx |
Discovery + Explorer (NOT org) | Explorer |
/team |
TeamReport.tsx |
Org plan | Organisation |
/team-intelligence |
TeamIntelligencePage.tsx |
Org plan | Organisation |
/organisation |
OrganisationDashboardPage.tsx |
Org plan | Organisation |
/coach-portal |
CoachPortal.tsx |
orgRole=coach | Coach |
/admin |
AdminDashboard.tsx |
role=admin | Admin |
Redirects¶
| From | To |
|---|---|
/health-dashboard |
/wellness-profile?tab=health |
/life-insights |
/wellness-profile?tab=health |
/org-dashboard |
/organisation |
/relationship-lens |
/chemistry?tab=personal |
/people-blueprint |
/chemistry?tab=work |
Deleted Routes (June 24 2026 — DO NOT RE-ADD)¶
/life-design—DesignMyLifePage.tsx— deleted/life-design-legacy—LifeDesignPage.tsx— deleted/self-mastery—SelfMasteryPage.tsx— deleted- All
pages/lifeDesign/subfiles — deleted - All
components/lifeDesign/— deleted services/ikigaiEngine.ts,foundationDerivation.ts,selfMasteryData.ts— deleted
6. Gate Logic (journeyGates.ts)¶
Source file:
client/src/utils/journeyGates.tsRule: Change gate logic HERE only. ProtectedRoute + Layout import from this file.
| Function | Condition | Used by |
|---|---|---|
hasPaidAccess(profile) |
admin OR orgRole=coach OR (plan=explorer AND not expired) | everywhere |
canAccessOrganisation(profile) |
admin OR (discoveryCompleted AND (plan=organisation OR (orgId AND orgKind != institution))) | Org section |
canAccessBook(profile) |
admin OR hasPaidAccess OR canAccessOrganisation | Book route |
canAccessChemistry(profile) |
admin OR (discoveryCompleted AND hasPaidAccess) | Chemistry — org excluded |
canAccessFutureStudio(profile) |
discoveryCompleted AND financialPlan completed | Life Simulator nav lock |
canAccessGrowthLoop(profile) |
discoveryCompleted | Growth Loop nav lock |
canAccessFinancialPlan(profile) |
discoveryCompleted AND hasPaidAccess | Money Plan |
canAccessWellnessProfile(profile) |
discoveryCompleted AND hasPaidAccess | Mind & Body |
canAccessCorporate(profile) |
admin OR (org: discoveryCompleted + isPlanActive) OR (discoveryCompleted + hasPaidAccess) | People Blueprint (Work tab) |
canAccessCompare(profile) |
admin OR (discoveryCompleted AND hasPaidAccess) | Relationship Lens (Personal tab) |
canAccessCoachPortal(profile) |
admin OR plan=coach OR orgRole=coach | Coach Portal |
ProtectedRoute props (current)¶
adminOnly · requiresDiscovery · requiresFoundations · requiresPayment
requiresBook · requiresChemistry · requiresOrganisation
lockedTitle · lockedReason
requiresFoundations= Discovery + Money Plan completed → used by/life-simulatoronly
7. Data Model — User Document¶
Key fields stored on users collection (MongoDB):
Identity¶
uid, email, name, firstName, lastName, role
plan: 'free'|'explorer'|'coach'|'organisation'
planExpiresAt, orgId, orgKind, orgRole
photoURL, bio, mobile, age, gender, occupation, education, skills
Journey State¶
discoveryCompleted: boolean
scores: { archetype, scores{}, layer1, layer2, ... }
learningStrengths: { version, answers{}, scores{}, completedAt } ← optional student reflection; separate from assessment scores
wellnessProfile: { ... } ← Mind & Body completion marker
financialPlan: { ... } ← Money Plan completion marker
Career Path Data (all saved from CareerFitLab)¶
careerLabAnswers: {
ikigai: { interests, skills, mission, vocation }
lifeCtx: { joyTimeDisappears, joyPeopleComeToYou, joyFreeEnergy,
productiveAnger, idealDay, careerCurrentReality }
aspiration, hoursPerWeek, blockers[], blockerOther
intentionChoice, pathChoices[]
suggestedRoles[], chosenRole, customRoleNote, isCustomRole
wizardStep, savedAt
}
careerFitResult: {
bestRole, targetIndustry, recommendedPrimaryPath
whyThisFits[], firstAction, executionStrategy{}
roleSuitability: { verdict, score, suited[], gaps[], summary } ← added June 26 2026
next90Days: { summary, skillsToLearn[] }
savedAt
}
careerCommitment: {
plan: { bestRole, targetIndustry, ... }
goals[], committedAt, concernsAddressed[]
}
Career Context (from LifeSimulatorPage selectors)¶
currentStatus, currentGoal, areaOfInterest[]
passionChips[], vocationChips[]
careerContextInterests[]
Growth Loop¶
Gamification¶
xp: number
level: 'Stardust'|'Comet'|'Nova'|'Supernova'
badges: string[]
streak: number, lastActiveDate
Coaching / Social¶
CRITICAL:
planandplanExpiresAtchanges MUST go throughPOST /api/admin/change-plan. Never write them viaPUT /api/users/me— those fields are stripped by the users route.
8. Server Routes¶
All routes mounted in server/src/server.js:
| Mount | File | Auth |
|---|---|---|
/api/auth |
auth.js |
public (register/login) |
/api/users |
users.js |
authMiddleware (plan/payment fields stripped) |
/api/responses |
responses.js |
authMiddleware |
/api/ai |
ai.js |
authMiddleware (rate-limited per endpoint) |
/api/stripe |
stripe.js |
public webhook + auth |
/api/share-links |
shareLinks.js |
authMiddleware (GET public) |
/api/coaches |
coaches.js |
authMiddleware |
/api/coach-requests |
coachRequests.js |
authMiddleware |
/api/coach-applications |
coachApplications.js |
authMiddleware |
/api/conversations |
conversations.js |
authMiddleware |
/api/notifications |
notifications.js |
authMiddleware |
/api/organisations |
organisations.js |
authMiddleware |
/api/cohorts |
cohorts.js |
authMiddleware |
/api/teams |
teams.js |
authMiddleware |
/api/workshops |
workshops.js |
mixed |
/api/promo-codes |
promoCodes.js |
authMiddleware |
/api/report-feedback |
reportFeedback.js |
authMiddleware |
/api/digest |
digest.js |
authMiddleware |
/api/health |
health.js |
authMiddleware |
/api/admin |
admin.js |
authMiddleware + adminMiddleware |
Key AI Endpoints (/api/ai/)¶
| Endpoint | Purpose | Rate limit |
|---|---|---|
POST /generate |
Generic structured AI output | 20/hr |
POST /chat |
Multi-turn chat (AiGuide, health coach) | 30/hr |
POST /career-decision |
Full career plan + role suitability | 20/hr |
POST /health-coach |
Health coaching conversation | 15/hr |
POST /draft-life-plan |
Life plan assembly | 10/hr |
9. Dependency Map — Change Ripple Guide¶
Read this BEFORE implementing any change. If you change X, check all items in the right column.
| Change Area | Must Also Check / Update |
|---|---|
| User doc shape (add/remove field) | PUT /api/users/me allow-list in users.js · UserProfileContext.tsx polling · ProtectedRoute.tsx gate props · journeyGates.ts · TypeScript types in db.ts |
| Plan/payment fields | ONLY via POST /api/admin/change-plan · hasPaidAccess() in journeyGates · Pricing.tsx feature list · Layout.tsx section visibility |
Gate function (journeyGates.ts) |
ProtectedRoute.tsx (page-level gate) · Layout.tsx (nav lock) · access-control.md · this file §6 |
| Nav section visibility | Layout.tsx navGroups · Layout.tsx PATH_GROUP auto-expand · access-control.md · this file §4 |
| Add new page | App.tsx route · Layout.tsx nav item + PATH_GROUP · ProtectedRoute.tsx if new gate needed · access-control.md · this file §5 |
| Delete a page | App.tsx remove route + lazy import · Layout.tsx remove nav item + PATH_GROUP entry · ProtectedRoute.tsx remove dead props · journeyGates.ts remove dead functions · this file §5 "Deleted" |
| Add server route | Mount in server.js · Apply authMiddleware unless explicitly public · client/src/api/client.ts for client calls · this file §8 |
| Sharing feature | Check shareLinks.js + generateShareLink() / deleteShareLink() in db.ts + SharedView.tsx — extend, don't duplicate |
| Chemistry/Compare | ChemistryPage.tsx · RelationshipLensPage.tsx · PeopleBlueprintPage.tsx · canAccessChemistry() + canAccessCompare() · WorkChemistryTab in TeamIntelligencePage |
| Career Path data | careerLabAnswers in users.js allow-list · CareerFitLab.tsx saveToCloud() · careerFitResult MongoDB save in analyze() · careerDecision.ts types · /api/ai/career-decision server schema |
| Growth Loop goals | GrowthLoopPage.tsx · GoalsKanbanTab.tsx · LifeSimulatorPage.tsx (career goals sync to masterPlan) · growthLoop user doc field |
| Gamification (XP/badges) | gamification.ts (client) · Dashboard.tsx display · BadgeDisplay.tsx · XP awarded at: assessment, wellness, financial, career sprint, life design |
| Coaching flow | /api/coach-applications · /api/coach-requests · /api/coaches · /api/conversations · /api/notifications · 4 client pages |
| Organisation feature | organisations.js · OrganisationDashboardPage.tsx · TeamIntelligencePage.tsx · canAccessOrganisation() · TeamIntelligencePage Work Chemistry tab |
10. Change Log¶
Format:
YYYY-MM-DD | Area | Description
October 2026¶
| Date | Area | Change |
|---|---|---|
| 2026-10-11 | Audit | Ponytail Book Guide completeness/publication review across seven personal modules: 12 pending findings covering stale walkthroughs, missing Learning Strengths chapter, evidence/safety claims, manuscript/export mismatch and rights readiness. Review-only; see BOOK-001..012 and proposed structure in docs/plan.md. |
| 2026-10-11 | Docs Setup | Installed user-level Pandoc 3.12.1, MiKTeX 25.12 (XeLaTeX), and requirements-docs.txt packages in Python 3.12.10. Full docs-build.ps1 succeeded and regenerated PDF, DOCX and site; missing-tool blocker resolved. No docs deployment. |
| 2026-10-11 | Audit | Docs build verification: 3 findings tracked in docs/plan.md - missing prerequisites fixed; existing PDF glyph/link warnings and private-reference publication risk remain pending. |
| 2026-10-11 | Deploy | Published catalogue relocation and browse-only notes to production/demo as career-catalogue-move-20261011-091909. My Report retains personalized sectors; Career Path owns browse-all; Learning Strengths remains eight-area focused. Three routes/new bundles/API bases verified; 13 regression tests and 10 deployment checks passed. Backend code unchanged; rollback backups retained. |
| 2026-10-11 | Career Path | Moved the browse-all sector catalogue from My Report to Career Path; report retains personalized suggestions/reasons/work styles, Learning Strengths remains eight-area/top-three focused. Shared sector details and localized browse-only/AI distinction notes; gates and AI inputs unchanged. TypeScript/build and three-page desktop/mobile fixtures pass. Not deployed. |
| 2026-10-11 | My Report | Added a localized browse-only note beside the sector selector: selection is not saved or sent to Career Path AI, which uses its separate questionnaire. Selector references the note via aria-describedby. TypeScript passes; not deployed. |
| 2026-10-11 | Deploy | Released all report-sector and Learning Strengths updates to production/demo as learning-sectors-20261011-085409. Staged dual builds, asset-first publication, atomic entry switches and rollback backups; backend source unchanged. Both report routes/new bundles return HTTP 200 with correct API bases; 13 regression tests and 10 deployment checks passed. Generated docs remain blocked by missing Pandoc/MkDocs. |
| 2026-10-11 | Learning Strengths | Categorized career guidance for all eight areas with pathways, learning actions and experiments; refined the top-three summary with sector categories and explicit ties. Reuses sector data without changing scoring or persistence. Seven focused tests and desktop/mobile fixture checks pass. Local only; not deployed. |
| 2026-10-11 | Audit | Scoped report sector review, 2 findings resolved: role-only recommendations ignored profile context; superseded role selector removed after usage checks. See RPT-SECTOR-001..002 in docs/plan.md. |
| 2026-10-11 | My Report | Replaced narrow role suggestions with a 22-sector catalogue, four explainable sector starting points using archetype/education/non-student occupation, and three work-style paths. Student punctuation guards and supported-language labels covered by tests. Local only; not deployed. |
| 2026-10-11 | Learning Strengths | Shortened summary to labels and ratings; added interest-based career examples and exploration activities from the top three areas, including ties. Existing detailed charts, scoring, and persistence retained. Six focused tests, TypeScript/build, and desktop/mobile fixture checks pass. Local only; not deployed. |
| 2026-10-11 | Deploy | Published career exploration frontend to production and demo as career-exploration-20261011-081358 using staged dual builds and atomic entry switches; old assets retained, backend source unchanged. HTTPS report/assets verified and all 10 standard health/login/manual/reseed checks passed. Rollbacks under each app's backups/career-exploration-20261011-081358/public. |
| 2026-10-11 | Audit | Ponytail report career exploration review, 2 findings: concrete roles added (RPT-CAREER-001 fixed); theoretical force-pair reachability remains unchanged (RPT-CAREER-002 pending). See docs/plan.md. |
| 2026-10-11 | My Report | Added three careers per primary archetype x force, two secondary alternatives, translated role titles, reused force guidance, exploration caveat/action, and existing Career Path link inside Career & Team Match/PDF. No scoring, persistence, gate, or share changes. |
| 2026-10-07 | Audit | Interconnected Personal Journey audit found and removed 1 unreferenced legacy goal aggregator; shared module contracts retained. JOURNEY-001 resolved. See docs/plan.md. |
| 2026-10-07 | Audit | Ponytail Org/Team follow-up audit: 0 new findings; revalidated resolved ORG-001 and ORG-002. See docs/plan.md. |
| 2026-10-07 | Org/Team Refactor | Removed orphaned TeamsTab and unused maturity declarations; made fallback year dynamic. Resolved ORG-001..ORG-002. See docs/plan.md. |
| 2026-10-07 | Chemistry Check | Removed the unused score-dot helper and nested entitlement gates; resolved CH-001 and CH-002. See docs/plan.md. |
| 2026-10-07 | Audit | Ponytail Chemistry Check follow-up audit: 0 new findings; CH-001 and CH-002 subsequently resolved. See docs/plan.md. |
| 2026-10-07 | Audit | Ponytail review of Chemistry Check found 2 low-severity candidates: unused score helper and duplicate nested entitlement gates; both resolved. See CH-001..CH-002 in docs/plan.md. |
| 2026-10-07 | Growth Loop | Removed unused date/status definitions, deduplicated pillar order and labels; resolved GL-001..GL-004. See docs/plan.md. |
| 2026-10-07 | Audit | Ponytail Growth Loop follow-up audit found 1 additional low-severity candidate; all four findings are now resolved. See GL-001..GL-004 in docs/plan.md. |
| 2026-10-07 | Audit | Ponytail review of Growth Loop found 3 low-severity candidates: unused date formatter, duplicate pillar order, and unread pillar labels; all three resolved. See GL-001..GL-003 in docs/plan.md. |
| 2026-10-07 | Audit | Ponytail Career Path follow-up audit: 0 new findings; revalidated pending CP-001 and CP-002. See docs/plan.md. |
| 2026-10-07 | Career Path | Removed unused simulator helpers and the unreferenced SkillTreeCard scaffold; resolved CP-001 and CP-002. See docs/plan.md. |
| 2026-10-07 | Audit | Ponytail review of Career Path found 2 low-severity deletion candidates: unused simulator helpers and the unreferenced SkillTreeCard scaffold; both resolved. See CP-001..CP-002 in docs/plan.md. |
| 2026-10-07 | Audit | Ponytail follow-up audit of the Financial Plan found 3 additional low-severity deletion candidates; all five Financial Plan findings are resolved. See FP-001..FP-005 in docs/plan.md. |
| 2026-10-07 | Audit | Ponytail review of the Financial Plan found 2 low-severity simplifications: unused framework data load and redundant score alias; both resolved. See FP-001..FP-002 in docs/plan.md. |
| 2026-10-07 | Audit | Ponytail follow-up audit of the Wellness Profile found 2 low-severity candidates: duplicate sidebar section labels and unused wellness option constants; both resolved. See WP-004..WP-005 in docs/plan.md. |
| 2026-10-07 | Audit | Ponytail review of the Wellness Profile found 3 low-severity deletion candidates (unused force-bridge helper, unused guide constant, duplicate quiz progress); all three resolved. See WP-001..WP-003 in docs/plan.md. |
| 2026-10-07 | Audit | Ponytail whole-repo overengineering audit (506 tracked files): 1 low-severity finding, duplicate Vite prod/dev declaration; see PONY-001 in docs/plan.md. PONY-001 resolved: vite removed from production dependencies; retained in devDependencies. |
| 2026-10-05 | Book Guide | Updated archetype/force tables to use the current element and force icons; added all 15 animal cues with existing identity names, the optional student Learning Strengths module, and current report guidance without the removed confidence gauge. Deployed to production; /book and its new bundle return HTTP 200. |
| 2026-10-05 | Report confidence display | Removed the fixed 90/70/50 confidence gauge and tier card from the Identity Blueprint; kept archetype score bars and energy orientation, enlarged the primary force mark, and added the secondary archetype element icon. Updated the in-report guide to explain only Energy Orientation. Deployed to production; report assets return HTTP 200. |
| 2026-10-05 | Learning Strengths | Added and deployed to production and demo a personalized summary of the eight exploration areas, strongest engagement signals, study approaches, and focus conditions, plus a weekly experiment combined from the student's highest-rated results. Both Learning Strengths routes and updated page assets return HTTP 200; lint/build and four scoring tests pass. |
| 2026-10-04 | Identity visuals | Deployed identity display to production and demo across the main Identity Blueprint hero, Layer 1 × Layer 2, landing matrix, Dashboard, Money Plan, Career Fit, share-card export, and Book Guide. Layer 1 shows Fire/Space/Water/Earth/Air symbols beside archetype names only; all 15 pairings show the animal, short cue, and existing identity name. Flow uses an arrow distinct from Specialist/Air's Wind mark. Client lint/build passed; production and demo report assets return HTTP 200 and both health checks are OK. |
| 2026-10-04 | Landing page | Added and deployed a localized feature card describing the optional 43-prompt Student Learning Strengths reflection; clarifies it follows Discovery and does not change the Archetiq score. Verified the live homepage renders the card and the landing chunk returns HTTP 200. |
| 2026-10-04 | Pricing | Fixed missing dashboardTarget and hasStartupOS references in the paid-plan banner, restoring StartupOS-aware navigation for paid users; client lint/build passed and the fix was deployed to production. Verified /pricing and its updated asset return HTTP 200. |
| 2026-10-04 | Student learning module | Deployed optional /learning-strengths reflection to production; linked from My Report and shown in Discovery sidebar after assessment completion, with four localized nav labels, 43 self-report prompts, separate profile persistence, progress/draft recovery, and visual results. Production route/asset return HTTP 200 and API is healthy. Does not change archetype scoring. See docs/plan.md. |
| 2026-10-04 | Audit | Checked whether the 47-question assessment measures VAK learning preference or intelligence types. Neither is scored; existing Learning Mode is archetype-derived. See docs/plan.md. |
| 2026-10-04 | Mail delivery | Follow-up confirmed the registered address also had an inbox-delivery issue. Restored failed production OpenDKIM with a loopback TCP socket and updated both Postfix milter paths; verified a signed replacement reset email accepted by Yahoo at 05:43 UTC. Inbox placement remains recipient-confirmed; see docs/plan.md finding 3. |
| 2026-10-04 | Audit | Investigated password-reset delivery, 2 findings: reported email spelling has no production account; separate missing mail defaults fixed locally with four passing regression tests. See docs/plan.md. No production records changed or reset email sent. |
July 2026¶
| Date | Area | Change |
|---|---|---|
| 2026-07-17 | StartupOS-ARCH | Closed Phase 6 Stabilization and Legacy Retirement: finalized the release closeout in docs/startupos-arch/PHASE6_STABILITY_REPORT.md, marked the phase tracker as Completed (100%), and confirmed ARCH is the sole founder-facing startup runtime with legacy /api/startup-v2 retired |
| 2026-07-17 | StartupOS-ARCH | Continued Phase 6 Stabilization and Legacy Retirement: updated docs/architecture.md to retire /api/startup-v2 and reflect the ARCH mission runtime, and added docs/startupos-arch/PHASE6_STABILITY_REPORT.md to track the remaining monitoring window and final release stability criteria |
| 2026-07-17 | StartupOS-ARCH | Continued Phase 6 Stabilization and Legacy Retirement: deleted legacy StartupOS workspace pages, shell, state store, and workspace data from client/src/pages/startup/, client/src/store/, and client/src/data/, keeping only the ARCH mission runtime and redirect surface while the phase tracker advances to In Progress (50%) |
| 2026-07-17 | StartupOS-ARCH | Started Phase 6 Stabilization and Legacy Retirement: removed the legacy StartupOS sidebar group from client/src/components/Layout.tsx, simplified the home-page founder link to ARCH-only entry, pruned unused legacy startup shell lazy imports from client/src/App.tsx, and moved the phase tracker to In Progress (25%) while keeping the ARCH route and legacy redirects intact for monitoring |
| 2026-07-17 | StartupOS-ARCH | Completed Phase 5 Migration and Cutover: added POST /api/startup-arch/migrate to import legacy StartupJourney answers into ARCH mission state, stored migratedFromStartupId for auditability, surfaced migration status and import control in client/src/pages/startup/ArchMissionPage.tsx, and closed Phase 5 with docs/startupos-arch/PHASE5_QA_EVIDENCE.md plus phase tracker moved to Completed (100%) |
| 2026-07-17 | StartupOS-ARCH | Started Phase 5 Migration and Cutover: added a legacy StartupOS V2 to ARCH migration bridge in server/src/routes/startupArch.js, mapped old workspace answers into ARCH stage fields, and surfaced migration status in the ARCH runtime for transition verification |
| 2026-07-17 | StartupOS-ARCH | Completed Phase 4 Personality Adaptation Core: added identity-aware ARCH adaptation profiles in server/src/routes/startupArch.js and server/src/models/StartupArchJourney.js, threaded archetype/force context through client/src/store/startupArchStore.ts and client/src/pages/startup/ArchMissionPage.tsx, surfaced tone and pacing in the runtime, and closed Phase 4 with docs/startupos-arch/PHASE4_QA_EVIDENCE.md plus phase tracker moved to Completed (100%) |
| 2026-07-17 | StartupOS-ARCH | Started Phase 4 Personality Adaptation Core: added Layer 1 archetype tone adaptation and Layer 2 force pacing adaptation to ARCH coach turns, stored adaptation profile state on the ARCH journey record, and exposed personality adaptation context in the mission runtime |
| 2026-07-17 | Runtime Stability | Fixed false Non-JSON response (200) client errors for endpoints that legitimately return JSON null (including Team Maturity check-in reads) by updating client/src/api/client.ts response parsing to track parse success explicitly (isJson) instead of treating null as parse failure; deployed to production and demo |
| 2026-07-17 | Runtime Stability | Fixed Team Maturity runtime failure (MongoDB not initialized) by migrating server/src/routes/teamMaturity.js from req.app.locals.mongoDb access to mongoose.connection.db across check-in, team dashboard, and priorities endpoints; deployed to production/demo and verified route calls succeeding in PM2 logs |
| 2026-07-17 | Runtime Stability | Fixed widespread 429 lockouts and page inaccessibility on production/demo by adding client GET dedupe + short cache + 429 cooldown handling in client/src/api/client.ts, adding startup fetch cooldown guards in client/src/store/startupStore.ts, reducing Team Maturity autosave burst frequency with unchanged-payload skip in client/src/pages/TeamMaturityPage.tsx, hardening Financial Plan personality heading null safety in client/src/pages/financialPlan/MoneyPersonalityStep.tsx, and updating server limiters so authenticated traffic is not blocked by the global IP limiter (server/src/server.js) while increasing per-user burst capacity (server/src/middleware/rateLimiter.js) |
| 2026-07-17 | StartupOS-ARCH | Completed Phase 3 AI Coach and Mapping: added Gemini-backed coach turns with deterministic fallback in POST /api/startup-arch/coach-turn, expanded hidden mapping with confidence/completeness/stage summary/framework signals, exposed GET /api/startup-arch/outputs, refreshed output studio after answer changes, and closed Phase 3 with docs/startupos-arch/PHASE3_QA_EVIDENCE.md and tracker updated to Completed (100%) |
| 2026-07-17 | StartupOS-ARCH | Started Phase 3 AI Coach and Mapping: added POST /api/startup-arch/coach-turn with Gemini-backed coach loop and deterministic fallback, derived hidden mapping from mission answers into ARCH journey state, added GET /api/startup-arch/outputs for structured output studio payloads, extended client/src/store/startupArchStore.ts with outputs/coach-turn loading, and rendered AI Coach Loop + Output Studio panels in client/src/pages/startup/ArchMissionPage.tsx |
| 2026-07-17 | StartupOS-ARCH | Completed Phase 2 Mission Runtime Build: expanded all ARCH stages to production mission sets (A1-A4, R1-R4, C1-C4, H1-H4) in client/src/data/startupArchMissionContract.ts, upgraded runtime in client/src/pages/startup/ArchMissionPage.tsx with mission-level stage nav, query-based resume, debounced autosave feedback, lock auto-advance, unlock outcomes stack, and stage completion + next-best mission CTA, and published closure evidence in docs/startupos-arch/PHASE2_QA_EVIDENCE.md with phase tracker moved to Completed (100%) |
| 2026-07-17 | StartupOS-ARCH | Started Phase 2 mission runtime build: expanded Assess and Rethink mission contract to multi-mission production set in client/src/data/startupArchMissionContract.ts, upgraded client/src/pages/startup/ArchMissionPage.tsx with mission-level stage navigation, debounced autosave + status feedback, stage/mission resume via query params, lock-triggered mission auto-advance, and visible unlock outcome cards sourced from completed mission answers |
| 2026-07-17 | StartupOS-ARCH | Completed Phase 1 Foundation Lock: wired app-level telemetry bridge client/src/services/startupArchTelemetry.ts, added Mongo telemetry sink endpoint POST /api/startup-arch/telemetry in server/src/routes/startupArch.js (collection startupArchTelemetryEvents), finalized ARCH founder mission entry + stage nav UX active-state fix in client/src/components/Layout.tsx, and published QA closure evidence in docs/startupos-arch/PHASE1_QA_EVIDENCE.md with phase tracker moved to Completed (100%) |
| 2026-07-17 | StartupOS-ARCH | Advanced Phase 1 founder runtime integration: added client/src/pages/startup/ArchMissionPage.tsx (one-mission, suggestion-first UI with answer lock + unlock message + event dispatch telemetry hooks), rewired canonical startup founder route to ARCH (/startup) in client/src/App.tsx, added legacy startup route redirects to ARCH stage params (assess/rethink/create/hone), and updated StartupOS sidebar labels/navigation to ARCH stages in client/src/components/Layout.tsx |
| 2026-07-17 | StartupOS-ARCH | Started ARCH Phase 1 foundation implementation with startup-independent scaffolding: added user-keyed ARCH state model server/src/models/StartupArchJourney.js, added ARCH API routes server/src/routes/startupArch.js (GET /api/startup-arch/state, PATCH /api/startup-arch/answers, POST /api/startup-arch/reset), mounted /api/startup-arch in server/src/server.js, added frontend mission contract baseline client/src/data/startupArchMissionContract.ts, added frontend ARCH store scaffold client/src/store/startupArchStore.ts, and added live phase completion tracker docs/startupos-arch/PHASE_STATUS.md with README/plan/runbook references |
| 2026-07-17 | StartupOS | Applied a full Gen Z user-feedback reassessment across all StartupOS ARCH docs with time and simplification as top priority: added feedback-driven must-ship improvements, tightened copy constraints, enforced suggestion-first interactions, introduced hard speed checks (answer capture and mission loop timing), updated plan/runbook release controls, and refreshed alignment audit conclusions |
| 2026-07-17 | StartupOS | Re-audited and aligned StartupOS ARCH documentation pack to Gen Z UX requirements: normalized timing assumptions (60-second-friendly input vs full mission loop targets), added start-now phased execution sections (REPLACEMENT_IMPLEMENTATION_PLAN.md section 6A, IMPLEMENTATION_RUNBOOK.md section 1A), added explicit Gen Z compliance checks to personalization QA, and published cross-document alignment report docs/startupos-arch/DOCUMENTATION_ALIGNMENT_AUDIT_2026-07-17.md |
| 2026-07-17 | StartupOS | Updated docs/startupos-arch/REPLACEMENT_IMPLEMENTATION_PLAN.md to schedule personality adaptation directly in the core timeline: shifted plan to 5-6 weeks, added Week 5 personalization QA/tuning and Week 6 stabilization buffer, and added explicit 5A Layer 1/2/3 implementation sequence with confidence and blind-spot branching phases |
| 2026-07-17 | StartupOS | Added personality-driven ARCH implementation docs under docs/startupos-arch/: PERSONALITY_MISSION_ORCHESTRATION_SPEC.md (Layer 1/2/3 mission adaptation model), ARCHETYPE_FORCE_PROMPT_MATRIX.md (archetype x force prompt system), ADAPTIVE_TIMING_MODEL_AND_SLA.md (realistic completion timing + SLA targets), and PERSONALIZATION_QA_CHECKLIST.md (pre-launch personalization validation gates) |
| 2026-07-17 | StartupOS | Added full ARCH StartupOS replacement documentation pack under docs/startupos-arch/: REPLACEMENT_IMPLEMENTATION_PLAN.md (full-switch cutover plan), MISSION_COPY_DAY1_DAY14.md (ready-to-use two-week mission copy), GENZ_EXPERIENCE_SYSTEM.md (Gen Z UX system), IMPLEMENTATION_RUNBOOK.md (execution and release operations), and README.md (usage/index) |
| 2026-07-17 | StartupOS | Implemented Phase 6 legacy retirement cleanup: removed orphaned legacy StartupOS canvas helper components (client/src/components/AiMentorPanel.tsx, client/src/components/shared/CanvasSection.tsx, GuidedPrompt.tsx, IndustryPrompt.tsx), migrated coach demo reseed startup payload from canvas collection seeding to StartupOS V2 journey/artifact seeding in server/src/routes/coachTools.js, and completed the V2-only founder journey transition |
| 2026-07-17 | StartupOS | Implemented Phase 5 outputs engine: added generated artifact persistence model server/src/models/StartupArtifact.js, added StartupOS V2 artifact endpoints in server/src/routes/startupJourney.js (GET /artifacts, POST /generate/:artifactKey) for bmc, pitchBrief, validationBrief, and growthPlan, extended frontend journey store with artifact load/generate methods, and integrated a Scale workspace outputs panel in client/src/pages/startup/WorkspaceShell.tsx to generate and display artifacts directly from decision answers |
| 2026-07-17 | StartupOS | Implemented Phase 4 backend reset + API integration: removed legacy canvases backend surface (server/src/routes/canvases.js, server/src/models/Canvas.js, and /api/canvases mount), introduced decision-based StartupOS V2 persistence via server/src/models/StartupJourney.js and server/src/routes/startupJourney.js mounted at /api/startup-v2, updated Decision Lab context-case generation to consume StartupOS V2 workspace answers instead of canvas docs, and upgraded frontend startupJourneyStore + WorkspaceShell to load/save/reset through backend APIs |
| 2026-07-17 | StartupOS | Implemented Phase 3 frontend workspace engine: added centralized workspace schema in client/src/data/startupJourney.ts, added persisted answer store client/src/store/startupJourneyStore.ts (localStorage-backed), upgraded client/src/pages/startup/WorkspaceShell.tsx to render interactive card-based questions with required-field completion metrics, and activated cross-workspace progress navigation with Discover/Opportunity/Build/Validate/Scale flows |
| 2026-07-17 | StartupOS | Implemented Phase 2 frontend teardown: deleted legacy StartupOS 26-canvas page files and retired auxiliary legacy startup pages (DecisionLab, Institution, Lecturer, Onboarding, Settings), removed old journeyOrder.ts, removed canvasStore.ts, removed old canvas layout wrappers under client/src/components/patterns, and switched StartupOS to dedicated 5-workspace shell pages (Discover, Opportunity, Build, Validate, Scale) |
| 2026-07-17 | StartupOS | Implemented Phase 1 reset shell in app code: removed legacy 26-canvas StartupOS route map from client/src/App.tsx, introduced 5-workspace routes (/startup/discover, /startup/opportunity, /startup/build, /startup/validate, /startup/scale), redirected all legacy /startup/* paths to /startup/discover, and simplified StartupOS sidebar navigation in client/src/components/Layout.tsx to Founder Journey + 5 workspaces |
| 2026-07-17 | StartupOS | Rebuilt docs/startupOS.md with decision-first architecture: Customer Value Chain (CVC) as invisible backbone, ARCH Framework (Assess → Rethink → Create → Hone) as signature method, 5 workspaces (Discover → Opportunity → Build → Validate → Scale) replacing 26-canvas model, AI-first UX (conversation replaces canvas filling), frameworks as outputs not inputs, cards not canvases. Full migration plan documented. |
| 2026-07-17 | StartupOS | Completed canvas stability fix wave in live Personality-Test: corrected invalid canvas type keys, added fetch hydration across persisted StartupOS canvases, aligned saveCanvas return contract, and reduced StartupOS TypeScript errors to 0 while keeping build green |
| 2026-07-17 | Audit | StartupOS canvas/system audit completed for live Personality-Test surface; 6 findings (2 critical, 3 high, 1 medium) logged in docs/plan.md with remediation checklist |
| 2026-07-16 | Deploy Ops | Restored the split demo runtime on VPS: re-created PM2 process personality-app-demo, rewired demo.archetiq.com nginx to /opt/personality-app-demo on port 5006, synced startup backend utility files, and re-ran demo verification with all 16 checks passing |
| 2026-07-16 | StartupOS Merge | Resolved the startup owner/member id mismatch by switching startup ownership fields to Archetiq string ids, eliminating GET /api/startups cast failures under the merged auth model |
| 2026-07-16 | StartupOS Merge | Fixed startup client plumbing (personality_auth token handling and /api/api/* startup path drift), aligned institution/cohort/lecturer auth lookups to uid, and replaced Funding Readiness plus Institution Hub placeholders with live merged-app pages |
| 2026-07-16 | StartupOS Merge | Ported shared startup access control into startups, canvases, sprints, and Decision Lab routes; added GET /api/decision-lab/overview; and replaced the lecturer startup placeholder page with a live Decision Lab aggregate dashboard |
| 2026-07-16 | StartupOS Merge | Aligned the merged startup Decision Lab backend with the shipped DecisionLabPage: added default case seeding, restored POST /api/decision-lab/context-case/generate, fixed evaluate contract parity (caseId support, AI debrief payload, adaptive profile), persisted startup context fields (problemStatement, targetCustomer, oneLiner), fixed startup create owner lookup, and added the missing express-validator server dependency |
| 2026-07-16 | StartupOS Merge | Integrated full CANVAS_DATA from startup-playbook into seedStartupCanvases(): replaced empty {} canvas templates with realistic MindBridge EdTech/HealthTech demo content (persona, TAM/SAM/SOM, BMC, financials, pitch deck, team radar, etc.) for all 26 canvas types; fixed seed-demo-unified.js plan: 'institution' → plan: 'organisation' + orgKind: 'institution' (institution is an org subtype, not a plan); added 'founder' plan type to User model, admin change-plan, client db.ts, and journeyGates canAccessInstitution; seeded archteiq_demo@archetiq.com with plan:founder linked to MindBridge startup |
| 2026-07-15 | Team Maturity | N11 Fix: Added Team Maturity Page to sidebar navigation (conditional on org plan access), migrated maturityStage persistence from localStorage-only to dual localStorage + MongoDB (teams collection) for durability across storage clears, and verified demo seed data includes complete Q3 2026 team maturity check-ins with lead feedback |
June 2026¶
| Date | Area | Change |
|---|---|---|
| 2026-07-11 | Team Intelligence | Applied a follow-up clarity pass after Phase 4: simplified remaining Team Report fallback wording (Next move, Lead) and rewrote Org Optimiser UI copy for plain language (Team Snapshot, Team Move Simulator, Internal Move Opportunities, No internal moves needed, No new hires needed, Balanced) while preserving existing logic |
| 2026-07-11 | Team Intelligence | Implemented Phase 4 score de-emphasis: Team Fit no longer leads with numeric scoring, the quick fit snapshot now defaults to action-first guidance and hides numeric mechanics behind a See the logic disclosure, and Team Report now surfaces fit as a label (Fit snapshot) instead of foregrounding a score out of 100 |
| 2026-07-11 | Team Intelligence | Implemented Phase 3 plain-language rewrite across Team Intelligence: simplified Team Context questions, softened Hire Smarter and Interview Guide wording, rewrote Team Report section labels into clearer user-facing language (Big Picture, Stage Read, What's Helping This Team, What's Holding This Team Back, Next 90 Days), and simplified Work Chemistry framing for a more Gen Z-friendly flow |
| 2026-07-11 | Team Intelligence | Implemented Phase 2 simplification: demoted the old score-heavy Team Fit surface into a compact snapshot, repositioned the tab as Team Setup, removed the dense fit-detail/guidance blocks from the main tab flow, and pushed fuller interpretation responsibility into Team Report |
| 2026-07-11 | Team Intelligence | Started implementing the Team Intelligence simplification plan: rebranded Team Chemistry to Team Fit, switched visible labels from maturity/health language to fit/alignment language, simplified section copy (What's working, What's off right now, Best next move), and made Team Report explicitly state it is built from Team Context + roster + Team Fit signals |
| 2026-07-11 | Audit | Extended Team Intelligence audit with architecture recommendation: keep deterministic chemistry engine as hidden preprocessing for Team Report/Hire/Interview, but remove or demote standalone Team Chemistry tab in favor of a simpler Team Fit snapshot for users |
| 2026-07-11 | Audit | Team Intelligence audit completed for Team Context, Team Chemistry, and Team Report; 6 findings on semantics, scoring trust, AI dependency chain, and Gen Z clarity logged in docs/plan.md |
| 2026-07-11 | Team Intelligence | Refined Team Chemistry semantics for trust: added lifecycle guardrail so early-stage lifecycle contexts (forming/storming) do not display High-Performing maturity labels even with strong composition fit, and added explicit on-screen formula explainer for Coverage/Balance/Leadership weighting and context-derived critical archetypes |
| 2026-07-11 | Team Intelligence | Within-Team chemistry now always derives org roster from current selected team members (Team Map) instead of stale saved intelligenceRoster, and chemistry output lists (risk signals, strengths, what-next actions) now deduplicate repeated answer lines |
| 2026-07-11 | Team Intelligence | Fixed selected-team hydration race in Team Intelligence page: org team list refreshes no longer overwrite in-memory Team Context edits for the active team, so Team Chemistry reflects the latest context immediately after changes |
| 2026-07-11 | Team Intelligence | Aligned cross-tab context usage and freshness signaling: inter-team chemistry now uses current Team Context lens (not default), Org Optimiser respects selected team's latest in-memory context edits, and Hire/Interview/Report/Work Chemistry/Cross-Team outputs now show explicit up-to-date vs regenerate-needed status with autosave sync state for generated outcomes |
| 2026-07-11 | Deploy Ops | Hardened hostinger/deploy-personality-both.ps1 to preserve previous hashed assets/ files during rollout (no rm -rf assets) to avoid stale-client chunk fetch failures during cache transition |
| 2026-07-11 | Team Intelligence | Team Context now enforces required selections before save/unlock (including at least one pain point and one hiring intent), and context charts were clarified with explicit axis descriptions, stage-name labels, and lifecycle-level ticks so S1-S9 lines are presentation-ready |
| 2026-07-11 | Team Intelligence | Org flow now hides Team Context and all Team Intelligence tabs until a team is explicitly selected in "Analysing Team", preventing pre-selection default outputs that reduced trust |
| 2026-07-11 | Demo Ops | Fixed /api/coach-tools/demo-reseed to reuse stable demo user IDs instead of generating new UUIDs on each reseed, preventing active demo JWT sessions from turning into Session expired / 401 errors after reseed |
| 2026-07-11 | Team Intelligence | Mapped Team Context answers directly to chart narratives in Context tab: each chart now states which question(s) drove it (stage/goal/maturity/leadership/pain points/hiring intent) and includes explicit story text below the chart |
| 2026-07-11 | Team Intelligence | Refined Team Context chart UX for clarity/trust: added explicit mapping explanation (how stage maps to BCG/Lifecycle/Energy), improved chart styling/highlight states, and moved explanatory copy directly below each chart card |
| 2026-07-11 | Team Intelligence | Upgraded Team Context framework visuals to true chart-style displays: Evolution line chart, BCG 4-quadrant matrix with current-position dot, Team Lifecycle line chart, and Energy State chart (Flow/Catalyst/Anchor bars) with contextual explanation block |
| 2026-07-11 | Team Intelligence | Added Context-level ArchetiQ framework visual (9-stage line-chart progression with current-stage highlight) and immediate BCG/Tuckman/Energy explanation cards shown directly in Team Context tab once stage is selected |
| 2026-07-11 | Team Intelligence | Team Report now includes explicit evolutionFrameworkContext plus a visual 9-stage ArchetiQ Evolution Framework graph with current-stage highlighting so users can locate their business stage and relate progression |
| 2026-07-11 | Team Intelligence | Team Report now includes explicit tuckmanContext and energyContext fields (schema + prompt + UI cards) with visible lifecycle/energy badges and fallback descriptions from stage metadata |
| 2026-07-11 | Team Intelligence | Team Report now includes explicit bcgContext output (schema + prompt + UI card) with visible BCG badge/description from evolutionFramework so BCG labels are always explained in plain language |
| 2026-07-10 | Team Intelligence | Added AI Work Chemistry report generation in work-chemistry: prompt+schema-driven synthesis of selected manager/peer/report relationships with actionable 7-day plan, while keeping deterministic JSON relationship cards as baseline |
| 2026-07-10 | Team Intelligence | Refactored Hire Smarter flow: candidate source now Manual or Share Link only; Resume + Role Brief is a shared AI analysis section; renamed action to Analyze Candidate Fit; AI assessment block now renders at the bottom |
| 2026-07-10 | Team Intelligence | Fixed Team Report/Cross-Team AI output not rendering by parsing /api/ai/generate response { result: string } into structured JSON before setting page state |
| 2026-07-10 | Team Intelligence | Fixed Cannot read properties of undefined (reading 'label') crash by sanitizing legacy/malformed roster archetypes before analysis/report generation and adding defensive archetype normalization in teamIntelligenceEngine.ts |
| 2026-06-26 | CareerPath | Added roleSuitability to careerFitResult MongoDB save (was only in localStorage) |
| 2026-06-26 | CareerPath | CareerFitLab wizard restructured: 3-step → 2-step; Step 3 "Target Role" merged into Step 1 "Set Your Life Path"; Step 2 "Find My Career Plan" runs analyze() directly |
| 2026-06-26 | CareerPath AI | Added roleSuitability to CAREER_DECISION_SCHEMA and AI prompt — gives honest suited/not-suited verdict (Strong Match / Good Match / Partial Match / Not Recommended) with score, reasons, gaps |
| 2026-06-26 | CareerPath types | Added roleSuitability optional field to CareerDecisionAIResult in careerDecision.ts |
| 2026-06-26 | Fix | G1/G5: saveIndustry + saveDevelopmentTrack + load reads migrated to careerPath namespace (dual-write to lifeDesign for backward compat) |
| 2026-06-26 | Fix | G2: FinancialPlanPage careerIncomeHint/careerIncomeLow now reads careerPath.* first, falls back to lifeDesign.* |
| 2026-06-26 | Fix | G3: Removed dead "Self-Mastery 48h check-in" toggle from NotificationSettings.tsx (server job was removed in B2) |
| 2026-06-26 | Fix | G4: Updated stale Life Design comment in FinancialPlanPage.tsx |
| 2026-06-26 | Fix | H1 (dependency audit): careerPath added to ALLOWED_SELF_UPDATE in users.js — server was silently dropping all careerPath writes |
| 2026-06-26 | Fix | H2 (dependency audit): careerPath?: type added to UserProfile in db.ts |
| 2026-06-26 | Audit | Health/CareerPath/FinancialPlan/GrowthLoop assessment — 6 findings (I1–I6), 4 info — see docs/plan.md |
| 2026-06-26 | Fix | I1: generate-growth-plan reads careerPath.selectedPath (was stale lifeDesign.selectedPath) |
| 2026-06-26 | Fix | I2: runWeeklyFocusReminder now checks notificationPrefs.dailyHabit (was wrong weeklyFocus key — users could never opt out) |
| 2026-06-26 | Fix | I3/I4: Removed stale lifeDesign.pillars.health reference from both AiCoachTab.tsx and server health-coach AI prompt |
| 2026-06-26 | Fix | I5: Notification scheduler now checks growthLoop.goals[] for in-progress items (new users were skipped entirely) |
| 2026-06-26 | Fix | I6: healthGoals?: HealthGoal[] added to UserProfile interface in db.ts |
| 2026-06-26 | Fix | I8: generate-growth-plan now uses wellness.energyScore (was stale lifeWheelScores.health field) |
| 2026-06-26 | Audit | Dashboard + MyReportPage + server auth/users audit — 13 findings (L1–L13) — see docs/plan.md |
| 2026-06-26 | Fix | L1 (CRITICAL): Added xp, level, badges, streakCount, lastStreakDate to ALLOWED_SELF_UPDATE — gamification writes were silently dropped for all users |
| 2026-06-26 | Fix | L2: computeBackfill() now called from Dashboard useEffect when profile.xp === undefined — retroactively awards XP for pre-gamification completions |
| 2026-06-26 | Fix | L3 (CRITICAL): SSO token endpoint now reads user.archetype/user.secondaryArchetype/user.scores (was wrong field names — Startup Playbook always got empty archetype) |
| 2026-06-26 | Fix | L4: Removed unused canAccessFutureStudio import from MyReportPage.tsx |
| 2026-06-26 | Fix | L5: Removed dead Blueprint section (~190 lines in <div className="hidden">) and showBlueprint state from MyReportPage.tsx |
| 2026-06-26 | Fix | L6: "What's Next" CTA in MyReportPage is now dynamic — adapts to actual user progress (was hardcoded to /wellness-profile) |
| 2026-06-26 | Fix | L7: Badge award in handleShareIdentityCard now uses liveProfile from context (was stale local profile state) |
| 2026-06-26 | Fix | L8+L9: Dashboard NBA flow now has explicit "Select Career Path" step; careerCommit branch uses t() keys |
| 2026-06-26 | Fix | L10: Removed 5 unused icon imports from Dashboard.tsx (Heart, Briefcase, Users, Compass, Target) |
| 2026-06-26 | Fix | L11: Removed stale lifeDesignCompleted from ALLOWED_SELF_UPDATE in users.js |
| 2026-06-26 | Fix | L12: Removed unused CAREER_PATHS_DATA import from MyReportPage.tsx |
| 2026-06-26 | Fix | L13: Dashboard SSO launch failure now shows user-visible error message (5s auto-dismiss) |
| 2026-06-24 | Navigation | Restructured nav: Book → Explore section; Life Simulator → Design section; Growth Loop → Master section; Chemistry + Growth Loop both in Master |
| 2026-06-24 | Navigation | Section visibility: Explore/Design/Master only shown to hasPaidAccess() users (excludes org plan) |
| 2026-06-24 | Navigation | Org users no longer see Explore/Design/Master sections; Chemistry not accessible to org users |
| 2026-06-24 | Gates | canAccessChemistry — removed org plan path; Explorer only now |
| 2026-06-24 | Gates | canAccessFutureStudio — restored financialPlan requirement (Life Simulator needs Money Plan data) |
| 2026-06-24 | Gates | requiresFoundations prop restored to ProtectedRoute for Life Simulator route |
| 2026-06-24 | Cleanup | Deleted: DesignMyLifePage.tsx, LifeDesignPage.tsx, SelfMasteryPage.tsx |
| 2026-06-24 | Cleanup | Deleted: pages/lifeDesign/ folder (all step components) |
| 2026-06-24 | Cleanup | Deleted: pages/selfMastery/SessionAnalytics.tsx |
| 2026-06-24 | Cleanup | Deleted: components/lifeDesign/ folder (all components) |
| 2026-06-24 | Cleanup | Deleted: services/ikigaiEngine.ts, foundationDerivation.ts, selfMasteryData.ts |
| 2026-06-24 | Cleanup | Removed dead ProtectedRoute props: requiresCareerPath, requiresLifeDesign, requiresPeopleBlueprint, requiresRelationshipLens, requiresInstitution |
| 2026-06-24 | Cleanup | Removed dead journeyGates functions: canAccessInstitution, canAccessInstitutionAdmin, canAccessLecturerHub, getJourneyProgress |
| 2026-06-24 | Pricing | Removed institution pricing card; grid changed from 3-col to 2-col |
| 2026-06-24 | access-control.md | Full update to match new nav structure and gate logic |
| 2026-06-23 | CareerPath | Profile form simplified to 5 core fields — career context (status/goal/interests/chips) moved to Career Path page |
| 2026-06-23 | CareerPath | CareerFitLab Ikigai pre-populated from profile passionChips / vocationChips |
| 2026-06-22 | CareerPath | careerPaths.json enriched with inDemandRoles[], aiCompetitiveAdvantage, skillPriorities[], Malaysia salary context |
| 2026-06-22 | Gamification | Sprint XP (25 XP/task), badges: 90day_sprinter, career_velocity, path_explorer |
| 2026-06-22 | CareerPath | SkillTreeCard.tsx component added |
| 2026-06-20 | Organisation | Work Chemistry redesign — WorkChemistryTab inside Team Intelligence Hub; org-member picker added |
| 2026-06-20 | Organisation | 3-package architecture finalised: Explorer / Organisation / Institution plan types |
| 2026-06-20 | Organisation | OrganisationDashboardPage.tsx, TeamIntelligencePage.tsx with 6 tabs |
| 2026-06-18 | Navigation | Master/Organisation nav groups added; demo accounts seeded |
| 2026-06-26 | Audit | Full architecture reassessment: found 8 dead code items, 7 missing UserProfile types, 1 broken chip field (D1), 3 dead AI endpoints, stale SM push notification URL — all logged in docs/plan.md |
| 2026-06-26 | Cleanup | Removed QUADRANT_CHIPS dead constant (CompleteProfile), deleted visionGoalParser.ts, removed empty if blocks (Profile.tsx), removed dead profilePassionChips/profileVocationChips props (CareerFitLab) |
| 2026-06-26 | TypeScript | Added 7 missing UserProfile fields to db.ts: growthLoop.goals, growthLoop.masterPlan, growthLoop.dailyCheckins, growthLoop.weeklyPulse, careerFitResult, careerLabAnswers, careerCommitment |
| 2026-06-26 | Dashboard | Fixed NBA widget to check both growthLoop.goals[] (new) and goalKanban (legacy); removed stale decideDone/lifeDesignCompleted NBA branch; removed Life Blueprint Snapshot section (6-pillar legacy) |
| 2026-06-26 | Server | Removed 3 dead AI endpoints (/draft-life-plan, /check-pillar-alignment, /check-ikigai-alignment) + lifePlanPrompt import from ai.js |
| 2026-06-26 | Server | Removed runSelfMastery48hNudge cron job from notificationScheduler.js (Self Mastery module removed) |
| 2026-06-26 | Institution | Institution plan fully removed. Removed from db.ts types, admin.js endpoints (set-institution-role, institutions CRUD), cohorts.js (institution-summary + duplicate block), journeyGates.ts, paymentService.ts, Pricing.tsx |
| 2026-06-26 | Audit | Coach module assessment: 15 findings (3 critical, 2 medium, 8 low, 2 info-only) — see docs/plan.md Coach Module Assessment section |
| 2026-06-26 | Cleanup | Coach module fixes: F1 gate fix (plan=coach now grants portal access), F2/F3 dead routes removed, F4/F5/F6 notification links + pipeline counters fixed, F7-F13 stale code removed |
| 2026-06-26 | Audit | Financial Plan + Career Path assessment: 3 critical dead links (R1-R3) fixed, 4 medium/low findings logged (G1-G5) — see plan.md |
| 2026-06-26 | Fix | Dead routing: Dashboard /coach-apply → /pricing; MyReportPage + DoshaResultStep /coaching → /coach-portal |
| 2026-06-26 | Audit | Gamification + user journey audit: 18 findings (K1–K18) — dead XP keys, unwired actions, stale badges, gate inconsistency — see docs/plan.md |
| 2026-06-26 | Gamification | Replaced dead XP keys LIFE_DESIGN_COMPLETE → CAREER_PATH_COMPLETE: 400, SELF_MASTERY_SESSION → GROWTH_LOOP_CHECKIN: 50; added GOAL_COMPLETE: 75 |
| 2026-06-26 | Gamification | Wired 3 missing XP triggers: CAREER_PATH_COMPLETE on first path selection (LifeSimulatorPage), GROWTH_LOOP_CHECKIN on first daily check-in (GrowthLoopPage), GOAL_COMPLETE on goal → done (GrowthLoopPage) |
| 2026-06-26 | Gamification | Renamed stale badges: life_designer → "Career Planner", inner_mirror → "Money Master"; fixed descriptions for week1_warrior, habit_builder, 30day_champion, full_spectrum |
| 2026-06-26 | Gamification | Fixed badge eligibility: computeNewBadges now checks careerPath.selectedPath (not lifeDesignCompleted), financialPlan (not selfInquiry.sessions), growthLoop.currentStreak (not monthlyReviews), dailyCheckins (not weeklyReflections) |
| 2026-06-26 | Gamification | Fixed BadgeContext: removed dead fields justCompletedLifeDesign/justCompletedSelfMastery; added justCompletedCareerPath/justCompletedFinancialPlan; FinancialPlanPage now passes justCompletedFinancialPlan: true |
| 2026-06-26 | Gamification | Fixed computeBackfill: awards CAREER_PATH_COMPLETE for existing careerPath.selectedPath users; counts dailyCheckins days + completed goals (was lifeDesignCompleted + weeklyReflections) |
| 2026-06-26 | Gates | Fixed canAccessGrowthLoop() in journeyGates.ts — was missing hasPaidAccess check; now consistent with /growth-loop route's requiresPayment guard |
| 2026-06-26 | ProtectedRoute | Updated Explorer plan lock screen: "Life Simulator — career path commitment" → "Career Path — AI career decision engine & path simulator"; updated requiresFoundations unlocksLabel |
| 2026-06-26 | LandingPage | Full content rewrite: hero, steps, features, growthJourney cards, dayInLife, pricing, FAQ, gamification copy — all Life Design references replaced with Career Path AI + Financial Freedom Plan |
| 2026-06-26 | LandingPage | Growth Journey Card 1: Self Mastery (violet, chat bubble) → Career Path AI (indigo, role recommendation card mockup); Card 2: Life Design (sky, ikigai venn) → Financial Freedom Plan (emerald, financial score card mockup) |
| 2026-06-26 | Audit | Admin page full assessment (all 10 tabs, backend): 15 findings (M1–M15) — dead CoachCard component, 5 stale lifeDesign field refs, broken stat card subtitle, stale labels, dead state/imports — see docs/plan.md |
| 2026-06-26 | Fix | M1: Removed dead CoachCard component (~130 lines), 6 dead coach handlers, coachApps/registeredCoachEmails/loadingAppId state, 8 dead function imports from db.ts |
| 2026-06-26 | Fix | M2: Fixed "Active Coaches" stat card subtitle — was "on Our Coaches tab" (tab removed), now "registered on the platform" |
| 2026-06-26 | Fix | M3+M4: hasLifeDesign/hasLD now checks careerPath.selectedPath (was stale lifeDesignCompleted) — Users tab column + CSV export now show correct Career Path data |
| 2026-06-26 | Fix | M5+M6: Bottleneck label "Stuck in Life Design" → "Stuck Pre-Career Analysis"; Stuck Users table stage 'Life Design' → 'Career Path'; uses careerPath.selectedPath check |
| 2026-06-26 | Fix | M7: capabilityGapCounts now reads careerPath.capabilityGap (with lifeDesign fallback) — was always returning 0 |
| 2026-06-26 | Fix | M8: Life Path Selection section description and fallback text updated to say "Career Path Simulator" (was "Life Design") |
| 2026-06-26 | Fix | M11+M12+M13+M14: Removed dead coachTabLoading state, orgCoachSelections state, dead setUserCoachAppStatus/deactivateCoach/updateOrgCoaches imports; fixed Capability Gaps subtitle |
| 2026-06-26 | Audit | Org module full assessment (org dashboard, team map, team intelligence, admin Org tab), 15 findings (N1-N15) — see docs/plan.md |
| 2026-06-26 | Fix | N1: Added three missing admin backend endpoints: GET /api/admin/organisations, POST /api/admin/organisations/:id/assign, DELETE /api/admin/organisations/:id/members/:uid/role — Org tab role management now functional |
| 2026-06-26 | Fix | N3: Added .catch() error handler on Organisations tab Promise.all — failures now logged instead of silently swallowed |
| 2026-06-26 | Fix | N4: Admin Org Engagement table "Life Design" column replaced with "Career Path" column (reads careerPath.selectedPath) |
| 2026-06-26 | Fix | N5: Org invite tip URL changed from hardcoded https://archetiq.com/register to ${window.location.origin}/register |
| 2026-07-13 | Demo Seed | Updated demo reseed accounts in server/src/routes/coachTools.js: added chemistry companion personas, seeded deterministic Compare share tokens, and aligned demo manuals (docs/demo.md, docs/archetiqdemo.md) with current account matrix |
| 2026-06-26 | Fix | N6: PUT /api/organisations/:id now has field allowlist (ORG_ALLOWED_UPDATE) — prevents overwriting inviteCode, agentCode, plan |
| 2026-06-26 | Fix | N7: PUT /api/teams/:code now has field allowlist (TEAM_ALLOWED_UPDATE) — prevents overwriting orgId, memberUids, createdByUid |
| 2026-06-26 | Fix | N8: TeamReport.tsx org admin nav link changed from /org-dashboard (redirect) to /organisation (direct) |
| 2026-06-26 | Fix | N9: Removed dead creator DB fetch from POST /api/cohorts — dead code from removed institution system |
| 2026-06-26 | Fix | N12: Stale gate comment in TeamIntelligencePage.tsx updated to reflect actual gate (requiresOrganisation) |
| 2026-06-26 | Fix | N14: Dead import getCoachApplicationByEmail removed from AdminDashboard.tsx |
| 2026-07-03 | Audit | Organisation feature end-to-end test (Team Intelligence tabs + Team Report + Work Chemistry + Mongo persistence), 4 findings (P1-P4) — see docs/plan.md |
| 2026-07-03 | Audit | Live smoke test for split demo roles (HR admin + org coach + team coach + one team member), 0 findings — see docs/plan.md |
| 2026-07-03 | Docs/Book | Updated /book content (BookPage.tsx) to align with current platform model: clarified self-directed Chapters 10–13 status, removed stale Life Design-first framing, and added Team Intelligence persistence notes |
| 2026-07-03 | Organisation | P2/P3 implemented: persisted Team Intelligence generated outcomes to teams.generatedOutcomes and wired Team Report/Inter-Team report/candidate state to save+reload from MongoDB |
| 2026-07-03 | Organisation | P4 implemented: decoupled Work Chemistry engine from Vite-only runtime by lazy-loading API client in corporateEngine; Node harness now runs Work Chemistry + peer-group checks |
| 2026-07-03 | Demo | Reworked demo setup into split tracks (individual + organisation) with new seed-demo-v3.cjs; organisation demo now includes HR admin, org coach, team coach, and 3 teams with 5 members each |
| 2026-07-03 | Demo Ops | Demo environment split completed (demo.archetiq.com, PM2 personality-app-demo, separate personality_demo_db), one-click reseed + coach manual tools live in Coach Portal, and demo manual updated accordingly |
| 2026-07-03 | Demo Ops | Added hostinger/verify-personality-demo.ps1 post-deploy verification script: checks prod/demo health, logs into five demo personas, verifies coach manual download, and runs demo reseed with PASS/FAIL output |
| 2026-07-03 | Repo Instructions | Updated .github/copilot-instructions.md deployment rules so production deploys default to deploy-personality-both.ps1 followed by verify-personality-demo.ps1 |
| 2026-07-03 | Docs/Demo | Upgraded docs/archetiqdemo.md to a styled PDF-friendly layout, added docs/assets/stylesheets/archetiqdemo-pdf.css, and added scripts/build-demo-manual.ps1 to regenerate the richer demo manual PDF |
| 2026-07-03 | Institution/SSO | Reintroduced institution support as an organisation subtype: Admin can create organisation or institution, invite-linked registration now persists membership, institution members stay in personal Archetiq flow, coaches get an Institutions roster tab, and Startup Playbook SSO continues through the existing dashboard passport launch |
| 2026-07-03 | Demo Ops | Demo reseed + verification expanded to include institution personas (institution admin, institution coach, institution student) so the new institution-to-startup SSO flow is testable on demo |
| 2026-07-03 | SSO Ops | Aligned Startup Playbook ARCHETIQ_JWT_SECRET with Archetiq JWT_SECRET on prod and demo VPS so live SSO passports are accepted end-to-end |
| 2026-07-04 | Audit | Demo reseed standards audit (Archetiq vs Startup): 2 findings on verification-parity standardization — see docs/plan.md |
| 2026-07-04 | Demo Ops | Implemented strict post-reseed integrity gate for Archetiq demo reseed (/api/coach-tools/demo-reseed) to align with Startup verification standards |
| 2026-07-04 | Docs/Demo | Refreshed docs/archetiqdemo.md end-to-end for Startup Bridge institution flow (new setup order, role-switch sequence, and handoff walkthrough) |
| 2026-07-06 | Docs/Demo | QA pass on archetiqdemo.pdf: fixed pre-demo login list formatting, added live-demo troubleshooting table, and regenerated styled PDF via scripts/build-demo-manual.ps1 |
| 2026-07-07 | Growth Loop | AI-generated master plan is now fully editable (title, why, week-1 action, target date, add/remove goals) before accept and after save; edits persist to MongoDB via growthLoop.masterPlan + synced growthLoop.goals |
| 2026-07-07 | Growth Loop | Added drag-and-drop goal reordering (including cross-pillar moves) in both AI plan review and master-plan editor modals; saved ordering now persists in MongoDB with the edited plan |
| 2026-07-07 | Growth Loop | Replaced native HTML drag handlers with @dnd-kit touch/pointer sortable DnD in both AI plan modals so drag-and-drop works reliably on mobile PWA environments |
| 2026-07-07 | Growth Loop | Added explicit mobile helper copy in both plan modals: "press and hold the handle, then drag" to improve touch discoverability |
| 2026-07-08 | Cleanup | Deleted coachRequests.js + coachApplications.js (never mounted, coaching is org-assigned only); removed all dead CoachApplication/CoachRequest types and functions from db.ts; removed dead requests state, handlers (sendProposal, confirmPaymentReceived, handleDecision, handleRemoveClient), Pending Requests tab, and remove-client buttons from CoachPortal.tsx |
| 2026-07-09 | Audit | Demo organisation readiness check (org dashboard, team map, team intelligence, demo-role login fit), 2 findings (Q1-Q2) — see docs/plan.md |
| 2026-07-09 | Demo Ops | Seed demo-v3 reseed now recreates organisation dashboard teamIntelligence plus saved Team Intelligence generatedOutcomes for PRD001/GRW001/OPS001 so the demo org surfaces stay populated after reseed |
| 2026-07-09 | Work Chemistry | Fixed archetype normalization in corporateEngine.ts so lowercase response archetypes map correctly to compatibility profiles, preventing repeated generic Do/Avoid guidance across demo and production users |
| 2026-07-09 | Plan | Added Hire Smarter enhancement plan in docs/plan.md covering phased delivery for share-link intake, resume+role-brief AI fit analysis, and interview pack generation |
| 2026-07-09 | Hire Smarter | Implemented source-based candidate intake in Team Intelligence (Manual, Share Link, Resume + Role Brief), added share-link candidate autofill, and added new AI endpoint /api/ai/hire-smarter-analyze with persisted recommendation summary, fit reasons, risk flags, and interview question output |
| 2026-07-09 | Hire Smarter | Added native resume file handling for PDF/DOCX/TXT in Hire Smarter: client upload + base64 transfer, server-side text extraction (pdf-parse, mammoth), and AI fit analysis from extracted resume content |
| 2026-07-09 | Team Intelligence | Fixed org Team Intelligence save failures by expanding PATCH /api/teams/:code/intelligence permissions to org lead, team lead, assigned team coach, and team creator (with org-bound checks), and added client-side autosave error guards to prevent uncaught promise crashes |
| 2026-07-09 | Hire Smarter | Fixed /api/ai/hire-smarter-analyze 500 on PDF uploads by adding pdf-parse v1/v2-compatible parsing logic with safe fallback handling |
| 2026-07-09 | Hire Smarter | Implemented debounced autosave on candidate/hire-data/report edits in Team Intelligence to prevent 429 rate-limit errors when users rapidly edit candidate names or other fields; batches changes into single API call after 1.5 seconds of inactivity |
| 2026-07-09 | Hire Smarter | Fixed debounce effect dependency issue: moved persistGeneratedOutcomes to stable ref, removed from effect deps to prevent re-triggers on every function reference change |
| 2026-07-09 | Hire Smarter | Added 2-second cooldown to /api/ai/hire-smarter-analyze calls: prevents rapid successive "Analyze Resume" clicks from causing 429 rate-limit errors on AI endpoint |
| 2026-07-09 | Database | Fixed email_1 unique index on users collection (both prod + demo): added sparse: true so multiple users with null email no longer clash → eliminates E11000 duplicate key error 500 on PUT /api/users/me |
| 2026-07-09 | Demo | Installed pdf-parse and mammoth in demo server (/opt/personality-app-demo/) which were missing, causing MODULE_NOT_FOUND crash on AI resume analysis endpoint |
| 2026-07-09 | Hire Smarter UX | Enforced single active candidate source mode (Manual or Share Link or Resume), added explicit "source used" labels in result panels, and made candidate name/archetype edits immediately propagate to screening output in resume/manual flows |
| 2026-07-09 | Team Intelligence | Reduced residual 403s on PATCH /api/teams/:code/intelligence by allowing same-org coach roles and team members, and returning a clear 401 when a token points to a deleted user after demo reseed |
| 2026-07-09 | Audit | Unicode/text cleanliness audit for Team Intelligence, Team Report, Organisation Dashboard, and teams route (4 findings, all fixed) - see docs/plan.md |
| 2026-07-09 | Auth/API | Fixed demo CORS regressions by replacing hardcoded production API fallbacks with shared runtime API base resolution (API_BASE_URL), defaulting to same-origin /api, and adding a demo safety guard to prevent demo.archetiq.com from calling archetiq.com APIs |
| 2026-07-10 | Audit | Team Intelligence AI generation audit (demo + production): /api/ai/generate verified healthy in both environments; found runtime stability risk from hard-required optional parser deps - see docs/plan.md |
| 2026-07-10 | Server AI | Hardened server/src/routes/ai.js optional dependency handling (pdf-parse, mammoth) so missing parser modules no longer crash AI route load at startup/restart |
| 2026-07-10 | Demo Reseed | Added Career Path preseed for demo.individual@archetiq.com in coachTools reseed flow (careerPath + careerPathData) and added integrity check to fail reseed if this preseed is missing |
| 2026-07-10 | Demo Reseed | Normalized seeded archetype labels to title-case (Driver, Visionary, etc.) in users/responses so Career Path sections resolve framework/career maps correctly (fixes empty About You/Direction/Identity & Growth panels caused by lowercase keys) |
| 2026-07-10 | Demo Reseed | Added prefilled careerLabAnswers and careerFitResult for demo.individual@archetiq.com so Career Path question fields and direction outputs load even when browser localStorage is empty |
| 2026-07-10 | Career Path UI | Fixed CareerFitLab hydration race: when profile data loads after mount, cloud careerLabAnswers now hydrate empty local form state; also blocked empty autosave payloads from overwriting seeded answers |
| 2026-07-10 | Growth Loop UI | Added automatic stale-session recovery on /api/ai/generate-growth-plan (404 Profile not found after demo reseed): app now clears auth and redirects to login instead of leaving user on a dead button path |
| 2026-07-10 | Server Hardening | Hardened profile lookup and saves for Growth Loop stability: /api/ai/generate-growth-plan now resolves profile by uid OR _id; /api/users/me no longer upserts on missing profiles (returns 404 instead) to avoid duplicate-key insert failures on stale/deleted sessions |
| 2026-07-10 | API Client | Added global stale-session guard in client/src/api/client.ts: when key self routes return 404 Profile not found (/api/users/me, /api/ai/generate-growth-plan), auth is cleared immediately so users are forced back to a valid login session |
| 2026-07-10 | Growth Loop Bugfix | Fixed runtime crash Jn is not a constructor by renaming lucide Map icon import (MapIcon) in GrowthLoopPage.tsx, preventing shadowing of global Map used by plan acceptance logic |
| 2026-07-10 | Growth Plan AI | Updated /api/ai/generate-growth-plan prompt to request targetDate in YYYY-MM-DD (using day 01) so generated goals match HTML date input format without browser validation warnings |
| 2026-07-10 | Growth Loop UX | Clarified plan lifecycle copy (preview vs saved) and removed raw MongoDB wording; also added strict in-flight guard to block accidental duplicate generateGrowthPlan calls from rapid clicks |
| 2026-07-10 | Growth Plan AI | Reduced /api/ai/generate-growth-plan randomness (temperature 0.7 → 0.2) so repeated generations are more stable and less wildly divergent |
| 2026-07-14 | Audit | RAG architecture and rollout audit completed for Personality-Test, 8 findings tracked under RAG-001..RAG-008 - see docs/plan.md |
| 2026-07-14 | AI Platform | Started RAG Phase 1 with new knowledge retrieval utility and corpus ingest script (archetiq_knowledge_chunks) plus npm run ingest:knowledge-corpus |
| 2026-07-14 | AI Platform | Added feature-flagged retrieval snippet injection for /api/ai/chat and /api/ai/hire-smarter-analyze (RAG_PROMPT_INJECTION_ENABLED=true) with fallback-safe behavior |
| 2026-07-14 | Operations | Added shadow log retention controls for archetiq_rag_shadow_log (TTL index, RAG_SHADOW_TTL_SECONDS) and admin purge endpoint POST /api/admin/purge-rag-shadow-log |
11. Current Known Issues / Pending Work¶
Full audit findings in
docs/plan.md(including Team Intelligence audit on 2026-07-11)
- 2026-10-11 Book Guide review: BOOK-001..012 Pending. Book is not yet verified as a complete current user guide or submission-ready manuscript. Priority: wellness/compatibility/assessment evidence claims and mismatch between the app book and the three-source Pandoc manual. Add a dedicated Learning Strengths chapter and align seven module walkthroughs before publication. See docs/plan.md; no book text was changed.
- 2026-10-11 Report career review: RPT-CAREER-001 Resolved; the initial role examples are now superseded by profile-aware sector exploration. RPT-CAREER-002 Pending: current force mapping does not reach all 15 theoretical identities; scoring remains unchanged. See
docs/plan.md. - 2026-10-11 Sector exploration uses conservative keyword clues, not verified credentials or semantic matching. Unrecognized fields can be explored through the full catalogue. Sector names/controls/work-style copy are localized; detailed catalogue paths, requirements and role examples currently use English fallback. Actual updated report PDF download has not been exercised.
- 2026-10-11 Documentation prerequisites Resolved: Pandoc, MiKTeX/XeLaTeX and MkDocs dependencies installed; full PDF/DOCX/site build succeeds. Existing PDF missing-glyph and MkDocs link warnings remain. Generated site includes a private-credentials-reference page/assets; do not publish it without checking and excluding private material. See DOCS-SETUP-001..003 in docs/plan.md.
- 2026-10-07 Ponytail audit: PONY-001 — duplicate
vitein production dependencies. RESOLVED. - 2026-10-07 Wellness Profile review: WP-001 — unused force-bridge helper; WP-002 — unused guide constant; WP-003 — duplicate quiz progress display. All resolved; see
docs/plan.md. - 2026-10-07 Wellness Profile follow-up audit: WP-004 — duplicate result-section labels; WP-005 — unused option constants. Both resolved; see
docs/plan.md. - 2026-10-07 Financial Plan review/audit: FP-001 — unused framework data load; FP-002 — redundant score result alias; FP-003 — unused payoff-order exports; FP-004 — unused translated-profile prop chain; FP-005 — unused arrow icons. All resolved; see
docs/plan.md. - 2026-10-07 Career Path review: CP-001 — unused simulator helpers; CP-002 — unreferenced SkillTreeCard scaffold. Both resolved; see
docs/plan.md. - 2026-10-07 Growth Loop review/audit: GL-001 — unused date formatter; GL-002 — duplicate pillar order; GL-003 — unread pillar labels; GL-004 — unused status artifacts. All resolved; see
docs/plan.md. - 2026-10-07 Chemistry Check review: CH-001 — unused score-dot helper; CH-002 — duplicate nested entitlement gates. Both resolved; see
docs/plan.md. - 2026-10-07 Org/Team refactor: ORG-001 — orphaned TeamsTab; ORG-002 — unused maturity declarations and fixed year fallback. Both resolved; revalidated with no new findings; see
docs/plan.md. - 2026-10-07 Interconnected Personal Journey audit: JOURNEY-001 — unreferenced legacy cross-pillar goal aggregator. Resolved; live goal aggregation and module contracts remain intact. See
docs/plan.md. - 2026-10-04 Learning Strengths is an optional, separate, self-reflection module for students; its results are not validated intelligence or learning-style measures and do not affect archetype scores.
- 2026-10-04 assessment capability check: the 47-question result does not measure VAK sensory preference, intelligence types, or IQ; report learning modes derive from personality archetype scores. See docs/plan.md.
- 2026-10-04 password reset: restored failed production DKIM signing and verified Yahoo accepted a signed replacement reset email; actual inbox placement awaits recipient confirmation. Sender/site URL default hardening is tested locally but not deployed; production settings are present and were not the incident cause.
- 2026-07-03 smoke verification: split demo-role access checks completed with no new findings.
- 2026-07-04 reseed standards parity implemented: Archetiq reseed now blocks success unless users/responses/org docs/team docs pass integrity verification.
- 2026-07-09 unicode audit completed: no remaining non-ASCII/mojibake characters in
TeamIntelligencePage.tsx,TeamReport.tsx,OrganisationDashboardPage.tsx, andserver/src/routes/teams.js. - 2026-07-10 Team Intelligence AI audit: both prod/demo
POST /api/ai/generatechecks passed, but VPS still shows historicalpdf-parsemodule-missing crashes in PM2 logs; repo code is hardened, deploy pending.
Team Intelligence Pending (TI-series)¶
- [ ] TI1: Team Context and Team Chemistry currently answer different questions but read as if they should agree directly; stage/lifecycle description and team-fit heuristic need clearer separation.
- [ ] TI2: Team Chemistry scoring model uses coarse hardcoded thresholds and pseudo-precise numbers that overstate confidence.
- [ ] TI3: Team Chemistry mixes score, diagnosis, and static coaching guidance in one surface, which makes the output feel inconsistent and harder to trust.
- [ ] TI4: Cross-tab mental model is unclear; Work Chemistry is relationship-driven and does not use Team Context, while Team Report is AI narrative built from Team Context plus Team Chemistry outputs.
- [ ] TI5: Team Report inherits Team Chemistry weaknesses because
buildReportPrompt()passes deterministic chemistry outputs directly into the AI prompt. - [ ] TI6: Team Intelligence language remains too consulting-heavy for Gen Z users; tab names, score labels, and section labels need a plain-language rewrite.
Admin Page Pending (M-series)¶
- [ ] M9:
careerPathDonefunnel metric countscareerFitResult(AI ran) instead ofcareerPath.selectedPath(path committed) — ambiguous label "Career Path Done" - [ ] M10: Growth Loop Depth Ladder stuck check uses legacy
growthLoop.habits/weeklyReflections— new model usesgrowthLoop.goals[]; stuck count inflated - [ ] M15: Cohort Snapshot audience tags (Schools/Universities/HR Depts/Coaching) are hardcoded decorative strings with no data behind them
Org Module Pending (N-series)¶
- [ ] N2: Dual TI storage paths diverge — org users who save via selected team write to team doc;
OrganisationDashboardPagereads user docprofile.teamIntelligenceonly (never sees team-doc saves). Demo reseed now pre-fillsteamIntelligenceon the org presenter accounts, but the underlying dual-read design still exists in the live app. - [ ] N10: Cohorts API (
/api/cohorts) is fully orphaned — backend routes exist but no UI entry point (no App.tsx route, no sidebar link) - [x] N11: Team maturity stage (
maturityStage) inTeamReport.tsxis localStorage-only — lost on storage clear — FIXED: Added TeamMaturityPage to nav with proper gating, added demo seed data for quarterly check-ins, migrated maturityStage to MongoDB persistence - [ ] N13:
DEFAULT_CONTEXTinTeamIntelligencePagehardcodesevolutionStage: 2— new users start at Validation instead of Formation - [ ] N15:
OrganisationDashboardPagemakes no direct API calls — stale profile context with no refresh button
Org E2E Pending (P-series)¶
- [x] Q2: Demo org teams are now seeded with
generatedOutcomesforPRD001,GRW001, andOPS001, so advanced Team Intelligence report tabs are pre-populated for demos.
Org E2E Fixed (P-series)¶
- [x] Q1: Fixed Team Intelligence write + Hire Smarter resume runtime issues causing
403onPATCH /api/teams/:code/intelligenceand500on/api/ai/hire-smarter-analyze(permission model expanded and PDF parser compatibility patched). - [x] P1: Fixed production runtime outage in
teams.js(missingGET /api/teamsroute wrapper causingawaitsyntax error); hotfix deployed and PM2 restarted. - [x] P2: Added backend persistence for generated outcomes (
generatedOutcomesmerge onPATCH /api/teams/:code/intelligence) and client API support. - [x] P3: Team Report and related generated outputs are now parent-controlled in Team Intelligence and persisted/reloaded per selected org team.
- [x] P4: Removed hard Vite-runtime coupling from Work Chemistry engine import path; direct Node-level engine harness now executes successfully.
Medium Priority¶
- [ ] Health Dashboard —
health.jsserver route exists; full implementation (manual entry, charts, AI coach) pending Phases 1–4. - [ ] LifeInsightsPage — redirected to wellness; correlation job not built yet.
- [ ] Capacitor mobile app — planned but not started.
Architecture Notes¶
- [x] StartupOS-C1 (CRITICAL): Canvas key mismatches across startup pages (
marketAnalysis,experiments,roadmap,valueStream,sevenWastes,teamBuilding,riskManagement,esg) are not aligned with backendCanvasenum; users can lose continuity when saving/loading. Fixed 2026-07-17. - [x] StartupOS-C2 (CRITICAL): Most StartupOS canvas pages do not hydrate persisted data with
fetchCanvas(...)on load, causing apparent missing canvases after refresh/direct navigation. Fixed 2026-07-17. - [x] StartupOS-H1 (HIGH):
saveCanvasreturn-contract mismatch (Promise<void>vsresult.successchecks in pages) causes unreliable save-state signaling. Fixed 2026-07-17. - [x] StartupOS-H2 (HIGH): StartupOS pages currently fail TypeScript
noEmitchecks; unresolved typing errors are concentrated in canvas pages and should block deploy-quality confidence. StartupOS scope fixed 2026-07-17 (global non-startup TS errors remain). - [ ] StartupOS-H3 (HIGH): Live route snapshots for
/startup/dashboard,/startup/persona, and/startup/marketshow shell-only render behavior requiring post-fix verification. - [ ] StartupOS-M1 (MEDIUM): Route/comment drift (
all 32 canvas pages) conflicts with the 27-module model and increases maintenance risk. - [ ] Startup Merge: Institution-facing startup operations now run on the local merged
organisations.jsandcohorts.jscontracts rather than the original Startup Playbook institution admin flow. Keep future institution work aligned to those local APIs. - [ ] RAG-001: Knowledge corpus ingestion pipeline must be run and validated in each environment before retrieval can be enabled.
- [ ] RAG-002: Retrieval utility is lexical-only in Phase 1; synonym-heavy prompts may still need fallback behavior tuning.
- [x] RAG-003:
/api/ai/chatprompt injection integration is implemented behindRAG_PROMPT_INJECTION_ENABLED(default off). - [x] RAG-004:
/api/ai/hire-smarter-analyzeprompt injection integration is implemented behindRAG_PROMPT_INJECTION_ENABLED(default off). - [ ] RAG-005: User episodic memory write-path not yet implemented.
- [ ] RAG-006: Team episodic memory write-path and sanitization policy not yet implemented.
- [x] RAG-007: Admin corpus re-ingest endpoint implemented (
POST /api/admin/reingest-knowledge). - [x] RAG-008: Shadow-mode relevance telemetry implemented with retention controls (TTL + purge endpoint).
- [ ] University Integration (Items 1–6) — Archetype Passport, Cohort system, Team archetype-aware UI — planned in session memory, not started.
- [ ] Sprint persistence — career sprint task checks currently in localStorage only;
careerPathStatefield on user doc not yet implemented. - [ ] Salary Trajectory Charts — recharts 5-year progression in Life Simulator results.
- [ ] Skill-Gap Analysis — dynamic gap vs careerPathData.
- [ ] Course/Internship Recommender — card layout, static initially.
- [ ] Correlation Job — weekly cron: health metrics vs growth loop progress (Phase 4 of Health Data plan).
12. Deployment Reference¶
Client build + deploy¶
cd "c:\MyApps\Personality-Test\client"
npm run build
# Via WSL (recommended for large deploys):
wsl bash -c "tar czf /tmp/personality-public.tar.gz -C '/mnt/c/MyApps/Personality-Test/client/dist' . && scp /tmp/personality-public.tar.gz root@76.13.211.100:/tmp/ && ssh root@76.13.211.100 'rm -rf /opt/personality-app/public/* && tar xzf /tmp/personality-public.tar.gz -C /opt/personality-app/public/ && rm /tmp/personality-public.tar.gz && echo DONE'"
# Or direct SCP (PowerShell):
scp -i "$HOME\.ssh\kvm4-hostinger" -r "dist\*" "root@76.13.211.100:/opt/personality-app/public/"
Server hotfix¶
scp -i "$HOME\.ssh\kvm4-hostinger" "server\src\routes\<file>.js" "root@76.13.211.100:/opt/personality-app/src/routes/<file>.js"
ssh -i "$HOME\.ssh\kvm4-hostinger" root@76.13.211.100 "pm2 restart personality-app"
Check logs¶
After deploy¶
- Hard refresh twice (Ctrl+Shift+R) — PWA caches aggressively
- Check PM2 status:
pm2 list—personality-appshould showonline
13. File Structure Reference¶
client/src/
App.tsx — Routes + lazy imports
api/
client.ts — Axios wrapper with JWT (ALWAYS use this — never raw fetch)
auth.ts — Auth calls
db.ts — All MongoDB data layer helpers
config.ts — localStorage auth shim
contexts/
UserProfileContext.tsx — Polls GET /api/users/me every 30s
components/
Layout.tsx — Sidebar nav + notifications + language toggle
ProtectedRoute.tsx — Page-level gate enforcement
careerPath/
CareerFitLab.tsx — 2-step career wizard (Set Your Life Path → Know Yourself)
(AiGuide, BadgeDisplay, GateScreen, etc.)
pages/
(see Feature Map §5)
utils/
journeyGates.ts — ALL gate conditions (single source of truth)
gamification.ts — XP/badge/level logic
types/
careerDecision.ts — Career AI types (CareerDecisionAIResult includes roleSuitability)
index.ts — General app types
data/
careerPaths.json — 15 paths (5 archetypes × 3) with market data
(other static JSON)
server/src/
server.js — Entry + route mounts + cron bootstrap
middleware/
auth.js — JWT verify + role checks
rateLimiter.js — Global + per-user rate limiters
routes/
ai.js — All AI endpoints including /career-decision (roleSuitability in schema)
users.js — ALLOWED_SELF_UPDATE list — plan/payment fields NOT in this list
admin.js — change-plan + institution management
(see §8 for full list)
jobs/
notificationScheduler.js — node-cron: daily/weekly/48h/digest
weeklyDigest.js — Email digest worker
14. Key Invariants (Never Break These)¶
- Client HTTP calls MUST go through
client/src/api/client.ts— never rawfetch('/api/...') - Plan/payment changes MUST go through
POST /api/admin/change-plan - Gate logic lives ONLY in
journeyGates.ts— both ProtectedRoute and Layout import from it - No Firebase — delete any Firebase reference you encounter
- ESM only — server uses
import/export, neverrequire() - Org users do NOT get Explorer personal features (Explore/Design/Master hidden)
- Chemistry is Explorer-only — org users access Work Chemistry via Team Intelligence only
- Life Simulator requires Money Plan completed (financialPlan data feeds the career projections)
- new page =
<MenuName>Page.tsx— PascalCase, matches menu label exactly - After every session — update this master.md Change Log (§10) and Pending Work (§11)