Seed the v5 thesis into the Architect Workshop (v0.1.0:53)

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>
This commit is contained in:
Keysat
2026-06-05 15:19:44 -05:00
parent 2afed210cb
commit 49d384a0fb
6 changed files with 314 additions and 4 deletions
+3 -2
View File
@@ -13,8 +13,9 @@ import { v_0_1_0_49 } from './v0.1.0.49'
import { v_0_1_0_50 } from './v0.1.0.50'
import { v_0_1_0_51 } from './v0.1.0.51'
import { v_0_1_0_52 } from './v0.1.0.52'
import { v_0_1_0_53 } from './v0.1.0.53'
export const versionGraph = VersionGraph.of({
current: v_0_1_0_52,
other: [v_0_1_0_39, v_0_1_0_40, v_0_1_0_41, v_0_1_0_42, v_0_1_0_43, v_0_1_0_44, v_0_1_0_45, v_0_1_0_46, v_0_1_0_47, v_0_1_0_48, v_0_1_0_49, v_0_1_0_50, v_0_1_0_51],
current: v_0_1_0_53,
other: [v_0_1_0_39, v_0_1_0_40, v_0_1_0_41, v_0_1_0_42, v_0_1_0_43, v_0_1_0_44, v_0_1_0_45, v_0_1_0_46, v_0_1_0_47, v_0_1_0_48, v_0_1_0_49, v_0_1_0_50, v_0_1_0_51, v_0_1_0_52],
})
+21
View File
@@ -0,0 +1,21 @@
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 () => {} },
})