feat: Updated 8 Forgejo wiki pages with M023 features: post editor, Min…
- "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
This commit is contained in:
parent
4db33399e9
commit
3a5fdad6b3
8 changed files with 415 additions and 2 deletions
|
|
@ -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. |
|
| 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. |
|
| 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) |
|
| 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 |
|
| 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 |
|
||||||
|
|
|
||||||
83
.gsd/milestones/M023/slices/S04/S04-SUMMARY.md
Normal file
83
.gsd/milestones/M023/slices/S04/S04-SUMMARY.md
Normal file
|
|
@ -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
|
||||||
59
.gsd/milestones/M023/slices/S04/S04-UAT.md
Normal file
59
.gsd/milestones/M023/slices/S04/S04-UAT.md
Normal file
|
|
@ -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
|
||||||
24
.gsd/milestones/M023/slices/S04/tasks/T02-VERIFY.json
Normal file
24
.gsd/milestones/M023/slices/S04/tasks/T02-VERIFY.json
Normal file
|
|
@ -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
|
||||||
|
}
|
||||||
|
|
@ -1,6 +1,32 @@
|
||||||
# S05: Forgejo KB Update — Demo Build Docs
|
# 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
|
**Demo:** After this: Forgejo wiki updated with post editor, MinIO, chat integration, shorts pipeline, personality system
|
||||||
|
|
||||||
## Tasks
|
## 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
|
||||||
|
|
|
||||||
78
.gsd/milestones/M023/slices/S05/S05-RESEARCH.md
Normal file
78
.gsd/milestones/M023/slices/S05/S05-RESEARCH.md
Normal file
|
|
@ -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
|
||||||
54
.gsd/milestones/M023/slices/S05/tasks/T01-PLAN.md
Normal file
54
.gsd/milestones/M023/slices/S05/tasks/T01-PLAN.md
Normal file
|
|
@ -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
|
||||||
89
.gsd/milestones/M023/slices/S05/tasks/T01-SUMMARY.md
Normal file
89
.gsd/milestones/M023/slices/S05/tasks/T01-SUMMARY.md
Normal file
|
|
@ -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.
|
||||||
Loading…
Add table
Reference in a new issue