Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
033dd71
feat(FR-1416): add Endpoint → Deployment UI migration feature spec
agatha197 Apr 21, 2026
87368db
feat(FR-1416): update spec — Flow 7 quick deploy, deployment-config.y…
agatha197 Apr 21, 2026
3328b36
feat(FR-1416): add import from existing deployment to Flow 2 (FR-2419)
agatha197 Apr 21, 2026
573577a
chore: add graphite workflow rules to prevent accidental branch/PR cr…
agatha197 Apr 21, 2026
309caae
docs(FR-1416): unify Route/Replica into Replicas-only UI concept in spec
agatha197 Apr 21, 2026
0faadb7
docs(FR-1416): remove redundant confirmation dialog in edit flow
agatha197 Apr 21, 2026
e4e6028
docs(FR-1416): add URL state sync spec, translate Revision to 리비전, no…
agatha197 Apr 21, 2026
319bcf9
docs(FR-1416): remove mutationToClone from useDeploymentLauncher spec
agatha197 Apr 21, 2026
4dd1c44
docs(FR-1416): remove unsupported traffic status toggle, clarify clus…
agatha197 Apr 21, 2026
333b749
docs(FR-1416): note auto-scaling components already use Deployment API
agatha197 Apr 21, 2026
b290f58
docs(FR-1416): resolve PR feedback - unify admin path, clarify ID nam…
agatha197 Apr 21, 2026
f65d42f
feat(FR-1416): add Endpoint → Deployment UI migration feature spec
agatha197 Apr 21, 2026
03e3595
feat(FR-1416): add Endpoint → Deployment UI migration feature spec
agatha197 Apr 21, 2026
0a25e3f
feat(FR-1368): replace isManagerVersionCompatibleWith with supports()…
agatha197 Apr 21, 2026
e4ccfe0
feat(FR-1368): update Flow 2 UX to direct launcher entry with Recent …
agatha197 Apr 22, 2026
3a0f0ce
feat(FR-1368): update Flow 2 launcher layout - vertical steps on righ…
agatha197 Apr 22, 2026
96eb614
feat(FR-1368): remove X button from launcher page diagram (it's a pag…
agatha197 Apr 22, 2026
558d5aa
feat(FR-1416): address PR review feedback - fix field mappings and re…
agatha197 Apr 22, 2026
a96649d
feat(FR-1416): address PR review feedback - fix field mappings and re…
agatha197 Apr 22, 2026
29c3451
feat(FR-2664): add /deployments + /admin-deployments routes with lega…
agatha197 Apr 22, 2026
73fd58a
feat(FR-2666): add Deployment i18n keys (en.json foundation)
agatha197 Apr 22, 2026
ffa1f83
feat(FR-2667): add ReplicaStatusTag component with tooltip and Storyb…
agatha197 Apr 22, 2026
337ee8b
feat(FR-2668): add DeploymentStatusTag component
agatha197 Apr 22, 2026
00eb739
feat(FR-2676): add DeploymentConfigurationSection for detail page ove…
agatha197 Apr 22, 2026
248785e
feat(FR-2677): add DeploymentReplicasTab with replica detail Drawer
agatha197 Apr 22, 2026
3d7f9da
feat(FR-2678): add DeploymentRevisionHistoryTab with rollback mutation
agatha197 Apr 22, 2026
236f755
feat(FR-2679): add DeploymentAccessTokensTab with create/delete flows
agatha197 Apr 22, 2026
c0119a0
feat(FR-2680): add DeploymentAutoScalingTab wrapping AutoScalingRuleList
agatha197 Apr 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions .claude/rules/graphite-workflow.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Graphite PR Workflow Rules

## Single PR per Spec / Feature

When working on a spec or feature, **never create additional branches or PRs without explicit user instruction**.

- Do NOT use `gt create` to add commits to an existing branch — `gt create` ALWAYS creates a new branch
- All incremental changes (spec updates, fixes, additions) go into the **existing branch** via `gt modify` (`gt m`)
- If the current branch already has a PR open, use `gt modify` to amend — do not create a sibling or child branch

## Correct Flow for Updating an Existing PR

```bash
# Stage changes
git add <files>

# Amend the current branch's commit (gt m = gt modify)
gt modify --commit -m "feat(ISSUE): update description"
# or: gt m --commit -m "feat(ISSUE): update description"

# Push to update the existing PR
gt submit --no-interactive --publish
```

## Wrong Flow (Do NOT do this)

```bash
# ❌ ALWAYS creates a new branch — never use this to update an existing PR
gt create -m "some update" # creates a new branch + new PR automatically
gt submit # results in a new unwanted PR
```

## Why

`gt create` unconditionally creates a new branch and commit on top of the current stack.
`gt modify` (alias `gt m`) amends the **current** branch's tip commit in place.

Using `gt create` to update an existing PR creates extra branches and PRs, clutters the PR list, and requires manual cleanup (fold, close, comment). One spec = one PR.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -179,3 +179,6 @@ e2e/.agent-output/


e2e/recordings/

# Spec-driven workflow local cache (see spec-driven-workflow skill)
.specs/**/.context/
302 changes: 302 additions & 0 deletions .specs/FR-1368-endpoint-deployment-migration/dev-plan.md

Large diffs are not rendered by default.

84 changes: 84 additions & 0 deletions .specs/FR-1368-endpoint-deployment-migration/metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
{
"epic": "FR-1368",
"epicKey": "FR-1368",
"epicUrl": "https://lablup.atlassian.net/browse/FR-1368",
"epicTitle": "Model deployment & Revision #1",
"specTask": "FR-1416",
"specTaskKey": "FR-1416",
"specTaskTitle": "Transition from Serving page to Deployment page",
"githubIssue": "https://github.com/lablup/backend.ai-webui/issues/4198",
"slug": "endpoint-deployment-migration",
"specFile": ".specs/FR-1368-endpoint-deployment-migration/spec.md",
"stories": [
{
"key": "FR-2657",
"title": "Deployment UI Phase 1 — Foundation (feature flag, routes, menu, i18n)",
"specSection": "§Feature Flag, §URL 경로 변경 + Fallback 리디렉션, §i18n 키 추가",
"prStack": "feat/endpoint-deployment-migration-foundation",
"subtasks": [
{ "key": "FR-2663", "title": "Add model-deployment-extended-filter feature flag (26.4.3+)" },
{ "key": "FR-2664", "title": "Add routes for /deployments + /admin-deployments with legacy fallbacks" },
{ "key": "FR-2665", "title": "Update sidebar menu: Serving → Deployments" },
{ "key": "FR-2666", "title": "Add Deployment i18n keys (en.json) + propagate to 21 languages" }
]
},
{
"key": "FR-2658",
"title": "Deployment UI Phase 2 — Shared status/owner components",
"specSection": "§ReplicaStatusTag 컴포넌트, §Flow 1, §Flow 6",
"prStack": "feat/endpoint-deployment-migration-shared-components",
"subtasks": [
{ "key": "FR-2667", "title": "Add ReplicaStatusTag component + Storybook story" },
{ "key": "FR-2668", "title": "Add DeploymentStatusTag component" },
{ "key": "FR-2669", "title": "Add DeploymentOwnerInfo component" }
]
},
{
"key": "FR-2659",
"title": "Deployment UI Phase 3 — Deployment list pages (user + admin)",
"specSection": "§Flow 1, §Flow 6",
"prStack": "feat/endpoint-deployment-migration-list-pages",
"subtasks": [
{ "key": "FR-2670", "title": "Add DeploymentList fragment-receiving table component (server-side filter/sort/paginate)" },
{ "key": "FR-2671", "title": "Add DeploymentListPage (user) — owns myDeployments query" },
{ "key": "FR-2672", "title": "Add AdminDeploymentListPage + admin-only filters/columns (26.4.3+)" },
{ "key": "FR-2673", "title": "Remove legacy ServingPage and EndpointList / EndpointStatusTag" }
]
},
{
"key": "FR-2660",
"title": "Deployment UI Phase 4 — Deployment Launcher (create + edit)",
"specSection": "§Flow 2, §Flow 4, §폼 필드 매핑",
"prStack": "feat/endpoint-deployment-migration-launcher",
"subtasks": [
{ "key": "FR-2674", "title": "Add DeploymentLauncherPageContent — multi-step form body" },
{ "key": "FR-2675", "title": "Add DeploymentLauncherPage (create/edit entry) + GQL mutations" }
]
},
{
"key": "FR-2661",
"title": "Deployment UI Phase 5 — Detail page with tabs, Drawer, and Rollback",
"specSection": "§Flow 3, §Flow 5",
"prStack": "feat/endpoint-deployment-migration-detail-page",
"subtasks": [
{ "key": "FR-2676", "title": "Add DeploymentConfigurationSection (Overview card + Edit button)" },
{ "key": "FR-2677", "title": "Add DeploymentReplicasTab + Replica detail Drawer" },
{ "key": "FR-2678", "title": "Add DeploymentRevisionHistoryTab + Rollback flow" },
{ "key": "FR-2679", "title": "Add DeploymentAccessTokensTab (list + create + delete)" },
{ "key": "FR-2680", "title": "Add DeploymentAutoScalingTab (wrap existing AutoScalingRuleList)" },
{ "key": "FR-2681", "title": "Add DeploymentDetailPage (header + Overview + 4 tabs + URL tab sync)" },
{ "key": "FR-2682", "title": "Remove legacy EndpointDetailPage + related Endpoint components" }
]
},
{
"key": "FR-2662",
"title": "Deployment UI Flow 7 — Quick Deploy from model folder (useDeploymentLauncher)",
"specSection": "§Flow 7",
"prStack": "feat/endpoint-deployment-migration-quick-deploy",
"subtasks": [
{ "key": "FR-2683", "title": "Add useDeploymentLauncher hook (GQL-based Quick Deploy)" },
{ "key": "FR-2684", "title": "Migrate Deploy button sites to [Deploy | ▼] split button using useDeploymentLauncher" }
]
}
]
}
Loading
Loading