ctxr-cli 0.32.0 → 0.34.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/README.md +15 -1
- package/dist/commands/archive.d.ts +5 -4
- package/dist/commands/archive.d.ts.map +1 -1
- package/dist/commands/archive.js +7 -7
- package/dist/commands/archive.js.map +1 -1
- package/dist/commands/catalog-show.d.ts +8 -0
- package/dist/commands/catalog-show.d.ts.map +1 -1
- package/dist/commands/catalog-show.js +29 -2
- package/dist/commands/catalog-show.js.map +1 -1
- package/dist/commands/context-gather.d.ts.map +1 -1
- package/dist/commands/context-gather.js +3 -2
- package/dist/commands/context-gather.js.map +1 -1
- package/dist/commands/doctor.d.ts +5 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +4 -0
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/graph-build.d.ts +4 -1
- package/dist/commands/graph-build.d.ts.map +1 -1
- package/dist/commands/graph-build.js +14 -5
- package/dist/commands/graph-build.js.map +1 -1
- package/dist/commands/land.d.ts +27 -7
- package/dist/commands/land.d.ts.map +1 -1
- package/dist/commands/land.js +307 -32
- package/dist/commands/land.js.map +1 -1
- package/dist/commands/publish-gather.d.ts.map +1 -1
- package/dist/commands/publish-gather.js +2 -3
- package/dist/commands/publish-gather.js.map +1 -1
- package/dist/commands/review-list.d.ts +19 -5
- package/dist/commands/review-list.d.ts.map +1 -1
- package/dist/commands/review-list.js +55 -6
- package/dist/commands/review-list.js.map +1 -1
- package/dist/commands/rollup-gather.d.ts.map +1 -1
- package/dist/commands/rollup-gather.js +2 -3
- package/dist/commands/rollup-gather.js.map +1 -1
- package/dist/commands/second-opinion.d.ts +33 -0
- package/dist/commands/second-opinion.d.ts.map +1 -0
- package/dist/commands/second-opinion.js +56 -0
- package/dist/commands/second-opinion.js.map +1 -0
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +4 -0
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/session-discard.d.ts +18 -0
- package/dist/commands/session-discard.d.ts.map +1 -0
- package/dist/commands/session-discard.js +31 -0
- package/dist/commands/session-discard.js.map +1 -0
- package/dist/commands/session-list.d.ts +17 -6
- package/dist/commands/session-list.d.ts.map +1 -1
- package/dist/commands/session-list.js +31 -11
- package/dist/commands/session-list.js.map +1 -1
- package/dist/commands/session-rebase.d.ts +18 -0
- package/dist/commands/session-rebase.d.ts.map +1 -0
- package/dist/commands/session-rebase.js +43 -0
- package/dist/commands/session-rebase.js.map +1 -0
- package/dist/commands/session-start.d.ts +8 -0
- package/dist/commands/session-start.d.ts.map +1 -1
- package/dist/commands/session-start.js +45 -5
- package/dist/commands/session-start.js.map +1 -1
- package/dist/commands/session-status.d.ts +17 -0
- package/dist/commands/session-status.d.ts.map +1 -0
- package/dist/commands/session-status.js +38 -0
- package/dist/commands/session-status.js.map +1 -0
- package/dist/commands/session-submit.d.ts +23 -0
- package/dist/commands/session-submit.d.ts.map +1 -0
- package/dist/commands/session-submit.js +42 -0
- package/dist/commands/session-submit.js.map +1 -0
- package/dist/commands/shared-stores-status.d.ts +24 -0
- package/dist/commands/shared-stores-status.d.ts.map +1 -0
- package/dist/commands/shared-stores-status.js +51 -0
- package/dist/commands/shared-stores-status.js.map +1 -0
- package/dist/commands/shared-stores-sync.d.ts +27 -0
- package/dist/commands/shared-stores-sync.d.ts.map +1 -0
- package/dist/commands/shared-stores-sync.js +115 -0
- package/dist/commands/shared-stores-sync.js.map +1 -0
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +2 -4
- package/dist/commands/verify.js.map +1 -1
- package/dist/config/schema.d.ts +16 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +32 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/core/agents-doc.d.ts +10 -0
- package/dist/core/agents-doc.d.ts.map +1 -1
- package/dist/core/agents-doc.js +26 -1
- package/dist/core/agents-doc.js.map +1 -1
- package/dist/core/approval/decision.d.ts +39 -1
- package/dist/core/approval/decision.d.ts.map +1 -1
- package/dist/core/approval/decision.js +53 -6
- package/dist/core/approval/decision.js.map +1 -1
- package/dist/core/approval/session-group.d.ts +156 -0
- package/dist/core/approval/session-group.d.ts.map +1 -0
- package/dist/core/approval/session-group.js +359 -0
- package/dist/core/approval/session-group.js.map +1 -0
- package/dist/core/approval/session-marker.d.ts +79 -0
- package/dist/core/approval/session-marker.d.ts.map +1 -0
- package/dist/core/approval/session-marker.js +146 -0
- package/dist/core/approval/session-marker.js.map +1 -0
- package/dist/core/approval/store-forges.d.ts +15 -0
- package/dist/core/approval/store-forges.d.ts.map +1 -0
- package/dist/core/approval/store-forges.js +33 -0
- package/dist/core/approval/store-forges.js.map +1 -0
- package/dist/core/browse/approve.d.ts +8 -0
- package/dist/core/browse/approve.d.ts.map +1 -1
- package/dist/core/browse/approve.js +366 -48
- package/dist/core/browse/approve.js.map +1 -1
- package/dist/core/browse/link-resolver.d.ts +9 -4
- package/dist/core/browse/link-resolver.d.ts.map +1 -1
- package/dist/core/browse/link-resolver.js +12 -7
- package/dist/core/browse/link-resolver.js.map +1 -1
- package/dist/core/browse/review.d.ts +5 -0
- package/dist/core/browse/review.d.ts.map +1 -1
- package/dist/core/browse/review.js +8 -0
- package/dist/core/browse/review.js.map +1 -1
- package/dist/core/checks/integrity-checks.d.ts.map +1 -1
- package/dist/core/checks/integrity-checks.js +7 -1
- package/dist/core/checks/integrity-checks.js.map +1 -1
- package/dist/core/checks/manifest.d.ts.map +1 -1
- package/dist/core/checks/manifest.js +2 -0
- package/dist/core/checks/manifest.js.map +1 -1
- package/dist/core/checks/shared-stores-checks.d.ts +17 -0
- package/dist/core/checks/shared-stores-checks.d.ts.map +1 -0
- package/dist/core/checks/shared-stores-checks.js +84 -0
- package/dist/core/checks/shared-stores-checks.js.map +1 -0
- package/dist/core/errors.d.ts +17 -0
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +21 -0
- package/dist/core/errors.js.map +1 -1
- package/dist/core/forge/github.d.ts +14 -0
- package/dist/core/forge/github.d.ts.map +1 -1
- package/dist/core/forge/github.js +17 -0
- package/dist/core/forge/github.js.map +1 -1
- package/dist/core/git/fast-forward.d.ts +23 -0
- package/dist/core/git/fast-forward.d.ts.map +1 -0
- package/dist/core/git/fast-forward.js +38 -0
- package/dist/core/git/fast-forward.js.map +1 -0
- package/dist/core/git/repo.d.ts +11 -0
- package/dist/core/git/repo.d.ts.map +1 -1
- package/dist/core/git/repo.js +25 -0
- package/dist/core/git/repo.js.map +1 -1
- package/dist/core/graph/model.d.ts +27 -0
- package/dist/core/graph/model.d.ts.map +1 -1
- package/dist/core/graph/model.js +68 -2
- package/dist/core/graph/model.js.map +1 -1
- package/dist/core/graph/persist.d.ts.map +1 -1
- package/dist/core/graph/persist.js +3 -2
- package/dist/core/graph/persist.js.map +1 -1
- package/dist/core/mcp/sessions.d.ts +11 -14
- package/dist/core/mcp/sessions.d.ts.map +1 -1
- package/dist/core/mcp/sessions.js +23 -43
- package/dist/core/mcp/sessions.js.map +1 -1
- package/dist/core/notes/list.d.ts.map +1 -1
- package/dist/core/notes/list.js +5 -0
- package/dist/core/notes/list.js.map +1 -1
- package/dist/core/reconcile.d.ts.map +1 -1
- package/dist/core/reconcile.js +2 -1
- package/dist/core/reconcile.js.map +1 -1
- package/dist/core/retrieval/pass.d.ts.map +1 -1
- package/dist/core/retrieval/pass.js +5 -4
- package/dist/core/retrieval/pass.js.map +1 -1
- package/dist/core/rollup.d.ts.map +1 -1
- package/dist/core/rollup.js +2 -3
- package/dist/core/rollup.js.map +1 -1
- package/dist/core/root.d.ts.map +1 -1
- package/dist/core/root.js +33 -2
- package/dist/core/root.js.map +1 -1
- package/dist/core/second-opinion/environment.d.ts +21 -0
- package/dist/core/second-opinion/environment.d.ts.map +1 -0
- package/dist/core/second-opinion/environment.js +70 -0
- package/dist/core/second-opinion/environment.js.map +1 -0
- package/dist/core/second-opinion/judge.d.ts +29 -0
- package/dist/core/second-opinion/judge.d.ts.map +1 -0
- package/dist/core/second-opinion/judge.js +55 -0
- package/dist/core/second-opinion/judge.js.map +1 -0
- package/dist/core/second-opinion/launch.d.ts +16 -0
- package/dist/core/second-opinion/launch.d.ts.map +1 -0
- package/dist/core/second-opinion/launch.js +75 -0
- package/dist/core/second-opinion/launch.js.map +1 -0
- package/dist/core/second-opinion/lineup.d.ts +82 -0
- package/dist/core/second-opinion/lineup.d.ts.map +1 -0
- package/dist/core/second-opinion/lineup.js +113 -0
- package/dist/core/second-opinion/lineup.js.map +1 -0
- package/dist/core/second-opinion/modes.d.ts +98 -0
- package/dist/core/second-opinion/modes.d.ts.map +1 -0
- package/dist/core/second-opinion/modes.js +224 -0
- package/dist/core/second-opinion/modes.js.map +1 -0
- package/dist/core/second-opinion/prompts.d.ts +18 -0
- package/dist/core/second-opinion/prompts.d.ts.map +1 -0
- package/dist/core/second-opinion/prompts.js +65 -0
- package/dist/core/second-opinion/prompts.js.map +1 -0
- package/dist/core/session/commit.d.ts +29 -0
- package/dist/core/session/commit.d.ts.map +1 -0
- package/dist/core/session/commit.js +22 -0
- package/dist/core/session/commit.js.map +1 -0
- package/dist/core/session/discard.d.ts +24 -0
- package/dist/core/session/discard.d.ts.map +1 -0
- package/dist/core/session/discard.js +68 -0
- package/dist/core/session/discard.js.map +1 -0
- package/dist/core/session/list.d.ts +48 -0
- package/dist/core/session/list.d.ts.map +1 -0
- package/dist/core/session/list.js +55 -0
- package/dist/core/session/list.js.map +1 -0
- package/dist/core/session/rebase.d.ts +34 -0
- package/dist/core/session/rebase.d.ts.map +1 -0
- package/dist/core/session/rebase.js +87 -0
- package/dist/core/session/rebase.js.map +1 -0
- package/dist/core/session/remote.d.ts +80 -0
- package/dist/core/session/remote.d.ts.map +1 -0
- package/dist/core/session/remote.js +102 -0
- package/dist/core/session/remote.js.map +1 -0
- package/dist/core/session/resolve.d.ts +41 -0
- package/dist/core/session/resolve.d.ts.map +1 -0
- package/dist/core/session/resolve.js +109 -0
- package/dist/core/session/resolve.js.map +1 -0
- package/dist/core/session/status.d.ts +47 -0
- package/dist/core/session/status.d.ts.map +1 -0
- package/dist/core/session/status.js +55 -0
- package/dist/core/session/status.js.map +1 -0
- package/dist/core/session/submit.d.ts +67 -0
- package/dist/core/session/submit.d.ts.map +1 -0
- package/dist/core/session/submit.js +254 -0
- package/dist/core/session/submit.js.map +1 -0
- package/dist/core/shared-stores-location.d.ts +17 -0
- package/dist/core/shared-stores-location.d.ts.map +1 -0
- package/dist/core/shared-stores-location.js +22 -0
- package/dist/core/shared-stores-location.js.map +1 -0
- package/dist/core/shared-stores.d.ts +69 -0
- package/dist/core/shared-stores.d.ts.map +1 -0
- package/dist/core/shared-stores.js +100 -0
- package/dist/core/shared-stores.js.map +1 -0
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +14 -10
- package/dist/core/skills.js.map +1 -1
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +122 -6
- package/dist/run.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/templates/agents/shared-stores.md +11 -0
- package/templates/approve/copies-missing.md +1 -0
- package/templates/approve/elsewhere-heading.md +1 -0
- package/templates/approve/elsewhere-intro.md +1 -0
- package/templates/approve/homed-elsewhere.md +1 -0
- package/templates/approve/not-decider.md +1 -0
- package/templates/approve/part-heading.md +1 -0
- package/templates/approve/parts-changed.md +1 -0
- package/templates/approve/session-decision-note.md +1 -0
- package/templates/approve/session-intro.md +1 -0
- package/templates/approve/session-no-decision.md +1 -0
- package/templates/approve/store-unreachable.md +1 -0
- package/templates/land/resolver.md +2 -0
- package/templates/second-opinion/poll-answer.md +7 -0
- package/templates/second-opinion/taste-panel.md +14 -0
- package/templates/session/pages/bare-route.md +2 -0
- package/templates/session/pages/block.md +8 -0
- package/templates/session/pages/condition-preview.md +1 -0
- package/templates/session/pages/condition.md +1 -0
- package/templates/session/pages/moved.md +1 -0
- package/templates/session/pages/stops-working.md +1 -0
- package/templates/session/pages/table-head-preview.md +2 -0
- package/templates/session/pages/table-head.md +2 -0
- package/templates/skills/ctxr-capture-circleback/sweep.mjs +33 -6
- package/templates/skills/ctxr-capture-circleback.md +9 -6
- package/templates/skills/ctxr-connection-finding.md +4 -1
- package/templates/skills/ctxr-land.md +26 -7
- package/templates/skills/ctxr-placement.md +10 -0
- package/templates/skills/ctxr-rollup.md +3 -0
- package/templates/skills/ctxr-second-opinion.md +52 -36
- package/templates/skills/ctxr-session-lifecycle.md +60 -33
- package/templates/skills/ctxr-submit.md +65 -56
- package/templates/skills/ctxr-second-opinion/run.mjs +0 -542
- /package/templates/{skills/ctxr-second-opinion → second-opinion}/critic-contract.md +0 -0
- /package/templates/{skills/ctxr-second-opinion → second-opinion}/lenses.md +0 -0
- /package/templates/{skills/ctxr-second-opinion → second-opinion}/personas/architect.md +0 -0
- /package/templates/{skills/ctxr-second-opinion → second-opinion}/personas/pragmatist.md +0 -0
- /package/templates/{skills/ctxr-second-opinion → second-opinion}/personas/skeptic.md +0 -0
|
@@ -5,9 +5,9 @@ a session, the conflict playbook, sequencing several pull requests) and is not r
|
|
|
5
5
|
## When
|
|
6
6
|
|
|
7
7
|
Fires on an explicit request to wrap up — "submit", "open the PR", "push it", "ship it" — or on the
|
|
8
|
-
operator's own closing utterance ("done", "that's all", a sign-off). That request is the whole reason step
|
|
8
|
+
operator's own closing utterance ("done", "that's all", a sign-off). That request is the whole reason step 7
|
|
9
9
|
needs no further confirmation: it is the consent for the push and the pull-request open. Enter without
|
|
10
|
-
one and there is nothing behind
|
|
10
|
+
one and there is nothing behind that step.
|
|
11
11
|
|
|
12
12
|
Anti-triggers — do not enter this skill when: you have merely finished the task you were given (a
|
|
13
13
|
delivered piece of work is not a closing signal, and the next message is as likely to extend it as to
|
|
@@ -16,13 +16,19 @@ asked for more work. Your own judgment that the work looks complete is never the
|
|
|
16
16
|
your own summary saying so.
|
|
17
17
|
|
|
18
18
|
Two tells that you are here uninvited. Reaching for `ctxr doctor`, `ctxr lint`, or `ctxr catalog check`
|
|
19
|
-
to decide *whether* to submit — those live at step
|
|
20
|
-
running them ahead of one is a rehearsal, not a check. And composing a question like "shall
|
|
21
|
-
pull request?" — needing to ask is itself the answer: leave, and let the work continue.
|
|
19
|
+
to decide *whether* to submit — those live at step 4 and inside `ctxr session submit`, in a submit already
|
|
20
|
+
asked for, and running them ahead of one is a rehearsal, not a check. And composing a question like "shall
|
|
21
|
+
I open the pull request?" — needing to ask is itself the answer: leave, and let the work continue.
|
|
22
22
|
|
|
23
23
|
Ending a turn without that signal is normal and is not this skill. Say in one line what is uncommitted
|
|
24
24
|
and which worktree holds it, then stop. The work is safe on the branch and the next message picks it up.
|
|
25
25
|
|
|
26
|
+
## A session in a mounted store
|
|
27
|
+
|
|
28
|
+
A session started inside `shared/<name>` belongs to that mounted store. Run every step below from that session's worktree. The pull request opens on that store's repository. The hand-off names that store's approval page, from its own `contexture.yaml`.
|
|
29
|
+
|
|
30
|
+
A session started with `ctxr session start --joins` is one part of a session of this store. Submit every part of the session. Run `ctxr session submit` once in each part's worktree. Why: each store gets its own pull request, and the command marks each pull request with the session. Do not write a session marker into a body yourself. Why: the command writes it, and it refuses a body that already carries one.
|
|
31
|
+
|
|
26
32
|
## Routes
|
|
27
33
|
|
|
28
34
|
Every pull request takes one of three routes. Say which, and why, in its body:
|
|
@@ -35,57 +41,60 @@ Every pull request takes one of three routes. Say which, and why, in its body:
|
|
|
35
41
|
|
|
36
42
|
## Steps
|
|
37
43
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
44
|
+
`<session>` below is the session worktree's directory name, as `ctxr session list` prints it.
|
|
45
|
+
|
|
46
|
+
1. Re-scan (mandatory — never replay a plan from an earlier snapshot): `ctxr session status <session>`, with
|
|
47
|
+
`--diff` when you need the changes themselves. It fetches `__DEFAULT_BRANCH__` and reports what is
|
|
48
|
+
uncommitted, the diff stat of committed and uncommitted work, and the commits ahead of
|
|
49
|
+
`origin/__DEFAULT_BRANCH__`. State moves under you while you work; name the delta from the previous scan
|
|
50
|
+
rather than silently folding new work into old buckets. If the session touched or linked to an entity
|
|
51
|
+
note, run `ctxr rollup stale --for <entity>` (or a plain `ctxr rollup stale` when unsure which), and
|
|
52
|
+
offer `ctxr-rollup` on anything flagged — never run a rollup unasked; the operator decides.
|
|
45
53
|
2. Capture pass: run `ctxr-session-capture` exactly once here — closing a session is itself a capture
|
|
46
54
|
trigger; do not fire it again after submitting.
|
|
47
|
-
3.
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
`
|
|
57
|
-
|
|
58
|
-
named a worktree when the work began, and what ships is decided here.
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
body verbatim, as the **Knowledge changes** section. Do not add, remove, or change a word of it. Why: you
|
|
71
|
-
wrote the change, and the reviewer checks your account against this record, which the command wrote.
|
|
72
|
-
Always paste the block, also when it says that the range changes no note. Why: a missing section looks the
|
|
73
|
-
same as a skipped step. The block is the record of the change. The review address in the block is a
|
|
74
|
-
convenience only. Why: it resolves only while this session's worktree exists and the server can reach it.
|
|
75
|
-
Then run `git push -u origin "<branch>"`. Then run `gh pr create --base __DEFAULT_BRANCH__ --title "<title>"
|
|
76
|
-
--body "<why / what changed / route / verification / follow-ups>"`. `gh` reads its own credential file, so
|
|
55
|
+
3. One coherent unit per pull request. `ctxr session submit` commits every change in the worktree outside
|
|
56
|
+
the derived paths, so what the re-scan shows is what ships. If the session produced two disjoint units,
|
|
57
|
+
say so and ask whether to split; anything that should not ship leaves the worktree before step 7. Derived
|
|
58
|
+
artifacts under the cache paths never ship, and the command refuses an index that holds one, whoever
|
|
59
|
+
staged it.
|
|
60
|
+
4. Validate: run `ctxr doctor` (store scope, not `--staged` — a session's job is to leave the whole store
|
|
61
|
+
healthy, not merely pass one commit's gate). `ctxr session submit` runs the same check as its gate and
|
|
62
|
+
commits nothing when it fails. Fix a failure; never bypass it, and never proceed past it.
|
|
63
|
+
5. Name the branch: `<prefix>/<short-slug>`, with a prefix from `skill/` `feat/` `project/` `notes/` `chore/`
|
|
64
|
+
`refactor/` `fix/` unless this store's conventions say otherwise. Never let a generated name reach the
|
|
65
|
+
forge: the name you pass at step 7 replaces it. A name given at `ctxr session start` does not settle
|
|
66
|
+
this: it named a worktree when the work began, and what ships is decided here.
|
|
67
|
+
6. Write the commit message, the title and the body. The body answers
|
|
68
|
+
`<why / what changed / route / verification / follow-ups>`. Write the why so that a reviewer does not
|
|
69
|
+
have to find it again. Do not write a Knowledge changes section or a Pages section: the command appends
|
|
70
|
+
both after your body — the Pages table from the change set's page report when a page changed, and the
|
|
71
|
+
Knowledge changes block always — and refuses a body that already carries either heading. Why: you wrote
|
|
72
|
+
the change, and the reviewer checks your account against the record the command wrote.
|
|
73
|
+
7. Submit: `ctxr session submit <session> --branch "<name>" --message "<message>" --title "<title>"
|
|
74
|
+
--body-file <file>` (or `--body "<body>"` for a short one). It stages, runs the gate, commits, renames the
|
|
75
|
+
branch, pushes, and opens the pull request against `__DEFAULT_BRANCH__`, or updates the one already open
|
|
76
|
+
for the branch. Do not stop to confirm first. Why: the request to submit is the consent, and the
|
|
77
|
+
command's store-scope check is the gate on this path. Never push or open the pull request any other way;
|
|
77
78
|
never export or interpolate a token, and never rewrite the origin's URL. Why: that URL can hold a
|
|
78
|
-
credential.
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
79
|
+
credential.
|
|
80
|
+
Exit `0` means the pull request is open. Exit `3` names the step that stopped it, with everything before
|
|
81
|
+
that step left in place: a failed gate (fix it and run the same submit again), a derived path in the
|
|
82
|
+
index (unstage it), a rebase in progress (finish it with the conflict playbook), or a push or forge
|
|
83
|
+
failure. Exit `2` is a refused argument: a branch name the default branch or another branch carries, or
|
|
84
|
+
a body with a generated heading. If the forge cannot be reached, report the pushed branch and give the
|
|
85
|
+
operator the manual pull-request instructions.
|
|
86
|
+
8. Verify before any retry: a transport error can arrive AFTER the push or the pull-request open already
|
|
87
|
+
succeeded. `ctxr session submit` reads the remote branch and the forge's pull requests for it before it
|
|
88
|
+
pushes or opens anything, so running the same submit again is the retry, and it publishes once.
|
|
89
|
+
Submitting a session again after requested changes works the same way: a further commit on the same
|
|
90
|
+
branch, and the same pull request updated — keep `--branch` as it was.
|
|
91
|
+
9. Hand off. Report each pull request's number and its url. Name what lands it: `ctxr-land`, with that
|
|
92
|
+
number, or with the session when the session has a part in more than one store. Why: the next step is
|
|
93
|
+
then one word away, not something to reconstruct later. When this store declares `change_approval`,
|
|
94
|
+
also give the approval page address that the command reports.
|
|
95
|
+
It is `serve.base_url`, then `/approve/`, then the session worktree's directory name and a `/`.
|
|
96
|
+
For a session with parts in several stores, give one address only: the session's page in the store
|
|
97
|
+
where it started. Every part's submit reports that same address. Why: a person without a forge account
|
|
98
|
+
approves the change there. One decision covers every part, and the change then lands without further
|
|
99
|
+
steps. Landing stays a separate decision, made on the approval page or by an explicit go.
|
|
100
|
+
Never run it from here.
|