Loading...
Loading...
Workflow chốt PUSH/RELEASE/PR/MR — gọi khi user nhắc 'release'/'push'/'ship'/'lên release'/'mở PR'/'tạo MR'. Chạy CHECKLIST điều kiện TRƯỚC khi đẩy: (1) medic --ci (cổng sức khoẻ: luật cắn/drift/docs/code/eval), (2) UAT /fdk-uat qua remote thật nếu diff có năng lực mới (chỉ release/pr/mr, medic --ci không chứng minh được đường curl), (3) git sạch (scratchpad/ephemeral không track), (4) selftest, (5) version x.x.x+1 từ tag gần nhất (chỉ mức release), (6) patch note/PR-body trung thực (Added/Fixed/Removed/Known-limitations, KHÔNG phóng đại). Hỗ trợ 5 mức: 'ship push' = chỉ push không tag; 'ship release' = push + tag vX.Y.Z + release notes; 'ship pr' = push nhánh + gh pr create (GitHub); 'ship mr' = push nhánh + glab mr create (GitLab); 'ship merge' = liệt kê PR/MR ĐẾN của repo theo remote, kéo nhánh về, chạy gate+test, chỉ merge nếu XANH. STOP chờ duyệt trước bước side-effect. Trigger: /ship, 'release', 'push', 'ship', 'mở PR', 'tạo MR', 'ship pr', 'ship mr', 'ship merge', 'gom PR về merge', 'merge PR nếu test xanh', 'chuẩn bị push', 'lên release', 'checklist trước push', 'đủ điều kiện push chưa'.
npx skill4agent add rheinmir/setup shipWorkflow chốt quanh remote. Chạy checklist điều kiện, DỪNG chờ duyệt trước mọi bước side-effect (push/tag/PR/MR/merge). Năm mức — 4 mức ĐẨY ĐI (outbound) + 1 mức GOM VỀ (inbound): push (đủ mọi bước, không tag) · release (push + tag+ release notes) · pr (push nhánh + mở Pull Request GitHub quavX.Y.Z) · mr (push nhánh + mở Merge Request GitLab quagh) · merge (liệt kê PR/MR đến → kéo nhánh về → gate+test → merge nếu xanh).glab
/medicghglabrepo_role (framework · module · downstream · foreign) → bảng gate của ĐÚNG loại repo → mức (push · release · pr · mr · merge) → gate sức khoẻ (medic --ci + ci-local) → UAT remote (chỉ release/pr/mr có năng lực mới) → git sạch → selftest → [version + patch note] → checklist → DỪNG duyệt → side-effect → [UAT pha 2]| Field | Required? | Ý nghĩa | |
|---|---|---|---|
| In | | tự đọc | |
| In | mức | không (mặc định = push) | |
| In | duyệt của user | có, trước mọi side-effect | "yes" tường minh cho push/tag/release/PR/MR/merge/canary |
| Out | checklist + lệnh đề xuất | có | kết quả từng bước gate, UAT pha 1 hoặc lý do skip, commit msg, lệnh cuối |
| Out | văn bản | theo mức | |
| Out | side-effect | chỉ sau duyệt | push / tag / release / PR / MR / merge đã thực thi |
medic --cimedic --ci/fdk-uatreleaseprmr6c839d8medic --cici-localmergemedic --ciCloses #Nghglab🏷 repo_role=<role> (khai báo | sổ máy | suy luận | ép tay)suy luậnrepo_role.py . --set <role>foreignci-localcapability-stampframeworkmoduledownstreamframework/shiprc=;| tailc83b065medicv3.0.1install-testframeworkgit worktree add --detach <tmp> HEADforeignprmrpush.overstack.yamlmedicgit tagghglabmedic --cici-localfreshinstall/fdk-uatghglabmerge| Step | Type | Inputs | Action | Outputs/exit | Failure/next |
|---|---|---|---|---|---|
| W00 | deterministic | repo | | role + bảng gate | role không hợp lệ → blocked |
| W01 | deterministic | repo | Cổng sức khoẻ | rc 0 | đỏ → blocked |
| W02 | effect | diff, mức | UAT | PASS hoặc lý do skip | FAIL → failed |
| W03 | deterministic | worktree | Git sạch: | sạch | bẩn → dọn rồi lặp W03 |
| W04 | deterministic | diff | Selftest/kiểm nhanh engine đụng tới | rc 0 | đỏ → blocked |
| W05 | judgment | tag gần nhất | Version | tag đề xuất | không chắc bậc → clarify |
| W06 | judgment | | Patch note / PR-MR body trung thực, Known-limitations bắt buộc nếu có phần nửa vời | văn bản | — |
| W07 | deterministic | kết quả W01–W06 | Hiện checklist + đề xuất lệnh, DỪNG chờ duyệt | "yes" | không duyệt → cancelled |
| W08 | effect | duyệt | Thực thi theo mức; nếu W02 đã chạy thì UAT pha 2 ngay sau đó | side-effect + receipt | pha 2 FAIL → gỡ commit |
push/release/pr/mrmergereleaseprmrreleasereleaseRELEASE-vX.Y.Z.mdprmrpushmergemedic --cipython3 fdk/tools/medic.py --cipython3 fdk/tools/ci-local.pyrun:freshinstallbash harness/scripts/fresh-install-smoke.sh --remote/fdk-uatreleaseprmrpushmedic --cici-localfile://curl6c839d8git status --shortscratchpad/….gitignoregit rm -r --cachedcouncil.py selftestgit tag --sort=-v:refname | head -1vX.Y.ZvX.Y.(Z+1)RELEASE-vX.Y.Z.mdVersion X.Y.Z:Fixed <triệu chứng> — <giờ ra sao>Added <khả năng> — <dùng để làm gì>Removed/Changed …git log <tag-cũ>..HEAD/fdk-uatgit pushgit tag vX.Y.Zgit push -u origin <nhánh>gh pr create --base <base> --head <nhánh> --title "…" --body-file <PR-body>orcagit push -u origin <nhánh>glab mr create --source-branch <nhánh> --target-branch <base> --title "…" --description "…"-F <file>git remote get-url origingithub.comghgitlabglabship prship mrgh auth statusglab auth statusCloses #NFixes #Nframework| Bước | | | | |
|---|---|---|---|---|
| Gate | | commit trước → test + eval + install-test CỦA CHÍNH NÓ (đọc từng rc; install-test clone từ HEAD nên chưa commit là chưa test) | test của dự án + | git sạch + test/CI của họ |
| UAT remote | khi diff có năng lực mới (B02) | smoke cài từ remote sau khi push ( | không | không |
| Version | | bump | theo dự án | theo họ |
| Bước cuối | push (· tag/PR theo mức) | push → CHỜ CI xanh → tag + release → re-pin ở framework ( | push / pr | CHỈ pr / mr |
| Cấm | installer ghi vào repo này (tự từ chối rc 3) | | đẩy file của framework, UAT, stamp | cài đặt, ghi cấu hình overstack, AI-attribution trái luật của họ |
| ID | Kind | Guard | Hành vi | Skip / failure | Rejoin |
|---|---|---|---|---|---|
| B01 | conditional_required | mức = | W05 version + tag | mức khác → skip | W06 |
| B02 | conditional_required | mức ∈ {release, pr, mr} VÀ diff có năng lực mới | UAT pha 1 trước W07, pha 2 sau W08 | bugfix/refactor nội bộ → skip, ghi lý do vào checklist; không chắc → clarify | W03 |
| B03 | user_optional | mức = | Vòng GOM VỀ riêng (mục dưới), bỏ W02, W05–W06 | PR đỏ → không merge PR đó | báo cáo tổng |
mergegithub.comghgitlabglabgh pr list --json number,title,headRefName,mergeable,isDraftglab mr list--output jsongh pr checkout <n>git fetch origin merge-requests/<n>/head:mr-<n> && git checkout mr-<n>glab mr checkout <n>medic --cigh pr merge <n> --squashglab mr merge <n>git checkout <nhánh-cũ>mergeorca-graph🏷 repo_role=module (khai báo)pytest testsevals/run.pytests/install-test.shVERSIONRheinmir/setupupstream_pin🏷 repo_role=foreign (suy luận: không có fdk/wiki, không có .harness-stamp)ship prgit pushci-local