chore: product-first repo cleanup for public submission#63
Conversation
The public repo link is a submitted artifact, so trim it to a clean product repository: - Untrack internal working material (kept on local disk, gitignored): claudedocs/ (session handoffs, gap-analysis incl. hackathon-judging, audit HTML), internal docs/ (devpost-submission, demo-scenario, postmortems, new-mod-checklist, duplicate README, release-baseline, impact), HANDOFF.md, and two internal automation scripts. - Rewrite README product-first: drop the "Judge path", "Submission baseline & build versions", and to-measure-metrics framing plus the gallery/plan/submission links; lead with why -> what -> quickstart -> how -> vs-AutoMod -> safety -> developers, keeping the accurate product content and architecture. - Redesign the app icon: replace the generic teal checkmark (stray notch artifact, off-brand) with a clean 1024px sprout mark on a deep-green ground, growing from a baseline seed -- the same sprout brand the welcome modmail and landing page use. assets/icon.svg is the source, assets/icon.png the rendered output. - Remove the now-obsolete programmatic build-icon.ts + build:icon script. No app/runtime behaviour change; build + 236 tests remain green. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Walkthrough임시 세션 핸드오프 문서, 갭 분석 자료, 자동화 스크립트를 삭제하여 저장소를 정리합니다. README를 재작성하여 핵심 기능과 안전성 보장을 강조하고, 개발자 섹션을 갱신하며, .gitignore와 package.json을 구성합니다. Changes저장소 정리 및 문서 통합
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Code Review
This pull request cleans up the repository by removing internal session handoffs, diagnostic scripts, and temporary documentation while introducing a new sprout-themed SVG icon. The README has been significantly restructured to provide a clearer quickstart guide and explicit safety guarantees. Feedback indicates several discrepancies in the updated README layout table, which incorrectly references a server-side refactor into a routes directory and an increased count of seed rules not reflected in the code. Furthermore, the rendered application icon is now out of sync with the new SVG source due to the removal of the icon build script without a corresponding update to the PNG asset.
| | `src/server/{evaluator,fact-bag,executor,devvit-helpers}.ts` | deterministic evaluator · fact bag · action executor + audit + rollback · `@devvit/web` adapters | | ||
| | `src/server/index.ts` | Hono routes — menu / form / trigger / scheduler handlers, `isCallerModerator` guard, `callOpenAI`, dry-run replay | | ||
| | `scripts/{acceptance,devvit-doctor,replay,build-icon,openai-smoketest}.ts` | the `npm run` tooling | | ||
| | `src/server/index.ts` + `src/server/routes/*` | Hono entry (re-exports `app`) + menu / form / trigger / scheduler route modules | |
There was a problem hiding this comment.
The layout table describes src/server/index.ts as a Hono entry that re-exports the app and refers to a new src/server/routes/* directory. However, the actual refactoring of index.ts and the addition of these route modules are not present in the file changes for this pull request. This creates a discrepancy between the documentation and the actual codebase structure provided in this PR.
| | Path | What | | ||
| |---|---| | ||
| | `src/shared/{rule-schema,system-prompt,starter-rules}.ts` | Zod v4 strict schema · gpt-5.4 prompt + few-shot · 5 seed rules | | ||
| | `src/shared/{rule-schema,system-prompt,starter-rules}.ts` | Zod v4 strict schema · gpt-5.4 prompt + few-shot · 6 seed rules | |
There was a problem hiding this comment.
The layout table mentions "6 seed rules", which is an increase from the "5 seed rules" in the previous version. However, the file src/shared/starter-rules.ts is not modified in this pull request. If a new starter rule was intended to be part of this cleanup, the corresponding file should be updated.
| | `scripts/{acceptance,devvit-doctor,replay,build-icon,openai-smoketest}.ts` | the `npm run` tooling | | ||
| | `src/server/index.ts` + `src/server/routes/*` | Hono entry (re-exports `app`) + menu / form / trigger / scheduler route modules | | ||
| | `scripts/{acceptance,devvit-doctor,replay,openai-smoketest}.ts` | the `npm run` tooling | | ||
| | `assets/icon.{svg,png}` | the 1024² app icon — `icon.svg` is the source, `icon.png` the rendered output | |
There was a problem hiding this comment.
The README identifies assets/icon.png as the rendered output of assets/icon.svg. Since the programmatic build script scripts/build-icon.ts has been removed, and assets/icon.png is not updated in this PR, the PNG asset used by the platform will likely remain out of sync with the new sprout-themed SVG source. Please ensure the rendered PNG is updated to match the new branding.
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@README.md`:
- Around line 111-119: The README's "236-test suite (1 skipped)" count is
inconsistent with the actual test files (static count of it( / test( in
*.test.ts and *.spec.ts yields 240 and no test.skip patterns); update the README
text under the testing section to reflect the real numbers or explicitly explain
the skip counting method used by npm test (e.g., clarify whether `npm test`'s
runner counts skipped tests differently), and mention the inspection scope
(*.test.ts / *.spec.ts and patterns like it(, test(, test.skip) so maintainers
know how you derived the updated figure; adjust the phrase near "npm test" and
any parenthetical counts to the corrected value or documented counting rule.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 0d5e27dd-8a88-47a8-8180-3e680857a177
⛔ Files ignored due to path filters (9)
assets/icon.pngis excluded by!**/*.pngassets/icon.svgis excluded by!**/*.svgclaudedocs/reddit-assets/community-banner-1920x384.pngis excluded by!**/*.pngclaudedocs/reddit-assets/community-icon-256-bg.pngis excluded by!**/*.pngclaudedocs/reddit-assets/community-icon-256.pngis excluded by!**/*.pngclaudedocs/reddit-assets/community-icon-512.pngis excluded by!**/*.pngclaudedocs/reddit-assets/socialseed-original-apple-icon.pngis excluded by!**/*.pngclaudedocs/reddit-assets/socialseed-original-icon.pngis excluded by!**/*.pngclaudedocs/reddit-assets/sprout-logo.svgis excluded by!**/*.svg
📒 Files selected for processing (42)
.gitignoreHANDOFF.mdREADME.mdclaudedocs/2026-05-12-session-handoff.mdclaudedocs/2026-05-13-install-debug-session-handoff.mdclaudedocs/2026-05-13-openai-400-probe-session-handoff.mdclaudedocs/2026-05-13-openai-probe-v3-handoff.mdclaudedocs/2026-05-13-platform-bug-session-handoff.mdclaudedocs/2026-05-13-reddit-setup-session-handoff.mdclaudedocs/2026-05-13-session-handoff.mdclaudedocs/2026-05-14-compose-flow-audit.mdclaudedocs/2026-05-14-module-split-plan.mdclaudedocs/2026-05-14-openai-400-final-report.htmlclaudedocs/2026-05-14-openai-400-resolved-handoff.mdclaudedocs/2026-05-14-ux-best-practices-plan.mdclaudedocs/2026-05-14-ux-rework-and-republish-handoff.mdclaudedocs/gap-analysis/00-SUMMARY.mdclaudedocs/gap-analysis/01-automod-parity.mdclaudedocs/gap-analysis/02-competitive-landscape.mdclaudedocs/gap-analysis/03-hackathon-judging.mdclaudedocs/gap-analysis/04-security-abuse.mdclaudedocs/gap-analysis/05-code-architecture.mdclaudedocs/gap-analysis/06-reliability-failure-modes.mdclaudedocs/gap-analysis/07-moderator-ux.mdclaudedocs/gap-analysis/08-devvit-idiom.mdclaudedocs/gap-analysis/09-rule-expressiveness.mdclaudedocs/gap-analysis/10-demo-storytelling.mdclaudedocs/gap-analysis/11-test-coverage.mdclaudedocs/hackathon-audit-20260512-reddit-mod-tools.htmlclaudedocs/reddit-setup-checklist.htmldocs/README-vibe-mod.mddocs/demo-scenario.mddocs/devpost-submission.mddocs/impact.mddocs/new-mod-checklist.mddocs/postmortems/2026-05-14-openai-400-selection-array.mddocs/release-baseline.mdpackage.jsonscripts/build-final-report.pyscripts/build-icon.tsscripts/dashboard-capture.pysrc/shared/redis-keys.ts
💤 Files with no reviewable changes (38)
- docs/release-baseline.md
- docs/impact.md
- claudedocs/gap-analysis/11-test-coverage.md
- claudedocs/gap-analysis/06-reliability-failure-modes.md
- claudedocs/gap-analysis/09-rule-expressiveness.md
- claudedocs/gap-analysis/00-SUMMARY.md
- docs/demo-scenario.md
- docs/devpost-submission.md
- claudedocs/gap-analysis/07-moderator-ux.md
- claudedocs/2026-05-13-openai-probe-v3-handoff.md
- claudedocs/2026-05-14-module-split-plan.md
- claudedocs/2026-05-13-session-handoff.md
- claudedocs/gap-analysis/01-automod-parity.md
- claudedocs/2026-05-12-session-handoff.md
- scripts/build-icon.ts
- claudedocs/gap-analysis/03-hackathon-judging.md
- docs/README-vibe-mod.md
- claudedocs/hackathon-audit-20260512-reddit-mod-tools.html
- claudedocs/2026-05-14-ux-best-practices-plan.md
- docs/new-mod-checklist.md
- claudedocs/2026-05-13-openai-400-probe-session-handoff.md
- claudedocs/2026-05-14-compose-flow-audit.md
- claudedocs/gap-analysis/05-code-architecture.md
- claudedocs/gap-analysis/02-competitive-landscape.md
- claudedocs/2026-05-13-platform-bug-session-handoff.md
- claudedocs/reddit-setup-checklist.html
- package.json
- claudedocs/gap-analysis/04-security-abuse.md
- claudedocs/2026-05-13-reddit-setup-session-handoff.md
- claudedocs/2026-05-14-openai-400-resolved-handoff.md
- HANDOFF.md
- scripts/build-final-report.py
- scripts/dashboard-capture.py
- claudedocs/gap-analysis/10-demo-storytelling.md
- docs/postmortems/2026-05-14-openai-400-selection-array.md
- claudedocs/2026-05-13-install-debug-session-handoff.md
- claudedocs/2026-05-14-ux-rework-and-republish-handoff.md
- claudedocs/gap-analysis/08-devvit-idiom.md
| - **No LLM at evaluation time.** The model runs exactly once per rule edit. The invariants behind this are | ||
| hard rules, enforced in code: LLM build-time only, action whitelist, dry-run before activate, shadow | ||
| default, 30-day rollback, the LLM never sees post/comment content, v0.1 English-only. | ||
| - **Tested without Devvit:** a 236-test suite (1 skipped) via `npm test` — unit + route (`app.fetch()` | ||
| against Devvit/OpenAI doubles) + property-based, the official | ||
| [`@devvit/test`](https://www.npmjs.com/package/@devvit/test) harness for the executor, an | ||
| `npm run acceptance` gate (G1–G4), an `npm run replay` local event replayer, and an | ||
| `npm run openai:smoketest` that hits the real OpenAI API. The Devvit *runtime* (routing, payload | ||
| injection, RPC) is verified by `devvit playtest` — see [`docs/devvit-setup-guide.md`](./docs/devvit-setup-guide.md). |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Description: 테스트 파일에서 실제 테스트 수 확인
# 모든 테스트 파일에서 it(), test(), describe() 카운트
echo "=== Test count in test files ==="
rg -g '*.test.ts' -g '*.spec.ts' "^\s*(it|test)\(" --count-matches | \
gawk -F: '{sum+=$2} END {print "Total tests:", sum}'
# Skipped tests 확인
echo "=== Skipped tests ==="
rg -g '*.test.ts' -g '*.spec.ts' "^\s*(it|test)\.skip\(" --countRepository: Two-Weeks-Team/vibe-mod
Length of output: 139
테스트 수(236/1 skipped) 문구가 코드와 불일치
*.test.ts/*.spec.ts에서 it(/test( 호출을 정적 카운트하면 총 240건이고, it/test.skip( 형태의 스킵 패턴은 발견되지 않습니다. 따라서 README의 “236-test suite (1 skipped)”(114/166) 문구는 현재 코드베이스의 수치와 맞지 않으니, 실제 테스트 러너가 집계하는 기준에 맞게 숫자를 갱신하거나 스킵 산정 방식을 명시하세요.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@README.md` around lines 111 - 119, The README's "236-test suite (1 skipped)"
count is inconsistent with the actual test files (static count of it( / test( in
*.test.ts and *.spec.ts yields 240 and no test.skip patterns); update the README
text under the testing section to reflect the real numbers or explicitly explain
the skip counting method used by npm test (e.g., clarify whether `npm test`'s
runner counts skipped tests differently), and mention the inspection scope
(*.test.ts / *.spec.ts and patterns like it(, test(, test.skip) so maintainers
know how you derived the updated figure; adjust the phrase near "npm test" and
any parenthetical counts to the corrected value or documented counting rule.
The public GitHub repo link is a submitted artifact (Devpost form field; judges browse it). This trims the repo to a clean product repository — no app/runtime behaviour change.
1 · Untrack internal working material (kept on local disk, gitignored)
claudedocs/— session handoffs, gap-analysis (incl.03-hackathon-judging.md), audit HTML, setup checklist, reddit-assets.docs/—devpost-submission.md,demo-scenario.md,postmortems/,new-mod-checklist.md,README-vibe-mod.md(dup),release-baseline.md,impact.md.HANDOFF.md(internal project plan),scripts/build-final-report.py,scripts/dashboard-capture.py.docs/{conflict-handling,devvit-setup-guide,devvit-reference,devvit-conformance-notes,tos,privacy}.md.No secrets in any of these; they remain in history.
.gitignorenow coversscripts/*.py+ the internal docs.2 · README rewritten product-first
Dropped the hackathon-judging meta —
🏁 Judge path,📦 Submission baseline & build versions, the to-measure-metrics framing, and the gallery/plan/submission links. New flow: why → what → quickstart → how it works → vs AutoMod → safety guarantees → developers → permissions/privacy. Kept the accurate product content (vs-AutoMod table, architecture diagram, architectural-facts). Privacy/ToS now link the in-repo docs. A single subtle hackathon line in the footer.3 · New app icon
Replaced the generic teal checkmark (stray notch artifact, off the 🌱 brand) with a clean 1024² sprout mark on a deep-green ground, growing from a baseline seed — matching the brand the welcome modmail + landing page use.
assets/icon.svgis the source;assets/icon.pngthe rendered output. Removed the now-obsolete programmaticbuild-icon.ts+build:iconscript (which would have regenerated the old icon).Build + 236 tests remain green;
npm run doctorpasses; README passesprettier --check.🤖 Generated with Claude Code
Summary by CodeRabbit
릴리스 노트
Documentation
Chores