Skip to content

feat: align AI Hub UX and Strix GitHub Models - #350

Merged
seonghobae merged 2 commits into
developfrom
codex/ai-hub-uiux-strix-models
Jun 5, 2026
Merged

seonghobae merged 2 commits into
developfrom
codex/ai-hub-uiux-strix-models

Conversation

@seonghobae

@seonghobae seonghobae commented Jun 5, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Restore AI Hub source-backed checkpoint regions for 맥락 종합, 판단 포인트, and 실행 항목 using /api/ai-hub/surface data.
  • Align AI Hub E2E mocks/assertions and backend AI Hub fixtures with docs/ui-ux terminology.
  • Move Strix GitHub Models credentials to STRIX_GITHUB_MODELS_TOKEN, default to openai/gpt-5, configure same-provider GPT-5 fallbacks, and update governance docs/tests.

Validation

  • bash -n scripts/ci/strix_quick_gate.sh scripts/ci/test_strix_quick_gate.sh
  • bash scripts/ci/test_strix_quick_gate.sh
  • PYTHONWARNINGS='ignore:builtin type SwigPyPacked has no module attribute:DeprecationWarning,ignore:builtin type SwigPyObject has no module attribute:DeprecationWarning,ignore:builtin type swigvarlink has no module attribute:DeprecationWarning' python3 -m pytest backend/tests/test_ai_hub_api.py backend/tests/test_release_governance.py -q
  • cd frontend && npm run typecheck
  • cd frontend && npm test -- src/components/DashboardLayout.test.tsx src/components/WorkspaceHome.dashboard.test.tsx src/app/search/page.test.tsx src/components/NetworkGraph.test.tsx src/components/SettingsLayout.test.tsx src/components/mobile-workspace-panels.test.tsx src/app/calendar/page.test.tsx src/app/tasks/page.test.tsx src/app/projects/page.test.tsx src/app/data/page.test.tsx src/app/security/page.test.tsx src/app/ai-hub/page.test.tsx
  • cd frontend && env -u NO_COLOR -u FORCE_COLOR PLAYWRIGHT_PORT=18084 npm run test:e2e -- tests/e2e/ai-hub-source-surface.spec.ts
  • cd frontend && env -u NO_COLOR -u FORCE_COLOR PLAYWRIGHT_PORT=18085 npm run test:e2e -- tests/e2e/dashboard-branding.spec.ts

Summary by CodeRabbit

  • New Features

    • Added execution checkpoints visualization to the AI Hub interface, displaying context, decisions, and actions sections.
  • Documentation

    • Updated governance guidance to clarify Strix security scan routing and model configuration requirements.
  • Tests

    • Updated test fixtures and assertions to reflect workflow model defaults and UI changes.

@github-actions

github-actions Bot commented Jun 5, 2026 •

Copy link
Copy Markdown
Contributor

PR governance metadata gate is not ready for 3d08ad6778492f2b7ef020f046c8bb85d97ddf88:

  • Review decision is CHANGES_REQUESTED; address requested changes before merge.
  • Required check metadata could not be read: no required checks reported on the 'codex/ai-hub-uiux-strix-models' branch.
  • Current-head CodeRabbit issue comment has blocking warning/failure evidence on 3d08ad6.

@coderabbitai

coderabbitai Bot commented Jun 5, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

@seonghobae, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 53 minutes and 22 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: f8e66d30-8e51-44ad-b8be-64e8cf8d3023

📥 Commits

Reviewing files that changed from the base of the PR and between 0b6aa0f and 3d08ad6.

📒 Files selected for processing (4)
  • frontend/src/app/ai-hub/page.test.tsx
  • frontend/src/components/AIHubLayout.tsx
  • frontend/tests/e2e/dashboard-branding.spec.ts
  • scripts/ci/test_strix_quick_gate.sh
📝 Walkthrough

Walkthrough

The PR updates Strix security scans to default to GPT-5 via GitHub Models (with fallbacks) instead of GPT-4.1, introduces model/API-base compatibility gating, and adds AI Hub execution checkpoint sections displaying context, decision, and action data in the frontend.

Changes

Strix GPT-5 GitHub Models Default & Routing

Layer / File(s) Summary
Strix workflow model defaults and credential routing
.github/workflows/strix.yml
Workflow input strix_llm default changed to openai/gpt-5, model gating patterns expanded for GitHub Models and direct OpenAI GPT-5+, credential routing switched from github.token to secrets.STRIX_GITHUB_MODELS_TOKEN in gate/mask/prepare steps, and STRIX_FALLBACK_MODELS environment added for GitHub Models mode.
GitHub Models API base routing validation
scripts/ci/strix_quick_gate.sh
New is_github_models_api_compatible_model() function restricts model prefixes allowed to route through GitHub Models inference endpoints; resolved_llm_api_base_for_model() uses this tighter check instead of broader model-prefix matching.
Strix governance documentation
AGENTS.md, docs/plans/2026-05-27-strix-openai-direct-only.md, docs/plans/2026-05-29-strix-full-scan-operational-model.md, docs/plans/2026-05-29-strix-vertex-model-warning-filter.md
Governance guidance updated to specify GPT-5 GitHub Models as default with STRIX_GITHUB_MODELS_TOKEN and LLM_API_BASE_FILE pointing to trusted inference URL, documents fallbacks (openai/gpt-5-mini/nano), clarifies legacy STRIX_LLM secrets cannot override PR/push/scheduled defaults.
Strix workflow and gate validation tests
backend/tests/test_release_governance.py, scripts/ci/test_strix_quick_gate.sh
Release governance test and quick-gate test harness updated to validate new defaults (GPT-5 model, GitHub Models token requirement, absent legacy secret), expanded fallback model patterns, GPT-5.4 guard semantics, and regression scenarios for model/API-base compatibility.

AI Hub Execution Checkpoint Sections

Layer / File(s) Summary
AI Hub checkpoint sections UI implementation
frontend/src/components/AIHubLayout.tsx
Added ExecutionCheckpointNav and checkpoint section components (ContextCheckpoint, DecisionCheckpoint, ActionsCheckpoint) rendering sliced data from prompts, metrics/agents, and workflows. UI text updated from English "AI Hub" to Korean "AI 허브", prompt description fallback refined.
AI Hub test assertions
backend/tests/test_ai_hub_api.py, frontend/src/app/ai-hub/page.test.tsx
Prompt title changed from "의사결정 로그 요약" to "의사결정 로그 맥락 종합" in test fixtures and assertions; page tests assert checkpoint nav/section visibility and absence of empty-state text; loading/error messages use Korean "AI 허브" wording.
AI Hub E2E tests and fixtures
frontend/tests/e2e/helpers.ts, frontend/tests/e2e/ai-hub-source-surface.spec.ts, frontend/tests/e2e/dashboard-branding.spec.ts
Test fixtures and helpers updated with new prompt title; E2E tests assert visibility of region containers (맥락 종합, 판단 포인트, etc.) with scoped nested heading checks; dashboard branding tests refactored selectors to use region labels and .first() for multiple-element targeting.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • Seongho-Bae/naruon#335: Modifies Strix GitHub Models routing/gating logic and scripts/ci/strix_quick_gate.sh model/API-base compatibility checks alongside the same .github/workflows/strix.yml wiring.
  • Seongho-Bae/naruon#340: Updates AI Hub frontend tests/fixtures to switch UI text from "의사결정 로그 요약" to "의사결정 로그 맥락 종합".
  • Seongho-Bae/naruon#301: Modifies AI Hub "surface" endpoint tests and UI rendering in frontend/src/components/AIHubLayout.tsx and backend/tests/test_ai_hub_api.py.

Poem

🐰 A rabbit hops through the workflow gates,
GPT-5 now leads the scanning fate—
The checkpoints glow with context bright,
GitHub Models, decisions take flight,
한국말 whispers through the UI night!

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title clearly and concisely summarizes the main changes: aligning the AI Hub user experience with Strix GitHub Models integration, which is the central objective across the workflow, documentation, backend, and frontend modifications.
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 unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/ai-hub-uiux-strix-models

Warning

Billing warning: we have not been able to collect payment for this subscription for more than 72 hours. Please update the payment method or pay any pending invoices in Billing to avoid service interruption.


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

@coderabbitai coderabbitai 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.

Actionable comments posted: 2

🧹 Nitpick comments (1)
scripts/ci/test_strix_quick_gate.sh (1)

6873-6880: ⚡ Quick win

Add an executed openai/gpt-5-nano fallback case.

The workflow assertions now require both GitHub Models fallbacks, but this suite only exercises openai/gpt-5-mini end-to-end. A broken gpt-5-nano normalization or routing path would still pass here.

As per coding guidelines, "GitHub Models fallbacks use openai/gpt-5-mini and openai/gpt-5-nano."

🤖 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 `@scripts/ci/test_strix_quick_gate.sh` around lines 6873 - 6880, The test suite
only exercises the fallback path for "openai/gpt-5-mini" but the workflow
assertions require both GitHub Models fallbacks; add a new run_gate_case
invocation mirroring the existing "github-models-fallback-success" call but
using "openai/gpt-5-nano" as the fallback model (replace the third argument),
keep the same test name or use a distinct name like
"github-models-fallback-success-nano", keep other args (primary
"vertex_ai/missing-primary", expected regex, timeout, model list and URLs)
consistent with the existing "openai/gpt-5-mini" case so the
normalization/routing for gpt-5-nano is executed end-to-end.
🤖 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 `@frontend/src/components/AIHubLayout.tsx`:
- Line 292: In AIHubLayout update the nav's aria-label to a Korean string to
match the page language: locate the nav element that currently sets
aria-label="AI hub execution checkpoints" and replace that English label with a
Korean equivalent (e.g., "AI 허브 실행 체크포인트") so the accessible name for the
navigation matches the visible UI language.
- Around line 417-419: The early return in AIHubLayout removes the whole
right-hand "최근 실행 근거" panel when workflows is empty; instead remove the
top-level return and conditionally render the EmptyState only in the workflows
column (e.g., render <EmptyState ... /> where workflows would be listed) while
always rendering the recent evidence panel (use events or events.length to
decide whether to show its content). Update the component so AIHubLayout no
longer returns early on workflows.length === 0, but shows the EmptyState inside
the left pane and preserves the right-hand recent-evidence UI (reference
workflows, events, EmptyState and the recent evidence panel in AIHubLayout).

---

Nitpick comments:
In `@scripts/ci/test_strix_quick_gate.sh`:
- Around line 6873-6880: The test suite only exercises the fallback path for
"openai/gpt-5-mini" but the workflow assertions require both GitHub Models
fallbacks; add a new run_gate_case invocation mirroring the existing
"github-models-fallback-success" call but using "openai/gpt-5-nano" as the
fallback model (replace the third argument), keep the same test name or use a
distinct name like "github-models-fallback-success-nano", keep other args
(primary "vertex_ai/missing-primary", expected regex, timeout, model list and
URLs) consistent with the existing "openai/gpt-5-mini" case so the
normalization/routing for gpt-5-nano is executed end-to-end.
🪄 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: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 85cc7d14-5eb9-4331-a3d8-30c1b91d521b

📥 Commits

Reviewing files that changed from the base of the PR and between 076827e and 0b6aa0f.

📒 Files selected for processing (14)
  • .github/workflows/strix.yml
  • AGENTS.md
  • backend/tests/test_ai_hub_api.py
  • backend/tests/test_release_governance.py
  • docs/plans/2026-05-27-strix-openai-direct-only.md
  • docs/plans/2026-05-29-strix-full-scan-operational-model.md
  • docs/plans/2026-05-29-strix-vertex-model-warning-filter.md
  • frontend/src/app/ai-hub/page.test.tsx
  • frontend/src/components/AIHubLayout.tsx
  • frontend/tests/e2e/ai-hub-source-surface.spec.ts
  • frontend/tests/e2e/dashboard-branding.spec.ts
  • frontend/tests/e2e/helpers.ts
  • scripts/ci/strix_quick_gate.sh
  • scripts/ci/test_strix_quick_gate.sh

Comment thread frontend/src/components/AIHubLayout.tsx Outdated
Comment thread frontend/src/components/AIHubLayout.tsx Outdated
@seonghobae

Copy link
Copy Markdown
Contributor Author

Resolved the CodeRabbit review comments in 3d08ad6. @coderabbitai review

@coderabbitai

coderabbitai Bot commented Jun 5, 2026 •

Copy link
Copy Markdown
Contributor

@seonghobae Sure! I'll start a new review of the changes including commit 3d08ad6.


🧠 Learnings used
Learnt from: CR
Repo: Seongho-Bae/naruon PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-05-28T10:12:00.738Z
Learning: Keep CodeRabbit `request_changes_workflow` enabled for robot approval, but keep CodeRabbit GitHub Checks integration disabled to prevent stranded `CHANGES_REQUESTED` reviews when external scanners are quota-blocked

Learnt from: seonghobae
Repo: Seongho-Bae/naruon PR: 0
File: :0-0
Timestamp: 2026-05-28T15:55:01.252Z
Learning: In the Seongho-Bae/naruon repository, the active Strix Vertex AI model changed from `vertex_ai/gemini-3.1-pro-preview-customtools` (confirmed 404/no-access for this GCP project) to `vertex_ai/gemini-2.5-flash` as of head 270fdadfa7042b91cfe66bc866723899fc93309d. The governance contract is: `STRIX_LLM=vertex_ai/gemini-2.5-flash` via org `GCP_SA_KEY`, direct OpenAI only when `STRIX_OPENAI_API_KEY` is explicitly provided, and GitHub Models are intentionally excluded. Vertex AI attempts must never receive `LLM_API_KEY` in the child environment. The `workflow_dispatch` trigger now accepts PR number/base/head inputs and reuses trusted PR-scope scanning with a 1200 s process timeout, matching `pull_request_target` behavior.

Learnt from: seonghobae
Repo: Seongho-Bae/naruon PR: 0
File: :0-0
Timestamp: 2026-05-28T16:30:17.435Z
Learning: In the Seongho-Bae/naruon repository, the Strix CI workflow's `workflow_dispatch` PR-scope path (`.github/workflows/strix.yml` and `scripts/ci/strix_quick_gate.sh`) falls back from `git diff base...head` (three-dot) to `git diff base head` (two-dot) when shallow history has no merge base and both `pr_base_sha` and `pr_head_sha` are supplied and verified. This fallback is only for `workflow_dispatch` PR-scope evidence; `pull_request_target` behavior remains fail-closed and unchanged. The validated operational Vertex AI model is `vertex_ai/gemini-2.5-flash` (via org secrets `GCP_SA_KEY` and `STRIX_LLM`); GitHub Models are intentionally excluded; direct OpenAI is only allowed when `STRIX_OPENAI_API_KEY` is explicitly set; Vertex AI child environments must never receive `LLM_API_KEY`.

Learnt from: seonghobae
Repo: Seongho-Bae/naruon PR: 288
File: scripts/ci/test_strix_quick_gate.sh:76-96
Timestamp: 2026-05-28T14:44:28.792Z
Learning: In the repository Seongho-Bae/naruon, the Strix Security Scan CI policy was updated (PR `#288`, commit 0f636ef86ff36161770af275a736e792067d8830). The approved primary route is now the org-secret Vertex AI model `vertex_ai/gemini-3.1-pro-preview-customtools` using the org-level `GCP_SA_KEY` secret, with direct OpenAI GPT-5.4+ via `STRIX_OPENAI_API_KEY` kept as a fail-closed fallback. GitHub Models, generic `secrets.LLM_API_KEY`, arbitrary Vertex/Gemini models, and cross-provider key forwarding remain forbidden. The prior policy (OpenAI-only, `STRIX_OPENAI_API_KEY` required as primary) is superseded.

Learnt from: seonghobae
Repo: Seongho-Bae/naruon PR: 0
File: :0-0
Timestamp: 2026-05-27T14:24:44.063Z
Learning: In the Seongho-Bae/naruon repository, Strix CI uses `STRIX_LLM_DEFAULT_PROVIDER=openai` and must route exclusively through `api.openai.com` via `STRIX_OPENAI_API_KEY`. GitHub Models (`provider_mode=github_models`, `https://models.github.ai/inference`) is explicitly forbidden as a fallback per maintainer direction. Strix failures caused by OpenAI quota exhaustion are not code defects and should not block PR merges.

Learnt from: seonghobae
Repo: Seongho-Bae/naruon PR: 0
File: :0-0
Timestamp: 2026-05-28T14:06:29.794Z
Learning: In the Seongho-Bae/naruon repository, the Strix security scan CI workflow (`.github/workflows/strix.yml`) routes through Vertex AI using org-level `GCP_SA_KEY` and `STRIX_LLM` secrets. The project instruction is to use `vertex_ai/gemini-3.1-pro-preview-customtools` via organization secrets and NOT GitHub Models. OpenAI-only rollback suggestions should not be applied; they are intentionally declined.

Learnt from: CR
Repo: Seongho-Bae/naruon PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-06-03T10:38:42.450Z
Learning: Applies to .github/workflows/**/*.{yml,yaml} : Strix Security Scan must use an OpenAI GPT-5.4-or-newer model. Prefer GitHub Models with `models: read`, but verify actual inference availability. Use explicitly named `STRIX_OPENAI_API_KEY` for direct GPT-5.4 credential rather than downgrading. Record inference evidence in the PR. Do not repurpose generic `LLM_API_KEY` for direct OpenAI Strix calls

Learnt from: CR
Repo: Seongho-Bae/naruon PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-06-02T11:01:40.198Z
Learning: Applies to **/.github/workflows/**/*.{yml,yaml} : When robot review cites an obsolete Strix provider policy, update the docs and tests to the current GitHub Models default contract before accepting a rollback suggestion; do not reintroduce generic `LLM_API_KEY` or cross-provider credential forwarding while trying to satisfy old comments

Learnt from: CR
Repo: Seongho-Bae/naruon PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-06-02T11:01:40.198Z
Learning: Applies to frontend/**/*.{ts,tsx,js,jsx} : AI Hub tabs must be backed by signed source evidence from `/api/ai-hub/surface` or a narrower signed API; do not reintroduce static model-score fixtures, fake workflow logs, or provider names that are not derived from prompt, provider, or audit data

Learnt from: CR
Repo: Seongho-Bae/naruon PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-06-03T10:38:42.450Z
Learning: Applies to **/.github/workflows/**/*.{yml,yaml} : Strix Security Scan must use `github_models/gpt-5.4` as the default model to bypass Vertex AI GCP credential prerequisites in PR bounds

Learnt from: seonghobae
Repo: Seongho-Bae/naruon PR: 0
File: :0-0
Timestamp: 2026-05-28T17:09:29.346Z
Learning: In the Seongho-Bae/naruon repository, `vertex_ai/gemini-3.1-pro-preview-customtools` has been fully removed from the Strix workflow allow-list and guard tests as of head 05022ff8a27373388c5963d6123f2b8453f77ee7. The only validated org-secret Vertex AI model is `vertex_ai/gemini-2.5-flash`. Vertex child environments must never receive `LLM_API_KEY` or `LLM_API_KEY_FILE`. `STRIX_LLM_FILE` content must be read into an intermediate variable before trimming to prevent command injection.
✅ Action performed

Review finished.

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.

@seonghobae
seonghobae enabled auto-merge June 5, 2026 06:02
@seonghobae

Copy link
Copy Markdown
Contributor Author

@coderabbitai approve

@seonghobae
seonghobae merged commit 0d4708f into develop Jun 5, 2026
9 checks passed
@coderabbitai

coderabbitai Bot commented Jun 5, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Comments resolved and changes approved.

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