H1Session Stacks
Status: hub for session-stack planning and composition notes.
H2Current staged use
studio/craftandstudio/practicenow read their public skill catalogue through seededSessionStackrecords when available.- The previous hardcoded
lib/data/skills.tscatalogue remains the fallback and the seed source. - Seeded skill stacks use the public skill id as the
SessionStack.id, so/studio/craft/{skill-id}and/session-stacks/{skill-id}refer to the same skill session. - The complete original skill JSON is stored in
SessionStack.data.skill. Public craft/practice rendering reads that seeded JSON first so the cards can display exactly as before. - Commercial display fields that are not native
SessionStackcolumns are also mirrored inSessionStack.data:source,category,specialty,priceEUR,location,catalogOrder, and public route hints. - Composition remains pending in the existing
/session-stacksinterface through concept groups and concept cards.
H2Travel journey stacks
studio/travelnow follows the same projection pattern forlib/data/sessions.ts.- Current city tour sessions are seeded as
SessionStackrecords withtype: GROUP. - The current full Córdoba to Granada journey is seeded as a
SessionPath, composed from the current city tour session stacks in catalogue order. - The complete original journey JSON is stored under
SessionStack.data.journeySessionfor city sessions andSessionPath.data.journeySessionfor bundle/session-path records. - FareHarbor metadata remains in that JSON and is also mirrored in the open
dataobject for later marketing, booking-stage, guide-note, and trip-content workflows. - Arrival, departure, and extension options should be added later as more journey session-stack JSON records, then included in the relevant session path when they become part of the commercial trip structure.
H2Maintenance
- Run
npm run seed:studio-skillsafter editinglib/data/skills.tsor when a database needs the skill session-stack records. GET /api/studio/skill-session-stacksreturns the current fallback skill JSON.POST /api/studio/skill-session-stacksaccepts eitherSkill[]or{ "skills": Skill[] }from a Google Sheet or Apps Script sync. SetSTUDIO_SKILL_STACKS_INGEST_SECRETand send it asx-studio-seed-secret.- Run
npm run seed:studio-journeysafter editinglib/data/sessions.tsor when a database needs the travel session-stack/session-path records. GET /api/studio/journey-session-stacksreturns the current fallback journey JSON.POST /api/studio/journey-session-stacksaccepts eitherJourneySession[]or{ "sessions": JourneySession[] }from a Google Sheet or Apps Script sync. SetSTUDIO_JOURNEY_STACKS_INGEST_SECRETand send it asx-studio-seed-secret.- Do not delete attached concept groups when reseeding; the seed script only upserts stack metadata and leaves composition relations intact.
H2Archive notes
- older session-stack notes live in
archive/
H2Folder rule
- Keep session composition and roadmap notes here.
- Move superseded variants into
archive/.