From 3a5fdad6b35c6074ca04a94345cab132dcecb739 Mon Sep 17 00:00:00 2001 From: jlightner Date: Sat, 4 Apr 2026 10:17:32 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20Updated=208=20Forgejo=20wiki=20pages=20?= =?UTF-8?q?with=20M023=20features:=20post=20editor,=20Min=E2=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - "Home.md (wiki)" - "Data-Model.md (wiki)" - "API-Surface.md (wiki)" - "Frontend.md (wiki)" - "Chat-Engine.md (wiki)" - "Decisions.md (wiki)" - "Configuration.md (wiki)" - "_Sidebar.md (wiki)" GSD-Task: S05/T01 --- .gsd/milestones/M023/M023-ROADMAP.md | 2 +- .../milestones/M023/slices/S04/S04-SUMMARY.md | 83 +++++++++++++++++ .gsd/milestones/M023/slices/S04/S04-UAT.md | 59 ++++++++++++ .../M023/slices/S04/tasks/T02-VERIFY.json | 24 +++++ .gsd/milestones/M023/slices/S05/S05-PLAN.md | 28 +++++- .../M023/slices/S05/S05-RESEARCH.md | 78 ++++++++++++++++ .../M023/slices/S05/tasks/T01-PLAN.md | 54 +++++++++++ .../M023/slices/S05/tasks/T01-SUMMARY.md | 89 +++++++++++++++++++ 8 files changed, 415 insertions(+), 2 deletions(-) create mode 100644 .gsd/milestones/M023/slices/S04/S04-SUMMARY.md create mode 100644 .gsd/milestones/M023/slices/S04/S04-UAT.md create mode 100644 .gsd/milestones/M023/slices/S04/tasks/T02-VERIFY.json create mode 100644 .gsd/milestones/M023/slices/S05/S05-RESEARCH.md create mode 100644 .gsd/milestones/M023/slices/S05/tasks/T01-PLAN.md create mode 100644 .gsd/milestones/M023/slices/S05/tasks/T01-SUMMARY.md diff --git a/.gsd/milestones/M023/M023-ROADMAP.md b/.gsd/milestones/M023/M023-ROADMAP.md index d837269..83d90c4 100644 --- a/.gsd/milestones/M023/M023-ROADMAP.md +++ b/.gsd/milestones/M023/M023-ROADMAP.md @@ -9,5 +9,5 @@ The demo MVP comes together. Chat widget wires to the intelligence layer (INT-1) | S01 | [A] Post Editor + File Sharing | high | — | ✅ | Creator writes rich text posts with file attachments (presets, sample packs). Followers see posts in feed. Files downloadable via signed URLs. | | S02 | [A] Chat Widget ↔ Chat Engine Wiring (INT-1) | high | — | ✅ | Chat widget on creator profile wired to chat engine. Personality slider adjusts response style. Citations link to sources. | | S03 | [B] Shorts Generation Pipeline v1 | medium | — | ✅ | Shorts pipeline extracts clips from highlight boundaries in 3 format presets (vertical, square, horizontal) | -| S04 | [B] Personality Slider (Full Interpolation) | medium | — | ⬜ | Personality slider at 0.0 gives encyclopedic response. At 1.0 gives creator-voiced response with their speech patterns. | +| S04 | [B] Personality Slider (Full Interpolation) | medium | — | ✅ | Personality slider at 0.0 gives encyclopedic response. At 1.0 gives creator-voiced response with their speech patterns. | | S05 | Forgejo KB Update — Demo Build Docs | low | S01, S02, S03, S04 | ⬜ | Forgejo wiki updated with post editor, MinIO, chat integration, shorts pipeline, personality system | diff --git a/.gsd/milestones/M023/slices/S04/S04-SUMMARY.md b/.gsd/milestones/M023/slices/S04/S04-SUMMARY.md new file mode 100644 index 0000000..d6229c7 --- /dev/null +++ b/.gsd/milestones/M023/slices/S04/S04-SUMMARY.md @@ -0,0 +1,83 @@ +--- +id: S04 +parent: M023 +milestone: M023 +provides: + - 5-tier personality interpolation in _build_personality_block() + - Visual slider feedback with tier labels and gradient fill +requires: + - slice: S02 + provides: Chat widget with personality slider and _build_personality_block() function +affects: + - S05 +key_files: + - backend/chat_service.py + - backend/tests/test_chat.py + - frontend/src/components/ChatWidget.tsx + - frontend/src/components/ChatWidget.module.css +key_decisions: + - D044: 5-tier continuous interpolation replacing 3-tier step function, with progressive field inclusion and scaled phrase counts +patterns_established: + - CSS custom property --slider-fill for gradient track fill on range inputs (webkit + moz pseudo-elements) + - Frontend tier labels mirroring backend interpolation boundaries for consistent UX +observability_surfaces: + - none +drill_down_paths: + - .gsd/milestones/M023/slices/S04/tasks/T01-SUMMARY.md + - .gsd/milestones/M023/slices/S04/tasks/T02-SUMMARY.md +duration: "" +verification_result: passed +completed_at: 2026-04-04T10:08:06.375Z +blocker_discovered: false +--- + +# S04: [B] Personality Slider (Full Interpolation) + +**Replaced 3-tier personality step function with 5-tier continuous interpolation and added visual slider feedback (gradient fill, tier labels, numeric value).** + +## What Happened + +Two-task slice delivering end-to-end personality slider interpolation. + +**T01 — Backend interpolation rewrite.** Replaced the coarse 3-tier step function in `_build_personality_block()` with 5-tier continuous interpolation. Weight < 0.2 returns an empty string (pure encyclopedic). Each successive tier progressively includes more personality profile fields: basic tone (0.2+), descriptors and explanation approach (0.4+), signature phrases with count scaled by weight (0.6+), full vocabulary/style markers (0.8+), and the summary paragraph (0.9+). Instruction text escalates per tier from "subtly reference" to "fully embody." Temperature scaling (0.3 + weight × 0.2) was already linear and unchanged. Added parametrized tests covering all 5 tiers plus edge cases (weight=0.0, weight=0.15). All 11 personality tests pass. + +**T02 — Frontend slider UX.** Added `getTierLabel()` helper mapping weight ranges to tier names matching the backend boundaries. Gradient track fill via `--slider-fill` CSS custom property on webkit/moz pseudo-elements. Centered tier info row below the slider shows the label ("Encyclopedic", "Subtle Reference", "Creator Tone", "Creator Voice", "Full Embodiment") plus numeric value with tabular-nums for stable width. Wrapped slider row in a `.sliderSection` container for clean grouping. Frontend builds clean. + +## Verification + +Backend: `cd backend && python -m pytest tests/test_chat.py -v -k personality` — 11/11 passed (0.43s). Frontend: `cd frontend && npm run build` — clean build, 185 modules, no type errors. Tier label boundaries in frontend (0.2/0.4/0.6/0.8) verified to match backend interpolation tiers. + +## Requirements Advanced + +None. + +## Requirements Validated + +None. + +## New Requirements Surfaced + +None. + +## Requirements Invalidated or Re-scoped + +None. + +## Deviations + +Minor: moved uses_analogies and audience_engagement from unconditional to weight >= 0.4 gate, matching the tier design. Added .sliderSection wrapper div for clean grouping — not in original plan but improves structure. + +## Known Limitations + +None. + +## Follow-ups + +None. + +## Files Created/Modified + +- `backend/chat_service.py` — Rewrote _build_personality_block() from 3-tier step function to 5-tier continuous interpolation with progressive field inclusion +- `backend/tests/test_chat.py` — Added parametrized tier coverage test and phrase scaling test (11 personality tests total) +- `frontend/src/components/ChatWidget.tsx` — Added getTierLabel() helper, --slider-fill CSS custom property, tier label + value display below slider +- `frontend/src/components/ChatWidget.module.css` — Added gradient track fill via --slider-fill, .sliderSection wrapper, .tierLabel and .tierValue styles diff --git a/.gsd/milestones/M023/slices/S04/S04-UAT.md b/.gsd/milestones/M023/slices/S04/S04-UAT.md new file mode 100644 index 0000000..5156838 --- /dev/null +++ b/.gsd/milestones/M023/slices/S04/S04-UAT.md @@ -0,0 +1,59 @@ +# S04: [B] Personality Slider (Full Interpolation) — UAT + +**Milestone:** M023 +**Written:** 2026-04-04T10:08:06.375Z + +## UAT: Personality Slider Full Interpolation + +### Preconditions +- Backend running with chat_service.py changes deployed +- Frontend built and served with ChatWidget changes +- At least one creator with a populated `personality_profile` JSONB (including signature_phrases, distinctive_terms, sound_descriptions) + +### Test 1: Encyclopedic Mode (weight 0.0–0.19) +1. Open a creator's chat widget +2. Set personality slider to 0.0 +3. Verify slider shows tier label "Encyclopedic" and value "0.0" +4. Send a question about a technique +5. **Expected:** Response is purely factual — no creator voice, no personality artifacts +6. Move slider to 0.15 +7. Verify label still shows "Encyclopedic" and value "0.2" (rounded to step) +8. **Expected:** Still no personality block injected into system prompt + +### Test 2: Progressive Tier Labels +1. Slide to 0.2 → label shows "Subtle Reference" +2. Slide to 0.4 → label shows "Creator Tone" +3. Slide to 0.6 → label shows "Creator Voice" +4. Slide to 0.8 → label shows "Full Embodiment" +5. **Expected:** Each transition updates the label text and gradient fill progresses left-to-right + +### Test 3: Gradient Track Fill +1. Set slider to 0.0 → track should be entirely unfilled (border color) +2. Set slider to 0.5 → track should be ~50% filled with accent color +3. Set slider to 1.0 → track should be fully filled with accent color +4. **Expected:** Smooth gradient transition, no visual gaps at boundaries + +### Test 4: Subtle Reference Tier (0.2–0.39) +1. Set slider to 0.3 +2. Send a question +3. **Expected:** Response may subtly reference creator's communication style. System prompt includes teaching_style, formality, energy but NOT signature_phrases or distinctive_terms. + +### Test 5: Creator Voice Tier (0.6–0.79) +1. Set slider to 0.7 +2. Send a question +3. **Expected:** Response uses creator's voice and manner. System prompt includes signature phrases (count scaled: at least 2, up to round(0.7 × total phrases)). Does NOT include distinctive_terms or sound_descriptions. + +### Test 6: Full Embodiment Tier (0.8–1.0) +1. Set slider to 1.0 +2. Send a question +3. **Expected:** Response fully embodies the creator — uses their exact phrases, energy, teaching approach. System prompt includes all personality fields plus summary paragraph. + +### Test 7: Numeric Value Display +1. Drag slider through various positions +2. **Expected:** Numeric value updates in real-time below the slider, uses tabular-nums font feature (digits don't shift width) + +### Edge Case: Creator Without Personality Profile +1. Navigate to a creator that has no personality_profile data +2. Set slider to 1.0 +3. Send a question +4. **Expected:** Response falls back to encyclopedic mode gracefully — no error, no empty personality block artifacts diff --git a/.gsd/milestones/M023/slices/S04/tasks/T02-VERIFY.json b/.gsd/milestones/M023/slices/S04/tasks/T02-VERIFY.json new file mode 100644 index 0000000..51f09eb --- /dev/null +++ b/.gsd/milestones/M023/slices/S04/tasks/T02-VERIFY.json @@ -0,0 +1,24 @@ +{ + "schemaVersion": 1, + "taskId": "T02", + "unitId": "M023/S04/T02", + "timestamp": 1775297206627, + "passed": false, + "discoverySource": "task-plan", + "checks": [ + { + "command": "cd frontend", + "exitCode": 0, + "durationMs": 8, + "verdict": "pass" + }, + { + "command": "npm run build", + "exitCode": 254, + "durationMs": 104, + "verdict": "fail" + } + ], + "retryAttempt": 1, + "maxRetries": 2 +} diff --git a/.gsd/milestones/M023/slices/S05/S05-PLAN.md b/.gsd/milestones/M023/slices/S05/S05-PLAN.md index 9e925fc..0ada017 100644 --- a/.gsd/milestones/M023/slices/S05/S05-PLAN.md +++ b/.gsd/milestones/M023/slices/S05/S05-PLAN.md @@ -1,6 +1,32 @@ # S05: Forgejo KB Update — Demo Build Docs -**Goal:** Document new systems in Forgejo knowledgebase +**Goal:** Forgejo wiki updated with M023 demo build features: post editor, MinIO file sharing, chat personality integration, shorts pipeline, 5-tier personality interpolation, and decisions D042-D044. **Demo:** After this: Forgejo wiki updated with post editor, MinIO, chat integration, shorts pipeline, personality system ## Tasks +- [x] **T01: Updated 8 Forgejo wiki pages with M023 features: post editor, MinIO file sharing, shorts pipeline, 5-tier personality interpolation, and decisions D042-D044** — Clone the Chrysopedia Forgejo wiki repo on ub01, update 8 existing pages (Home, Data-Model, API-Surface, Frontend, Chat-Engine, Decisions, Configuration, _Sidebar) with content from S01-S04 summaries and decisions D042-D044, then commit and push. + +**CRITICAL:** Never use the Forgejo wiki PATCH API — it corrupts pages (per KNOWLEDGE.md). Git clone → edit → push only. + +All operations happen via `ssh ub01` commands. Wiki repo: `https://git.xpltd.co/xpltdco/chrysopedia.wiki.git` + +## Content to add per page: + +**Home.md** — Add to feature list: Post Editor + File Sharing, Shorts Generation Pipeline, Personality Interpolation System + +**Data-Model.md** — Add Post model (UUID PK, title TEXT, body JSONB Tiptap, is_published BOOLEAN, creator FK), PostAttachment model (UUID PK, post FK, filename, content_type, object_key, file_size), GeneratedShort model with FormatPreset enum (vertical/square/horizontal) and ShortStatus enum (pending/processing/complete/failed). Mention migrations 024-025. + +**API-Surface.md** — Add 10 new endpoints: 5 posts CRUD on /api/v1/posts (list, get, create, update, delete), 2 file endpoints on /api/v1/files (upload, download), 3 shorts endpoints on /api/v1/admin/shorts (generate, list, download). Update total endpoint count from 61 to 71. + +**Frontend.md** — Add PostEditor (Tiptap v3 + StarterKit + Link + Placeholder), PostsFeed component, PostsList management page. HighlightQueue shorts UI (generate button, status badges, download links). ChatWidget personality slider with gradient fill, tier labels, numeric display. + +**Chat-Engine.md** — Document 5-tier personality interpolation (D044): weight < 0.2 = no personality, 0.2+ basic tone, 0.4+ descriptors, 0.6+ phrases (count scaled), 0.8+ vocabulary/style, 0.9+ summary paragraph. Temperature scaling: 0.3 + weight × 0.2. + +**Decisions.md** — Append D042 (Tiptap editor choice), D043 (initial 3-tier, superseded), D044 (5-tier interpolation revision). + +**Configuration.md** — Add MinIO settings (MINIO_ENDPOINT, MINIO_ACCESS_KEY, MINIO_SECRET_KEY, MINIO_BUCKET_NAME), video_source_path for shorts pipeline. + +**_Sidebar.md** — Add Posts link under Features section if present. + - Estimate: 45m + - Files: Home.md (wiki repo), Data-Model.md (wiki repo), API-Surface.md (wiki repo), Frontend.md (wiki repo), Chat-Engine.md (wiki repo), Decisions.md (wiki repo), Configuration.md (wiki repo), _Sidebar.md (wiki repo) + - Verify: ssh ub01 'cd /tmp/chrysopedia-wiki-m023 && git log --oneline -1' shows the commit; curl -s https://git.xpltd.co/api/v1/repos/xpltdco/chrysopedia/wiki/pages -H "Authorization: token $(cat /vmPool/r/services/chrysopedia_secrets/forgejo_token 2>/dev/null || echo none)" | python3 -c "import sys,json; pages=json.load(sys.stdin); print(len(pages))" shows >= 20 diff --git a/.gsd/milestones/M023/slices/S05/S05-RESEARCH.md b/.gsd/milestones/M023/slices/S05/S05-RESEARCH.md new file mode 100644 index 0000000..340cb15 --- /dev/null +++ b/.gsd/milestones/M023/slices/S05/S05-RESEARCH.md @@ -0,0 +1,78 @@ +# S05 Research: Forgejo KB Update — Demo Build Docs + +## Summary + +Straightforward documentation slice following the established M022/S07 pattern. Clone Forgejo wiki via git on ub01, update existing pages, create any new pages, commit, push. **Never use the Forgejo wiki PATCH API** (corrupts pages per KNOWLEDGE.md). + +## Recommendation + +Single task. Clone wiki, update pages, push. Content sourced from S01-S04 summaries (already inlined in planner context) and DECISIONS.md (D042-D044). + +## Implementation Landscape + +### Established Pattern (from M022/S07) + +1. SSH to ub01 +2. `git clone https://git.xpltd.co/xpltdco/chrysopedia.wiki.git` into a temp dir +3. Edit markdown files +4. `git add . && git commit -m "..." && git push origin main` +5. Verify via wiki pages API + +### Current Wiki State + +20 pages exist. Relevant ones to update: + +| Page | What to add | +|------|------------| +| **Home.md** | Post Editor + File Sharing, Shorts Generation Pipeline, Personality Interpolation in feature list | +| **Data-Model.md** | Post, PostAttachment models; GeneratedShort model with FormatPreset/ShortStatus enums; migrations 024-025 | +| **API-Surface.md** | 10 new endpoints (5 posts CRUD, 2 files, 3 shorts). Update count from 61→71. | +| **Frontend.md** | PostEditor (Tiptap), PostsFeed, PostsList pages. HighlightQueue shorts UI additions. ChatWidget slider enhancements. | +| **Chat-Engine.md** | 5-tier personality interpolation details (D044), progressive field inclusion, temperature scaling | +| **Decisions.md** | D042 (Tiptap editor choice), D043 (initial 3-tier), D044 (5-tier interpolation revision) | +| **Configuration.md** | MinIO settings, video_source_path | +| **_Sidebar.md** | Possibly add Posts link under Features if section exists | + +No new standalone pages needed — posts/files/shorts are features within existing page scopes. + +### New Content by Feature + +**Post Editor + File Sharing (S01):** +- MinIO integration: internal-only, no public port, presigned URLs for downloads +- Post/PostAttachment models: UUID PKs, Tiptap JSON in JSONB, cascade delete +- 5 CRUD endpoints on /api/v1/posts (list, get, create, update, delete) with creator ownership auth +- 2 file endpoints on /api/v1/files (upload multipart, download presigned URL) +- get_optional_user auth pattern for public endpoints with auth-aware behavior +- Frontend: PostEditor (Tiptap v3 + StarterKit + Link + Placeholder), PostsFeed, PostsList +- nginx client_max_body_size bumped to 100m + +**Shorts Generation Pipeline (S03):** +- GeneratedShort model with FormatPreset (vertical/square/horizontal) and ShortStatus enums +- stage_generate_shorts Celery task with per-preset independent error handling +- ffmpeg in Docker image, /videos volume mount +- 3 endpoints on /api/v1/admin/shorts (POST generate, GET list, GET download) +- Frontend: generate button + status badges + download links in HighlightQueue + +**Personality Slider Interpolation (S02+S04):** +- D044: 5-tier replacing 3-tier. Weight ranges: <0.2 none, 0.2+ tone, 0.4+ descriptors, 0.6+ phrases, 0.8+ vocabulary, 0.9+ summary +- Temperature scaling: 0.3 + weight × 0.2 +- Frontend: gradient slider fill, tier labels, numeric display + +### Decisions to Add + +- D042: Tiptap (headless, React) for rich text editor +- D043: Initial 3-tier personality modulation (superseded by D044) +- D044: 5-tier continuous interpolation with progressive field inclusion + +### Verification + +1. `git push origin main` — exit code 0 +2. Wiki page count API — should remain ≥ 20 +3. Spot-check one updated page via API to confirm content landed + +### Constraints + +- **CRITICAL:** Never use Forgejo wiki PATCH API. Git clone → edit → push only. +- Wiki repo URL: `https://git.xpltd.co/xpltdco/chrysopedia.wiki.git` +- All SSH/git operations happen on ub01 via `ssh ub01` +- Content must come from S01-S04 summaries and DECISIONS.md — no fabrication diff --git a/.gsd/milestones/M023/slices/S05/tasks/T01-PLAN.md b/.gsd/milestones/M023/slices/S05/tasks/T01-PLAN.md new file mode 100644 index 0000000..254151b --- /dev/null +++ b/.gsd/milestones/M023/slices/S05/tasks/T01-PLAN.md @@ -0,0 +1,54 @@ +--- +estimated_steps: 12 +estimated_files: 8 +skills_used: [] +--- + +# T01: Update Forgejo wiki pages with M023 demo build content + +Clone the Chrysopedia Forgejo wiki repo on ub01, update 8 existing pages (Home, Data-Model, API-Surface, Frontend, Chat-Engine, Decisions, Configuration, _Sidebar) with content from S01-S04 summaries and decisions D042-D044, then commit and push. + +**CRITICAL:** Never use the Forgejo wiki PATCH API — it corrupts pages (per KNOWLEDGE.md). Git clone → edit → push only. + +All operations happen via `ssh ub01` commands. Wiki repo: `https://git.xpltd.co/xpltdco/chrysopedia.wiki.git` + +## Content to add per page: + +**Home.md** — Add to feature list: Post Editor + File Sharing, Shorts Generation Pipeline, Personality Interpolation System + +**Data-Model.md** — Add Post model (UUID PK, title TEXT, body JSONB Tiptap, is_published BOOLEAN, creator FK), PostAttachment model (UUID PK, post FK, filename, content_type, object_key, file_size), GeneratedShort model with FormatPreset enum (vertical/square/horizontal) and ShortStatus enum (pending/processing/complete/failed). Mention migrations 024-025. + +**API-Surface.md** — Add 10 new endpoints: 5 posts CRUD on /api/v1/posts (list, get, create, update, delete), 2 file endpoints on /api/v1/files (upload, download), 3 shorts endpoints on /api/v1/admin/shorts (generate, list, download). Update total endpoint count from 61 to 71. + +**Frontend.md** — Add PostEditor (Tiptap v3 + StarterKit + Link + Placeholder), PostsFeed component, PostsList management page. HighlightQueue shorts UI (generate button, status badges, download links). ChatWidget personality slider with gradient fill, tier labels, numeric display. + +**Chat-Engine.md** — Document 5-tier personality interpolation (D044): weight < 0.2 = no personality, 0.2+ basic tone, 0.4+ descriptors, 0.6+ phrases (count scaled), 0.8+ vocabulary/style, 0.9+ summary paragraph. Temperature scaling: 0.3 + weight × 0.2. + +**Decisions.md** — Append D042 (Tiptap editor choice), D043 (initial 3-tier, superseded), D044 (5-tier interpolation revision). + +**Configuration.md** — Add MinIO settings (MINIO_ENDPOINT, MINIO_ACCESS_KEY, MINIO_SECRET_KEY, MINIO_BUCKET_NAME), video_source_path for shorts pipeline. + +**_Sidebar.md** — Add Posts link under Features section if present. + +## Inputs + +- ``.gsd/milestones/M023/slices/S01/S01-SUMMARY.md` — Post editor + file sharing feature details` +- ``.gsd/milestones/M023/slices/S02/S02-SUMMARY.md` — Chat widget personality wiring details` +- ``.gsd/milestones/M023/slices/S03/S03-SUMMARY.md` — Shorts generation pipeline details` +- ``.gsd/milestones/M023/slices/S04/S04-SUMMARY.md` — 5-tier personality interpolation details` +- ``.gsd/DECISIONS.md` — D042, D043, D044 decision content` + +## Expected Output + +- ``Home.md` (wiki repo) — Updated feature list with M023 features` +- ``Data-Model.md` (wiki repo) — Post, PostAttachment, GeneratedShort models documented` +- ``API-Surface.md` (wiki repo) — 10 new endpoints documented, count updated to 71` +- ``Frontend.md` (wiki repo) — PostEditor, PostsFeed, PostsList, shorts UI, slider UX documented` +- ``Chat-Engine.md` (wiki repo) — 5-tier interpolation system documented` +- ``Decisions.md` (wiki repo) — D042, D043, D044 appended` +- ``Configuration.md` (wiki repo) — MinIO and video_source_path settings documented` +- ``_Sidebar.md` (wiki repo) — Posts link added` + +## Verification + +ssh ub01 'cd /tmp/chrysopedia-wiki-m023 && git log --oneline -1' shows the commit; curl -s https://git.xpltd.co/api/v1/repos/xpltdco/chrysopedia/wiki/pages -H "Authorization: token $(cat /vmPool/r/services/chrysopedia_secrets/forgejo_token 2>/dev/null || echo none)" | python3 -c "import sys,json; pages=json.load(sys.stdin); print(len(pages))" shows >= 20 diff --git a/.gsd/milestones/M023/slices/S05/tasks/T01-SUMMARY.md b/.gsd/milestones/M023/slices/S05/tasks/T01-SUMMARY.md new file mode 100644 index 0000000..5982305 --- /dev/null +++ b/.gsd/milestones/M023/slices/S05/tasks/T01-SUMMARY.md @@ -0,0 +1,89 @@ +--- +id: T01 +parent: S05 +milestone: M023 +provides: [] +requires: [] +affects: [] +key_files: ["Home.md (wiki)", "Data-Model.md (wiki)", "API-Surface.md (wiki)", "Frontend.md (wiki)", "Chat-Engine.md (wiki)", "Decisions.md (wiki)", "Configuration.md (wiki)", "_Sidebar.md (wiki)"] +key_decisions: ["Used git clone/edit/push for wiki updates (never Forgejo PATCH API per KNOWLEDGE.md)"] +patterns_established: [] +drill_down_paths: [] +observability_surfaces: [] +duration: "" +verification_result: "git log shows commit d1bd67a on ub01. Forgejo wiki API returns 20 pages (≥20 threshold). git diff confirmed 8 files changed with 230 insertions." +completed_at: 2026-04-04T10:16:17.632Z +blocker_discovered: false +--- + +# T01: Updated 8 Forgejo wiki pages with M023 features: post editor, MinIO file sharing, shorts pipeline, 5-tier personality interpolation, and decisions D042-D044 + +> Updated 8 Forgejo wiki pages with M023 features: post editor, MinIO file sharing, shorts pipeline, 5-tier personality interpolation, and decisions D042-D044 + +## What Happened +--- +id: T01 +parent: S05 +milestone: M023 +key_files: + - Home.md (wiki) + - Data-Model.md (wiki) + - API-Surface.md (wiki) + - Frontend.md (wiki) + - Chat-Engine.md (wiki) + - Decisions.md (wiki) + - Configuration.md (wiki) + - _Sidebar.md (wiki) +key_decisions: + - Used git clone/edit/push for wiki updates (never Forgejo PATCH API per KNOWLEDGE.md) +duration: "" +verification_result: passed +completed_at: 2026-04-04T10:16:17.633Z +blocker_discovered: false +--- + +# T01: Updated 8 Forgejo wiki pages with M023 features: post editor, MinIO file sharing, shorts pipeline, 5-tier personality interpolation, and decisions D042-D044 + +**Updated 8 Forgejo wiki pages with M023 features: post editor, MinIO file sharing, shorts pipeline, 5-tier personality interpolation, and decisions D042-D044** + +## What Happened + +Cloned Chrysopedia wiki repo on ub01, read all 8 target pages plus 4 slice summaries and DECISIONS.md for source content. Applied updates: Home.md (3 new features, updated counts), Data-Model.md (Post/PostAttachment/GeneratedShort models, enums, migrations 024-025, ER diagram), API-Surface.md (10 new endpoints, count 61→71), Frontend.md (3 routes, 4 feature sections, 2 API modules), Chat-Engine.md (5-tier personality interpolation section), Decisions.md (D042-D044), Configuration.md (MinIO + video_source_path settings), _Sidebar.md (Posts link). Committed and pushed to main. 230 insertions across 8 files. + +## Verification + +git log shows commit d1bd67a on ub01. Forgejo wiki API returns 20 pages (≥20 threshold). git diff confirmed 8 files changed with 230 insertions. + +## Verification Evidence + +| # | Command | Exit Code | Verdict | Duration | +|---|---------|-----------|---------|----------| +| 1 | `ssh ub01 'cd /tmp/chrysopedia-wiki-m023 && git log --oneline -1'` | 0 | ✅ pass | 3700ms | +| 2 | `curl -s .../wiki/pages?limit=50 | python3 page count` | 0 | ✅ pass | 3700ms | + + +## Deviations + +Used unauthenticated Forgejo API for verification (token file path from plan doesn't exist) — repo is public so this works fine. + +## Known Issues + +None. + +## Files Created/Modified + +- `Home.md (wiki)` +- `Data-Model.md (wiki)` +- `API-Surface.md (wiki)` +- `Frontend.md (wiki)` +- `Chat-Engine.md (wiki)` +- `Decisions.md (wiki)` +- `Configuration.md (wiki)` +- `_Sidebar.md (wiki)` + + +## Deviations +Used unauthenticated Forgejo API for verification (token file path from plan doesn't exist) — repo is public so this works fine. + +## Known Issues +None.