Skip to content

chore: product-first repo cleanup for public submission#63

Merged
sgwannabe merged 1 commit into
mainfrom
chore/repo-product-cleanup
May 24, 2026
Merged

chore: product-first repo cleanup for public submission#63
sgwannabe merged 1 commit into
mainfrom
chore/repo-product-cleanup

Conversation

@sgwannabe
Copy link
Copy Markdown
Contributor

@sgwannabe sgwannabe commented May 24, 2026

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.
  • internal 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.
  • Kept (product/legal/platform): docs/{conflict-handling,devvit-setup-guide,devvit-reference,devvit-conformance-notes,tos,privacy}.md.

No secrets in any of these; they remain in history. .gitignore now covers scripts/*.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.svg is the source; assets/icon.png the rendered output. Removed the now-obsolete programmatic build-icon.ts + build:icon script (which would have regenerated the old icon).

before after
teal rounded square + checkmark card (notch artifact) deep-green ground + cream sprout rooted in a baseline seed

Build + 236 tests remain green; npm run doctor passes; README passes prettier --check.

🤖 Generated with Claude Code

Summary by CodeRabbit

릴리스 노트

  • Documentation

    • README 전체 개선으로 핵심 기능을 명확히 정리: 결정론적 규칙 컴파일, 24시간 섀도우 모드, 드라이런 미리보기, 30일 롤백 보장, LLM 규칙 편집 시점 사용 강조
    • 안전 보장 및 운영 제어 장치(화이트리스트 액션, 시간당 회로 차단, 일일 쿼터, 감사 로그) 명시
  • Chores

    • 내부 개발 문서 정리 및 불필요한 스크립트 제거

Review Change Stack

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>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 24, 2026

Walkthrough

임시 세션 핸드오프 문서, 갭 분석 자료, 자동화 스크립트를 삭제하여 저장소를 정리합니다. README를 재작성하여 핵심 기능과 안전성 보장을 강조하고, 개발자 섹션을 갱신하며, .gitignore와 package.json을 구성합니다.

Changes

저장소 정리 및 문서 통합

레이어 / 파일 요약
세션 핸드오프 및 갭 분석 문서 제거
claudedocs/2026-05-*.md, claudedocs/gap-analysis/*, claudedocs/*.html
임시 세션 핸드오프 문서(2026-05-12~14), 갭 분석 11개 파일(AutoMod 패리티, 경쟁 분석, 해커톤 판정, 보안, 아키텍처, 신뢰성, 모더레이터 UX, Devvit 이디엄, 규칙 표현성, 데모 스토리텔링, 테스트 커버리지), HTML 기반 해커톤 감사표 및 Reddit 설정 체크리스트가 모두 삭제되어 내부 개발 프로세스 추적 파일을 정리합니다.
자동화 스크립트 및 도구 제거
scripts/dashboard-capture.py, scripts/build-final-report.py, scripts/build-icon.ts, docs/postmortems/*, docs/demo-scenario.md, docs/devpost-submission.md, docs/README-vibe-mod.md, HANDOFF.md
Reddit 대시보드 캡처 자동화(Playwright 기반, 쿠키/스크린샷/JSON 저장), OpenAI 400 디버깅 최종 보고서 HTML 생성, PNG 아이콘 빌드 스크립트, 그리고 데모 시나리오, Devpost 제출 초안, 모더레이터 README, 개발자 영향 측정, 새 모드 체크리스트, 해커톤 사후 분석 문서가 삭제됩니다.
빌드 시스템 및 무시 목록 업데이트
package.json, .gitignore
npm scripts에서 build:icon 항목을 제거합니다. .gitignore는 특정 스크립트 패턴(scripts/chrome-reddit-*.py)을 전체 Python 스크립트(scripts/*.py)로 확대하고, claudedocs/, docs/postmortems/, docs/devpost-submission.md, docs/demo-scenario.md, docs/new-mod-checklist.md, docs/README-vibe-mod.md, docs/release-baseline.md, docs/impact.md, docs/demo-narration-script.md, HANDOFF.md를 추가로 제외합니다.
README 재작성 및 공개 문서화 개선
README.md, src/shared/redis-keys.ts
README 상단을 "결정적 JSON 규칙 컴파일 + 24시간 shadow + dry-run preview + 30일 롤백 + LLM은 편집 시점만 사용"으로 간소화하고, What it does / How it works / Safety guarantees 섹션으로 재구성합니다. flair 업데이트(dedupe), guarded actions, 회로 차단, 일일 쿼터, dryRunOnly 스위치, audit log를 명시합니다. "평가 시점에 LLM 호출 없음" 불변조건과 테스트 전략(테스트/프로퍼티 기반/acceptance/replay/smoketest + playtest)을 요약합니다. 개발자 섹션의 npm 스크립트(doctor, build, openai:smoketest, dev)를 갱신하고, starter-rules 개수를 5→6으로 변경합니다. Terms/Privacy 링크를 로컬 경로로, Changelog에 0.1.0 초기 릴리스를 추가합니다. redis-keys.ts의 gap analysis 참조를 제거합니다.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related PRs

  • Two-Weeks-Team/vibe-mod#41: 이 PR에서 삭제되는 docs/postmortems/2026-05-14-openai-400-selection-array.md 파일을 도입했습니다.
  • Two-Weeks-Team/vibe-mod#42: 이 PR에서 삭제되는 scripts/build-final-report.py와 Chrome 검증 산출물을 추가했으며, 확대된 .gitignore와 직접 겹칩니다.

Poem

🐰 임시 노트와 도구 치우며,
공개 문서는 반짝반짝하게 다듬고,
"결정적이고 안전해!" 선언하니,
프로젝트는 한층 깔끔해졌네!
정리 완료, 앞으로 나아가자! 🌟

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PR 제목은 저장소의 주요 변경사항인 '공개 제출을 위한 제품 중심의 저장소 정리'를 명확하게 요약하고 있습니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/repo-product-cleanup

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread README.md
| `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 |
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

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.

Comment thread README.md
| 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 |
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

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.

Comment thread README.md
| `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 |
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

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.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between 4c7b99e and c202074.

⛔ Files ignored due to path filters (9)
  • assets/icon.png is excluded by !**/*.png
  • assets/icon.svg is excluded by !**/*.svg
  • claudedocs/reddit-assets/community-banner-1920x384.png is excluded by !**/*.png
  • claudedocs/reddit-assets/community-icon-256-bg.png is excluded by !**/*.png
  • claudedocs/reddit-assets/community-icon-256.png is excluded by !**/*.png
  • claudedocs/reddit-assets/community-icon-512.png is excluded by !**/*.png
  • claudedocs/reddit-assets/socialseed-original-apple-icon.png is excluded by !**/*.png
  • claudedocs/reddit-assets/socialseed-original-icon.png is excluded by !**/*.png
  • claudedocs/reddit-assets/sprout-logo.svg is excluded by !**/*.svg
📒 Files selected for processing (42)
  • .gitignore
  • HANDOFF.md
  • README.md
  • claudedocs/2026-05-12-session-handoff.md
  • claudedocs/2026-05-13-install-debug-session-handoff.md
  • claudedocs/2026-05-13-openai-400-probe-session-handoff.md
  • claudedocs/2026-05-13-openai-probe-v3-handoff.md
  • claudedocs/2026-05-13-platform-bug-session-handoff.md
  • claudedocs/2026-05-13-reddit-setup-session-handoff.md
  • claudedocs/2026-05-13-session-handoff.md
  • claudedocs/2026-05-14-compose-flow-audit.md
  • claudedocs/2026-05-14-module-split-plan.md
  • claudedocs/2026-05-14-openai-400-final-report.html
  • claudedocs/2026-05-14-openai-400-resolved-handoff.md
  • claudedocs/2026-05-14-ux-best-practices-plan.md
  • claudedocs/2026-05-14-ux-rework-and-republish-handoff.md
  • claudedocs/gap-analysis/00-SUMMARY.md
  • claudedocs/gap-analysis/01-automod-parity.md
  • claudedocs/gap-analysis/02-competitive-landscape.md
  • claudedocs/gap-analysis/03-hackathon-judging.md
  • claudedocs/gap-analysis/04-security-abuse.md
  • claudedocs/gap-analysis/05-code-architecture.md
  • claudedocs/gap-analysis/06-reliability-failure-modes.md
  • claudedocs/gap-analysis/07-moderator-ux.md
  • claudedocs/gap-analysis/08-devvit-idiom.md
  • claudedocs/gap-analysis/09-rule-expressiveness.md
  • claudedocs/gap-analysis/10-demo-storytelling.md
  • claudedocs/gap-analysis/11-test-coverage.md
  • claudedocs/hackathon-audit-20260512-reddit-mod-tools.html
  • claudedocs/reddit-setup-checklist.html
  • docs/README-vibe-mod.md
  • docs/demo-scenario.md
  • docs/devpost-submission.md
  • docs/impact.md
  • docs/new-mod-checklist.md
  • docs/postmortems/2026-05-14-openai-400-selection-array.md
  • docs/release-baseline.md
  • package.json
  • scripts/build-final-report.py
  • scripts/build-icon.ts
  • scripts/dashboard-capture.py
  • src/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

Comment thread README.md
Comment on lines +111 to +119
- **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).
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

🧩 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\(" --count

Repository: 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.

@sgwannabe sgwannabe merged commit e2ca9a8 into main May 24, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant