Skip to content

fix(tools): remove canned source-derived tools - #1302

Draft
seonghobae wants to merge 7 commits into
fix/remove-unsafe-phishing-detectorfrom
fix/remove-canned-source-derived-tools
Draft

fix(tools): remove canned source-derived tools#1302
seonghobae wants to merge 7 commits into
fix/remove-unsafe-phishing-detectorfrom
fix/remove-canned-source-derived-tools

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Customer and safety outcome

Remove four built-in handlers that returned source-independent canned thread, task, relationship, and meeting outputs. Signed-session catalog/detail/execute paths omit those codes and return 404 Tool not found; no template, cached fixture, default-success, keyword, or phrase-table fallback is installed. #1300 mutation tombstones and #1301 phishing-detector absence remain unchanged.

Current stacked authority

  • protected root: develop@042b0c70531b229af3acbd0421a2f23098d848b3
  • direct parent: fix(tools): remove unsafe phishing detector #1301 fix/remove-unsafe-phishing-detector@ae299ce9287893fce4046e2b015cfe4dba9067c4
  • ancestor: fix(tools): fail closed on unsafe global tool mutations #1300 fix/fail-closed-tool-mutations@0833fcbdba583b3c508620e5a09ccca060ab40e6
  • exact head: 8739454f2e6e2ae6be742ee82f66cff103b28b90
  • lifecycle: Draft / mergeable / stacked prerequisites unresolved / exact-head hosted evidence and approval required
  • effective child files: CHANGELOG.md, backend/api/tools.py, backend/tests/test_tools_api.py

Non-force parent restack

#1301 advanced from 050ee158... to ae299ce... to adopt #1300's canonical AGENTS.md ownership repair. This branch had already merged 050ee158... at a39ba78d.... Commit 8739454f... performs a normal two-parent merge with the new #1301 head and resolves that parent-only documentation change by taking the parent's AGENTS.md blob. All canned-tool product changes are preserved.

The result keeps the whole #1300#1301#1302 stack out of parallel AGENTS.md ownership: this PR now has only three effective product files. Predecessor checks/reviews do not transfer.

Removed built-ins

  • thread_summarizer — fixed summary/key-points/questions with only the supplied thread ID interpolated;
  • action_item_extractor — the same tasks and stale fixed due dates for every source;
  • sender_dag_analytics — the same organization role, relation, and interaction count;
  • meeting_candidate_finder — fixed meeting candidates independent of source evidence.

These outputs could create fictitious decisions, work, organizational relationships, and calendar entries. Safe behavior is absence until source-bound evidence and an actual provider or disclosed deterministic transformation exist.

For every removed code on clean startup, catalog omission plus 404 Tool not found on detail/execute is the required contract. A future implementation must resolve an authorized immutable source snapshot, invoke a real tenant-scoped provider or deterministic disclosed source transformation, return typed provenance/evidence, validate output schema, and fail closed on missing source/provider evidence. Fixed examples may not be reused as production results.

Verification boundary

The new head invalidates predecessor local/hosted checks and reviews. Regenerate current-head repository and organization required evidence once the stacked prerequisite chain is executable. Do not use dummy commits, self-approval, bypass, or predecessor status transfer.

Merge boundary

Keep Draft until #1300/#1301 and their upstream prerequisite are protected-integrated or completely succeeded, this unchanged final head has every then-live required check terminal-success, all valid findings/threads are resolved, and qualifying post-last-push independent approval exists. No force-push, destructive rebase, self-approval, admin bypass, review dismissal/fabrication, gate weakening, dummy/no-op requeue commit, parallel docs ownership, or predecessor-evidence transfer.

@coderabbitai

coderabbitai Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

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.

@opencode-agent opencode-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

OpenCode cannot approve yet because required coverage evidence did not pass.

Review outcome

1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence

  • Problem: The required coverage-evidence job result was failure, so OpenCode cannot establish approval sufficiency for this head.

  • Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.

  • Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports success with required evidence or explicit no-source not-applicable evidence.

  • Regression test: Keep the approval branch checking needs.coverage-evidence.result == success before posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present.

  • Result: REQUEST_CHANGES

  • Reason: coverage-evidence result was failure, so required test/docstring evidence was not proven for current head 8d50d677a46e9e331d0d0d19cf08f85e3052dfed.

  • Head SHA: 8d50d677a46e9e331d0d0d19cf08f85e3052dfed

  • Workflow run: 31701653311

  • Workflow attempt: 1

Coverage evidence

Coverage evidence job did not run or did not publish coverage evidence.

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Changed file (2 files)"]
  S1 --> I1["repository behavior"]
  I1 --> R1["Review risk: Changed file (2 files)"]
  R1 --> V1["required checks"]
  Evidence --> S2["Backend (2 files)"]
  S2 --> I2["API and service runtime"]
  I2 --> R2["Review risk: Backend (2 files)"]
  R2 --> V2["backend tests"]
Loading

@opencode-agent

Copy link
Copy Markdown
Contributor

OpenCode Review Overview

  • Head SHA: 8d50d677a46e9e331d0d0d19cf08f85e3052dfed
  • Workflow run: 31701653311
  • Workflow attempt: 1
  • Gate result: REQUEST_CHANGES (approval step)

Pull request overview

OpenCode cannot approve yet because required coverage evidence did not pass.

Review outcome

1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence

  • Problem: The required coverage-evidence job result was failure, so OpenCode cannot establish approval sufficiency for this head.

  • Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.

  • Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports success with required evidence or explicit no-source not-applicable evidence.

  • Regression test: Keep the approval branch checking needs.coverage-evidence.result == success before posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present.

  • Result: REQUEST_CHANGES

  • Reason: coverage-evidence result was failure, so required test/docstring evidence was not proven for current head 8d50d677a46e9e331d0d0d19cf08f85e3052dfed.

  • Head SHA: 8d50d677a46e9e331d0d0d19cf08f85e3052dfed

  • Workflow run: 31701653311

  • Workflow attempt: 1

Coverage evidence

Coverage evidence job did not run or did not publish coverage evidence.

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Changed file (2 files)"]
  S1 --> I1["repository behavior"]
  I1 --> R1["Review risk: Changed file (2 files)"]
  R1 --> V1["required checks"]
  Evidence --> S2["Backend (2 files)"]
  S2 --> I2["API and service runtime"]
  I2 --> R2["Review risk: Backend (2 files)"]
  R2 --> V2["backend tests"]
Loading

@github-actions

github-actions Bot commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

PR governance metadata gate is not ready for 2ee0c65097c78a99849fc749a3a848440c50271c:

  • Draft PR: merge automation is paused.
  • Review decision is CHANGES_REQUESTED; address requested changes before merge.

…onto live #1301

Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
@seonghobae

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Please review the unchanged exact current head 2ee0c65097c78a99849fc749a3a848440c50271c (normal merge of live parent #1301 646a2401). Predecessor 866e97f1 evidence does not transfer. Local tools tests: 73 passed. Keep Draft. This comment is not an approval.

@coderabbitai

coderabbitai Bot commented Aug 17, 2026

Copy link
Copy Markdown
Contributor
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '== Exact HEAD and parents =='
git rev-parse HEAD
git show -s --format='commit=%H%nparents=%P%nsubject=%s' HEAD
git diff --name-status 646a2401de35529425163fdefa7ad5e6355c349f HEAD
git diff --check 646a2401de35529425163fdefa7ad5e6355c349f HEAD

echo '== Scoped diff =='
git diff --unified=40 646a2401de35529425163fdefa7ad5e6355c349f HEAD -- \
  AGENTS.md CHANGELOG.md backend/api/tools.py backend/tests/test_tools_api.py

echo '== tools.py outline =='
ast-grep outline backend/api/tools.py --items all --view expanded || true

echo '== Removed-code references and tool handler registrations =='
rg -n -C 4 \
  -e '\b(thread_summarizer|action_item_extractor|sender_dag_analytics|meeting_candidate_finder)\b' \
  -e 'TOOL_HANDLERS|TOOL_CATALOG|tool.*catalog|register.*tool|execute.*tool' \
  backend/api/tools.py backend/tests/test_tools_api.py

echo '== Router and handler context =='
rg -n -C 12 \
  -e '^(async )?def (list_tools|get_tool|execute_tool)\b' \
  -e 'HTTPException' \
  -e 'Tool not found' \
  backend/api/tools.py

Length of output: 59317


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '== Repository-wide references to removed codes =='
rg -n -C 3 \
  -g '!CHANGELOG.md' -g '!AGENTS.md' \
  -e '\b(thread_summarizer|action_item_extractor|sender_dag_analytics|meeting_candidate_finder)\b' \
  .

echo '== Tool registrations in current source =='
ast-grep run \
  --pattern 'registry.register($INFO, $HANDLER)' \
  --lang python \
  backend/api/tools.py

echo '== Tool registry and route implementation =='
sed -n '105,165p;570,675p' backend/api/tools.py

echo '== Import and route wiring for tools router =='
rg -n -C 4 \
  -e 'from api\.tools import' \
  -e 'include_router\(.*tools' \
  -e 'tools\.router' \
  backend

echo '== Pull request state and exact-head checks =='
gh pr view 1302 --repo ContextualWisdomLab/naruon \
  --json number,isDraft,headRefOid,baseRefName,headRefName,mergeStateStatus,statusCheckRollup \
  --jq '{number,isDraft,headRefOid,baseRefName,headRefName,mergeStateStatus,checks:[.statusCheckRollup[]|{name,status,conclusion,detailsUrl}]}'

Length of output: 23693


🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ContextualWisdomLab/naruon"
sha="2ee0c65097c78a99849fc749a3a848440c50271c"

echo '== Failed workflow run =='
gh run view 32072753332 --repo "$repo" --log-failed || true

echo '== Exact-head check runs =='
gh api \
  -H 'Accept: application/vnd.github+json' \
  "/repos/$repo/commits/$sha/check-runs?per_page=100" \
  --jq '.check_runs[] | {
    name,
    status,
    conclusion,
    started_at,
    completed_at,
    details_url,
    output_title: .output.title,
    output_summary: .output.summary
  }'

echo '== Exact-head commit statuses =='
gh api \
  -H 'Accept: application/vnd.github+json' \
  "/repos/$repo/commits/$sha/status" \
  --jq '{state, statuses: [.statuses[] | {context, state, target_url, description}]}'

Length of output: 1897


@seonghobae Review complete for exact head 2ee0c65097c78a99849fc749a3a848440c50271c.

I found no actionable code defects in the four-file diff against live parent #1301.

The four removed codes have no remaining application references or registry registrations. The catalog, detail, and execute routes use the registry. Therefore, each removed code returns the required 404 {"detail":"Tool not found"}. The updated tests cover signed-session catalog, detail, and execute absence contracts for all four codes.

git diff --check passed. I could not execute the test suite in this inspection sandbox.

PR #1302 remains Draft. The exact-head metadata-only gate evaluation check failed because Draft PR merge automation is paused and the review state is CHANGES_REQUESTED. Do not treat this as final-base success evidence. Revalidate the unchanged head after retargeting to develop.

No approval is issued.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@opencode-agent opencode-agent Bot added priority: medium Normal-priority or P2 work status: draft Draft pull request type: bug Defect or incorrect behavior labels Aug 22, 2026
@seonghobae

Copy link
Copy Markdown
Contributor Author

Exact head a39ba78d05d71f4d45bd7fe029b59f686e8cc2e3를 repaired parent #1301(050ee1588090952c2c9058c4cb596851ee35cad7)에 ordinary merge로 non-force restack하고 base를 fix/remove-unsafe-phishing-detector로 retarget했습니다. 고유 child delta는 AGENTS.md, CHANGELOG.md, tools API, tools tests의 4파일입니다.

현재 parent 계약을 포함한 focused suite 75개가 -W error로 통과했고 Ruff와 diff check도 통과했습니다. #1565#1300#1301 선행 stack이 보호 병합될 때까지 Draft를 유지하며 과거 head 증거는 승계하지 않습니다.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 5, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-05T05:46:31.546078Z 8739454 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working priority: medium Normal-priority or P2 work status: draft Draft pull request type: bug Defect or incorrect behavior

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants