up-cc 2.0.3 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/up/CHANGELOG.md +79 -0
- package/up/agents/up-arquiteto.md +5 -2
- package/up/bin/lib/core.cjs +3 -2
- package/up/bin/lib/github.cjs +185 -76
- package/up/bin/lib/github.test.cjs +161 -0
- package/up/bin/up-tools.cjs +20 -3
- package/up/commands/build.md +15 -14
- package/up/hooks/up-session-start.js +53 -8
- package/up/hooks/up-session-start.test.cjs +99 -0
- package/up/skills/usando-up/SKILL.md +1 -1
- package/up/workflows/build.md +98 -51
- package/up/workflows/rapido.md +1 -1
- package/up/workflows/up.md +9 -4
package/up/workflows/build.md
CHANGED
|
@@ -52,27 +52,44 @@ O LLM tende a colapsar passos (mesmo agente executa + verifica). Isso e PROIBIDO
|
|
|
52
52
|
e um `Agent()` SEPARADO. O enforcement e o GATE deterministico do `approvals.log`
|
|
53
53
|
(ver `@~/.claude/up/workflows/governance.md`), nao uma piramide de supervisores.
|
|
54
54
|
|
|
55
|
-
**GitHub-nativo e o DEFAULT (v2):**
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
-
|
|
61
|
-
branch
|
|
55
|
+
**GitHub-nativo e o DEFAULT (v2): DOIS EIXOS SEPARADOS:**
|
|
56
|
+
|
|
57
|
+
O GitHub (worktree/branch/issue/PR) e a INTERACAO humana (menu/gate visual/merge) sao eixos
|
|
58
|
+
independentes. As flags mexem so na interacao; o GitHub fica ligado sempre que da.
|
|
59
|
+
|
|
60
|
+
- **Eixo GitHub:** LIGADO sempre que ha remote E (`gh` autenticado OU MCP do GitHub conectado).
|
|
61
|
+
Worktree+branch sao git local e SEMPRE acontecem (offline-ok). Issue/PR usam o transporte:
|
|
62
|
+
`gh` (CLI cria direto) ou `mcp` (o workflow cria via `mcp__...github__*` e grava com
|
|
63
|
+
`record-issue`/`record-pr`). DESLIGA so com `--local` ou `config.github_native=false`.
|
|
64
|
+
- `--local`: ESCAPE HATCH sem GitHub. Commit atomico na branch ATUAL. Zero worktree/issue/PR/rede.
|
|
65
|
+
(Mesmo comportamento de `/up:rapido`.) **Este e o unico jeito de pular o GitHub no build.**
|
|
66
|
+
- `--solo`: NAO desliga o GitHub. Solo = autonomo total: GitHub completo (branch/worktree/issue/PR
|
|
67
|
+
+ auto-merge), SEM menu e SEM gate visual. Pra loop/headless onde ninguem aprova nada.
|
|
68
|
+
- `--auto`: pula o MENU de fechamento (auto-merge), MAS o gate visual (3.8.0) ainda roda se
|
|
69
|
+
`require_visual_test=true`. Mantem GitHub ligado.
|
|
62
70
|
- **Teste visual antes do merge (`require_visual_test`, default true):** fase de UI sobe dev server e exige
|
|
63
|
-
o dono aprovar na tela ANTES do merge (3.8.0).
|
|
64
|
-
|
|
65
|
-
cleanup). MAS o teste visual (3.8.0) ainda roda se `require_visual_test=true` (so `false` deixa o --auto
|
|
66
|
-
mergear UI sem aprovacao). So faz sentido com github_native ligado.
|
|
71
|
+
o dono aprovar na tela ANTES do merge (3.8.0). `--solo` pula sempre; `--auto` so pula com `require_visual_test=false`.
|
|
72
|
+
Projeto em PRODUCAO: deixe ligado e nao use `--solo` (nada sobe sem voce ver).
|
|
67
73
|
- `--board`: espelha status no Multica (espelho de board OPT-IN, BATCHED no fim da onda/fase). NAO ha
|
|
68
74
|
stream ao vivo no fluxo local: o board mostra so o status (`todo -> in_progress -> in_review -> done /
|
|
69
75
|
blocked`), nunca cada tool_use. Chamadas via `up-tools.cjs multica {init|sync|board}` (que usa
|
|
70
76
|
`multica.cjs`, deteccao `uname -s` Mac->`ssh server-ecoup`, FAIL-OPEN: se `multica` indisponivel, avisa
|
|
71
77
|
e segue sem board, nunca crasha). So roda quando `--board` ligado.
|
|
72
78
|
|
|
73
|
-
**
|
|
74
|
-
|
|
75
|
-
|
|
79
|
+
**Resumo das flags** (GitHub = artefatos; demais = interacao):
|
|
80
|
+
|
|
81
|
+
| Flag | GitHub | Menu fim | Gate visual | Merge |
|
|
82
|
+
|------|:---:|:---:|:---:|---|
|
|
83
|
+
| (nenhum) | SIM | SIM (4 opcoes) | SIM | conforme menu |
|
|
84
|
+
| `--auto` | SIM | NAO | SIM (a menos require_visual_test=false) | auto squash |
|
|
85
|
+
| `--solo` | SIM | NAO | NAO (pula sempre) | auto squash |
|
|
86
|
+
| `--local` | NAO | NAO | NAO | commit na branch atual |
|
|
87
|
+
|
|
88
|
+
**FAIL-OPEN universal:** `start-phase`/`finish-phase` detectam remote + transporte (`gh`/`mcp`/`none`).
|
|
89
|
+
Sem remote, degradam para git local (worktree local + merge local; issue/PR = null) com aviso, NUNCA
|
|
90
|
+
crasham. `git worktree` e sempre local e funciona offline. Sem `gh` mas com MCP, o transporte e `mcp`:
|
|
91
|
+
worktree/branch/push acontecem no `.cjs` e o workflow cria issue/PR via MCP. Com `--local` nao ha nem
|
|
92
|
+
worktree (commit direto na branch atual).
|
|
76
93
|
|
|
77
94
|
**Onde o estado vive:** `git-map.json` e canonico no working dir PRINCIPAL (`.plano/git-map.json`). O `.plano/`
|
|
78
95
|
de cada fase viaja na branch da fase (worktree) e volta pra main no merge. STATE.md permanece a fonte humana
|
|
@@ -175,25 +192,31 @@ Projeto planejado em {runtime}.
|
|
|
175
192
|
Resumo: {N} fases, {M} planos. Planning confidence: {X}/100.
|
|
176
193
|
Pendencias conhecidas: {de PENDING.md}.
|
|
177
194
|
|
|
178
|
-
Modo git: {GITHUB_MODE} (GitHub-nativo e o default; --
|
|
195
|
+
Modo git: {GITHUB_MODE} (GitHub-nativo e o default; --local desliga; --solo/--auto sao autonomia, nao desligam)
|
|
179
196
|
```
|
|
180
197
|
|
|
181
|
-
Resolver `GITHUB_MODE` antes do banner
|
|
198
|
+
Resolver `GITHUB_MODE` antes do banner. `$LOCAL`/`$SOLO`/`$AUTO`/`$BOARD_FLAG` vem das flags da
|
|
199
|
+
invocacao. **`--solo` NAO desliga o GitHub** (so `--local` desliga):
|
|
182
200
|
|
|
183
201
|
```bash
|
|
184
|
-
# --
|
|
185
|
-
if [ "$
|
|
202
|
+
# So --local (ou config github_native=false) desliga o GitHub.
|
|
203
|
+
if [ "$LOCAL" = "true" ]; then
|
|
186
204
|
GITHUB_NATIVE=false
|
|
187
205
|
else
|
|
188
206
|
GITHUB_NATIVE=$(node "$HOME/.claude/up/bin/up-tools.cjs" config get github_native --raw 2>/dev/null)
|
|
189
207
|
[ -z "$GITHUB_NATIVE" ] && GITHUB_NATIVE=true # default TRUE
|
|
190
208
|
fi
|
|
191
209
|
|
|
210
|
+
# --solo e --auto sao AUTONOMIA (sem menu). --solo tambem pula o gate visual.
|
|
211
|
+
AUTONOMO=false
|
|
212
|
+
{ [ "$SOLO" = "true" ] || [ "$AUTO" = "true" ]; } && AUTONOMO=true
|
|
213
|
+
|
|
192
214
|
if [ "$GITHUB_NATIVE" = "true" ]; then
|
|
193
215
|
GITHUB_MODE="GitHub-nativo (worktree + issue + PR/menu por fase)"
|
|
194
|
-
[ "$AUTO" = "true" ]
|
|
216
|
+
[ "$AUTO" = "true" ] && GITHUB_MODE="GitHub-nativo --auto (PR + merge squash; gate visual ainda roda)"
|
|
217
|
+
[ "$SOLO" = "true" ] && GITHUB_MODE="GitHub-nativo --solo (autonomo total: PR + merge, SEM gate visual)"
|
|
195
218
|
else
|
|
196
|
-
GITHUB_MODE="--
|
|
219
|
+
GITHUB_MODE="--local (commit atomico na branch atual, sem worktree/issue/PR)"
|
|
197
220
|
fi
|
|
198
221
|
|
|
199
222
|
# --board liga o espelho Multica (OPT-IN). So tem efeito se passado explicitamente.
|
|
@@ -231,27 +254,37 @@ Para cada fase em ROADMAP.md (em ordem):
|
|
|
231
254
|
|
|
232
255
|
### 3.0 Abrir a fase (GitHub-nativo - DEFAULT)
|
|
233
256
|
|
|
234
|
-
A menos que `--
|
|
257
|
+
A menos que `--local` (ou `github_native=false`), abrir worktree + branch + issue ANTES de executar a fase.
|
|
235
258
|
|
|
236
259
|
```bash
|
|
237
260
|
PHASE_SLUG=$(node "$HOME/.claude/up/bin/up-tools.cjs" slug "{phase_name}" --raw)
|
|
238
261
|
|
|
239
262
|
if [ "$GITHUB_NATIVE" = "true" ]; then
|
|
240
|
-
# Cria worktree + branch up/fase-NN-slug
|
|
241
|
-
#
|
|
263
|
+
# Cria worktree + branch up/fase-NN-slug SEMPRE (git local). Issue por transporte:
|
|
264
|
+
# gh -> issue criada aqui; mcp -> retorna pending.issue (workflow cria via MCP); none -> sem remote.
|
|
242
265
|
START=$(node "$HOME/.claude/up/bin/up-tools.cjs" github start-phase \
|
|
243
266
|
--phase {phase_number} --slug "$PHASE_SLUG" --raw)
|
|
244
267
|
if [[ "$START" == @file:* ]]; then START=$(cat "${START#@file:}"); fi
|
|
245
|
-
WORKTREE=$(echo "$START"
|
|
246
|
-
BRANCH=$(echo "$START"
|
|
247
|
-
ISSUE=$(echo "$START"
|
|
248
|
-
echo "
|
|
268
|
+
WORKTREE=$(echo "$START" | grep -oE '"worktree"[^,}]*' | sed 's/.*: *"//;s/"//')
|
|
269
|
+
BRANCH=$(echo "$START" | grep -oE '"branch"[^,}]*' | sed 's/.*: *"//;s/"//')
|
|
270
|
+
ISSUE=$(echo "$START" | grep -oE '"issue"[^,}]*' | sed 's/.*: *//')
|
|
271
|
+
TRANSPORT=$(echo "$START" | grep -oE '"transport"[^,}]*' | sed 's/.*: *"//;s/"//')
|
|
272
|
+
echo "Fase {phase_number}: branch=$BRANCH worktree=$WORKTREE issue=${ISSUE:-null} transport=$TRANSPORT"
|
|
249
273
|
else
|
|
250
|
-
# --
|
|
251
|
-
WORKTREE="$(pwd)"; BRANCH="$(git rev-parse --abbrev-ref HEAD 2>/dev/null)"; ISSUE=""
|
|
274
|
+
# --local: sem worktree/issue. Trabalho acontece na branch atual.
|
|
275
|
+
WORKTREE="$(pwd)"; BRANCH="$(git rev-parse --abbrev-ref HEAD 2>/dev/null)"; ISSUE=""; TRANSPORT=none
|
|
252
276
|
fi
|
|
253
277
|
```
|
|
254
278
|
|
|
279
|
+
**Issue via MCP (quando `transport=mcp`):** sem `gh` mas com remote, `start-phase` ja criou worktree+branch
|
|
280
|
+
e devolveu `pending.issue {title, body}` no JSON. Se voce (orquestrador) TEM as tools `mcp__...github__*`,
|
|
281
|
+
crie a issue agora e grave o numero de volta:
|
|
282
|
+
|
|
283
|
+
> Ao detectar `transport=mcp` no `$START`: extraia `pending.issue.title`/`pending.issue.body`, chame
|
|
284
|
+
> `mcp__plugin_github_github__issue_write` (create) no repo do remote, pegue o numero retornado e rode
|
|
285
|
+
> `node "$HOME/.claude/up/bin/up-tools.cjs" github record-issue --phase {phase_number} --issue <num> --url <url>`.
|
|
286
|
+
> Se voce NAO tem MCP do GitHub: siga sem issue (worktree/branch ja existem; PR pode degradar pra merge local no fim).
|
|
287
|
+
|
|
255
288
|
**Entrar na worktree (so se github_native):** o trabalho da fase (executor, commits) acontece
|
|
256
289
|
DENTRO de `$WORKTREE`. Preferir a tool nativa do harness **EnterWorktree** apontando para `$WORKTREE`; se
|
|
257
290
|
indisponivel, a worktree ja foi criada por `start-phase` (basta usar `--cwd "$WORKTREE"` nos comandos
|
|
@@ -259,7 +292,7 @@ indisponivel, a worktree ja foi criada por `start-phase` (basta usar `--cwd "$WO
|
|
|
259
292
|
`git-map.json` permanece canonico no working dir principal. Ao terminar a fase usar **ExitWorktree** (ou
|
|
260
293
|
voltar `cd` para o repo principal) antes de atualizar `git-map.json` na main.
|
|
261
294
|
|
|
262
|
-
> Em `--
|
|
295
|
+
> Em `--local`, IGNORAR EnterWorktree/ExitWorktree: tudo na branch atual. Em `--solo` HA worktree (solo nao desliga GitHub).
|
|
263
296
|
|
|
264
297
|
**Multica: marcar a fase em execucao (so se `--board`, 1 chamada na ENTRADA da fase).**
|
|
265
298
|
Uma transicao por fase (nao por microtransicao): status `in_progress` + metadata `gh_issue`/`branch`.
|
|
@@ -281,7 +314,7 @@ NAO existe mais "1 plano por fase" (era a regressao do `head -1`): descobrimos T
|
|
|
281
314
|
agrupamento por wave do disco.
|
|
282
315
|
|
|
283
316
|
Os planos vivem DENTRO de `$WORKTREE` (a `.plano/` da fase viaja na branch da fase). Por isso TODA chamada
|
|
284
|
-
de descoberta usa `--cwd "$WORKTREE"` (em `--
|
|
317
|
+
de descoberta usa `--cwd "$WORKTREE"` (em `--local`, `$WORKTREE` = repo principal, entao funciona igual).
|
|
285
318
|
|
|
286
319
|
```bash
|
|
287
320
|
# (a) Metadados da fase + flag de paralelizacao (config). Trata @file: (saida > 50KB).
|
|
@@ -635,7 +668,7 @@ fi
|
|
|
635
668
|
|
|
636
669
|
So apos o GATE aprovar (APPROVE ou forced approval registrado).
|
|
637
670
|
|
|
638
|
-
**Caso `--
|
|
671
|
+
**Caso `--local` (github_native=false):** nada a fazer aqui. Tudo ja foi committado atomicamente na branch
|
|
639
672
|
atual. Seguir direto para 3.9. (Sem worktree, sem teste-visual-gate, sem merge.)
|
|
640
673
|
|
|
641
674
|
#### 3.8.0 Checkpoint de teste visual (PRE-MERGE) - so GitHub-nativo
|
|
@@ -649,9 +682,10 @@ REQUIRE_VISUAL=$(node "$HOME/.claude/up/bin/up-tools.cjs" config get require_vis
|
|
|
649
682
|
HAS_DEV=$(node -e "try{const s=require('./package.json').scripts||{};process.stdout.write((s.dev||s.start||s.serve)?'1':'')}catch(e){}" 2>/dev/null)
|
|
650
683
|
```
|
|
651
684
|
|
|
652
|
-
**Aplica o gate quando:** (HAS_UI ou HAS_DEV) E NAO (`--auto` E REQUIRE_VISUAL=false).
|
|
653
|
-
Ou seja: por padrao SEMPRE pede aprovacao visual antes do merge em fase de UI.
|
|
654
|
-
`--auto` +
|
|
685
|
+
**Aplica o gate quando:** (HAS_UI ou HAS_DEV) E NAO `--solo` E NAO (`--auto` E REQUIRE_VISUAL=false).
|
|
686
|
+
Ou seja: por padrao SEMPRE pede aprovacao visual antes do merge em fase de UI. `--solo` pula SEMPRE
|
|
687
|
+
(autonomo total). Pra pular sem solo (CI/yolo): `--auto` + `require_visual_test=false`. Projeto em
|
|
688
|
+
PRODUCAO: deixe o default (true) e nao use `--solo`.
|
|
655
689
|
|
|
656
690
|
Se aplica:
|
|
657
691
|
|
|
@@ -706,32 +740,44 @@ pkill -f "npm run dev" 2>/dev/null || true; pkill -f "npm start" 2>/dev/null ||
|
|
|
706
740
|
A escolha do checkpoint define a acao de fechamento (3.8.1): "Pode mergear"/"Aprovado" -> MERGE;
|
|
707
741
|
"Deixa a branch" -> nao mergeia; "Descarta" -> remove sem merge.
|
|
708
742
|
|
|
709
|
-
**Fase SEM UI** (infra/schema/backend puro) ou `--auto` com `require_visual_test=false`: pula 3.8.0.
|
|
743
|
+
**Fase SEM UI** (infra/schema/backend puro), `--solo`, ou `--auto` com `require_visual_test=false`: pula 3.8.0.
|
|
710
744
|
Nesse caso, GitHub-nativo interativo ainda apresenta o mesmo AskUserQuestion de 4 opcoes (sem o passo do
|
|
711
|
-
dev server) pra o dono decidir merge/PR/deixa/descarta. `--auto`
|
|
745
|
+
dev server) pra o dono decidir merge/PR/deixa/descarta. **Autonomo (`--solo`/`--auto`)** fecha direto sem
|
|
746
|
+
menu: `ESCOLHA=mergear`.
|
|
712
747
|
|
|
713
748
|
#### 3.8.1 Merge e avancar
|
|
714
749
|
|
|
715
750
|
Sair da worktree (**ExitWorktree** ou `cd` de volta ao repo principal) para que `finish-phase` opere e
|
|
716
|
-
atualize `git-map.json` na main.
|
|
717
|
-
(`--mode menu|auto|
|
|
751
|
+
atualize `git-map.json` na main. **Autonomo (`--solo`/`--auto`):** sem menu, `ESCOLHA=mergear`.
|
|
752
|
+
Mapear a escolha de 3.8.0 para `finish-phase` (`--mode menu|auto|local`):
|
|
718
753
|
|
|
719
754
|
```bash
|
|
755
|
+
[ "$AUTONOMO" = "true" ] && [ -z "$ESCOLHA" ] && ESCOLHA=mergear
|
|
720
756
|
case "$ESCOLHA" in
|
|
721
|
-
# Pode mergear / Aprovado: finish-phase --mode auto
|
|
722
|
-
#
|
|
723
|
-
mergear|aprovado) node "$HOME/.claude/up/bin/up-tools.cjs" github finish-phase --phase {phase_number} --mode auto --strategy squash ;;
|
|
757
|
+
# Pode mergear / Aprovado: finish-phase --mode auto. Transporte gh: pr create (Closes #N) -> merge -> cleanup.
|
|
758
|
+
# Transporte mcp (sem gh): faz push e retorna action 'needs-mcp-pr' (ver abaixo). none: merge LOCAL + cleanup.
|
|
759
|
+
mergear|aprovado) FIN=$(node "$HOME/.claude/up/bin/up-tools.cjs" github finish-phase --phase {phase_number} --mode auto --strategy squash --raw) ;;
|
|
724
760
|
# Deixa a branch: nao mergeia; worktree+branch vivos. menu so atualiza git-map.json (status=in_review).
|
|
725
|
-
deixa) node "$HOME/.claude/up/bin/up-tools.cjs" github finish-phase --phase {phase_number} --mode menu ;;
|
|
761
|
+
deixa) FIN=$(node "$HOME/.claude/up/bin/up-tools.cjs" github finish-phase --phase {phase_number} --mode menu --raw) ;;
|
|
726
762
|
# Descarta: orquestrador remove worktree + branch (sem merge); reflete em git-map.json via status=cancelled.
|
|
727
|
-
descarta) echo "Descartando fase {phase_number}: remover worktree + branch (sem merge)." ;;
|
|
763
|
+
descarta) echo "Descartando fase {phase_number}: remover worktree + branch (sem merge)." ; FIN="" ;;
|
|
728
764
|
esac
|
|
729
765
|
```
|
|
730
766
|
|
|
731
|
-
`
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
767
|
+
**PR via MCP (quando `FIN` traz `"action":"needs-mcp-pr"`):** sem `gh`, o `finish-phase` ja deu `git push` da
|
|
768
|
+
branch e devolveu `pr_payload {base, head, title, body, issue, strategy}`. Se voce TEM `mcp__...github__*`:
|
|
769
|
+
|
|
770
|
+
> Chame `mcp__plugin_github_github__create_pull_request` (base/head/title/body do `pr_payload`), depois
|
|
771
|
+
> `mcp__plugin_github_github__merge_pull_request` (merge_method=squash). Pegue o numero do PR e rode:
|
|
772
|
+
> `node "$HOME/.claude/up/bin/up-tools.cjs" github record-pr --phase {phase_number} --pr <num> --url <url> --merged`
|
|
773
|
+
> (`--merged` grava o PR, marca a fase merged e limpa worktree+branch). Se NAO tem MCP: rode
|
|
774
|
+
> `github finish-phase --phase {phase_number} --mode local` como degradacao (a branch ja foi pushada; faca o
|
|
775
|
+
> merge no GitHub manualmente depois) OU avise o dono.
|
|
776
|
+
|
|
777
|
+
`finish-phase --mode auto` (transporte gh) faz: gh pr create (body com `Closes #<issue>`) -> merge (squash
|
|
778
|
+
default, ou `--strategy merge|rebase`) -> cleanup worktree+branch, atualiza `git-map.json`. Sem remote (none),
|
|
779
|
+
faz merge LOCAL da branch na base e remove a worktree (issue/PR=null). `--mode local` nao faz nada (usado em
|
|
780
|
+
`--local`, ja committado na branch atual); em `--local` o fluxo nem chega aqui (tratado em 3.8).
|
|
735
781
|
|
|
736
782
|
**Multica: sync BATCHED no FIM da fase/onda (so se `--board`).**
|
|
737
783
|
Uma unica chamada que reflete TODAS as transicoes acumuladas da fase de uma vez (nao por microtransicao):
|
|
@@ -759,7 +805,7 @@ if [ "$BOARD" = "true" ]; then
|
|
|
759
805
|
fi
|
|
760
806
|
```
|
|
761
807
|
|
|
762
|
-
> Em `--
|
|
808
|
+
> Em `--local` o fluxo nem chega aqui (sem `--board`): nenhuma chamada Multica.
|
|
763
809
|
|
|
764
810
|
### 3.9 Reassessment de roadmap (pos-fase, inline, ~30s)
|
|
765
811
|
|
|
@@ -845,8 +891,9 @@ final_confidence: [do up-revisor de delivery]
|
|
|
845
891
|
- [ ] E2E + DCRV rodaram por fase (delegado a dcrv.md)
|
|
846
892
|
- [ ] up-revisor emitiu veredito por fase e LOGOU em approvals.log COM campo evidence=<tipo>:<resultado>
|
|
847
893
|
- [ ] GATE de fase deterministico passou (APPROVE + evidence do tipo certo, ou forced approval com debito)
|
|
848
|
-
- [ ] GitHub-nativo (default): worktree+branch+issue por fase via `github start-phase
|
|
849
|
-
`github finish-phase` no fim. `--solo`
|
|
894
|
+
- [ ] GitHub-nativo (default): worktree+branch+issue por fase via `github start-phase` (transporte gh OU
|
|
895
|
+
MCP); menu 4 opcoes / `github finish-phase` no fim. `--solo`/`--auto` mantem GitHub (autonomia, nao
|
|
896
|
+
desliga). `--local` degrada para commit na branch atual (sem worktree/issue/PR)
|
|
850
897
|
- [ ] Execucao sempre via up-executor (roteia por contexto: frontend/backend/database/misto); SEM agentes
|
|
851
898
|
specialist separados (Onda 2 do corte)
|
|
852
899
|
- [ ] `--board`: Multica init no inicio (project+pai), sync `in_progress` na entrada da fase, sync BATCHED
|
package/up/workflows/rapido.md
CHANGED
|
@@ -4,7 +4,7 @@ Executar tarefas pequenas e ad-hoc com garantias UP (commits atomicos, rastreame
|
|
|
4
4
|
**ESCAPE HATCH PURO (sem cerimonia GitHub).** Diferente de `/up:build` (GitHub-nativo por DEFAULT:
|
|
5
5
|
worktree -> branch `up/fase-NN` -> issue -> PR -> menu), o modo rapido NUNCA cria worktree, NUNCA cria
|
|
6
6
|
issue do GitHub, NUNCA abre PR e NAO toca em `.plano/git-map.json`. Todo o trabalho e committado
|
|
7
|
-
atomicamente na branch ATUAL (
|
|
7
|
+
atomicamente na branch ATUAL (mesma semantica do `--local` do build). E o caminho quente para
|
|
8
8
|
"so faz e commita". Quem quer worktree/issue/PR usa `/up:build`.
|
|
9
9
|
</purpose>
|
|
10
10
|
|
package/up/workflows/up.md
CHANGED
|
@@ -290,9 +290,12 @@ Escrever inline (sem CEO):
|
|
|
290
290
|
**`.plano/config.json`** — defaults (perguntar so na complex):
|
|
291
291
|
|
|
292
292
|
```json
|
|
293
|
-
{ "mode": "yolo", "granularity": "standard", "parallelization": true, "commit_docs": true }
|
|
293
|
+
{ "mode": "yolo", "granularity": "standard", "parallelization": true, "commit_docs": true, "github_native": true }
|
|
294
294
|
```
|
|
295
295
|
|
|
296
|
+
`github_native: true` explicito torna a intencao visivel no arquivo (o build ja usa true por default, mas
|
|
297
|
+
deixar gravado evita ambiguidade em run autonomo). So vira `false` se o projeto e local sem GitHub.
|
|
298
|
+
|
|
296
299
|
Commits atomicos:
|
|
297
300
|
|
|
298
301
|
```bash
|
|
@@ -345,9 +348,10 @@ Apos estruturar, o `/up` NAO planeja nem executa fases sozinho. Ele entrega o ha
|
|
|
345
348
|
---
|
|
346
349
|
```
|
|
347
350
|
|
|
348
|
-
> `/up:build`
|
|
349
|
-
> `--
|
|
350
|
-
>
|
|
351
|
+
> `/up:build` e **GitHub-nativo por padrao** (worktree + issue + PR por fase, via `gh` OU MCP do GitHub).
|
|
352
|
+
> Flags: `--auto` (pula o menu, mantem GitHub), `--solo` (autonomo total: GitHub + auto-merge, sem menu
|
|
353
|
+
> nem gate visual), `--local` (escape sem GitHub: commit na branch atual), `--board` (espelho de status no
|
|
354
|
+
> Multica, batched, fail-open). Para ver o board depois: `/up estado board`. Aqui so roteamos pro /up:plan.
|
|
351
355
|
|
|
352
356
|
## Passo 4: CLONE (URL recebida)
|
|
353
357
|
|
|
@@ -394,6 +398,7 @@ escreve o PRD pronto pro planejamento.
|
|
|
394
398
|
|
|
395
399
|
```json
|
|
396
400
|
{ "mode": "yolo", "granularity": "standard", "parallelization": true, "commit_docs": true,
|
|
401
|
+
"github_native": true,
|
|
397
402
|
"builder_type": "clone", "clone_source": "{URL}", "clone_mode": "{exact|improve|inspiration}",
|
|
398
403
|
"clone_data": ".plano/clone/" }
|
|
399
404
|
```
|