diff --git a/.github/workflows/torchnative-tests.yml b/.github/workflows/torchnative-tests.yml index c9a7b52e..eeaa07fc 100644 --- a/.github/workflows/torchnative-tests.yml +++ b/.github/workflows/torchnative-tests.yml @@ -16,9 +16,9 @@ on: - cron: "0 5 * * 1" # weekly, Monday 05:00 UTC # workflow_dispatch and schedule only fire once this file is on the default branch (main), which # develop reaches through the release PR. Until then, push to ci/torchnative to run it on demand - # (e.g. git push origin develop:ci/torchnative). This work branch triggers it once for a first run. + # (e.g. git push origin develop:ci/torchnative). push: - branches: [ci/torchnative, work/torchnative-ci] + branches: [ci/torchnative] permissions: contents: read diff --git a/AGENTS.md b/AGENTS.md index 15448c3e..97c7ef25 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -47,11 +47,20 @@ build caches, model weights, `node_modules`) into every worktree is how 86 workt | Branch | Who writes to it | |---|---| -| `work/` | You. All work happens here. | -| `develop` | Merged into from work branches after verification. Never commit to it directly. | +| `feat/` | You. All work happens here. Never name a branch `work/...`. | +| `develop` | Merged into from `feat/` branches after verification. Never commit to it directly. | | `release` | **CI only.** Not a standing branch: CI regenerates it from every push to `develop`, in the main-only file layout, and opens the PR into `main`. It may not exist. Never write to it. | | `main` | **Pull request from `release` only.** Never push or merge to it directly. | +Only `main`, `develop` and `release` are standing branches. A `feat/` branch lives until its pull +request merges: merge with `gh pr merge --rebase --delete-branch`, then delete the local branch and +its worktree. Periodically delete every remote and local branch already merged into `develop`. +Pull requests here are rebase-merged, so `git branch --merged` does not see them: check the branch's +pull request instead (`gh pr list --head --state merged`). An unmerged branch older than a +few days is either landed or reported, not left. Branches named `release-*` (e.g. `release-cnu`) are +preserved snapshots: keep them. Never force-push a pushed branch; to rebase after a push, push the +result to a new `feat/` branch. + `main` carries a reduced layout: of the Markdown files, only `README.md` stays at the repository root, and `docs/` keeps only its subdirectories (no Markdown files directly under `docs/`). CI runs `tools/release/sync-release.sh` (`.github/workflows/release-sync.yml`) to produce that layout; do not hand-edit `release` or `main`. @@ -63,7 +72,7 @@ Every new feature goes through an issue and a pull request: 1. Before starting, search the repository's issues (`gh issue list --state all --search ""`). 2. If no issue covers the work, open one (`gh issue create`) stating what and why, and the completion criterion — which tests must pass. -3. Work on a `work/` branch, push every commit, and open a pull request into `develop` +3. Work on a `feat/` branch, push every commit, and open a pull request into `develop` whose body contains `Closes #`. 4. Merge into `develop` through that pull request (`gh pr merge`), not by a local merge, so the issue is linked. @@ -274,6 +283,6 @@ files should simply be written with LF. `docs/build/` is tracked (an exception i | `docs//` | any | Every other document lives in a topic subdirectory, never directly in `docs/`. | `README.md` and `docs/locale/README_ko.md` must not link to develop-only files (`AGENTS.md`, -`CLAUDE.md`, `PROJECT.md`, `docs/INTENT.md`, `docs/SPEC.md`); those links are dead on `main`. +`PROJECT.md`, `docs/INTENT.md`, `docs/SPEC.md`); those links are dead on `main`. -`CLAUDE.md` contains exactly `@AGENTS.md` and nothing else. +There is no `CLAUDE.md`: Claude Code reads `AGENTS.md` directly. Do not add one. diff --git a/CLAUDE.md b/CLAUDE.md deleted file mode 100644 index 43c994c2..00000000 --- a/CLAUDE.md +++ /dev/null @@ -1 +0,0 @@ -@AGENTS.md diff --git a/PROJECT.md b/PROJECT.md index 9152cecd..340a2f16 100644 --- a/PROJECT.md +++ b/PROJECT.md @@ -81,7 +81,8 @@ python3 docs/guide/check_guide.py # 가이드 사이트 검사 - **개발 방식**: 의도 기반 스펙 주도 개발 + 테스트 주도 개발. INTENT → SPEC → 테스트(적색 확인) → 코드. - **문서 배치**: `main` 에는 루트의 `README.md` 와 `docs/` 하위 디렉터리만 남는다. README 는 develop 전용 파일(AGENTS, PROJECT, INTENT, SPEC)에 링크하지 않는다. -- **`CLAUDE.md`** 는 `@AGENTS.md` 한 줄만 둔다. +- **`CLAUDE.md` 는 두지 않는다**(2026-10-03). Claude Code 가 `AGENTS.md` 를 직접 읽는다. +- **브랜치**: 작업 브랜치는 `feat/`. `main`·`develop`·`release`(와 보존용 `release-*`)만 상시 브랜치로 두고, 머지된 브랜치는 머지 때 `--delete-branch` 로, 그 밖에는 주기적으로 지운다. - **토치 버전**: `pyproject.toml` 에서 torch 계열에 버전을 고정하지 않는다 (Windows 는 cu128 인덱스). - **서빙 구조 (2026-10-02)**: 근거와 위험은 [`docs/serving/engine.md`](docs/serving/engine.md) 에 있다. - 의미 없는 다중 백엔드를 걷어내고 **단일 서빙 시스템**으로 간다. GGUF·BIN·GPTQ 런타임과