49d384a0fb
backend/thesis_seed.py builds the starting "living messaging source of truth" from docs/thesis-seed-v5.md: a core line (throughline; the open Option A/B banner as a competing variant group; the three pillars; the proof; voice rules), one line per LP segment carrying that segment's angle, and the five segment definitions. ensure_thesis_seed(conn) runs from init_db, seeding ONLY when the Workshop is empty (no thesis lines) — idempotent and non-destructive, so it bootstraps once and never overwrites partner edits. Everything lands draft/candidate; nothing is made canonical (that stays the partners' dual-approval action, guardrail #4). Content is Ten31's own messaging, not LP data. Test: backend/test_thesis_seed.py runs init_db and asserts the core line, 5 segment lines, the 2-member Option A/B variant group, 3 pillars, segment_cuts, and segment defs, plus re-seed-is-a-no-op (11/11). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
22 lines
1.1 KiB
TypeScript
22 lines
1.1 KiB
TypeScript
import { VersionInfo } from '@start9labs/start-sdk'
|
|
|
|
// Seed the v5 thesis into the Architect's Thesis Workshop. On upgrade, if the
|
|
// Workshop is empty, it is populated once with the core line (throughline, the
|
|
// open Option A/B banner debate as competing variants, the three pillars, the
|
|
// proof, voice rules), one line per LP segment carrying that segment's angle, and
|
|
// the segment definitions. Everything lands as draft/candidate — nothing is made
|
|
// canonical (that stays the partners' dual-approval action). Idempotent: never
|
|
// overwrites partner edits. No schema migration.
|
|
export const v_0_1_0_53 = VersionInfo.of({
|
|
version: '0.1.0:53',
|
|
releaseNotes: {
|
|
en_US: [
|
|
'Seeds the v5 thesis into the Thesis Workshop so you and your partner can start',
|
|
'iterating immediately: the core line (throughline, the Option A/B banner as',
|
|
'competing options, three pillars, the proof) plus a line per LP segment with its',
|
|
'angle. Seeds once when the Workshop is empty and never overwrites your edits.',
|
|
].join(' '),
|
|
},
|
|
migrations: { up: async () => {}, down: async () => {} },
|
|
})
|