diff --git a/.context/retros/2026-04-12-1.json b/.context/retros/2026-04-12-1.json new file mode 100644 index 0000000..2b58431 --- /dev/null +++ b/.context/retros/2026-04-12-1.json @@ -0,0 +1,35 @@ +{ + "date": "2026-04-12", + "window": "7d", + "metrics": { + "commits": 5, + "contributors": 1, + "prs_merged": 4, + "insertions": 48760, + "deletions": 23890, + "net_loc": 24870, + "test_loc": 15699, + "test_ratio": 0.32, + "active_days": 3, + "sessions": 4, + "deep_sessions": 2, + "avg_session_minutes": 55, + "loc_per_session_hour": 5350, + "feat_pct": 0.60, + "fix_pct": 0.40, + "peak_hour": 23, + "ai_assisted_commits": 5 + }, + "authors": { + "Poor Coin Pepe": { "commits": 5, "insertions": 48760, "deletions": 23890, "test_ratio": 0.32, "top_area": "frontend/src/" } + }, + "version_range": ["0.1.1.0", "0.1.1.0"], + "streak_days": 2, + "tweetable": "Week of Apr 5: 5 commits (4 PRs), 48.8k LOC, 32% tests, 286 test files, peak: 11pm | Streak: 2d", + "test_health": { + "total_test_files": 286, + "tests_added_this_period": 48, + "regression_test_commits": 0, + "test_files_changed": 48 + } +} diff --git a/.gitignore b/.gitignore index 723ff6a..13f3a2f 100644 --- a/.gitignore +++ b/.gitignore @@ -62,11 +62,3 @@ skills-lock.json mcasp_pencil mcasp_pencil.pen *.pen - -# Internal documentation — kept local, not pushed to public GitHub -# (SPEC documents are the project's IP/moat — see CLAUDE.md coding rules) -docs/spec/ -docs/init/ -docs/BUSINESS_REPORT.md -docs/MARKETING_STRATEGY.md -docs/OASIS_vs_Prophet.md diff --git a/CLAUDE.md b/CLAUDE.md index bd15259..916fe1d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -17,9 +17,7 @@ that combines LLM + GraphRAG + viral diffusion. - Master SPEC: `docs/spec/MASTER_SPEC.md` (index) - **Context strategy**: `HARNESS.md` (six principles — hierarchy / contract / verification / cognitive allocation / parallel decomposition / decay prevention) -> **Note:** Core SPECs (00-09, UI) are managed via `.gitignore` for IP protection. -> If they have been removed locally, treat the `SPEC:` references in code docstrings -> as historical pointers. +> **Note:** All SPECs are public and version-controlled in `docs/spec/`. --- @@ -84,8 +82,8 @@ that combines LLM + GraphRAG + viral diffusion. > into `21_SIMULATION_QUALITY_SPEC.md` on 2026-04-10. All original anchor IDs (`SQ-`, > `EC-`, `BC-`, `CG-`, `RF-`, `HM-`, `MP-`) are preserved. > -> Core engine SPECs (00-09) and UI SPECs (16 files) are `.gitignore`-protected for IP. -> The `SPEC: docs/spec/01_AGENT_SPEC.md#...` references in code docstrings are historical. +> All SPECs are now public. The `SPEC: docs/spec/01_AGENT_SPEC.md#...` references +> in code docstrings link directly to the checked-in files. ### SPEC Change → Test Auto-Generation Rule @@ -387,12 +385,6 @@ Prophet/ - **⛔ Never implement without a SPEC** — if `docs/spec/` has no SPEC, write the SPEC first. Never generate code without a SPEC. - **⛔ SPEC change requires test update** — whenever a Backend/Frontend SPEC changes, the relevant tests must be created or updated. -- **⛔ SPECs are private assets — never commit to public** — `docs/spec/`, `docs/init/`, - `docs/BUSINESS_REPORT.md`, `docs/MARKETING_STRATEGY.md`, and `docs/OASIS_vs_Prophet.md` - are the project's IP/moat and are listed in `.gitignore`. Keep these files local and - never push them to GitHub. When writing public documents like README.md, never quote - or link to SPEC documents or their contents — anyone with the SPEC alone can - reproduce Prophet. - **⛔ No pip** — `uv` only - **SLM fallback required** — every Tier 3 (Elite LLM) feature must have a Tier 1 (Mass SLM) fallback - **Harness first** — write harness fixtures/mocks before the implementation diff --git a/README.md b/README.md index 844385b..bba7de0 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,39 @@ -# Prophet +
-> _[Hero GIF placeholder — 15-second loop: 3D graph spreads, cascade highlights
-> light up communities, sentiment chart updates in real time. Record with
-> QuickTime/OBS, convert with `gifski`, drop at `docs/assets/hero.gif`.]_
+# 🔮 Prophet
-[](https://github.com/showjihyun/prophet/stargazers)
-[](LICENSE)
-[](CHANGELOG.md)
-[]()
-[](https://github.com/showjihyun/prophet/commits)
-[](https://github.com/showjihyun/prophet/discussions)
+### The wind tunnel for marketing campaigns
-Prophet is an open-source simulation engine for marketing teams, PR agencies,
-and researchers who are tired of finding out a campaign failed *after* it shipped.
-You point it at your message, your audience, and your communities — it tells you
-how the message spreads, where it stalls, and which groups push back.
+**Test your campaign on 10,000 AI agents before you spend a dollar on the launch.**
+
+[](https://github.com/showjihyun/prophet/stargazers)
+[](LICENSE)
+[](CHANGELOG.md)
+[](https://github.com/showjihyun/prophet/commits)
+
+[](https://www.python.org/)
+[](https://fastapi.tiangolo.com/)
+[](https://react.dev/)
+[](https://www.typescriptlang.org/)
+[](https://www.docker.com/)
+[]()
+
+| -A Fortune 500 ran their RTO mandate announcement through a synthetic employee -population (engineering-heavy, 4,500 agents). Prophet predicted a complete -adoption stall and a slide into negative sentiment in engineering -(mean_belief = -0.23, zero viral cascade events). They restructured the -announcement with carve-outs and the same population hit 94% adoption with -+0.68 sentiment — a +91-point swing in sentiment from restructuring alone. +### 🧠 6-Layer Agent Engine +Each agent perceives, remembers, feels, cognizes, decides, and influences — powered by LLM cognition with persistent per-agent memory. -### Computational social science research + | +-Open-source. Reproducible. Runs on a laptop. Built-in cascade detection. If you've -been wanting to do agent-based diffusion research without renting a GPU cluster, -Prophet is for you. +### 💰 Under $5 per run +3-tier inference (80% local SLM + 10% heuristic + 10% elite LLM) keeps 10K-agent simulations radically cheap. A naive GPT-4 run costs ~$15K. ---- + | +-## Is Prophet for you? +### 🌐 Realistic networks +Hybrid Watts-Strogatz + Barabási-Albert generator produces realistic clustering, power-law influencers, and cross-community bridges. -**Yes, if you...** -- Ship marketing campaigns and hate guessing what happens after launch -- Run a PR agency and want to pre-test messages against synthetic audiences -- Research agent-based social simulation, information diffusion, or LLM-driven societies -- Want to see diffusion dynamics you cannot get from post-hoc analytics + | +
| -**No, if you want...** -- A CRM replacement (use HubSpot or Salesforce) -- Real-time ad bidding (use a DSP) -- Traditional A/B testing on live traffic (use Optimizely or VWO) -- A no-code tool — Prophet is a developer tool, you will touch Docker and JSON +### 🎥 Watch it spread +Real-time 3D WebGL graph (three.js) with orbit / zoom / pan controls, community-colored nodes, and cascade highlighting. ---- + | +-## How Prophet compares +### 🔥 Auto-cascade detection +Viral cascades, polarization, echo chambers, collapse, slow adoption — detected and timeline-marked as the simulation runs. -| | **Prophet** | OASIS (academic) | AnyLogic | Focus groups | -|---------------------------|:--------------:|:----------------:|:----------:|:------------:| -| 10K-agent simulation cost | **under $5** | free | $15K+ license | $30K+ | -| Time to first result | **5 minutes** | hours | days | 6 weeks | -| LLM-driven agent cognition| **yes** | yes | no | n/a | -| Real-time 3D visualization| **yes** | no | yes | no | -| Cascade / echo chamber detection | **yes** | no | no | no | -| Marketing-specific metrics| **yes** | no | partial | yes | -| Open source | **MIT** | MIT | no | n/a | -| Runs on a laptop | **yes** | yes | yes | n/a | + | +-Numbers are rough order-of-magnitude based on public pricing and author estimates -from running comparable workloads. Your mileage will vary. +### 🔌 Multi-LLM ready +Ollama, Claude, OpenAI, Gemini, **+ 2026 Chinese flagships** (DeepSeek, Qwen, Moonshot Kimi, Zhipu GLM) out of the box. ---- + | +
| + +### 🚨 Mid-run intervention +Pause any time, **Inject Event** (controversy / endorsement / regulation), or **Replay from step N** to branch the timeline and try a different shock. -## Why this exists + | +-If you've ever shipped a campaign and watched it crater, you know the feeling. -Focus groups lie to you — 10 humans in a room cannot tell you how a message spreads -through a community. A/B tests are too late — by the time you have data, you are -already paying for the launch you are trying to validate. Brand-lift studies take -6 weeks, cost $50K, and tell you nothing about *why* the message failed. +### ⚙️ Live engine control +Dial the SLM / LLM ratio while the simulation is paused. Trade cost for reasoning depth without restarting from step 0. -Prophet exists because there is no wind tunnel for marketing. Every other -discipline that ships things at scale — aerospace, civil engineering, software — -gets to simulate before it builds. Marketing doesn't. Until now. + | +-**You take your campaign. You drop it into a virtual society of 10,000 AI agents -organized into the communities you actually care about. You watch what happens.** +### 🔀 Compare scenarios +Run the same campaign with one variable changed. **Compare** view puts adoption / sentiment / cascades side by side. **Clone** any run in one click. + + | +
+
+3D Simulation Workspace — community-colored agents, real-time cascade glow, adopted-node tinting per community. Inject Event / Engine Control / Replay live in the sidebar.
+ |
+
+
+Opinions Hierarchy — drill from scenario → community → individual conversation thread. See exactly which messages drove the consensus or the polarization.
+ |
+
+
+Post-Run Analytics — adoption curve, sentiment trajectory, per-community breakdown, cascade timeline. Deep-link any metric for sharing.
+ |
+
+
+Top Influencers — power-law influencers ranked by network reach + step-by-step propagation contribution. Find who actually moved the needle.
+ |
+
+
{event.description || meta.description}
-
- Key Events
+ Key Events
+
+ ({report.keyEvents.length})
+
{simulation.name}
@@ -354,26 +365,32 @@ export default function AnalyticsPage() {
+
{label}
+ {term &&
{value}