fix(search): hide internal relationship plumbing - #1603
Conversation
Signed-off-by: Seongho Bae <me@seonghobae.me>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (10)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughThe relationship panel now maps bounded actions to customer-facing copy and hides raw identifiers and rationale text. Frontend dependency versions and lockfile validation now enforce reviewed Next.js and sharp security floors. ChangesRelationship UI copy
Frontend dependency security floors
Priority: ➖ Normal Estimated code review effort: 3 (Moderate) | ~20 minutes Merge Risk: ⚪ Minimal · up to No concrete merge-blocking code risk remains in the finalized review. 🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✨ 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 |
|
Local Visual Inspection receipt for exact head |
|
Design assurance exact-head acceptance — The positive-allowlist repair and the new customer-facing relationship-load error are valid and preserved. Current acceptance is still FAIL/not merge-ready for three source-contract reasons:
Fresh exact-head App CI, CodeQL, Security, Semgrep, Bandit, and image workflows are queued. Preserve the source/API domain values and repair only the presentation ACL plus real production-shaped fixtures/E2E. Then re-run desktop/mobile/intermediate keyboard/AT/scroll/reload/retry evidence and all eight locales. Ready is review admission, not merge readiness; no predecessor result transfers. |
Signed-off-by: Seongho Bae <me@seonghobae.me>
|
Exact head: Root-cause repair completed:
Verification:
|
|
Visual Inspection receipt for exact head
This remains Draft until all current required Checks and qualifying review evidence are complete. |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
@coderabbitai review Exact review target: |
🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
echo '== checked-out commit =='
git rev-parse HEAD
git status --short
echo '== commits and diff summary from protected base =='
git log --oneline --decorate 042b0c70531b229af3acbd0421a2f23098d848b3..HEAD
git diff --stat 042b0c70531b229af3acbd0421a2f23098d848b3..HEAD
git diff --find-renames --unified=80 042b0c70531b229af3acbd0421a2f23098d848b3..HEAD -- \
frontend/src/components/SearchLayout.tsx \
frontend/src/components/SearchLayout.test.tsx \
frontend/src/app/search/page.test.tsx \
frontend/scripts/full-product-ui-smoke.mjs
echo '== SearchLayout structure =='
ast-grep outline frontend/src/components/SearchLayout.tsx --items all --view expanded
ast-grep outline frontend/src/components/SearchLayout.test.tsx --items all --view expanded
ast-grep outline frontend/src/app/search/page.test.tsx --items all --view expanded
echo '== customer-copy rendering references =='
rg -n -C 5 --glob '*.tsx' --glob '*.ts' \
'customerFacingRelationshipText|relationshipAction|sender_context|reply_count|source[_ -]?(id|thread)|Ontology|API|DAG|Timeline' \
frontend/src frontend/scripts
echo '== pull request state and current checks =='
gh pr view 1603 --repo ContextualWisdomLab/naruon \
--json number,state,isDraft,headRefOid,reviewDecision,reviews,statusCheckRollup,urlLength of output: 236852
I found one customer-copy issue.
The positive allowlist in I did not transfer any predecessor approval. I cannot approve while the CodeQL compatibility checks are failed and the
|
Signed-off-by: Seongho Bae <me@seonghobae.me>
|
Exact head
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 622dc08d92
ℹ️ 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".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
Pull request overview
OpenCode reviewed the current-head product diff. Coverage is a separate gate.
Changed files
frontend/scripts/full-product-ui-smoke.mjs— browser runtime and bundlefrontend/src/app/search/page.test.tsx— browser runtime and bundlefrontend/src/components/SearchLayout.test.tsx— browser runtime and bundlefrontend/src/components/SearchLayout.tsx— browser runtime and bundle
Changed behavior
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Frontend: full-product-ui-smoke.mjs (4 files)"]
S1 --> I1["browser runtime and bundle"]
I1 --> R1["Review risk: Frontend: full-product-ui-smoke.mjs (4 files)"]
R1 --> V1["frontend tests"]
Findings
No source-backed product finding is synthesized from the coverage gate. A coverage miss belongs in the status comment.
- Head SHA:
2bbc5e4c57ea040f690a37b5404c03c71ddedb36 - Workflow run: 34209454135
- Workflow attempt: 1
- Coverage gate:
failure
Review outcome
Coverage is a gate, not the review. This body reviews the changed product files.
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Frontend: full-product-ui-smoke.mjs (4 files)"]
S1 --> I1["browser runtime and bundle"]
I1 --> R1["Review risk: Frontend: full-product-ui-smoke.mjs (4 files)"]
R1 --> V1["frontend tests"]
OpenCode Review Overview
Coverage evidence did not pass, so approval is blocked. The formal pull-request review is the source-backed diff review, not this status comment. |
|
Current-head gate evidence: head |
|
@coderabbitai review 현재 exact head는 |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
base="042b0c70531b229af3acbd0421a2f23098d848b3"
head="2bbc5e4c57ea040f690a37b5404c03c71ddedb36"
echo '== Repository state =='
git rev-parse HEAD
git status --short
git merge-base --is-ancestor "$base" "$head" && echo "base is ancestor of review head"
git show -s --format='%H%n%P%n%s' "$head"
echo '== Scoped diff from protected base =='
git diff --find-renames --unified=50 "$base..$head" -- \
frontend/src/components/SearchLayout.tsx \
frontend/src/components/SearchLayout.test.tsx \
frontend/src/app/search/page.test.tsx \
frontend/scripts/full-product-ui-smoke.mjs
echo '== SearchLayout structure =='
ast-grep outline frontend/src/components/SearchLayout.tsx --items all --view expanded
ast-grep outline frontend/src/components/SearchLayout.test.tsx --items all --view expanded
ast-grep outline frontend/src/app/search/page.test.tsx --items all --view expanded
echo '== Customer-copy render paths and test assertions =='
rg -n -C 8 --glob '*.{ts,tsx,mjs}' \
'customerFacingRelationshipText|relationshipAction|relationshipType|next_action|nextAction|sender_context|reply_count|source[_ -]?(id|thread)|Ontology|API|DAG|Timeline|발신자 관계|활동 흐름|답장 [0-9]+건|메일 흐름 연결됨' \
frontend/src frontend/scripts
echo '== Production relationship/action value producers =='
rg -n -C 8 --glob '*.{ts,tsx}' \
'Colleague|summarize_then_archive|track_reply_and_tasks|prepare_response_draft|classify_sender|relationship_type|relationshipType|next_action|nextAction' \
frontend/srcLength of output: 201247 🏁 Script executed: #!/bin/bash
set -euo pipefail
echo '== SearchLayout mapping and relationship rendering =='
nl -ba frontend/src/components/SearchLayout.tsx | sed -n '55,95p;245,310p;520,575p'
echo '== Focused component regressions =='
nl -ba frontend/src/components/SearchLayout.test.tsx | sed -n '90,250p'
echo '== Focused Search page fixture and assertions =='
nl -ba frontend/src/app/search/page.test.tsx | sed -n '90,190p;290,390p'
echo '== Search smoke contract =='
rg -n -C 6 \
'search|relationship|발신자 관계|DAG|Ontology|thread-q2|track_reply_and_tasks|source_message_id|source_thread_id|sender_context|reply_count' \
frontend/scripts/full-product-ui-smoke.mjs
echo '== Source producers, limited to non-test code =='
rg -n -C 5 --glob '*.{ts,tsx,py}' \
'relationship_type["'\'']?\s*[:=]\s*["'\''](Colleague|colleague)|next_action["'\'']?\s*[:=]\s*["'\''](summarize_then_archive|track_reply_and_tasks|prepare_response_draft|classify_sender)|Colleague|summarize_then_archive|track_reply_and_tasks|prepare_response_draft|classify_sender' \
--glob '!**/*.test.*' --glob '!**/node_modules/**' .
echo '== Current diff for successor commit =='
git diff --unified=30 622dc08d9228b38049fb287c4d77a96ac29cf772..2bbc5e4c57ea040f690a37b5404c03c71ddedb36 -- \
frontend/src/components/SearchLayout.tsx \
frontend/src/components/SearchLayout.test.tsxLength of output: 1740 🏁 Script executed: #!/bin/bash
set -euo pipefail
show_lines() {
local file="$1"
local ranges="$2"
awk -v ranges="$ranges" '
BEGIN {
count=split(ranges, parts, ";")
for (i=1; i<=count; i++) {
split(parts[i], bounds, "-")
start[i]=bounds[1]
finish[i]=bounds[2]
}
}
{
for (i=1; i<=count; i++) {
if (NR >= start[i] && NR <= finish[i]) {
printf "%6d %s\n", NR, $0
break
}
}
}
' "$file"
}
echo '== SearchLayout mapping and relationship rendering =='
show_lines frontend/src/components/SearchLayout.tsx '55-95;245-310;520-575'
echo '== Focused component regressions =='
show_lines frontend/src/components/SearchLayout.test.tsx '90-250'
echo '== Focused Search page fixture and assertions =='
show_lines frontend/src/app/search/page.test.tsx '90-190;290-390'
echo '== Search smoke contract =='
rg -n -C 6 \
'search|relationship|발신자 관계|DAG|Ontology|thread-q2|track_reply_and_tasks|source_message_id|source_thread_id|sender_context|reply_count' \
frontend/scripts/full-product-ui-smoke.mjs
echo '== Source producers, limited to non-test code =='
rg -n -C 5 --glob '*.{ts,tsx,py}' \
'relationship_type["'\'']?\s*[:=]\s*["'\''](Colleague|colleague)|next_action["'\'']?\s*[:=]\s*["'\''](summarize_then_archive|track_reply_and_tasks|prepare_response_draft|classify_sender)|Colleague|summarize_then_archive|track_reply_and_tasks|prepare_response_draft|classify_sender' \
--glob '!**/*.test.*' --glob '!**/node_modules/**' .
echo '== Current diff for successor commit =='
git diff --unified=30 622dc08d9228b38049fb287c4d77a96ac29cf772..2bbc5e4c57ea040f690a37b5404c03c71ddedb36 -- \
frontend/src/components/SearchLayout.tsx \
frontend/src/components/SearchLayout.test.tsxLength of output: 55983
이전 오류 문구 수정은 올바릅니다. 다음 두 문제를 확인했습니다.
또한 샌드박스 제한 때문에 테스트는 실행하지 않았습니다. If you found this review helpful, would you consider giving us a shout-out on X? Thank you for using CodeRabbit! You are interacting with an AI system. |
|
@coderabbitai review Please review exact current head |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
base='042b0c70531b229af3acbd0421a2f23098d848b3'
head='462b134acf858061019d3ffe37b7b3d60e6f7e74'
echo '== exact revision and scope =='
printf 'checked-out: '; git rev-parse HEAD
git cat-file -e "${head}^{commit}"
git merge-base --is-ancestor "$base" "$head"
git diff --name-status "${base}..${head}" -- \
frontend/src/components/SearchLayout.tsx \
frontend/src/components/SearchLayout.test.tsx \
frontend/src/app/search/page.test.tsx \
frontend/scripts/full-product-ui-smoke.mjs \
frontend/tests/e2e/dashboard-branding.spec.ts
git diff --check "${base}..${head}"
echo '== scoped patch =='
git diff --find-renames --unified=50 "${base}..${head}" -- \
frontend/src/components/SearchLayout.tsx \
frontend/src/components/SearchLayout.test.tsx \
frontend/src/app/search/page.test.tsx \
frontend/scripts/full-product-ui-smoke.mjs \
frontend/tests/e2e/dashboard-branding.spec.ts
echo '== AST outlines =='
ast-grep outline frontend/src/components/SearchLayout.tsx --items all --view expanded
ast-grep outline frontend/src/components/SearchLayout.test.tsx --items all --view expanded
ast-grep outline frontend/src/app/search/page.test.tsx --items all --view expanded
echo '== bounded implementation and regressions =='
rg -n -C 10 --glob '*.{ts,tsx,mjs}' \
'customerFacingRelationshipText|relationshipType|relationship_type|nextAction|next_action|Colleague|colleague|summarize_then_archive|track_reply_and_tasks|prepare_response_draft|classify_sender|후속 작업을 확인합니다|발신자 관계를 불러오지 못했습니다|DAG|Ontology|sender_context|reply_count|thread-q2|source_message_id|source_thread_id' \
frontend/src/components/SearchLayout.tsx \
frontend/src/components/SearchLayout.test.tsx \
frontend/src/app/search/page.test.tsx \
frontend/scripts/full-product-ui-smoke.mjs \
frontend/tests/e2e/dashboard-branding.spec.ts
echo '== source value producers outside tests =='
rg -n -C 6 --glob '*.{py,ts,tsx}' --glob '!**/*.test.*' \
'Colleague|summarize_then_archive|track_reply_and_tasks|prepare_response_draft|classify_sender|relationship_type|next_action' \
backend frontend/src
echo '== pull request state and checks =='
gh pr view 1603 --repo ContextualWisdomLab/naruon \
--json headRefOid,state,isDraft,reviewDecision,statusCheckRollup,urlLength of output: 201150
요청한 범위에서 새 소스 결함을 찾지 못했습니다.
이 샌드박스에서는 테스트와 브라우저 검증을 실행하지 않았습니다. 현재 PR You are interacting with an AI system. |
There was a problem hiding this comment.
Pull request overview
OpenCode reviewed the current-head product diff. Coverage is a separate gate.
Changed files
frontend/scripts/full-product-ui-smoke.mjs— browser runtime and bundlefrontend/src/app/search/page.test.tsx— browser runtime and bundlefrontend/src/components/SearchLayout.test.tsx— browser runtime and bundlefrontend/src/components/SearchLayout.tsx— browser runtime and bundlefrontend/tests/e2e/dashboard-branding.spec.ts— regression suite
Changed behavior
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Frontend: full-product-ui-smoke.mjs (4 files)"]
S1 --> I1["browser runtime and bundle"]
I1 --> R1["Review risk: Frontend: full-product-ui-smoke.mjs (4 files)"]
R1 --> V1["frontend tests"]
Evidence --> S2["Test: dashboard-branding.spec.ts"]
S2 --> I2["regression suite"]
I2 --> R2["Review risk: Test: dashboard-branding.spec.ts"]
R2 --> V2["targeted test run"]
Findings
No source-backed product finding is synthesized from the coverage gate. A coverage miss belongs in the status comment.
- Head SHA:
462b134acf858061019d3ffe37b7b3d60e6f7e74 - Workflow run: 34222748663
- Workflow attempt: 1
- Coverage gate:
failure
Review outcome
Coverage is a gate, not the review. This body reviews the changed product files.
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Frontend: full-product-ui-smoke.mjs (4 files)"]
S1 --> I1["browser runtime and bundle"]
I1 --> R1["Review risk: Frontend: full-product-ui-smoke.mjs (4 files)"]
R1 --> V1["frontend tests"]
Evidence --> S2["Test: dashboard-branding.spec.ts"]
S2 --> I2["regression suite"]
I2 --> R2["Review risk: Test: dashboard-branding.spec.ts"]
R2 --> V2["targeted test run"]
|
Exact-head validation receipt for
The PR remains blocked by current protected Checks/review evidence; no merge claim is made. |
Merge the canonical frontend security-floor owner into the customer-copy lane without retaining a competing manifest or lockfile policy. Keep Search relationship wording as the only product delta relative to the owner branch. Signed-off-by: Seongho Bae <me@seonghobae.me>
Preserve the current protected-base security ancestry and Search implementation while restoring AGENTS.md and CLAUDE.md to the canonical governance-owner blobs. The customer-facing relationship-copy rule is handed to #1549 instead of keeping a competing docs writer here.
Preserve the Search five-file product delta as first-parent history while adopting #1623's current Vitest lock-presence security contract. Signed-off-by: Seongho Bae <me@seonghobae.me>
The generated #1633 SearchLayout blob was based on protected develop and reverted valid #1603 customer-copy semantics when overlaid directly. Restore the exact #1603 source while retaining only the focused live-region RED test. Keep this branch RED-only until the one-line semantic fix is applied without replacing owner content. Signed-off-by: Seongho Bae <me@seonghobae.me>
Ordinary three-way integration of the one-line live-region change into the active #1603 successor. Preserve the focused RED test and all existing Search customer-copy/evidence source.
Current authority — 2026-09-10
#1623@17a7618eda2b212b691f08fa936e042b34258fc98348772f8bb92dc25605e8b1ef9e85c8196bf939frontend/scripts/full-product-ui-smoke.mjs,frontend/src/app/search/page.test.tsx,frontend/src/components/SearchLayout.test.tsx,frontend/src/components/SearchLayout.tsx,frontend/tests/e2e/dashboard-branding.spec.ts.The branch moved concurrently after the prior authority text. The intervening child
8348772...is valid same-owner adoption, not a race to undo: it preserves the Search product delta while adopting #1623's current Vitest importer-contract repair. Fresh compare17a7618... → 8348772...is ahead-only with exactly those five Search files, so dependency/security source remains solely on #1623.This exact stacked head has no ordinary PR-triggered hosted workflow runs at the latest read. Pre-adoption checks and reviews remain historical only; do not call this exact head GREEN or transfer a predecessor approval.
Keep Draft until #1623 is protected-integrated and this then-current Search head has live required checks, qualifying independent review, and durable rendered evidence.
UI Delivery Gate: FAIL
Intentionality/content scope remain PASS. Functional completeness, resilience and evidence remain incomplete because exact-head hosted execution and current responsive/keyboard/AT/locale/browser evidence are absent. No release or merge claim is authorized.