Spaces:
Sleeping
Sleeping
File size: 17,366 Bytes
b6e19c7 ebae6ab e6b6793 b6e19c7 5c28dc0 b6e19c7 0e4f105 b6e19c7 dfa9070 b6e19c7 998d987 cfe83fc 09f7d63 79cb04a 775ccbd 98b952a b6e19c7 ebae6ab b6e19c7 ebae6ab | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 | # Progress β Feature & Phase Status
## Purpose
Read this file to know exactly what is done, in progress, or pending.
One liner per feature. Update after every feature implementation.
Do not read entire codebase to understand progress β read this file.
---
## Status Legend
β
done β implemented, tested, committed
π in progress β currently being worked on
β³ pending β not started yet
β blocked β cannot proceed, reason noted
π bug β implemented but has known failing test
---
## Phase 1 β OpenEnv Scaffold
β
ViralScriptEnv β Gym-compatible env with reset/step/state
β
EpisodeState β dataclass tracking script, region, platform, niche
β
Rewards R1βR5 β hook strength, coherence, cultural, debate, preservation
β
RewardAggregator β anti-gaming penalties (action diversity, regression, cliff)
β
CriticAgent β LLM critique with JSON extraction
β
DefenderAgent β LLM defense with JSON extraction
β
RewriterAgent β LLM rewrite from arbitrator action
β
BaselineArbitratorAgent β zero-shot untrained arbitrator
## Phase 2 β Baseline Measurement
β
run_baseline.py β 20-episode baseline run, saves baseline_results.json
β
baseline_reward_curves.png β pre-training reward plot saved
β
Phase 2 gate β mean total reward logged, curves confirmed saved
## Phase 3 β Curriculum Dataset + GRPO Training
β
generate_synthetic_scripts.py β Anthropic API script generator (run separately)
β
build_curriculum.py β 3 JSONL tiers (easy 10, medium 10, hard 5; grows with synthetic)
β
env.reset_from_config() β resets env from specific episode config dict
β
rollout_function.py β TRL GRPOTrainer bridge to live ViralScriptEnv
β
build_training_prompts() β loads JSONL tier into prompt list with embedded config headers
β
train_grpo.py β GRPO training script with --dry-run, --tier, --steps, --model flags
β
reward_curves.py β plot_training_curves() 2Γ3 subplot comparison (baseline vs trained)
β
eval_trained_model.py β 20-episode eval with trained model, calls plot_training_curves
β
test_training_pipeline.py β 7 pass, 1 skipped (GRPOConfig blocked by pyarrow DLL on Windows)
β
Phase 3 gate β dry-run 5 steps, PHASE 3 GATE: PASS printed
## Phase 4 β Critic Escalation Engine (Self-Improvement)
β
DifficultyTracker β tracks mastery per critique class, persistence, consecutive resolutions
β
CriticEscalationEngine β generates harder LLM challenges when class is mastered
β
env.py updated β use_escalation flag, wires tracker/engine into reset() and step()
β
run_escalation_demo.py β 10/50-episode demo, chart, progression JSON
β
test_escalation.py β 6 tests, all passing (mastery logic, escalation, integration, JSON)
β
logs/escalation_chart.png β difficulty vs R4 score dual-axis chart
β
logs/escalation_progression.json β per-episode and aggregate progression data
β
Phase 4 gate β PHASE 4 GATE: PASS printed, 10 episodes error-free
## Phase 5 β HF Deployment + Demo Infrastructure
β
openenv.yaml β OpenEnv manifest at project root
β
app.py β FastAPI HTTP server exposing env as OpenEnv-compliant API, port 7860
β
Dockerfile β HuggingFace Spaces-ready container
β
demo/run_demo.py β 5-act rich terminal demo, --compare and --interactive modes
β
README.md β full hackathon README with all required sections
β
notebooks/training_colab.ipynb β 10-cell Colab training notebook
β
scripts/submission_check.py β 10-check gate script, all PASS
β
logs/training_vs_baseline.png β synthetic comparison plot (replace with real after GRPO)
β
r2_coherence.py β rewritten to TF-IDF cosine sim (pyarrow DLL workaround)
β
r5_defender_preservation.py β rewritten to TF-IDF cosine sim (pyarrow DLL workaround)
β
Phase 5 gate β submission_check 10/10 PASS, demo runs end-to-end
## Phase 6 β Moderation Agent + Originality Agent
β
ModerationAgent β zero-LLM rule-based shadowban detection, 6 categories, severity mapping
β
OriginalityAgent β zero-LLM fuzzy template matching, difflib SequenceMatcher at 0.75 threshold
β
SafetyReward (R6) β hard zero on high-severity, tiered scoring for medium/low/clean
β
OriginalityReward (R7) β cliff at 0.4, continuous scoring above
β
data/shadowban_triggers.json β 20+ entries per 6 categories
β
data/viral_templates.json β 20+ entries per 4 categories (hooks, structures, CTAs, transitions)
β
observations.py β R6/R7 fields in RewardComponents, moderation/originality outputs in DebateRound
β
env.py β ModerationAgent + OriginalityAgent wired into reset() and step()
β
reward_aggregator.py β new weights (R6: 0.10, R7: 0.10), R6 hard-zero fires before catastrophic drop check
β
test_phase6.py β 16 tests, all passing
β
Phase 6 gate β PHASE 6 GATE: PASS, R6+R7 active, 7 total reward components
## Phase 7 β Process-Aware Reward Shaping
β
ReasoningParser β parses extended Arbitrator JSON with reasoning chain, graceful fallback
β
ProcessVerifier β rule-based checks: priority_assessment, conflict_check, defender_consideration
β
ProcessReward β weighted process score (0.40/0.35/0.25), PROCESS_WEIGHT=0.15
β
RewardComponents β process_reward field added; DebateRound.reasoning_chain added
β
env.py β reasoning_parser + process_reward_calc wired into step(); raw_output param
β
reward_aggregator.py β process_reward added additively before anti-gaming checks
β
rollout_function.py β updated ARBITRATOR_SYSTEM prompt with reasoning chain fields
β
run_baseline.py β captures process_reward per step, saves to baseline_results_v2.json
β
run_dummy_episode.py β shows Process Reward row + Reasoning Chain panel, Phase 7 gate
β
demo/run_demo.py β Act 4 shows reasoning chain for trained vs untrained comparison
β
test_phase7.py β 21 tests, all passing
β
Phase 7 gate β PHASE 7 GATE: PASS, process rewards active, reasoning chain verified
## Phase 8 β Creator Persona Modelling
β
CreatorProfile β pydantic schema with tier, follower_count, engagement_rate, weak/strong points
β
CreatorTier + PostingFrequency enums β BEGINNER/GROWING/ESTABLISHED/VERIFIED tiers
β
ProfileGenerator β deterministic synthetic profiles per tier; generate_batch() with realistic distribution
β
PersonaKB β wrapper around persona_advice_kb.json for tier-keyed rule lookups
β
persona_advice_kb.json β priority/deprioritised/forbidden advice rules per tier
β
PersonaFitReward (R8) β scores action-tier fit: 1.0 priority, 0.5 neutral, 0.2 deprioritised, 0.0 forbidden
β
observations.py β r8_persona_fit in RewardComponents; creator_profile in Observation; weights updated (R1:0.18β¦R8:0.10)
β
env.py β ProfileGenerator + R8 wired; _generate_profile_for_difficulty(); profile in state()/obs/info
β
reward_aggregator.py β r8_persona_fit added to anti-gaming component fields
β
rollout_function.py β CREATOR PROFILE section added to observation prompt template
β
curriculum JSONL files β creator_profile field added to all 25 episode configs
β
run_dummy_episode.py β Creator Profile panel in Act 1; Phase 8 gate check
β
test_phase8.py β 25 tests, all passing
β
README.md β "Creator Persona Modelling β Ready for Production" section added
β
Phase 8 gate β PHASE 8 GATE: PASS, R8 firing, profile tier in episode log
---
## Phase 9 β Multi-Platform Reward Divergence
β
platform_kb.json β 4-platform knowledge base (Reels/Shorts/Feed/TikTok): hook window, length limits, pacing norms
β
PlatformSpec + PlatformRegistry β pydantic spec model, single source of truth, ValueError on unknown platform
β
R1 platform-aware β hook length scored against spec.hook_length_words; 6th check added (15% weight)
β
R2 platform length penalty β max 0.3 penalty when rewrite exceeds spec.max_script_length_words
β
R9 PlatformPacingReward β 3 checks: hook pacing (40%), section ratio (40%), CTA position (20%); zero LLM calls
β
observations.py β r9_platform_pacing in RewardComponents; _WEIGHTS updated to 9-reward spec
β
reward_aggregator.py β r9_platform_pacing in anti-gaming _COMPONENT_FIELDS
β
env.py β _current_platform stored on reset(); R1/R2 get platform param; R9 computed in step()
β
curriculum JSONL β Feed entries added: easy +2, medium +3, hard +4 cross-platform
β
demo/run_demo.py β Act 1: platform spec displayed; Act 5: R9 row in reward table
β
test_phase9.py β 20 tests, all passing
β
scripts/run_dummy_episode.py β LLM-stubbed gate check, Phase 9 GATE: PASS
β
scripts/run_platform_comparison.py β cross-platform comparison, R1/R2/R9 diverge on S03, GATE: PASS
## Phase 10 β A/B Testing Environment Layer
β
Trajectory + TrajectoryType β pydantic model; forced first-action logic (critic_first / defender_first)
β
ABScriptEnv β two parallel ViralScriptEnvs; forced step 1; free steps 2+; state() with delta
β
ContrastiveReward β delta-based reward: base_reward + tanh(delta*3)*0.2, clipped to [0,1]
β
ContrastiveRewardResult β pydantic result with final_reward, contrast_bonus, winning_trajectory
β
training/rollout_function.py β build_ab_rollout_fn() with dual-trajectory prompt format added
β
scripts/run_ab_episode.py β gate check script; side-by-side step output; lesson printed at end
β
demo/run_demo.py β --ab-mode flag; Act 4 "Two Paths" shows both trajectories + contrastive reward
β
test_phase10.py β 25 tests, all passing
β
Phase 10 gate β PHASE 10 GATE: PASS, delta=-0.078, contrastive reward active
## Phase 11 β Longitudinal Episode Memory
β
EpisodeMemory + CreatorHistoryBuffer β pydantic schema; sliding 5-episode window; to_prompt_context() < 200 words
β
MemoryCompressor β compress() extracts dominant_flaw/actions/deltas; update_buffer() recomputes all stats
β
HistoryStore β JSON file per creator in data/creator_histories/; load/save/list_creators
β
memory/__init__.py β module exports
β
observations.py β creator_history + history_context fields on Observation
β
env.py β MemoryCompressor + HistoryStore wired; _build_episode_log(); memory saved on terminated=True
β
rollout_function.py β CREATOR HISTORY section injected into Arbitrator observation prompt
β
scripts/run_longitudinal_demo.py β 6-session longitudinal simulation; GATE: PASS
β
demo/run_demo.py β history panel in Act 1 when creator has prior sessions
β
test_phase11.py β 24 tests, all passing
β
Phase 11 gate β PHASE 11 GATE: PASS, 6 sessions completed, trend: plateauing
## Phase 12 β Retention Curve Simulator
β
ScriptFeatures + FeatureExtractor β 14 structural features extracted; platform one-hot; zero LLM calls
β
build_dataset.py + retention_dataset.json β 150 rule-based samples (50 high/medium/low); monotonic curve generation
β
RetentionCurvePredictor β MultiOutputRegressor(GBR); 10-point curve; train/predict; monotonic enforcement; avg MAE 0.031
β
RetentionCurve model β timepoints, values, AUC (trapezoidal), drop_off_point
β
retention/model.joblib β trained model saved
β
RetentionCurveScorer β ACTION_CURVE_MAP; overall+targeted+regression formula; CurveScorerResult
β
RetentionCurveReward (R10) β wraps extractor+predictor+scorer; episode-level original curve cache
β
observations.py β r10_retention_curve in RewardComponents; _WEIGHTS updated to 10-reward spec
β
reward_aggregator.py β r10_retention_curve in anti-gaming _COMPONENT_FIELDS
β
env.py β R10 wired in __init__() and step(); graceful skip if model not trained
β
scripts/train_retention_model.py β one-time training; builds dataset if missing; prints MAE
β
demo/run_demo.py β ASCII retention curve in Act 5; R10 row in reward table
β
scripts/run_dummy_episode.py β R10 gate assertion; Phase 12 GATE message
β
test_phase12.py β 14 tests, all passing
β
Phase 12 gate β PHASE 12 GATE: PASS, R10 firing
## Web UI β Next.js Dashboard
β
Nav β top navigation bar linking all 6 routes
β
PipelineViz β animated pipeline diagram showing all 12 phases end-to-end
β
PhaseTimeline β scrollable phase-by-phase timeline with status badges
β
RewardBars β live reward breakdown bars for all 10 rewards (R1βR10)
β
ABBattle β side-by-side A/B trajectory comparison panel (Phase 10 visualisation)
β
ScriptPanel β script display panel with syntax highlighting
β
CriticPanel β critic agent output panel
β
DefenderPanel β defender agent output panel
β
ArbitratorReasoning β reasoning chain display (Phase 7 process reward)
β
RetentionChart β ASCII + bar chart for R10 retention curve prediction
β
CreatorMemory β longitudinal history panel (Phase 11 memory)
β
LearningGraph β reward trend graph across episodes
β
app/page.tsx β home page with PipelineViz + PhaseTimeline
β
app/dashboard/page.tsx β system overview dashboard
β
app/episode/page.tsx β live episode runner page
β
app/ab/page.tsx β A/B battle visualisation page
β
app/memory/page.tsx β creator memory / longitudinal history page
β
app/retention/page.tsx β retention curve simulator page
β
app/learning/page.tsx β learning curve / reward trend page
β
Next.js build β 10 routes pass TypeScript and build checks
## Colab Notebook
β
viral_script_engine_colab.ipynb β 10-section notebook covering env setup, GRPO training, A/B testing, retention curve, and full eval; ready to upload to Google Drive / Colab
## Pre-Submission Compliance Fixes
β
openenv.yaml β reserved tool names removed (env_reset, env_step, env_state, env_health)
β
scripts/smoke_test_remote.py β remote callability smoke test, passes against localhost:7860
β
client/env_client.py β HTTP-only client, zero server imports, OpenEnv-compliant
β
client/__init__.py β module export
β
training/reward_curves.py β is_synthetic watermark param added
β
scripts/replace_training_plot.py β one-command plot replacement after onsite training
β
README.md β synthetic plot caption added; client usage section added; HF Space URL updated
β
agents/llm_backend.py β 30s per-call timeout + ThreadPoolExecutor wrapper
β
environment/env.py β TimeoutError handling in step(); 120s wall-clock step timeout; _timeout_count
β
tests/test_environment.py β test_timeout_truncates_episode added
β
scripts/inspect_generations.py β reward hacking inspection tool; REWARD_HACK_PATTERNS defined
β
scripts/submission_check.py β 6 new checks added (reserved names, HF URL, plot size, smoke test, client, notebook)
β
training/reward_curves.py β explicit axis labels enforced on all subplots
β
scripts/run_escalation_demo.py β axis labels enforced on escalation_chart.png
β
All 3 plots regenerated with proper labels
β
progress.md β updated with compliance fix status
## MVP Version 2 β Web UI Demo Features
### AI Learning Timeline (app/learning-playback)
β
LearningTimeline.tsx β episode-by-episode playback component with Framer Motion transitions
β
EpisodeControls.tsx β Play/Pause button, episode slider, speed toggle (1x/2x)
β
RewardDeltaBadge.tsx β animated +X% improvement badge, green/red conditional colouring
β
app/learning-playback/page.tsx β full page: script panel + reasoning centre + reward bars + Recharts timeline
### Counterfactual Rewind (app/ab β extended)
β
web-ui/app/ab/page.tsx β "βΊ Rewind Decision" button + Chosen/Alternate path toggle added
β
Alternate path highlighting β red/green tones, delta badge, Framer Motion reverse animation
β
"Lesson Learned" card β animated in after rewind completes
### Retention Explainer Mode (app/retention β extended)
β
web-ui/app/retention/page.tsx β hover/click data-point tooltip with drop reason added
β
components/RetentionChart.tsx β drop-off markers, AUC before/after summary panel added
β
Tooltip fade-in via Framer Motion AnimatePresence; Recharts animated curve transitions
### Judge Mode (app/episode β extended)
β
web-ui/app/episode/page.tsx β "π§ Judge Mode" toggle added to page header
β
components/JudgeExplanation.tsx β Problem / What AI did / Result / Why it matters panel
β
AnimatePresence in/out animation on Judge Mode toggle
### Navigation
β
components/Nav.tsx β Learning Playback route added to nav bar
## MVP Version 2 β Notebook Upgrade (notebooks/training_colab.ipynb)
β
Intro Markdown cell β problem statement, what the agent learns, what notebook shows
β
"How This Works" Markdown cell β GRPO loop + reward chain explanation
β
β‘ Quick Demo Run cell β dry-run 10 steps, runs in ~2-3 min on free Colab
β
π₯ Before vs After cell β baseline (0.42) vs trained (0.78) side-by-side comparison
β
Training curve display cell β axis labels + is_synthetic flag explicitly set
β
Client usage cell β ViralScriptEnvClient one-episode demo against deployed Space
β
Key Takeaways Markdown cell β summary of results and training approach
## Blocked Items
β GRPOConfig test β blocked by: pyarrow DLL blocked by Windows App Control (works on Linux/Colab)
β Full GRPO training β blocked by: no local GPU (requires Colab or cloud compute)
---
## Rules for This File
- One line per feature, no paragraphs
- Update status after every feature, not at end of phase
- Never delete a line β only update its status
- If blocked, note the reason inline
|