docs(spec): Sprint 1 plan — 4 SPECs audit-ready#118
Conversation
…-TELEGRAM + TOOLS-WEB + SCHEDULER) GOOSE Sprint 1 (Hermes Agent 추월 8주 로드맵의 첫 sprint) plan phase 완료. 4 SPEC 모두 audit-ready 상태 도달 (총 79 EARS REQs + 60 ACs). ## 신규 SPEC 4종 - SPEC-GOOSE-LLM-ROUTING-V2-001 (P1, 14 REQ + 11 AC) - 15 direct adapter cost/latency/capability-aware 라우팅 + 수동 fallback chain - OpenRouter 미도입 결정 (6개월 후 재평가) - self-audit CONDITIONAL_GO (REQ-003/006 minor gap, 사용자 수용 후 audit-ready) - SPEC-GOOSE-MSG-TELEGRAM-001 (P0, 25 REQ + 11 AC) - Telegram bot ingress + send tool, BRIDGE-001 위 wiring - plan-auditor iter-1 CONDITIONAL_GO → 5 clerical fix → iter-2 PASS (Score 0.91) - SPEC-GOOSE-TOOLS-WEB-001 (P0, 18 REQ + 18 AC) - 8 web 도구 (search/browse/RSS/Wikipedia/ArXiv/maps/wayback/HTTP) - self-audit PASS - SPEC-GOOSE-SCHEDULER-001 (P0, 22 REQ + 20 AC) - Proactive Ritual Scheduler (cron + timezone + holiday + pattern learning hook) - plan-auditor iter-1 PASS (Score 0.92) - RITUAL-MORNING/EVENING (Sprint 3-4) 인프라 ## 산출물 - 20 SPEC 문서 (spec/plan/acceptance/spec-compact/research × 4) - 3 plan-audit reports (.moai/reports/plan-audit/) - 2 status.txt (MSG-TELEGRAM 신규, SCHEDULER 갱신) ## 전략 결정 - LLM 어댑터: 현 15 direct 유지 (OpenRouter 미도입) - 도구 카탈로그: 75개 (멀티미디어/사주/한국특화 별도 백로그, Hermes 40+ 대비 1.9배) - 메시징 우선순위: Telegram → (Sprint 2: Email) → Discord/Slack - 자동 생성: 3-tier (skill + agent + team), Sprint 2-4에서 단계적 도입 ## 다음 단계 각 SPEC /moai run 진입 가능. 권장 순서: 1. TOOLS-WEB-001 (웹 도구 인프라) 2. MSG-TELEGRAM-001 (사용자 채널) 3. LLM-ROUTING-V2-001 (라우팅 v2) 4. SCHEDULER-001 (proactive 인프라) 🗿 MoAI <email@mo.ai.kr>
|
Warning Rate limit exceeded
To keep reviews running without waiting, you can enable usage-based add-on for your organization. This allows additional reviews beyond the hourly cap. Account admins can enable it under billing. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (4)
Walkthrough이 PR은 GOOSE 에이전트의 세 가지 주요 기능(LLM 라우팅 v2, Telegram 메시징, 웹 도구)과 스케줄러 구현을 위한 specification 문서들을 추가합니다. Telegram과 스케줄러 spec에 대한 감사 리뷰 보고서도 포함되어 있습니다. ChangesSPEC-GOOSE-MSG-TELEGRAM-001 (Telegram 메시징 통합)
SPEC-GOOSE-LLM-ROUTING-V2-001 (라우팅 v2 decorator)
SPEC-GOOSE-SCHEDULER-001 (Daily Companion 스케줄러)
SPEC-GOOSE-TOOLS-WEB-001 (웹 도구 카탈로그)
Estimated Code Review Effort🎯 4 (Complex) | ⏱️ ~50 minutes 이유: 이 PR은 18개 이상의 specification 문서를 추가하며, 각 spec은 다음을 포함합니다:
reviewer는 다음을 확인해야 합니다:
문서의 양이 크고 상호 참조가 많아 종합적인 검토가 필요합니다. Suggested Labels
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 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.
Actionable comments posted: 9
🧹 Nitpick comments (9)
.moai/specs/SPEC-GOOSE-MSG-TELEGRAM-001/plan.md (1)
86-102: ⚡ Quick winASCII/의사코드 fenced block에 language를 지정해 주세요.
Line 86, Line 112 코드 블록이 language 없이 열려 markdownlint(MD040) 경고가 납니다.
text를 지정하면 린트/렌더링이 안정적입니다.제안 diff
-``` +```text ┌────────────────────────────────────────────────────────┐ ... └────────────────────────────────────────────────────────┘ -``` +``` -``` +```text Start(ctx, deps): 1. config.Load() → yaml + keyring token ... 9. block until ctx.Done() -``` +```Also applies to: 112-124
🤖 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 @.moai/specs/SPEC-GOOSE-MSG-TELEGRAM-001/plan.md around lines 86 - 102, Two fenced code blocks (the ASCII diagram block near "cmd/goose/cmd/telegram.go (cobra: setup/start/...)" and the pseudocode block beginning "Start(ctx, deps):") are missing a language tag and trigger markdownlint MD040; update their opening fences from ``` to ```text so the blocks are explicitly marked as plain text (apply the same change for the second block around the Start(ctx, deps) pseudocode)..moai/specs/SPEC-GOOSE-MSG-TELEGRAM-001/spec-compact.md (1)
29-46: ⚡ Quick winFenced code block에 language 지정이 필요합니다.
Line 29 코드 블록에 language가 없어 markdownlint(MD040) 경고가 발생합니다. 문서 렌더링/하이라이팅 일관성을 위해
text또는bash등 명시를 권장합니다.제안 diff
-``` +```text internal/messaging/telegram/ ├── bootstrap.go # Start(ctx, deps) entry — daemon hook ... internal/daemon/bootstrap.go # MODIFY: messaging.Start 호출 추가 -``` +```🤖 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 @.moai/specs/SPEC-GOOSE-MSG-TELEGRAM-001/spec-compact.md around lines 29 - 46, The fenced code block containing the directory listing (the block starting with "internal/messaging/telegram/") lacks a language tag and triggers markdownlint MD040; update that block by adding a language identifier such as text (i.e., change the opening fence from ``` to ```text) so the snippet is consistently rendered/highlighted in the spec file (SPEC-GOOSE-MSG-TELEGRAM-001/spec-compact.md)..moai/specs/SPEC-GOOSE-TOOLS-WEB-001/research.md (1)
244-247: ⚡ Quick winSSRF 방지 로직 명확화 필요.
Line 246에서 "본 SPEC 은 이런 IP 를 hard block 하지 않음" 이라고 했다가, line 247에서 "default blocklist 에 포함하여 explicit allow 필요" 라고 하여 약간 모순적입니다.
의도가 "hard block은 아니지만 default blocklist에 포함되어 있어서 사용자가 명시적으로 허용해야 호출 가능" 이라면, 이를 더 명확하게 표현하는 것이 좋겠습니다.
📝 명확성 개선 제안
-본 SPEC 은 이런 IP 를 hard block 하지 않음 (사용자가 의도적으로 로컬 서비스 호출 가능). 그러나 **default blocklist 에 포함하여 explicit allow 필요** 하도록 설계. +본 SPEC 은 이런 IP 를 시스템 레벨에서 hard block 하지 않으나, **default blocklist 에 포함**하여 사용자가 명시적으로 허용(blocklist 에서 제거 또는 override)해야만 호출 가능하도록 설계.🤖 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 @.moai/specs/SPEC-GOOSE-TOOLS-WEB-001/research.md around lines 244 - 247, Clarify the apparent contradiction in section "9.6 SSRF 방지": update the text around "본 SPEC 은 이런 IP 를 hard block 하지 않음" and the following sentence about "**default blocklist 에 포함하여 explicit allow 필요**" to state clearly that http_fetch will not be universally hard-blocked but that these IPs are placed in a default blocklist (so calls are blocked by default) and require an explicit allow action via the PERMISSION-001 Confirmer (include how the Confirmer indicates scope), and mention examples like 127.0.0.1, localhost, 169.254.169.254 and private CIDRs to make the intended behavior unambiguous..moai/specs/SPEC-GOOSE-LLM-ROUTING-V2-001/spec.md (3)
347-355: 💤 Low valueDecision tree 블록에 language identifier 추가 권장
의사결정 트리가 fenced code block으로 작성되었지만 언어 식별자가 누락되었습니다.
text식별자를 추가하면 렌더링이 개선됩니다.제안된 수정
-``` +```text 1. v1.Route(req) → primary/cheap 결정 2. policy.Mode == PreferQuality && chain 없음 → v1 결정 그대로 (v1:simple|complex)🤖 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 @.moai/specs/SPEC-GOOSE-LLM-ROUTING-V2-001/spec.md around lines 347 - 355, The fenced decision-tree code block that starts with "1. v1.Route(req) → primary/cheap 결정" is missing a language identifier; update the opening triple-backtick to include the text language identifier (```text) so the block renders correctly (affects the decision tree lines referencing v1.Route(req) and policy.Mode conditions).
319-330: 💤 Low valuePackage structure 블록에 language identifier 추가 권장
패키지 구조 diagram이 fenced code block으로 작성되었지만 언어 식별자가 누락되었습니다. 디렉터리 구조이므로
text식별자를 추가하는 것이 적절합니다.제안된 수정
-``` +```text internal/llm/router/v2/ ├── policy.go # RoutingPolicy, PolicyMode, ProviderRef🤖 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 @.moai/specs/SPEC-GOOSE-LLM-ROUTING-V2-001/spec.md around lines 319 - 330, The fenced code block that lists the package structure (the block beginning with "internal/llm/router/v2/") is missing a language identifier; update the opening fence from ``` to ```text so the directory tree is treated as plain text (i.e., change the code fence that starts the block containing "internal/llm/router/v2/" to use ```text).
169-177: 💤 Low valueDependency graph 블록에 language identifier 추가 권장
의존성 그래프 diagram이 fenced code block으로 작성되었지만 언어 식별자가 누락되었습니다. ASCII art 형태이므로
text식별자를 추가하면 렌더링이 개선됩니다.제안된 수정
-``` +```text SPEC-GOOSE-LLM-001 (Provider 인터페이스, ProviderCapabilities) └─ SPEC-GOOSE-ROUTER-001 (Smart Routing v1, ProviderRegistry, completed)🤖 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 @.moai/specs/SPEC-GOOSE-LLM-ROUTING-V2-001/spec.md around lines 169 - 177, The fenced dependency graph containing the ASCII art lines beginning with "SPEC-GOOSE-LLM-001 (Provider 인터페이스, ProviderCapabilities)" should have a language identifier added to the opening fence; change the opening "```" to "```text" for that code block (keeping the closing "```") so the diagram (including SPEC-GOOSE-ROUTER-001, SPEC-GOOSE-RATELIMIT-001, SPEC-GOOSE-ERROR-CLASS-001, SPEC-GOOSE-ADAPTER-001/002) renders correctly..moai/specs/SPEC-GOOSE-LLM-ROUTING-V2-001/acceptance.md (1)
199-202: 💤 Low valueTrace 출력 예시 블록에 language identifier 추가 권장
여러 AC 시나리오의 trace 출력 예시가 fenced code block으로 작성되었지만 언어 식별자가 누락되었습니다.
text또는log식별자를 추가하면 렌더링이 개선되고 markdownlint 경고를 해소할 수 있습니다.해당 위치:
- Line 199-202 (AC-RV2-006)
- Line 231-234 (AC-RV2-007)
- Line 266-269 (AC-RV2-008)
- Line 324-328 (AC-RV2-010)
제안된 수정 (예시)
- ``` + ```text v2:fallback_chain_step_1_rate_limit (anthropic, claude-sonnet-4.6, 120ms) v2:fallback_chain_step_2_success (openai, gpt-4o, 230ms)</details> Also applies to: 231-234, 266-269, 324-328 <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.In @.moai/specs/SPEC-GOOSE-LLM-ROUTING-V2-001/acceptance.md around lines 199 -
202, Add a language identifier (e.g., "text" or "log") to the fenced code blocks
that show trace output so markdown renders correctly and linter warnings are
resolved; locate the example blocks referenced by AC IDs AC-RV2-006, AC-RV2-007,
AC-RV2-008, and AC-RV2-010 (the blocks containing lines like
"v2:fallback_chain_step_1_rate_limit (anthropic, claude-sonnet-4.6, 120ms) ...")
and change the opening fences fromtotext (or ```log).</details> </blockquote></details> <details> <summary>.moai/specs/SPEC-GOOSE-LLM-ROUTING-V2-001/plan.md (1)</summary><blockquote> `283-294`: _💤 Low value_ **Fenced code block에 language identifier 추가 권장** plan_complete signal 블록이 언어 식별자 없이 정의되어 있습니다. `yaml` 또는 `text`를 명시하면 렌더링 및 린터 경고를 해소할 수 있습니다. <details> <summary>제안된 수정</summary> ```diff -``` +```yaml <moai>plan_complete</moai> SPEC: SPEC-GOOSE-LLM-ROUTING-V2-001 ``` </details> <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.In @.moai/specs/SPEC-GOOSE-LLM-ROUTING-V2-001/plan.md around lines 283 - 294,
The fenced code block containing the plan_complete signal is
missing a language identifier; update the opening fence for that block fromtoyaml (or ```text) so the block is explicitly typed (e.g., change the
triple-backtick that begins the block with a language identifier), ensuring
linters and renderers treat it correctly and preserve the existing block
contents.</details> </blockquote></details> <details> <summary>.moai/specs/SPEC-GOOSE-LLM-ROUTING-V2-001/spec-compact.md (1)</summary><blockquote> `63-80`: _💤 Low value_ **Table 블록에 language identifier 추가 권장** Capability matrix와 pricing table이 fenced code block으로 작성되었지만 언어 식별자가 누락되었습니다. 테이블 형태이므로 `text` 식별자를 추가하면 렌더링이 개선되고 markdownlint 경고를 해소할 수 있습니다. 해당 위치: - Line 63-80 (Capability matrix) - Line 86-105 (Pricing table) <details> <summary>제안된 수정 (예시)</summary> ```diff -``` +```text prompt_cache func_call vision realtime anthropic ✅ ✅ ✅ ❌ ``` </details> Also applies to: 86-105 <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.In @.moai/specs/SPEC-GOOSE-LLM-ROUTING-V2-001/spec-compact.md around lines 63 -
80, The fenced code blocks containing the capability matrix and the pricing
table currently lack a language identifier; update the opening backticks for
those table blocks (the triple-backtick blocks that wrap the "prompt_cache
func_call vision realtime" matrix and the subsequent pricing table) to include
the text identifier (i.e. changetotext) so markdown rendering and
markdownlint warnings are fixed.</details> </blockquote></details> </blockquote></details> <details> <summary>🤖 Prompt for all review comments with AI agents</summary>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 @.moai/reports/plan-audit/SPEC-GOOSE-MSG-TELEGRAM-001-review-2.md:
- Line 146: 문서의 감사 리포트 작성일이 미래 날짜로 잘못 기록되어 있습니다: 찾아서 "Report written:
2026-05-06" 항목을 현재 기준 실제 작성일인 "Report written: 2026-05-05"로 수정하세요 (파일 내 해당 텍스트을
검색해 교체; 참조 텍스트: "Report written: 2026-05-06").In @.moai/reports/plan-audit/SPEC-GOOSE-SCHEDULER-001-review-1.md:
- Line 25: Update the report's metadata field "status" (currently set as
status: draft) to the current SPEC stateaudit-readyso the MP-3 evidence
line matches the actual SPEC status; locate thestatusentry in the document
header/metadata (thestatus: draftline referenced in the review) and replace
the value withaudit-ready.In @.moai/specs/SPEC-GOOSE-LLM-ROUTING-V2-001/spec-compact.md:
- Line 5: The SPEC metadata in spec-compact.md for SPEC-GOOSE-LLM-ROUTING-V2-001
has status=draft which conflicts with spec.md (status=audit-ready) and PR
objectives; update the Meta line for id=SPEC-GOOSE-LLM-ROUTING-V2-001 in
spec-compact.md to status=audit-ready so both files and PR objectives match,
leaving the rest of the Meta fields unchanged and ensure no other compact SPECs
have mismatched statuses.In @.moai/specs/SPEC-GOOSE-MSG-TELEGRAM-001/spec.md:
- Line 247: The table's code span containing setup|start|status|approve|revoke
is breaking Markdown table parsing because the pipe characters are unescaped;
update the cell that currently showscmd/goose/cmd/telegram.goand the inline
code span to either escape each pipe as\|(i.e.,
setup\|start\|status\|approve\|revoke) or replace the inline backtick code
span with an HTML code element like
setup|start|status|approve|revokeso the table columns render
correctly; search for the exact text "setup|start|status|approve|revoke" in the
spec to locate and fix the issue.- Line 278: The table row for "R2" contains the Telegram reserved-char code span
that currently includes an unescaped pipe character; escape the pipe by changing
'|' to '|' inside that code span (the reserved-char list that includes_ * [ ] ( ) ~ \> # + - = | { } . !`) so the Markdown table column parsing is preserved
and MD056 is avoided—update the code span in the spec.md table row for R2
accordingly.In @.moai/specs/SPEC-GOOSE-SCHEDULER-001/acceptance.md:
- Around line 268-270: Update AC-SCHED-018(a) to remove the ambiguous "or panic"
wording and state a single deterministic outcome: when theFastForwardsymbol
(andErrFastForwardNotAvailable) are gated by//go:build test_only, a
production build must fail at compile/link time (no runtime panic possible).
Ensure the text explicitly says the symbol is not linked in production builds
and that absence causes a compile/link error, and keep the existing check
sentence about verifying file-level gating with//go:build test_only.In @.moai/specs/SPEC-GOOSE-SCHEDULER-001/plan.md:
- Around line 34-40: 파일의 두 개의 펜스드 코드블록(하나는 ASCII 아트 다이어그램 "P1 (cron +
persistence) ... P4 (catchup ...)"을 포함하는 블록, 다른 하나는 "key = fmt.Sprintf..." 예시를
포함하는 블록)에 언어 식별자를 추가하여 markdownlint MD040 경고를 제거하세요; 구체적으로 각각의 시작을text 로
변경해 펜스 코드블록에 language="text"를 지정하면 됩니다.In @.moai/specs/SPEC-GOOSE-SCHEDULER-001/spec-compact.md:
- Line 81: 문구 "다음 단계: plan-auditor 라운드 1 → PASS 시 status
draft → audit-ready"가
현재 문서의 메타데이터(audit-ready)와 모순됩니다; 해당 "다음 단계" 문구를 현재 상태 기준으로 갱신하세요 — 즉 파일 내 "다음
단계" 라인(현재draft → audit-ready표기)을 찾아draft → audit-ready를 현재 메타데이터에 맞는
전환(예:audit-ready → <다음_상태>또는 리포지토리에 정의된 실제 다음 상태명)으로 교체하고, 필요하면 "현재 상태:
audit-ready" 같은 짧은 문구를 추가해 혼동을 없애세요.- Around line 45-47: The compact summary table's AC mappings for the
"Event-Driven (5)" and "State-Driven (3)" rows are inconsistent with the
canonical Coverage Map: update the "Event-Driven (5)" row to list AC-002,
AC-003, AC-004, AC-009, AC-011 and update the "State-Driven (3)" row to list
AC-006, AC-012 so the compact table matches the canonical mapping (ensure AC-003
and AC-006 are moved to the correct rows).
Nitpick comments:
In @.moai/specs/SPEC-GOOSE-LLM-ROUTING-V2-001/acceptance.md:
- Around line 199-202: Add a language identifier (e.g., "text" or "log") to the
fenced code blocks that show trace output so markdown renders correctly and
linter warnings are resolved; locate the example blocks referenced by AC IDs
AC-RV2-006, AC-RV2-007, AC-RV2-008, and AC-RV2-010 (the blocks containing lines
like "v2:fallback_chain_step_1_rate_limit (anthropic, claude-sonnet-4.6, 120ms)
...") and change the opening fences fromtotext (or ```log).In @.moai/specs/SPEC-GOOSE-LLM-ROUTING-V2-001/plan.md:
- Around line 283-294: The fenced code block containing the
plan_complete signal is missing a language identifier; update the
opening fence for that block fromtoyaml (or ```text) so the block is
explicitly typed (e.g., change the triple-backtick that begins the block with a
language identifier), ensuring linters and renderers treat it correctly and
preserve the existing block contents.In @.moai/specs/SPEC-GOOSE-LLM-ROUTING-V2-001/spec-compact.md:
- Around line 63-80: The fenced code blocks containing the capability matrix and
the pricing table currently lack a language identifier; update the opening
backticks for those table blocks (the triple-backtick blocks that wrap the
"prompt_cache func_call vision realtime" matrix and the subsequent pricing
table) to include the text identifier (i.e. changetotext) so markdown
rendering and markdownlint warnings are fixed.In @.moai/specs/SPEC-GOOSE-LLM-ROUTING-V2-001/spec.md:
- Around line 347-355: The fenced decision-tree code block that starts with "1.
v1.Route(req) → primary/cheap 결정" is missing a language identifier; update the
opening triple-backtick to include the text language identifier (```text) so the
block renders correctly (affects the decision tree lines referencing
v1.Route(req) and policy.Mode conditions).- Around line 319-330: The fenced code block that lists the package structure
(the block beginning with "internal/llm/router/v2/") is missing a language
identifier; update the opening fence fromtotext so the directory tree
is treated as plain text (i.e., change the code fence that starts the block
containing "internal/llm/router/v2/" to use ```text).- Around line 169-177: The fenced dependency graph containing the ASCII art
lines beginning with "SPEC-GOOSE-LLM-001 (Provider 인터페이스, ProviderCapabilities)"
should have a language identifier added to the opening fence; change the opening
"" to "text" for that code block (keeping the closing "```") so the
diagram (including SPEC-GOOSE-ROUTER-001, SPEC-GOOSE-RATELIMIT-001,
SPEC-GOOSE-ERROR-CLASS-001, SPEC-GOOSE-ADAPTER-001/002) renders correctly.In @.moai/specs/SPEC-GOOSE-MSG-TELEGRAM-001/plan.md:
- Around line 86-102: Two fenced code blocks (the ASCII diagram block near
"cmd/goose/cmd/telegram.go (cobra: setup/start/...)" and the pseudocode block
beginning "Start(ctx, deps):") are missing a language tag and trigger
markdownlint MD040; update their opening fences fromtotext so the
blocks are explicitly marked as plain text (apply the same change for the second
block around the Start(ctx, deps) pseudocode).In @.moai/specs/SPEC-GOOSE-MSG-TELEGRAM-001/spec-compact.md:
- Around line 29-46: The fenced code block containing the directory listing (the
block starting with "internal/messaging/telegram/") lacks a language tag and
triggers markdownlint MD040; update that block by adding a language identifier
such as text (i.e., change the opening fence fromtotext) so the snippet
is consistently rendered/highlighted in the spec file
(SPEC-GOOSE-MSG-TELEGRAM-001/spec-compact.md).In @.moai/specs/SPEC-GOOSE-TOOLS-WEB-001/research.md:
- Around line 244-247: Clarify the apparent contradiction in section "9.6 SSRF
방지": update the text around "본 SPEC 은 이런 IP 를 hard block 하지 않음" and the
following sentence about "default blocklist 에 포함하여 explicit allow 필요" to
state clearly that http_fetch will not be universally hard-blocked but that
these IPs are placed in a default blocklist (so calls are blocked by default)
and require an explicit allow action via the PERMISSION-001 Confirmer (include
how the Confirmer indicates scope), and mention examples like 127.0.0.1,
localhost, 169.254.169.254 and private CIDRs to make the intended behavior
unambiguous.</details> <details> <summary>🪄 Autofix (Beta)</summary> Fix all unresolved CodeRabbit comments on this PR: - [ ] <!-- {"checkboxId": "4b0d0e0a-96d7-4f10-b296-3a18ea78f0b9"} --> Push a commit to this branch (recommended) - [ ] <!-- {"checkboxId": "ff5b1114-7d8c-49e6-8ac1-43f82af23a33"} --> Create a new PR with the fixes </details> --- <details> <summary>ℹ️ Review info</summary> <details> <summary>⚙️ Run configuration</summary> **Configuration used**: Path: .coderabbit.yaml **Review profile**: CHILL **Plan**: Pro **Run ID**: `712a5679-cd37-4964-9a19-e35d0c1b0872` </details> <details> <summary>📥 Commits</summary> Reviewing files that changed from the base of the PR and between ed4570186ee316c820a733128dfbea46444c3538 and e2f4123c2b89dc856a0428e9043e0448f637de1b. </details> <details> <summary>📒 Files selected for processing (24)</summary> * `.moai/reports/plan-audit/SPEC-GOOSE-MSG-TELEGRAM-001-review-1.md` * `.moai/reports/plan-audit/SPEC-GOOSE-MSG-TELEGRAM-001-review-2.md` * `.moai/reports/plan-audit/SPEC-GOOSE-SCHEDULER-001-review-1.md` * `.moai/specs/SPEC-GOOSE-LLM-ROUTING-V2-001/acceptance.md` * `.moai/specs/SPEC-GOOSE-LLM-ROUTING-V2-001/plan.md` * `.moai/specs/SPEC-GOOSE-LLM-ROUTING-V2-001/research.md` * `.moai/specs/SPEC-GOOSE-LLM-ROUTING-V2-001/spec-compact.md` * `.moai/specs/SPEC-GOOSE-LLM-ROUTING-V2-001/spec.md` * `.moai/specs/SPEC-GOOSE-MSG-TELEGRAM-001/acceptance.md` * `.moai/specs/SPEC-GOOSE-MSG-TELEGRAM-001/plan.md` * `.moai/specs/SPEC-GOOSE-MSG-TELEGRAM-001/research.md` * `.moai/specs/SPEC-GOOSE-MSG-TELEGRAM-001/spec-compact.md` * `.moai/specs/SPEC-GOOSE-MSG-TELEGRAM-001/spec.md` * `.moai/specs/SPEC-GOOSE-MSG-TELEGRAM-001/status.txt` * `.moai/specs/SPEC-GOOSE-SCHEDULER-001/acceptance.md` * `.moai/specs/SPEC-GOOSE-SCHEDULER-001/plan.md` * `.moai/specs/SPEC-GOOSE-SCHEDULER-001/spec-compact.md` * `.moai/specs/SPEC-GOOSE-SCHEDULER-001/spec.md` * `.moai/specs/SPEC-GOOSE-SCHEDULER-001/status.txt` * `.moai/specs/SPEC-GOOSE-TOOLS-WEB-001/acceptance.md` * `.moai/specs/SPEC-GOOSE-TOOLS-WEB-001/plan.md` * `.moai/specs/SPEC-GOOSE-TOOLS-WEB-001/research.md` * `.moai/specs/SPEC-GOOSE-TOOLS-WEB-001/spec-compact.md` * `.moai/specs/SPEC-GOOSE-TOOLS-WEB-001/spec.md` </details> </details> <!-- This is an auto-generated comment by CodeRabbit for review status -->
- §목적 첫 줄의 GOOSE-AGENT (백틱 외부) 를 AI.GOOSE 로 치환 - scripts/check-brand.sh 로컬 통과 확인 (0 violations) - PR #118 Brand Notation Check FAILURE 해소용 SPEC: SPEC-GOOSE-TOOLS-WEB-001 🗿 MoAI <email@mo.ai.kr>
CodeRabbit review 지적 중 자명한 drift 3건을 spec.md (정본) 기준으로 정정: - SPEC-GOOSE-LLM-ROUTING-V2-001/spec-compact.md:5 Meta status=draft → audit-ready (spec.md L4 정본과 동기화, Critical drift 해소) - .moai/reports/plan-audit/SPEC-GOOSE-MSG-TELEGRAM-001-review-2.md:146 Report written 2026-05-06 → 2026-05-05 (실제 작성일 보정) - .moai/reports/plan-audit/SPEC-GOOSE-SCHEDULER-001-review-1.md:25 MP-3 인용값 status: draft → audit-ready (spec.md L4 정본과 동기화) Cosmetic markdownlint 경고(MD040/MD056), AC mapping 정정, AC-018 단일경로화는 별도 hygiene PR 또는 후속 sync 에서 처리. SPEC: SPEC-GOOSE-LLM-ROUTING-V2-001, SPEC-GOOSE-MSG-TELEGRAM-001, SPEC-GOOSE-SCHEDULER-001 🗿 MoAI <email@mo.ai.kr>
Summary
GOOSE Sprint 1 (Hermes Agent 추월 8주 로드맵의 첫 sprint) plan phase 완료. 4 SPEC 모두 audit-ready (총 79 EARS REQs + 60 ACs).
4 신규 SPECs
전략 결정 (이번 plan phase에서 결정된 사항)
산출물 (24 files, 6,107 insertions)
Test Plan
Next Steps (After Merge)
각 SPEC /moai run 진입 가능. 권장 순서:
관련 SPECs (예정)
🗿 MoAI email@mo.ai.kr
Summary by CodeRabbit
릴리스 노트