MolinoPro

dev-docs

Master Codebase Guidebook
Markdown + HTML Dev-Docs Renderer - Frontend Client Module

Default Index
Open README.md
Root: README.mdRoot
Milestones

npm run molino-index

H1> molino-index@0.1.0 molino-index

tsx scripts/sync-molino-index.ts

###🚀 Starting Molino Index dynamic sync... 🔎 Resolving Molino Index registry... 📋 Sections resolved: { dev: '1r2u4LHqeQR0cgftyseexRli68hJO5dpHsiRPjilOGl4', story: '1zBg3MFDW4wh8JIXOKX1seLemDRqLJkxM_YyiLKfr568', craft: '1eumuIDHjkEb_n6gYyhdQfNe-QzRuVirCK02SFmw1fo8', practice: '1vBKBz1xOJup8OOtIsGlM6V2ZQBiFXH1_j6y4pjQr5xs', experience: '1HLp6UBhnHO2QFiOXk-KpqoMTE83vNRIajKwW69YgYkY', travel: '1ipQcIZMyhM6jGNIADQSSF0YmfLX4kM7DDzcp69HazQA', education: '1aIg8BETewStA_XPlg1glfLCJAtEnYhSi10Ebygnt8M4' } ✅ dev: 7 ok, 0 failed ✅ story: 4 ok, 0 failed ✅ craft: 2 ok, 0 failed ✅ practice: 3 ok, 0 failed ✅ experience: 7 ok, 0 failed ✅ travel: 3 ok, 0 failed ✅ education: 7 ok, 0 failed

🏁 Molino Index sync complete.

npm run dev

▲ Next.js 16.1.6 (Turbopack)

✓ Starting... ✓ Ready in 857ms LOG [ { id: 'cmnxqw61c0004gidbvakie11i', sheetId: '1eumuIDHjkEb_n6gYyhdQfNe-QzRuVirCK02SFmw1fo8', section: 'craft', items: [ [Object], [Object] ], data: { cta: [Object], area: [Object], intro_label: 'PRACTICAL INITIATIONS', intro_quote: 'One concept. One session. One resolved capability.', intro_title: 'One Session · One Practical Capability', intro_description: 'Focused 90-minute sessions resolving real-world digital, narrative, and operational skills.' }, lastSync: 2026-04-22T23:52:33.818Z }, { id: 'cmo0ljsvq000pegblmnk2kcll', sheetId: '1r2u4LHqeQR0cgftyseexRli68hJO5dpHsiRPjilOGl4', section: 'dev', items: [ [Object], [Object], [Object], [Object], [Object], [Object], [Object] ], data: {}, lastSync: 2026-04-22T23:51:57.565Z }, { id: 'cmnxqwb7n0008gidbaom8wh5s', sheetId: '1aIg8BETewStA_XPlg1glfLCJAtEnYhSi10Ebygnt8M4', section: 'education', items: [ [Object], [Object], [Object], [Object], [Object], [Object], [Object] ], data: { cta: [Object], area: [Object], intro_label: 'TRANSMISSION - KNOWLEDGE AS AN EXPERIENCE', intro_quote: 'Knowledge As An Experience', intro_title: 'For Teachers, Schools and Institutions', intro_description: 'Weekly sessions available. full narrative documents. Jjourneys across any of Molino⺢Practice and Al-Andalus Experience specialities, showcasted areas, craft skils, narrative, practice through direct real world professional experience..' }, lastSync: 2026-04-22T23:53:28.713Z }, { id: 'cmo0lktr30019egblzmkky5dq', sheetId: '1HLp6UBhnHO2QFiOXk-KpqoMTE83vNRIajKwW69YgYkY', section: 'experience', items: [ [Object], [Object], [Object], [Object], [Object], [Object], [Object] ], data: { area: [Object], intro_label: 'TRANSMISSION', intro_quote: 'History is best understood in motion.', intro_title: 'Experience as a Journey', intro_description: 'Guided city routes, thematic historical sequences, education programs, and long-form cultural travel.' }, lastSync: 2026-04-22T23:53:00.337Z }, { id: 'cmnxqvse20000gidb4zizo8o7', sheetId: '1vBKBz1xOJup8OOtIsGlM6V2ZQBiFXH1_j6y4pjQr5xs', section: 'practice', items: [ [Object], [Object], [Object] ], data: { cta: [Object], area: [Object], intro_label: 'LIVING SYSTEMS · WEEKLY SUPPORT', intro_quote: 'Small complete units that connect over time. Automation. Structured Growth.\n' + ' Coaching, Projects, Collaborations.', intro_title: 'Practice as Rhythm. ', intro_description: 'Long-term coaching, operational onboarding, digital system building, and custom project work.' }, lastSync: 2026-04-22T23:52:47.335Z }, { id: 'cmo0lk55z000xegbl1jxwopkj', sheetId: '1zBg3MFDW4wh8JIXOKX1seLemDRqLJkxM_YyiLKfr568', section: 'story', items: [ [Object], [Object], [Object], [Object] ], data: { cta: [Object], area: [Object], intro_label: 'LIVE WRITING · TRANSMISSION', intro_quote: 'Paper once mattered because it could travel.', intro_title: 'Brand, Writing & Narrative', intro_description: 'Live writing, commissioned narrative work, bilingual cultural framing, and editorial publishing rhythms.' }, lastSync: 2026-04-22T23:52:21.014Z }, { id: 'cmnxqw9ka0007gidbii0vnhoo', sheetId: '1ipQcIZMyhM6jGNIADQSSF0YmfLX4kM7DDzcp69HazQA', section: 'travel', items: [ [Object], [Object], [Object] ], data: { cta: [Object], area: [Object], intro_label: 'TIME TRAVELLING · JOURNEYS', intro_quote: 'History is best understood in motion.', intro_title: 'Weekly Caravan Of Al-Andalus', intro_description: 'Weekly guided city sessions and full narrative journeys across Andalusia.' }, lastSync: 2026-04-22T23:53:20.336Z } ] GET /studio/practice 200 in 1386ms (compile: 715ms, render: 670ms) LOG [ { id: 'cmnxqw61c0004gidbvakie11i', sheetId: '1eumuIDHjkEb_n6gYyhdQfNe-QzRuVirCK02SFmw1fo8', section: 'craft', items: [ [Object], [Object] ], data: { cta: [Object], area: [Object], intro_label: 'PRACTICAL INITIATIONS', intro_quote: 'One concept. One session. One resolved capability.', intro_title: 'One Session · One Practical Capability', intro_description: 'Focused 90-minute sessions resolving real-world digital, narrative, and operational skills.' }, lastSync: 2026-04-22T23:52:33.818Z }, { id: 'cmo0ljsvq000pegblmnk2kcll', sheetId: '1r2u4LHqeQR0cgftyseexRli68hJO5dpHsiRPjilOGl4', section: 'dev', items: [ [Object], [Object], [Object], [Object], [Object], [Object], [Object] ], data: {}, lastSync: 2026-04-22T23:51:57.565Z }, { id: 'cmnxqwb7n0008gidbaom8wh5s', sheetId: '1aIg8BETewStA_XPlg1glfLCJAtEnYhSi10Ebygnt8M4', section: 'education', items: [ [Object], [Object], [Object], [Object], [Object], [Object], [Object] ], data: { cta: [Object], area: [Object], intro_label: 'TRANSMISSION - KNOWLEDGE AS AN EXPERIENCE', intro_quote: 'Knowledge As An Experience', intro_title: 'For Teachers, Schools and Institutions', intro_description: 'Weekly sessions available. full narrative documents. Jjourneys across any of Molino⺢Practice and Al-Andalus Experience specialities, showcasted areas, craft skils, narrative, practice through direct real world professional experience..' }, lastSync: 2026-04-22T23:53:28.713Z }, { id: 'cmo0lktr30019egblzmkky5dq', sheetId: '1HLp6UBhnHO2QFiOXk-KpqoMTE83vNRIajKwW69YgYkY', section: 'experience', items: [ [Object], [Object], [Object], [Object], [Object], [Object], [Object] ], data: { area: [Object], intro_label: 'TRANSMISSION', intro_quote: 'History is best understood in motion.', intro_title: 'Experience as a Journey', intro_description: 'Guided city routes, thematic historical sequences, education programs, and long-form cultural travel.' }, lastSync: 2026-04-22T23:53:00.337Z }, { id: 'cmnxqvse20000gidb4zizo8o7', sheetId: '1vBKBz1xOJup8OOtIsGlM6V2ZQBiFXH1_j6y4pjQr5xs', section: 'practice', items: [ [Object], [Object], [Object] ], data: { cta: [Object], area: [Object], intro_label: 'LIVING SYSTEMS · WEEKLY SUPPORT', intro_quote: 'Small complete units that connect over time. Automation. Structured Growth.\n' + ' Coaching, Projects, Collaborations.', intro_title: 'Practice as Rhythm. ', intro_description: 'Long-term coaching, operational onboarding, digital system building, and custom project work.' }, lastSync: 2026-04-22T23:52:47.335Z }, { id: 'cmo0lk55z000xegbl1jxwopkj', sheetId: '1zBg3MFDW4wh8JIXOKX1seLemDRqLJkxM_YyiLKfr568', section: 'story', items: [ [Object], [Object], [Object], [Object] ], data: { cta: [Object], area: [Object], intro_label: 'LIVE WRITING · TRANSMISSION', intro_quote: 'Paper once mattered because it could travel.', intro_title: 'Brand, Writing & Narrative', intro_description: 'Live writing, commissioned narrative work, bilingual cultural framing, and editorial publishing rhythms.' }, lastSync: 2026-04-22T23:52:21.014Z }, { id: 'cmnxqw9ka0007gidbii0vnhoo', sheetId: '1ipQcIZMyhM6jGNIADQSSF0YmfLX4kM7DDzcp69HazQA', section: 'travel', items: [ [Object], [Object], [Object] ], data: { cta: [Object], area: [Object], intro_label: 'TIME TRAVELLING · JOURNEYS', intro_quote: 'History is best understood in motion.', intro_title: 'Weekly Guided City Highlights', intro_description: 'Weekly guided city sessions and full narrative journeys across Andalusia.' }, lastSync: 2026-04-22T23:53:20.336Z } ] LOG [ { id: 'cmnxqw61c0004gidbvakie11i', sheetId: '1eumuIDHjkEb_n6gYyhdQfNe-QzRuVirCK02SFmw1fo8', section: 'craft', items: [ [Object], [Object] ], data: { cta: [Object], area: [Object], intro_label: 'PRACTICAL INITIATIONS', intro_quote: 'One concept. One session. One resolved capability.', intro_title: 'One Session · One Practical Capability', intro_description: 'Focused 90-minute sessions resolving real-world digital, narrative, and operational skills.' }, lastSync: 2026-04-22T23:52:33.818Z }, { id: 'cmo0ljsvq000pegblmnk2kcll', sheetId: '1r2u4LHqeQR0cgftyseexRli68hJO5dpHsiRPjilOGl4', section: 'dev', items: [ [Object], [Object], [Object], [Object], [Object], [Object], [Object] ], data: {}, lastSync: 2026-04-22T23:51:57.565Z }, { id: 'cmnxqwb7n0008gidbaom8wh5s', sheetId: '1aIg8BETewStA_XPlg1glfLCJAtEnYhSi10Ebygnt8M4', section: 'education', items: [ [Object], [Object], [Object], [Object], [Object], [Object], [Object] ], data: { cta: [Object], area: [Object], intro_label: 'TRANSMISSION - KNOWLEDGE AS AN EXPERIENCE', intro_quote: 'Knowledge As An Experience', intro_title: 'For Teachers, Schools and Institutions', intro_description: 'Weekly sessions available. full narrative documents. Jjourneys across any of Molino⺢Practice and Al-Andalus Experience specialities, showcasted areas, craft skils, narrative, practice through direct real world professional experience..' }, lastSync: 2026-04-22T23:53:28.713Z }, { id: 'cmo0lktr30019egblzmkky5dq', sheetId: '1HLp6UBhnHO2QFiOXk-KpqoMTE83vNRIajKwW69YgYkY', section: 'experience', items: [ [Object], [Object], [Object], [Object], [Object], [Object], [Object] ], data: { area: [Object], intro_label: 'TRANSMISSION', intro_quote: 'History is best understood in motion.', intro_title: 'Experience as a Journey', intro_description: 'Guided city routes, thematic historical sequences, education programs, and long-form cultural travel.' }, lastSync: 2026-04-22T23:53:00.337Z }, { id: 'cmnxqvse20000gidb4zizo8o7', sheetId: '1vBKBz1xOJup8OOtIsGlM6V2ZQBiFXH1_j6y4pjQr5xs', section: 'practice', items: [ [Object], [Object], [Object] ], data: { cta: [Object], area: [Object], intro_label: 'LIVING SYSTEMS · WEEKLY SUPPORT', intro_quote: 'Small complete units that connect over time. Automation. Structured Growth.\n' + ' Coaching, Projects, Collaborations.', intro_title: 'Practice as Rhythm. ', intro_description: 'Long-term coaching, operational onboarding, digital system building, and custom project work.' }, lastSync: 2026-04-22T23:52:47.335Z }, { id: 'cmo0lk55z000xegbl1jxwopkj', sheetId: '1zBg3MFDW4wh8JIXOKX1seLemDRqLJkxM_YyiLKfr568', section: 'story', items: [ [Object], [Object], [Object], [Object] ], data: { cta: [Object], area: [Object], intro_label: 'LIVE WRITING · TRANSMISSION', intro_quote: 'Paper once mattered because it could travel.', intro_title: 'Brand, Writing & Narrative', intro_description: 'Live writing, commissioned narrative work, bilingual cultural framing, and editorial publishing rhythms.' }, lastSync: 2026-04-22T23:52:21.014Z }, { id: 'cmnxqw9ka0007gidbii0vnhoo', sheetId: '1ipQcIZMyhM6jGNIADQSSF0YmfLX4kM7DDzcp69HazQA', section: 'travel', items: [ [Object], [Object], [Object] ], data: { cta: [Object], area: [Object], intro_label: 'TIME TRAVELLING · JOURNEYS', intro_quote: 'History is best understood in motion.', intro_title: 'Weekly Guided City Highlights', intro_description: 'Weekly guided city sessions and full narrative journeys across Andalusia.' }, lastSync: 2026-04-22T23:53:20.336Z } ] GET /studio/craft 200 in 1703ms (compile: 735ms, render: 968ms) GET /studio/craft 200 in 1697ms (compile: 592ms, render: 1105ms) GET /api/ai/personas 200 in 166ms (compile: 80ms, render: 86ms) GET /api/ai/personas 200 in 245ms (compile: 104ms, render: 141ms) GET /api/ai/personas 200 in 75ms (compile: 956µs, render: 74ms) GET /api/ai/contexts 200 in 100ms (compile: 19ms, render: 80ms) LOG [ { id: 'cmnxqw61c0004gidbvakie11i', sheetId: '1eumuIDHjkEb_n6gYyhdQfNe-QzRuVirCK02SFmw1fo8', section: 'craft', items: [ [Object], [Object] ], data: { cta: [Object], area: [Object], intro_label: 'PRACTICAL INITIATIONS', intro_quote: 'One concept. One session. One resolved capability.', intro_title: 'One Session · One Practical Capability', intro_description: 'Focused 90-minute sessions resolving real-world digital, narrative, and operational skills.' }, lastSync: 2026-04-22T23:52:33.818Z }, { id: 'cmo0ljsvq000pegblmnk2kcll', sheetId: '1r2u4LHqeQR0cgftyseexRli68hJO5dpHsiRPjilOGl4', section: 'dev', items: [ [Object], [Object], [Object], [Object], [Object], [Object], [Object] ], data: {}, lastSync: 2026-04-22T23:51:57.565Z }, { id: 'cmnxqwb7n0008gidbaom8wh5s', sheetId: '1aIg8BETewStA_XPlg1glfLCJAtEnYhSi10Ebygnt8M4', section: 'education', items: [ [Object], [Object], [Object], [Object], [Object], [Object], [Object] ], data: { cta: [Object], area: [Object], intro_label: 'TRANSMISSION - KNOWLEDGE AS AN EXPERIENCE', intro_quote: 'Knowledge As An Experience', intro_title: 'For Teachers, Schools and Institutions', intro_description: 'Weekly sessions available. full narrative documents. Jjourneys across any of Molino⺢Practice and Al-Andalus Experience specialities, showcasted areas, craft skils, narrative, practice through direct real world professional experience..' }, lastSync: 2026-04-22T23:53:28.713Z }, { id: 'cmo0lktr30019egblzmkky5dq', sheetId: '1HLp6UBhnHO2QFiOXk-KpqoMTE83vNRIajKwW69YgYkY', section: 'experience', items: [ [Object], [Object], [Object], [Object], [Object], [Object], [Object] ], data: { area: [Object], intro_label: 'TRANSMISSION', intro_quote: 'History is best understood in motion.', intro_title: 'Experience as a Journey', intro_description: 'Guided city routes, thematic historical sequences, education programs, and long-form cultural travel.' }, lastSync: 2026-04-22T23:53:00.337Z }, { id: 'cmnxqvse20000gidb4zizo8o7', sheetId: '1vBKBz1xOJup8OOtIsGlM6V2ZQBiFXH1_j6y4pjQr5xs', section: 'practice', items: [ [Object], [Object], [Object] ], data: { cta: [Object], area: [Object], intro_label: 'LIVING SYSTEMS · WEEKLY SUPPORT', intro_quote: 'Small complete units that connect over time. Automation. Structured Growth.\n' + ' Coaching, Projects, Collaborations.', intro_title: 'Practice as Rhythm. ', intro_description: 'Long-term coaching, operational onboarding, digital system building, and custom project work.' }, lastSync: 2026-04-22T23:52:47.335Z }, { id: 'cmo0lk55z000xegbl1jxwopkj', sheetId: '1zBg3MFDW4wh8JIXOKX1seLemDRqLJkxM_YyiLKfr568', section: 'story', items: [ [Object], [Object], [Object], [Object] ], data: { cta: [Object], area: [Object], intro_label: 'LIVE WRITING · TRANSMISSION', intro_quote: 'Paper once mattered because it could travel.', intro_title: 'Brand, Writing & Narrative', intro_description: 'Live writing, commissioned narrative work, bilingual cultural framing, and editorial publishing rhythms.' }, lastSync: 2026-04-22T23:52:21.014Z }, { id: 'cmnxqw9ka0007gidbii0vnhoo', sheetId: '1ipQcIZMyhM6jGNIADQSSF0YmfLX4kM7DDzcp69HazQA', section: 'travel', items: [ [Object], [Object], [Object] ], data: { cta: [Object], area: [Object], intro_label: 'TIME TRAVELLING · JOURNEYS', intro_quote: 'History is best understood in motion.', intro_title: 'Weekly Guided City Highlights', intro_description: 'Weekly guided city sessions and full narrative journeys across Andalusia.' }, lastSync: 2026-04-22T23:53:20.336Z } ] GET /api/ai/personas 200 in 76ms (compile: 1311µs, render: 75ms) GET /api/ai/contexts 200 in 107ms (compile: 3ms, render: 103ms) GET /api/ai/contexts 200 in 93ms (compile: 1114µs, render: 92ms) GET /api/ai/personas 200 in 93ms (compile: 2ms, render: 91ms) GET /api/ai/personas 200 in 81ms (compile: 3ms, render: 78ms) GET /api/ai/contexts 200 in 82ms (compile: 7ms, render: 75ms) GET /studio/craft 200 in 344ms (compile: 1950µs, render: 342ms) GET /api/ai/contexts 200 in 81ms (compile: 4ms, render: 77ms) GET /api/ai/personas 200 in 84ms (compile: 2ms, render: 82ms) GET /api/ai/personas 200 in 84ms (compile: 3ms, render: 81ms) GET /api/ai/contexts 200 in 76ms (compile: 1144µs, render: 75ms) GET /api/ai/contexts 200 in 90ms (compile: 3ms, render: 88ms) GET /api/ai/personas 200 in 75ms (compile: 2ms, render: 73ms) GET /api/ai/contexts 200 in 80ms (compile: 1005µs, render: 79ms) GET /api/ai/personas 200 in 74ms (compile: 1786µs, render: 72ms) GET /api/ai/personas 200 in 72ms (compile: 1406µs, render: 70ms) GET /api/ai/contexts 200 in 76ms (compile: 925µs, render: 76ms) GET /api/ai/contexts 200 in 81ms (compile: 643µs, render: 81ms) GET /api/ai/personas 200 in 86ms (compile: 736µs, render: 85ms) GET /api/ai/personas 200 in 71ms (compile: 1179µs, render: 70ms) GET /api/ai/contexts 200 in 73ms (compile: 1033µs, render: 72ms) GET /api/ai/contexts 200 in 80ms (compile: 3ms, render: 77ms) GET /api/ai/personas 200 in 83ms (compile: 1069µs, render: 82ms) GET /api/ai/personas 200 in 69ms (compile: 833µs, render: 68ms) GET /api/ai/contexts 200 in 77ms (compile: 906µs, render: 76ms) GET /api/ai/contexts 200 in 82ms (compile: 5ms, render: 76ms) GET /api/ai/personas 200 in 84ms (compile: 2ms, render: 82ms) GET /api/ai/contexts 200 in 77ms (compile: 1398µs, render: 76ms) GET /api/ai/contexts 200 in 74ms (compile: 1228µs, render: 73ms)

H1TRIPS UPDATE LOG

Status: Trips MLV1.0 post-deploy update, April 18, 2026. Root hub Trips Hub Trips Plan Guide Trips Next Steps Milestones Micro Goals

Status: locked execution plan

This note captures the shortest safe implementation path for the current Trips stage.

H2Current Status Snapshot

The working pipeline is now established across the core commercial flow:

  • Trip CRUD exists in the UI and supports create/edit on demand.
  • The document sidebar tool path is active and feeds the same trip pipeline.
  • Trip -> LineItems -> Offer -> Order -> Document projection is already in place.
  • The current Trip pricing snapshot is treated as the commercial source for that flow.
  • computeTrip is the right place for deterministic pricing, while UI remains a view layer.

What still needs to be standardized:

  • products and experiences should use the same pricing engine family as trips
  • line items need one normalized adapter path for all source types
  • offer and order should remain snapshot-based, not recomputing commercial truth
  • trip join mode still needs the shared / featured / private branching documented in one place
  • owner joins should become add-participants flows with dynamic repricing
  • office export routes still need to be fully formalized for Apps Script
  • booking flows still need the Stripe / FareHarbor / internal calendar split documented and implemented
  • Hotelbeds is a later milestone and should stay separate from the near-term trip pipeline
H2Trip-specific Next Steps
H3Active slice
  • Keep the current sidebar temporarily while the inline TripDetail editor is stabilized.
  • Reuse TripPlannerContext and normalizeStops so Trip edit mode stays aligned with current planner logic.
  • Add a single edit-mode toggle before expanding the join flow.
  • Make join mode branch by trip visibility:
    • shared / featured trips can expose join
    • private trips should default to private booking
    • owner joins should become add-participants flows with dynamic repricing
  • Keep hotel policy rules explicit, with managed vs external handling separated.
  • Create the booking layer only after the offer/order snapshot path stays stable.
  • Keep Apps Script export endpoints as a later formalized slice.
  • Treat FareHarbor as manual execution first, then add calendar validation later.
H3Current constraints
  • line items remain the commercial backbone
  • offer and order stay snapshot-based
  • document isolation remains intact
  • Hotel V1 stays a placeholder
  • trip changes stay inside the Trips docs and matching app routes
H3Related reading
H2Working References
H2Current State
  • Trip pricing now runs through TripInput -> tripEngine -> TripPricingOutput -> LineItems -> UI / Offer / Booking.
  • Pricing buckets are canonical: intercity transport, city transport, guide, tours, and hotel placeholder V1.
  • Line items are now the commercial backbone for Trip UI, Offer, Order, Booking, and payment bridges.
  • Planner state, server input, and persistence are split cleanly.
  • Trip detail is converged into one surface with hero, join, pricing, summary, route, schedule, line items, and offer bridge.
  • TripDays is deterministic and SSR-safe.
  • Hydration mismatches from locale formatting were removed.
H2Module Status Snapshot

Detailed audit: module-status-audit

H3Working / Partial
  • Document system: working, but deterministic-state and naming cleanup still need verification.
  • Trip core: working, with join-mode nuance and route coverage still being standardized.
  • LineItem system: working, but legacy mutation paths still coexist with the normalized pipeline.
  • Projection layer: partial but functional for document pagination and projection contracts.
  • Trips public surface: partial, with landing and planner surfaces present but still being normalized.
  • Offer system: partial, with snapshot creation in place but legacy mutation code still present.
  • Order system: partial, with snapshot creation in place but lock discipline still needing hardening.
  • TripDays / schedule: working.
  • Experience integration: partial.
  • Calendar / agenda: partial.
  • Apps Script execution: partial.
  • TripJoin booking layer: partial.
  • Weekly sponsor system: partial.
  • Deliverable system: partial.
  • AI system: working / partial.
  • Dev tooling system: partial.
H3Missing / Not Yet Complete
  • BookingBundle execution layer.
  • Complete Stripe-backed payment lifecycle.
  • FareHarbor bridge as a validated sync/execution layer.

H1PROJECT MILESTONES & BENCHMARKS
H2H1 — DOCUMENT SYSTEM (Virtual Document Instrument + Folio)
H3H2 — Shipping State
  • Editable block-based document system exists.
  • Pagination engine separation is in place.
  • Autosave pipeline is active.
  • AI-assisted document generation works.
  • Trip data is embedded and editable in document surfaces.
  • PDF export works.
H3H3 — Benchmarks
  • deterministic block IDs
  • no content loss between engine and wagon
  • autosave persists without desync
  • reload reproduces exact state
  • PDF export stays visually stable
H2H1 — TRIP CORE (Planner + Entity Persistence)
H3H2 — Shipping State
  • Trip creation from planner and document surfaces exists.
  • Trip persists in Prisma.
  • TripCities structure works.
  • Route composition is functional.
  • Pricing estimation pipeline is present.
H3H3 — Benchmarks
  • stable Trip ID
  • idempotent Trip + TripCities persistence
  • planner reload reconstructs route correctly
  • estimate recalculates deterministically
  • Trip existence does not depend on Document
H2H1 — LINE ITEM ECONOMIC SYSTEM
H3H2 — Shipping State
  • LineItems are generated from Trip pricing.
  • Document -> LineItems pipeline works.
  • LineItems are the pricing backbone.
H3H3 — Benchmarks
  • delete + recreate pattern enforced
  • no duplicate LineItems
  • totals derived only from LineItems
  • sourceType + sourceId traceability complete
H2H1 — PROJECTION LAYER
H3H2 — Shipping State
  • OutputBundle is defined.
  • RenderBlocks are defined.
  • Trip -> bundle compute works.
  • Google Docs and Calendar projection paths are defined.
  • Apps Script endpoints are partially integrated.
H3H3 — Benchmarks
  • bundle is fully serializable
  • render output is deterministic
  • calendar events are idempotent
  • doc export matches RenderBlocks exactly
H2H1 — TRIPS PUBLIC SURFACE
H3H2 — Shipping State
  • Landing builder structure is defined.
  • Sections are mapped.
  • Read models for trips, cities, and experiences are partially working.
  • CTA routing is defined.
H3H3 — Benchmarks
  • all CTAs route to real pages
  • featured trips render from DB
  • cities render from DB
  • experiences render from DB
H2H1 — OFFER SYSTEM
H3H2 — Shipping Target
  • Create Offer from Trip.
  • Clone LineItems into Offer.
  • Offer acts as a commercial snapshot.
H3H3 — Benchmarks
  • Offer created from Trip in one action
  • LineItems cloned, not referenced
  • Offer totals derived from items
  • Offer stays immutable after confirmation
H2H1 — ORDER SYSTEM
H3H2 — Shipping Target
  • Create Order from Offer.
  • Snapshot Offer into Order.
  • Lock Offer after conversion.
H3H3 — Benchmarks
  • Order created atomically
  • LineItems snapshot copied
  • Offer status updates to ordered
  • Order remains immutable
H2H1 — TRIP SCHEDULE / TRIPDAYS
H3H2 — Shipping Target
  • TripDays are generated from Trip + Cities + Experiences.
  • Schedule page is driven by TripDays.
H3H3 — Benchmarks
  • schedule renders without manual input
  • days generate deterministically
  • fallback content works
  • export uses the same TripDays structure
H2H1 — EXPERIENCE INTEGRATION
H3H2 — Shipping Target
  • Experiences are selectable inside the planner.
  • TripCityExperience linking is active.
H3H3 — Benchmarks
  • attach / detach experiences per city
  • pricing reflects selected experiences
  • schedule reflects selected experiences
H2H1 — CALENDAR / AGENDA SYSTEM
H3H2 — Shipping Target
  • CalendarEvent internal model is used.
  • Trip -> Calendar projection works.
H3H3 — Benchmarks
  • Trip generates events
  • events are idempotent
  • map + agenda integration is coherent
H2H1 — APPS SCRIPT EXECUTION LAYER
H3H2 — Shipping Target
  • Generic endpoints exist for createDoc, exportPdf, sendEmail, and createCalendarEvent.
H3H3 — Benchmarks
  • endpoints callable from Next.js
  • payload contracts are stable
  • responses are stored in Prisma metadata
H2H1 — BOOKING LAYER (TripJoin)
H3H2 — Shipping Spec
  • User joins Trip -> TripJoin.
  • pricingSnapshot freezes at join time.
  • shared trip repricing is supported.
H3H3 — Benchmarks
  • TripJoin created from UI
  • pricingSnapshot stored
  • pax + rooming supported
  • optional Offer can be created from join
H2H1 — BOOKING EXECUTION (BookingBundle)
H3H2 — Shipping Spec
  • BookingBundle is created after confirmation.
  • hotel logic and supplier execution live here.
H3H3 — Benchmarks
  • bundle created before execution
  • status transitions tracked
  • separate from Trip
H2H1 — WEEKLY SPONSOR SYSTEM
H3H2 — Shipping Spec
  • WeekSlot becomes the monetization layer.
  • connects Deliverable, LineItem, and Offer.
H3H3 — Benchmarks
  • WeekSlot linked to LineItem
  • donations accumulate
  • deliverable generated from assignment
H2H1 — DELIVERABLE SYSTEM
H3H2 — Shipping Spec
  • Deliverable acts as the projection node.
  • unified output storage lives here.
H3H3 — Benchmarks
  • all exports linked to Deliverable
  • Deliverable linked to Trip / Offer / etc
  • multiple formats supported
H2H1 — PAYMENT SYSTEM (STRIPE)
H3H2 — Shipping Spec
  • Order -> payment intent.
  • deposit and full payment flows.
H3H3 — Benchmarks
  • payment intent created
  • webhook updates Order
  • deposit logic works
H2H1 — FAREHARBOR BRIDGE
H3H2 — Shipping Spec
  • Experience.externalId mapping exists.
  • availability validation and booking sync are later layers.
H3H3 — Benchmarks
  • availability fetched
  • mapping stable
  • no duplication in DB
H2H1 — CRM / CONTACT FLOW
H3H2 — Shipping Spec
  • ProjectContact links TripJoin, Offer, and Order.
H3H3 — Benchmarks
  • contact created once
  • contact reused across pipeline
  • communication history attachable
H2H1 — ROUTE / PAGE COVERAGE
H3H2 — Shipping Spec
  • Full route coverage is the target.
H3H3 — Benchmarks
  • /trips/new
  • /trips/[id]
  • /trips/[id]/schedule
  • /trips/[id]/join
  • /offers/[id]
  • /orders/[id]
  • /projects/[id]
H2H1 — AI SYSTEM (STRUCTURED)
H3H2 — Shipping Spec
  • AssistantThread is operational.
  • AI produces structured outputs.
H3H3 — Benchmarks
  • threads persist
  • context and persona applied
  • outputs feed compute layer, not DB directly
H2H1 — DEV TOOLING SYSTEM
H3H2 — Shipping Spec
  • DevPrompt is usable for code workflows.
H3H3 — Benchmarks
  • prompts stored
  • outputs linked to files
  • reusable for generation pipelines
H2H1 — GLOBAL MILESTONES
H3H2 — M1: Trip -> LineItems stability
  • Trip planner stays stable.
  • LineItems stay deterministic.
H3H3 — Benchmark
  • Trip to LineItems output is repeatable
  • no surprise recompute paths
H3H2 — M2: Offer pipeline
  • Trip -> Offer -> LineItems snapshot.
H3H3 — Benchmark
  • Offer clones items once
  • Offer stays snapshot-based
H3H2 — M3: Order pipeline
  • Offer -> Order -> immutable snapshot.
H3H3 — Benchmark
  • Order copies the commercial state
  • Offer locks after conversion
H3H2 — M4: Projection live
  • Trip -> Doc + PDF + Calendar working.
H3H3 — Benchmark
  • projection targets all render from the same source bundle
H3H2 — M5: Booking layer
  • TripJoin + BookingBundle operational.
H3H3 — Benchmark
  • join intent and execution stay separated
H3H2 — M6: Payment
  • Stripe integrated.
  • Order lifecycle complete.
H3H3 — Benchmark
  • payment updates the canonical order state
H3H2 — M7: Distribution
  • FareHarbor bridge.
  • manual and validation flows.
H3H3 — Benchmark
  • external distribution never overwrites app truth
H3H2 — M8: Sponsor engine
  • WeekSlot monetization active.
H3H3 — Benchmark
  • weekly execution can drive commercial output
H3H2 — M9: Full loop
  • Trip -> Join -> Offer -> Order -> Payment -> Execution -> Projection.
H3H3 — Benchmark
  • every stage has a canonical owner and snapshot boundary
H1CODEBASE SPECS

Molino Index — Master Guidebook

H2Introduction

This document is the home page for the technical plan, architecture guide, and operating documentation for the web application.

Trips is the first-class business surface and the first intended deployment mode. It is the primary commercial path, planner, and public-facing product.

Molino Index is the broader codebase brand and developer-facing framework around that business. It also acts as a portfolio, demo, and reusable deployment platform for other operating modes, client instances, and developer workflows.

Use this guide to understand:

  • the canonical architecture rules
  • the document and projection model
  • the Trips domain and release path
  • the office automation and external execution layers
  • the reusable platform shape behind the Trips business
H21. Core rules

Architecture page.tsx = read-only server orchestrator actions/ = sole mutation authority components/ = dumb UI api/route.ts = external integration surface only types/ = canonical truth no Prisma outside actions no mutation in pages no business logic in Apps Script compute in Next.js, project externally System model Prisma = truth Entities = canonical business objects Virtual Document Instrument = in-app projection/orchestration surface Folio = rendering/pagination AI = content and structured assistance, not persistence authority Projection = external-ready outputs Apps Script = stateless office execution layer Final model Truth → Compute → Virtual Document / UI → Intent → Actions → DB → Rebuild → Projection

H22. Document terminology — locked clarification

The word document must always be resolved into one of these meanings.

H32.1 Virtual Document Instrument

This is the in-app document system. It is: an internal application entity editable in the web app rendered through Folio used as orchestration surface used as projection surface used as commercial instrument used as trigger surface for exports and workflows It is not: a Google Doc a DOCX file an external source document the canonical truth for trips, offers, orders, or payments Canonical meaning in code and planning: Document Document2Data Folio document virtual document document instrument

H32.2 Google Documents as external source

These are external Google Docs used as content sources for publishing systems. They are: external source documents imported or synced into database read models used by the section index / docs publisher used by the single canonical document publisher a convenient content source for cloned or redeployed versions of the app They are not: the in-app virtual document instrument the source of truth for app entities part of Folio editing Canonical meaning in planning: Google Doc external Google document source Google Doc synced Google Doc

H32.3 Google Documents as export target

These are Google Docs created from app data through Apps Script. They are: projection targets generated from internal entities or virtual documents part of office automation often a step toward PDF, email, calendar, or sharing workflows They are not: editable app truth equivalent to the in-app document system source truth for business state Canonical meaning in planning: export to Google Doc generated Google Doc office document output

H32.4 Publishing documents in cached read models

These are DB-backed read models used for editorial publishing. They are: cached article records synchronized from sheet/index pipelines or canonical source docs used for public rendering and navigation They are not: the virtual document instrument operational business truth

H32.5 Practical naming rule

When discussing development, always name the type explicitly: Virtual Document Instrument = the in-app editable document system Source Google Doc = an external document synced into the app for publishing Generated Google Doc = an external document exported from the app Published Article Record = cached DB article used by section/canonical publishers Magazine Projection = derived editorial/card output, internal or external

H23. Current stable base

Stable enough for forward work document pagination stable enough for continued work AI document generation stable enough for product work trip section generation inside virtual documents working dynamic trip cost estimation and mapping to line items working PDF export working page-fit / width-fit behavior usable and improving direct wagon page editing stable enough for use Remaining document polish section ordering edge cases occasional overflow splitting awkwardness page-fit / layout polish hidden/default section behavior section initializer / default visibility cleanup

H24. Domain stack
H34.1 Core business entities

Project Virtual Document Instrument Trip Experience Offer Order LineItem Sponsor / WeekSlot / Donation / Assignment publishing / cache entities where relevant

H34.2 Locked trips domain partition

Concept / content layer Entities: ConceptCard CardContent ConceptGroup SessionStack SessionPath Deliverable Role: knowledge study training onboarding scripts posters guidebooks narrative assets Rule: defines what is understood and how delivery is supported does not define pricing, schedules, capacity, or bookings Experience layer Entity: Experience Role: reusable commercial template canonical internal equivalent of a FareHarbor item template Rule: defines what is sold as a reusable unit not time-bound not attendee-bound source for sessions and attachable into trips Session / agenda / operations layer Entities: GroupSession GroupSessionAttendee CalendarEvent AgendaNote MapLocation Role: real scheduled, capacity-bound, operational occurrence Rule: GroupSession is the atomic real-world operating unit trip participants and independent travellers can attend the same session Trip aggregation layer Entities: Trip TripCity TripCityExperience or TripCityPlan TripDay Offer Order Role: bundled multi-city commercial product Rule: Trips compose from Experiences and/or GroupSessions Trips do not define session existence Trips are not the atomic operational unit Locked one-line definition ConceptCards define how it is understood, Experiences define what is sold, GroupSessions define when it happens, and Trips define how it is bundled.

H25. Main architectural layers

Domain truth layer Prisma entities are canonical truth all operational states resolve here Virtual document layer Used as: projection surface orchestration surface working buffer export trigger surface commercial instrument Not used as: canonical business truth payment truth booking truth order truth Folio layer Responsibilities: block structure flow normalization pagination engine + wagon render deterministic edit/render loop Action layer Location: app/(entity)/actions/ Rules: only actions mutate only actions access Prisma revalidate after writes Projection layer Pattern: computeBundle(entity, id) projectEntity(entity, id, targets) Targets: Google Doc pdf sheet/csv calendar email magazine Rule: compute in app project externally outputs are projections, never truth Apps Script layer Role: generic atomic external capability layer receives payloads renders / sends / logs returns metadata

H26. Active product surfaces

Virtual Document Instrument Current strongest internal surface. Use cases: AI content generation planning trip projection line item generation exports structured editorial layouts commercial instrument for offer/order support Assistant / AI Visible modes: general coaching Role: generate content structure planning flows later prefill forms and prepare action payloads Trips Now a first-class public and commercial surface. Role: landing page planner featured trip catalog trip detail schedule bridge to bookings and exports Experiences Role: city-level commercial templates trip ingredients future external booking item candidates collaborator / partner draftable products Toolbar + Sidebar Toolbar: execution surface Sidebar: composition surface registry-hosted tools AI panel host cross-entity control surface

H27. Platform layer

Positioning Molino Index is three things at once. Product layer Trips Experiences Sponsor system public landings booking / offer flows Tool layer Virtual Document Instrument AI-assisted workflows editor office automation triggers projection engine Platform layer deployable Next.js + Prisma + PostgreSQL + Apps Script operational framework reusable for custom installs and vertical packages Core offering types

H31. Core Boilerplate

Next.js + Prisma structure action pattern virtual document system projection engine Apps Script starter layer optional sheet/index publishing connectors

H32. Vertical Package

Trips Experiences planner pricing / line items landing builder

H33. Custom Installation

tailored setup integrations deployment training / onboarding Access modes internal approved open client-instance Deployment modes main Molino internal/showcase deployment trips-focused public deployment boilerplate demo deployment client-specific deployments Standardization required locked folder contract locked action pattern locked projection interface locked Apps Script payload contract reusable pure compute layer separation of reusable vs product-specific modules

H28. Publishing systems

These stay separate from the Folio virtual document engine.

H38.1 Multi-section index + docs publisher

Role: editorial / knowledge / multi-section article system Canonical entities: IndexCache Document as indexed cached article records Source model: section-specific sheet indexes linked external Google Docs by id sync pipelines populate DB cache Features: section landing pages indexed document collections sidebar navigation canonical document permalinks section config projection Best for: editorial portals knowledge sites documentation sections magazine-style publishing

H38.2 Single canonical document publisher

Role: one-document publishing engine Canonical entities: SourceDoc Chapter Comment Source model: one canonical external Google Doc synced into DB snapshots / chapter rows Features: one canonical source document chapter / paragraph projection comments by chapter DB-first render background sync + revalidation Best for: books essays serialized blogs commentary editions Rule Keep both publishing systems distinct from the virtual document instrument in planning and implementation.

H29. Projection and export model

Canonical projection pattern computeBundle(entity, id) projectEntity(entity, id, targets) Standard targets Google Doc pdf sheet/csv calendar email magazine / editorial Rule compute once in app project everywhere as needed no duplicate business logic in external systems

H210. Google Workspace / office document intent

Source intake intent External Google Docs may enter the system as source material for public publishing modules. This supports: section + article publishing editorial portals book/blog style deployments easy cloning and redeployment by linking new spreadsheets and source docs Export intent The virtual document instrument should export to Google Docs in one click whenever useful. Primary export targets: Google Docs PDF email calendar Typical sequences: virtual document → Google Doc virtual document → Google Doc → PDF virtual document → Google Doc → PDF + email virtual document → Google Doc → calendar support payload offer/order/trip → Google Doc package via office server Rule Google Workspace is the main office/manual/automation platform, but never the truth layer.

H211. Magazine / editorial projection layer

Role A distinct projection target for card-style, editorial, magazine, Pinterest-like, Flipboard-like, or social-sharing outputs. Inputs May project from: virtual document trip experience article / indexed content later offers or thematic bundles if useful Target page shapes cover toc article pages feature pages directory pages back cover Rules magazine is projection, not truth source entities remain canonical magazine templates are presentation contracts editorial/card-style outputs are derived from existing entities compute in app render internally or externally as needed Canonical pattern projectDocumentToMagazine(document) projectTripToMagazine(trip) projectExperienceToMagazine(experience) projectArticleToMagazine(article) optional unified entry: projectEntityToMagazine(entity, id) Internal surface /magazine Sharing concerns Magazine sharing is social/editorial oriented, not office oriented. Typical outputs: internal shareable link WhatsApp sharing link email sharing link social sharing links later editorial/card channel push if desired

H212. Offer → Order confirmation pipeline

Role A first-class commercial flow, not an incidental export chain. Canonical denominator LineItem connects: trip experience offer order virtual document exports confirmations Core flow truth entity / trip / experience → compute line items → create or update offer → optionally project offer into virtual document → send / export / share offer → confirm / pay / approve → promote offer to order → project order outputs → CRM / client lifecycle update Rules virtual document is an instrument in the commercial flow offer / order truth does not live in the document order remains canonical transaction truth promotion from offer to order must always be explicit and canonical confirmations and exports are projections of canonical offer / order state Projection outputs around this pipeline offer Google Doc offer pdf confirmation email payment link / Stripe checkout order confirmation document calendar events after confirmation office exports through Apps Script sheet / log / report projections

H213. Generic Apps Script capability layer

Atomic office primitives create document from payload export pdf from document send email with attachments create calendar event append or log export event create / update sheet payload share file / editor permissions if needed Domain wrappers resolved in app Trips export trip offer doc export trip offer pdf send trip offer email create trip calendar invite export trip schedule doc export trip schedule pdf Experiences / partners export experience brief export experience draft doc send partner packet create approval packet Documents / offers export virtual document to Google Doc export offer sheet / doc / pdf send confirmation package Rule wrappers belong conceptually to the app layer Apps Script stays atomic and generic

H214. Stage 1 order

Product and control Trips public landing + CTA routing Trips planner + trip detail + schedule Remaining document sidebar tools + canonical tool registry AI assistant visible modes + seamless coaching sub-routing Projection / export system + office server contract FareHarbor external booking and marketing bridge Booking + Stripe + confirmation flows Offer → Order confirmation pipeline CRM layer from paid transactions Magazine / editorial projection layer Supporting continuity publishing modules cleanup CSS homogenization deployment shaping by product/platform split

H215. Step summaries
H31. Trips public landing + CTA routing

Goal: ship public trips-facing entry surface Deliverables: /trips landing builder canonical section registry CTA routing featured trips / cities / experiences read models partner route Locked CTA triad: Plan Your Trip Join Featured Trips For Guides & Partners

H32. Trips planner + trip detail + schedule

Goal: turn trips CTAs into working flows Deliverables: /trips/new /trips/featured /trips/[tripId] /trips/[tripId]/schedule estimation Trip + TripCities persistence TripDays generation Experiences as route ingredients

H33. Sidebar tools + canonical tool registry

Goal: formalize toolbar/sidebar as execution + composition system Deliver

H2MOLINO — STREAMLINED DEV DOCS OVERVIEW

This section continues the codebase specs as a general overview with detail, keeping the same system truth but organizing it for daily use.

H3Canonical Reference for AI Assistants, Developers & Builders

Status: Master (compiled April 21, 2026) Scope: Full platform — architecture, domain, modules, flows, integrations Philosophy: One source of truth → many projections. Document = Instrument. AI = Tool.


H2Chapter 1 — System Identity & Core Philosophy

Further reading: document/mlv-document-one_akill.md, architecture/20260320_molino_mlv_mvp_brief.md

H3Reference links
H3One-Line Definition

A document-driven system that turns ideas, trips, and workflows into real outputs — offers, schedules, and published materials — fast, structured, and repeatable.

H3System Identity
System = Deterministic Core + Projection Engine

Prisma (DB)          → single source of truth
Entities             → canonical business objects
Virtual Document     → projection + orchestration surface
Folio                → deterministic renderer
Actions              → only mutation authority
Projection Engine    → external outputs (Google Workspace)
AI                   → tool inside the document, not the core
H3Global Execution Model
Truth (Prisma)
    ↓
Document (projection)
    ↓
Folio (render)
    ↓
User / AI Intent
    ↓
Actions (persist)
    ↓
Revalidate
    ↓
Projection (optional)
    ↓
External Systems (Docs / Calendar / Sheets)
H3Core Principle

One source of truth → many projections.

  • UI is minimal
  • State lives on the server
  • Mutations happen via Server Actions only
  • UI updates via Suspense (no page reloads, no client polling)
  • No client-side orchestration logic
H3What this is NOT
  • Not a dashboard app
  • Not an automation marketplace
  • Not a CRM or Zapier + AI
  • Not a generic document editor
H3MLV Success Criteria
  • Daily use by the builder
  • One complete workflow end-to-end
  • At least one real export (offer / order / trip)
  • Users can explain it in one sentence

<a id="chapter-2--architecture-rules-non-negotiable"></a>

H2Chapter 2 — Architecture Rules (Non-Negotiable)

Further reading: architecture/20260420_molino.architecture.md, architecture/20260416_molino-guidebook.md

H3Reference links
H3Folder Structure (strict)
app/(entity)/<entity>/
  page.tsx        → read-only server orchestrator ONLY
  actions/        → ONLY mutation authority (all Prisma here)
  components/     → dumb UI, client components for state only
  context/        → ephemeral UI state only
  types/          → domain truth, canonical type definitions
  api/route.ts    → external boundary only (no business logic)
H3Six Non-Negotiable Rules
  1. No Prisma outside actions/ — ever
  2. No mutation in pages — pages are read-only orchestrators
  3. API routes are external only — no internal business logic in routes
  4. One entity = one folder — no cross-entity mixing
  5. UI never owns truth — intent flows up, render flows down
  6. All writes go through server actions — always, no exceptions
H3Persistence Pattern
Client intent
→ emitIntent / setForm
→ compute helpers (pure functions, no side effects)
→ queueSave / action
→ Prisma
→ revalidate
→ server re-render via Suspense
H3Document Engine Layers
rawBlocks (input)
    ↓
FlowUnits (normalized)
    ↓
pagination (layout only)
    ↓
wagons (render)

Guarantees:

  • Deterministic IDs
  • Pure transforms
  • Pagination = layout only, never business logic

<a id="chapter-3--domain-model--entity-stack"></a>

H2Chapter 3 — Domain Model & Entity Stack

Further reading: architecture/20260416_molino-guidebook.md, trips/20260220_trips-sessions-MLV.md, trips/20260420_trips-guidebook-plan.md

H3Reference links
H3Core Business Entities
Project
Virtual Document Instrument
Trip
Experience
GroupSession
Offer
Order
LineItem          ← critical connector
ConceptCard
Sponsor / WeekSlot / Donation / Assignment
H3Trips Domain Partition (LOCKED)

Concept / Content Layer

Entities: ConceptCard, CardContent, ConceptGroup, SessionStack, SessionPath, Deliverable

Role: Knowledge, study, training, onboarding, scripts, posters, guidebooks, narrative assets.

Rule: Defines how something is understood and delivered — not how it is scheduled or sold.

Experience Layer

Entity: Experience

Role: Reusable commercial template. Canonical internal equivalent of a FareHarbor item template. City-linked. Not time-bound. Not attendee-bound.

Rule: An Experience is reusable and not date-bound. Source for sessions and attachable into trips.

Session / Agenda / Operations Layer

Entities: GroupSession, GroupSessionAttendee, CalendarEvent, AgendaNote, MapLocation

Role: Real scheduled, capacity-bound, operational occurrences.

Rule: GroupSession is the atomic real-world operating unit. Trip participants and independent travellers may attend the same GroupSession.

Trip Aggregation Layer

Entities: Trip, TripCity, TripCityExperience, TripDay, Offer, Order

Role: Bundled multi-city commercial product — ordered, priced, shared or private, exportable.

Rule: Trips bundle and sequence Experiences and/or GroupSessions. Trips do not define session existence.

H3Locked One-Line Domain Definition

ConceptCards define how it is understood, Experiences define what is sold, GroupSessions define when it happens, and Trips define how it is bundled.

H3LineItem Model (Critical Connector)
LineItem {
  label
  quantity
  unitPrice
  total
  unitType     // e.g. per_person, per_day, per_night, package
  unitLabel    // e.g. "person", "night", "km"
  meta         // breakdown / pricing logic / source metadata
  parentType   // "document" | "offer" | "order"
  parentId
  sourceType   // "trip" | "product" | "experience" | "custom"
  sourceId
}

LineItems are the transferable commercial backbone between Trips and the rest of the commercial system. Used across: documents, offers, orders, reports, exports.


<a id="chapter-4--document-system-virtual-instrument"></a>

H2Chapter 4 — Document System (Virtual Instrument)

Further reading: document/mlv-document-one_akill.md, document/GOALS-AHEAD.md, architecture/20260416_molino-guidebook.md

H3Direct links
H3Reference links
H3Document Terminology (Locked — from Guidebook)
TermMeaning
Virtual Document InstrumentThe in-app editable document system — orchestration + projection surface
Source Google DocExternal document synced into app for publishing
Generated Google DocExternal document exported from the app via Apps Script
Published Article RecordCached DB article used by section/canonical publishers

Critical: The word "document" must always resolve to one of these. Never use it ambiguously.

H3Document Templates
note2
offer
proforma
invoice
firmorder
custom
trip-offer-v1    ← key template for trip commercial workflow

Each template defines:

{
  (key,
    label,
    emoji,
    requireExplicitEdit,
    defaultData,
    renderView(data),
    renderEditor(data, update));
}

Registered in: app/(pages)/documents2/components/DocRegistryComponents.tsx

H3Document Data Model (core JSON shape)
{
  title: string,
  description?: string,
  clientName?: string,
  meta: { currency?: string, [k: string]: any },

  // For line-item-aware documents:
  offerId?: number | null,
  offerMode?: "local" | "bound",   // key concept
  lineItemsDraft?: LineItem[]
}

offerMode rules:

  • "local" → document stores its own draft line items
  • "bound" → document reflects real Offer line items, always live. Read-only except via the Offer editor.
H3Trip-Offer-v1 Template Structure
TripOfferTemplate = {
  key: "trip-offer-v1",
  defaultData: {
    contentSections: [
      { id: "intro-letter", type: "text", role: "letter-intro" },
      { id: "itinerary-body", type: "text", role: "itinerary" },
    ],
    ctaSection: {
      enabled: true,
      type: "whatsapp",
      phone: "",
      text: "Click below to open a WhatsApp chat...",
    },
  },
};
H3Document → Trip → Offer Pipeline

The command-driven document system (confirmed working):

DocSection_TripBuilder
    → emits intent flags (never direct side effects)
          _requestInsertIntoLineItems
          _requestOverwriteTripLineItems
          _requestCommitTrip
          _requestPopulateTripOffer
    ↓
Documents2Canvas.handleTripSectionChange
    → the ONLY coordination point
    → interprets intents
    → calls server actions
    → queues save
    ↓
Server Actions
    → commitTripFromDocument
    → syncTripLineItems
    → populateTripOfferFromTrip
    → createOfferFromTripFlow
    ↓
Prisma (truth)
    → revalidatePath

Key invariant: DocSection_TripBuilder has zero persistence knowledge. It only emits intents.


<a id="chapter-5--trip-module-builder--engine--planner"></a>

H2Chapter 5 — Trip Module (Builder + Engine + Planner)

Further reading: trips/20260420_trip-planner.current-pattern.md, trips/20260420_trip-planner.refactor-target.md, trips/20260420_trips-plan.md, trips/20260420_trips-guidebook-plan.md, document/generateTripFromDocument_akill.md

H3Direct links
H3Reference links
H3Trip Planner Identity
Trip Planner =
  Builder     → deterministic form + normalization
  Engine      → pricing + projection
  Execution   → real-world booking + confirmation

Trip ≠ Booking
Trip = plan
Booking = execution
H3Core Flow (Locked)
Client
→ TripPlannerContext
→ normalizeStops()
→ setForm
→ (create | update)TripFromPlanner
→ Prisma
→ revalidate
→ Trip Engine (pricing, days, lineItems)
→ UI

+ Execution Layer:
Trip
→ BookingBundle
→ Ops (Apps Script / Manual / FareHarbor)
H3Stops — Single Source of Truth
form.stops[] = canonical route

Each stop:
  cityId
  nights
  computed role     // NEVER user-controlled
  services          // transport, guide, tours
H3Roles (Derived, Never User-Controlled)
  • index 0 → arrival
  • last index → departure
  • Córdoba + Granada → core
  • else → extension
H3Determinism Layer
  • normalizeStops() — no duplicate cities, core cities always present
  • computeDisplayRole() — stable ordering
  • businessRank() — valid nights constraints
H3Current Planner Folder Structure
app/trips/new/
  page.tsx
  actions/
    tripPlanner.actions.ts
    tripPlanner.read.actions.ts
  components/
    TripPlannerShell.tsx
    TripPlannerSidebar.tsx
    TripPlannerMain.tsx
    TripPlannerStepper.tsx
    TripPlannerSummary.tsx
    TripPlannerSchedulePreview.tsx
    TripPlannerCostPreview.tsx
    TripPlannerDock.tsx
  context/
    TripPlannerContext.tsx
  types/
    tripPlanner.types.ts
H3Refactor Target: Inline Builder

Remove stepper/sidebar. Replace with inline sections:

  1. Basics
  2. Route (table model — row = stop)
  3. Services (per city, dropdown)
  4. Hotels (auto-calc on pax change)
  5. Options

No step navigation. Data flow unchanged. See 20260420_trip-planner.refactor-target.md.

H3commitTripFromDocument (proven working pattern)
// Location: app/(pages)/documents2/actions/commitTripFromDocumentAction.ts
export async function commitTripFromDocumentAction({
  documentId,
  projectId,
  tripDraft,
}) {
  // Auth → load doc → extract trip data → upsert Trip → create TripCities → return { tripId }
}

Key: Uses draftId as upsert key for idempotent commits.

H3syncTripLineItems (proven working pattern)
// Location: app/(pages)/lineitems/actions/syncTripLineItems.ts
// Upserts by (tripId, key) — orphaned items deleted
// Requires: @@unique([tripId, key], name: "tripId_key") in Prisma schema
H3TripCard Data Shape
TripCard {
  id            // slug (e.g. cordoba-granada-core)
  title
  summary
  phase         // MLV_PHASE_1 | MLV_PHASE_2
  visibility    // public | unlisted | private
  cities[]
  sequence[]    // ordered SessionCard refs with dayIndex + required flag
  duration      { days, nights }
  cadence       // weekly | monthly | fixed-dates
  basePriceEUR
  pricingModel  { type: "bundle", includes, excludes }
  joinModes[]   // shared | private | assisted
  groupLogic
}
H3Sessions are Primary. Trips are Composed. (LOCKED)
  • Sessions may run with or without a trip
  • Trips reuse existing sessions at bundled rates
  • Pricing differs by participation mode, not session identity
H3Hotel Logic (pluggable subsystem)

Modes: included | excluded | estimate_only

Rule: Hotel logic must remain pluggable and optional without destabilising trip truth.

H3Shared-Trip Repricing

Prices can improve as more participants join. Group economics affect per-traveller outcome. This is a real commercial behavior — not a side note.


<a id="chapter-6--offer--order--invoice-pipeline"></a>

H2Chapter 6 — Offer / Order / Invoice Pipeline

Further reading: document/GOALS-AHEAD.md, roadmap/16DecTuesdayWeekGoals.md

H3Reference links
H3Pipeline Overview
Trip (with LineItems)
    ↓
Offer (createOfferFromTripFlow)
    ↓
Order (confirmed, line items COPIED not referenced)
    ↓
Invoice (delivered quantities + payment state)
H3Key Rules
  • Only Offer runs pricing transforms. Orders and invoices receive copied line items with no re-pricing.
  • Offer → Order: line items are copied, order totals computed once, order may modify quantities independently.
  • Order → Invoice: adjusts delivered quantities, payment state, due amounts.
H3Server Actions Reference
getOfferWithLineItems(offerId)         // returns live items + computed totals
createOfferFromDocument(documentId)    // local draft → new Offer → bind document
bindDocumentToOffer(documentId, offerId)
detachDocumentFromOffer(documentId)    // copy canonical → local mode
updateOfferLineItemsFromEditor(offerId, items[])
createOfferFromTripFlow({ tripId, documentId })  // full flow action
copyTripLineItemsToOffer({ documentId, tripId, offerId })
H3Pricing Engine (Next Module)

Universal transformer: resolvePricing(sourceType, sourceId, context)LineItemPackage

LineItemPackage {
  packageTotal: number
  defaultUnitType: string
  defaultUnitLabel: string
  rows: [{ title, qty, unitType, unitLabel, unitPrice, meta? }]
}

Source types: "trip" | "product" | "experience" | "custom"


<a id="chapter-7--ai-personas--contexts"></a>

H2Chapter 7 — AI Personas & Contexts

Further reading: framework/seeds/seed.molino-app.skills.md, framework/seeds/seed_.txt

H3Reference links
H3Active AI Personas
KeyNameRole
maestroMaestro de RitmosStrategic advisor, brand tone, seasonal planner, cash-flow navigator
ScribeLife's ScribeBilingual copywriter, reflective storyteller, brand narrative
MerchantOfTimeMerchant of TimeTimeless historical philosopher-merchant, brand values
z-marketingZ — Marketing+TechBilingual content creator, landing pages, offers, automation
managerManagerTour operating logistics, booking documentation, hotel research
H3AI Hard Constraints
  • AI outputs must conform to schemas
  • No free-text automation touching integrations
  • Human confirmation required for all side effects
  • AI is a tool inside the document, not the core
H3AI Usage (within Documents)

✅ Fill structured forms (typed + validated) ✅ Generate document content via personas ✅ Assist planning (summaries, drafts, variations) ✅ Rewrite intro letters, itinerary paragraphs ✅ Explain pricing to clients ✅ Generate alternative wording

❌ Parse Tally payloads ❌ Decide pricing ❌ Build line items ❌ Touch integrations directly

H3AI Contexts
default    → concise, structured, helpful
developer  → clean typed code, Next.js App Router conventions

<a id="chapter-8--projection-layer-apps-script--google-workspace"></a>

H2Chapter 8 — Projection Layer (Apps Script + Google Workspace)

Further reading: appscript/appscript.apis.md, appscript/appscript-office-server-firstLoop.md

H3Direct links
H3Reference links
H3Authority Split (Locked)
LayerAuthority
Apps ScriptExternal Google Workspace executor — thin atomic actions, no business logic
Next server actionsBusiness orchestration, entity-aware logic, permissions, Prisma, revalidation
UI / toolbar / sectionsIntent launchers only — no direct Google logic, no secrets, no business rules

Principle: Compute in Next.js → project externally via Apps Script.

H3Canonical Apps Script Contract

Request envelope:

type GoogleToolRequest<TInput = unknown> = {
  action: string; // e.g. "docs.create", "gmail.send"
  requestId: string; // trace ID
  source: "folio" | "trip" | "product" | "experience" | "offer" | "assistant";
  entityType?: string;
  entityId?: string | number;
  documentId?: number;
  userId?: string;
  payload: TInput;
};

Response envelope:

type GoogleToolResponse<TResult = unknown> = {
  ok: boolean;
  action: string;
  requestId: string;
  timestamp: string;
  result?: TResult;
  error?: { code: string; message: string; details?: unknown };
  meta?: { fileId?, fileUrl?, rowsProcessed?, durationMs?, ... };
};
H3Tier 1 — Generic GAS Tool Endpoints
POST /api/tools/google/gmail/send
POST /api/tools/google/docs/create
POST /api/tools/google/docs/export-pdf
POST /api/tools/google/sheets/append
POST /api/tools/google/calendar/create

Available actions (via doPost router):

  • docs.create, docs.exportPdf, docs.appendContent, docs.replaceContent
  • gmail.send, gmail.createDraft, gmail.reply
  • sheets.create, sheets.appendRows, sheets.getRows, sheets.logActivity
  • calendar.createEvent, calendar.updateEvent, calendar.listEvents
  • drive.createFile, drive.copyFile, drive.shareFile, drive.exportFilePdf
  • coreOffice.generateTemplates, coreOffice.generateEntityDocs
H3Tier 2 — App-Level Orchestrators (Next.js server actions)
createTripAgendaAndInviteGuests
publishOfferAsPdfAndEmail
logMeetingAndCreateFollowup
buildClientBriefAndShare
createTripDaySchedule
sendPostSessionSummary

These call the generic GAS endpoints through Next server actions — never from the client.

H3Output Bundle (Canonical)
type OutputBundle = {
  meta: { entity: string; entityId: string; title: string };
  document?: DocumentPayload;
  calendar?: CalendarPayload[];
  tabular?: TabularPayload;
};

Trip export paths:

Trip → PDF → (via Apps Script)
Trip → Google Doc → (generated document)
Trip → Email → (via gmail.send)
Trip → Calendar event → (via calendar.createEvent)

<a id="chapter-9--external-integrations"></a>

H2Chapter 9 — External Integrations

Further reading: integrations/places-integration_akill.md, integrations/tally-integration-startert_akill.md, integrations/tally-forms-integrations-2part_akill.md

H3Reference links
H3Integration Model

External channels = projections, not truth. External systems may consume, reflect, or publish trip outputs, but they must not define internal model boundaries or internal truth.

H3Tally Forms (Input Adapter)

Tally = External Draft Input Adapter. Not a document generator.

Flow:

Tally form submitted
    ↓
Client-side: Tally.openPopup() with onSubmit handler
    ↓
POST /api/tally (or /api/webhooks/tally)
    ↓
mapTallyToTripDraft(payload) → TripDraftData
    ↓
Create Document (type: "trip-offer-v1") with tripSection.tripData
    ↓
Return documentId → redirect to document editor

Key mapper:

// app/lib/tally/mapTallyToTripDraft.ts
export function mapTallyToTripDraft(payload: TallyPayload): TripDraftData {
  const get = (label) => payload.fields.find(f => f.title === label)?.answer?.value ?? "";
  return { id: crypto.randomUUID(), title: get("Trip title"), pax: Number(get("Participants") || 1), ... };
}
H3Google Places (Search Integration)

Pattern: Next.js API route → Google Places Text Search → process results → return to client.

GET /api/fetchPlaces?query=...
→ Google Places API (textsearch + details)
→ { name, location, url, details: { phone, website } }[]

Or via Apps Script Web App deployment for GAS-side processing.

H3FareHarbor

Role: Inventory only. External booking bridge.

  • Sessions = sellable experiences (standard rate / bundled rate)
  • Trips = bundled event products
  • Rule: FareHarbor is a projection target, not internal truth.
H3Holded

Spanish official accounting integration. Export structured invoice data.

H3Shopify / Etsy

Independent commerce exports. Structured data export only. No universal Zapier-style mappings in v1.


<a id="chapter-10--public-surface-trips--al-andalus-experience"></a>

H2Chapter 10 — Public Surface: Trips / Al-Andalus Experience

Further reading: trips/20260420_trips-guidebook-plan.md, trips/20260220_trips-sessions-MLV.md

H3Direct links
H3Reference links
H3Identity

Externally: Al-Andalus Experience (trips, city experiences, shared departures, local sessions, travel planning, partner network). Internally: powered by the broader Molino platform (backstage).

H3Five Missions of the Trips Area
  • Attract — route user intent (custom trip / shared trip / city browse / partner connect)
  • Compose — assemble routes and city experiences into real trip products
  • Sell — estimates, offers, booking paths, shared-trip participation
  • Operate — scheduled sessions, attendance, trip days, rooming, confirmations
  • Project — trip schedules, offer documents, PDFs, email/calendar packages
H3Trips Landing Page Sections (Canonical)
1.  trip_hero                   → CTAs: Plan Your Trip / Join Featured Trips / For Partners
2.  trip_pathways               → Route users by intent
3.  trip_how_it_works           → Explain city-rhythm/shared-session model
4.  trip_featured_group_trips   → Real joinable inventory
5.  trip_featured_cities        → Cities as hubs (Córdoba, Granada, ...)
6.  trip_featured_experiences   → Reusable commercial units
7.  trip_plan_your_trip         → Custom trip planner CTA
8.  trip_for_partners           → Supply-side and network entrypoint
9.  trip_updates                → News/updates
10. trip_final_cta              → Conversion close
H3Trips Landing Rendering Nuance
  • app/trips/page.tsx is the fetch/orchestration layer. It reads the landing sections and the trip lists once, then passes the resolved arrays into TripsSectionRenderer.
  • TripFeaturedTripsSection is the composition point for the landing page trip block. It can render the core landing content first and then append the database-backed trips below it.
  • For this route, the lower trip list should stay a render-time continuation, not a section-content array that editors need to maintain manually.
  • Keep the landing-page editing and persistence flow unchanged. This pattern only affects how the featured trips section projects fetched trip data into the public trips landing page.
H3Trip Detail / Builder Surface
  • app/trips/[tripId]/page.tsx now owns the main trip detail experience and renders the trip builder surface inside the page body through TripDetailClient.
  • Inside TripDetailClient, the Trip configuration section is treated as an on-demand editor surface. It stays collapsed unless edit mode is active, so the public trip detail layout remains clean.
  • app/trips/new/page.tsx and app/trips/[tripId]/edit/page.tsx both use TripPlannerShell, which keeps the create/edit builder experience consistent.
  • The intent is to avoid the old bespoke /trips/new layout drift and keep the route-specific builder UI aligned with the shared trips body pattern.
H3Trips Landing Folder Structure
app/
  └── trips/
      ├── page.tsx
      ├── actions/
      │   └── tripsLanding.actions.ts
      ├── components/
      │   ├── TripsLandingSurface.tsx
      │   ├── TripsSectionRenderer.tsx
      │   └── sections/
      │       ├── TripHeroSection.tsx
      │       ├── TripPathwaysSection.tsx
      │       ├── TripHowItWorksSection.tsx
      │       ├── TripFeaturedGroupTripsSection.tsx
      │       ├── TripFeaturedCitiesSection.tsx
      │       ├── TripFeaturedExperiencesSection.tsx
      │       ├── TripPlanYourTripSection.tsx
      │       ├── TripForPartnersSection.tsx
      │       ├── TripUpdatesSection.tsx
      │       └── TripFinalCTASection.tsx
      ├── hooks/
      └── types/
          ├── tripsLanding.types.ts
          └── tripsLanding.registry.tsx
H3Timeline Normalisation (Internal Truth)
  • 4 calendar days
  • 3–4 nights, arrival/departure dependent
  • Day 0 — arrival & warm-up (non-mandatory)
  • Days 1–3 — guided core (Day 1 Córdoba, Day 2 Medina Azahara + road, Day 3 Granada)
H3Public Language Guideline

Avoid fixed nights. Use: "4-day guided cultural sequence with flexible arrival & departure"

H3Channel Manager Mapping
  • Sessions = sellable experiences (standard rate → public participants)
  • Trips = bundled event products (bundled rate → trip participants)
  • Same session, different rate tiers

<a id="chapter-11--current-implementation-status--next-steps"></a>

H2Chapter 11 — Current Implementation Status & Next Steps

Further reading: roadmap/16DecTuesdayWeekGoals.md, document/GOALS-AHEAD.md, trips/20260420_trips-guidebook-plan.md

H3Direct links
H3Reference links
H3Confirmed Working (Stable)
  • Document pagination (stable enough for continued work)
  • AI document generation (stable enough for product work)
  • Trip section generation inside virtual documents ✅
  • Dynamic trip cost estimation → line items ✅
  • PDF export ✅
  • Trip planner route (in construction, working core) ✅
  • Document Editor (page-fit / width-fit behavior) ✅
H3Phase 1 — Active Goals (April 2026)

1. Trip → DB Entity (commitTripFromDocument)

// Prisma: Trip model with draftId @unique
// Action: commitTripFromDocument({ documentId, tripDraft })
// Integration: Documents2Canvas.handleTripSectionChange
// Status: Pattern proven, active implementation

2. Trip → Offer → Order Sequence

// createOfferFromTrip → copyTripLineItemsToOffer → createOfferFromTripFlow
// Offer model: { tripId, documentId, status, currency, lineItems }
// Status: Actions defined, wire-up in progress

3. Trip Planner Standalone Route

// app/trips/new/ → TripPlannerShell
// createTripFromPlanner + updateTripFromPlanner
// TripDays projection from stops
// Status: In construction
H3Remaining Document Polish
  • Section ordering edge cases
  • Occasional overflow splitting awkwardness
  • Page-fit layout polish
  • Hidden/default section behavior cleanup
H3Roadmap (Directional)
  1. Stabilize trip entity persistence + planner route
  2. Offer builder bridge from canonical trip line items
  3. Booking / payment continuation using canonical pricing
  4. Hotel mode improvement (included / excluded / estimate_only)
  5. TripCityExperience integration into engine input
  6. Apps Script output automation (Docs, PDF, Calendar)
  7. FareHarbor API integration
  8. Public trips landing (Al-Andalus Experience surface)
  9. Exports and asset-family outputs
  10. Sponsor system + channel overlays
H3What NOT to do now
  • ❌ Do not merge ProjectSection and Section
  • ❌ Do not rebuild the builder from scratch
  • ❌ Do not over-permission Spaces
  • ❌ Do not add AI to core pricing logic
  • ❌ Do not add universal Zapier-style mappings

H2Appendix: Entity Generator (Apps Script)

Further reading: seeds/entity-generator-new_akill.md

For rapidly generating Next.js 14 + Prisma modules from a Google Sheet:

Setup: Extensions → Apps Script → paste seeds/entity-generator-new_akill.md code → setup() → fill Entities sheet → generate().

Output per entity:

app/(pages)/<entity>/
  page.tsx          (Server Component)
  layout.tsx        (Client Component + Context Provider)
  actions/<entity>.actions.ts
  lib/<entity>.validation.ts
  context/<entity>Context.tsx
  components/<Entity>List.tsx
  components/<entity>Form.tsx
api/<entity>/route.ts

This generates correctly typed code following App Router conventions with server actions, context, validation (zod), and CRUD API.


H1HOW THIS SECTION WORKS

Master compiled from 27 source files spanning Dec 21, 2025 → Apr 21, 2026. Latest canonical versions used where specs evolved. Superseded patterns marked accordingly. This file does not replace individual skill files — it links and coordinates them.

This master document compiles, reconciles, and supersedes all prior skill notes. When working in any Molino session:

  1. Read this file first — it is the canonical reference.
  2. Use the chapter links below to navigate to the relevant module.
  3. Linked .md skill files per chapter contain deeper implementation details.
H1File Inventory (by creation date)
H2Folder map
  • dev-docs/
    • appscript/
    • archive/
    • document/
    • framework/
      • seeds/
    • integrations/
    • recap/
    • trips/
      • archive/
      • next-steps/
H3Markdown inventory
FileDateStatusRole
dev-docs.mdApr 22, 2026✅ IndexInventory and navigation hub
framework/seeds/entity-generator-new_akill.mdDec 21, 2025✅ ReferenceApps Script entity generator (Next14+Prisma)
framework/seeds/entity.generator-sample_akill.mdDec 21, 2025✅ ReferenceSample output of generator
framework/seeds/spaces_akill.mdDec 21, 2025✅ SupersededSpaces as Project clones — pattern still valid
framework/seeds/trip-plan-module_akill.mdDec 21, 2025✅ SupersededEarly trip module — evolved into full planner
document/generateTripFromDocument_akill.mdDec 21, 2025✅ FoundationcommitTripFromDocument pattern — still active
integrations/places-integration_akill.mdDec 21, 2025✅ ReferenceGoogle Places API → Next.js integration
integrations/tally-integration-startert_akill.mdDec 21, 2025✅ ReferenceTally forms as input adapter
integrations/tally-forms-integrations-2part_akill.mdDec 21, 2025✅ ReferenceFull Tally pipeline
document/mlv-document-one_akill.mdDec 23, 2025Core SpecMLV Document-Centric Workflow Engine — v1 spec
trips/archive/20260220_trips-sessions-MLV.mdFeb 21, 2026Core SpecTrips & Sessions canonical model — LOCKED
framework/20260320_molino_mlv_mvp_brief.mdMar 20, 2026Core SpecMolino MLV+MVP brief — latest product brief
framework/20260416_molino-guidebook.mdApr 16, 2026Master GuideMolino Index Master Guidebook — terminology + rules
framework/20260418_FastProductionSAP_MLV.mdApr 18, 2026Core SpecFast Projection Architecture — locked system model
trips/archive/20260419_trip.specs-plan.mdApr 19, 2026ActiveTrip specs — current state
framework/20260420_molino.architecture.mdApr 20, 2026CanonicalArchitecture rules — strict, non-negotiable
framework/seeds/seed.molino-app.skills.mdApr 20, 2026ActiveFull app seed — AI personas, projects, entities
trips/archive/20260420_next-steps-trip-planner.refactor-target.mdApr 20, 2026TargetTrip Planner inline refactor target
trips/archive/20260420_trip-planner.current-pattern.mdApr 20, 2026ActiveTrip Planner current pattern
trips/archive/20260420_trips-guidebook-plan.mdApr 20, 2026ActiveTrips area full module plan
trips/next-steps/20260420_trips-plan.mdApr 20, 2026ActiveTrip planner unified system spec
document/GOALS-AHEAD.mdApr 21, 2026CurrentDocument Engine v2 + Offer/Order spec
appscript/appscript.apis.mdApr 21, 2026ActiveApps Script canonical API contract
appscript/appscript-office-server-firstLoop.mdApr 21, 2026ActiveApps Script office server first loop
archive/16DecTuesdayWeekGoals.mdApr 21, 2026CurrentPhase 1 goals — Trips + Offer + Order
recap/20260421_trips-next-step-recap.mdApr 21, 2026✅ RecapTrips next-step recap
recap/20260421_trips-spec-next-steps-audit.mdApr 21, 2026✅ RecapTrips spec audit
trips/20260421_trips-plan-guide.mdApr 21, 2026ActiveTrips plan guide
trips/archive/20260421_trip-execution-plan-bundle.mdApr 21, 2026ActiveTrip execution bundle
trips/archive/20260421_trips-next-steps.locked.mdApr 21, 2026✅ LockedArchived next-steps lockfile
trips/next-steps/20260421_trips-next-steps.locked.mdApr 21, 2026✅ LockedCurrent next-steps lockfile
appscript/archive/SKILL_projection-appscript.mdn/a✅ ReferenceApps Script projection skill
appscript/appscript-office-server-firstLoop.mdn/a✅ ReferenceEarly Apps Script loop notes
document/SKILL_document-engine.mdn/a✅ ReferenceDocument engine skill
document/auto-generate-oferta-trip.mdn/a✅ FoundationTrip → document → offer auto-generation
H3Supporting text artifacts
FileDateStatusRole
framework/seeds/seed_.txtDec 21, 2025✅ ReferenceLegacy seed input
framework/seeds/reseedEntities.txtDec 22, 2025✅ ReferenceEntity reseed script