neo-agent-skills 0.1.39 → 0.1.41
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.
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
<!-- trigger: you approved a PR and now want to stop or suspend its merge -> read this before commenting -->
|
|
2
2
|
|
|
3
|
-
# Withdrawing an approval
|
|
3
|
+
# Withdrawing an approval
|
|
4
4
|
|
|
5
|
-
An approval you have already submitted stays `APPROVED` on GitHub
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
An approval you have already submitted stays `APPROVED` on GitHub until you submit a newer review.
|
|
6
|
+
**Saying "do not merge" in a comment does not retract it**: the PR keeps reporting merge-ready, and a
|
|
7
|
+
human trusting that surface merges past you.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
**Withdraw with a review** when you have Required Actions and your family's round is unspent: submit
|
|
10
|
+
`CHANGES_REQUESTED` naming them. It replaces your approval in GitHub's own `reviewDecision`, counts
|
|
11
|
+
as your family's round (guide §6.3), and the clearing review is an ordinary Round 2 that
|
|
12
|
+
dispositions those actions.
|
|
13
|
+
|
|
14
|
+
**A token when no round is justified:** your round is spent, or no defect is established yet (the
|
|
15
|
+
head moved and you have not re-read it). Open a comment with one of these tokens on its own line
|
|
10
16
|
(the heading form is fine — `` ## `[MERGE_HOLD]` ``):
|
|
11
17
|
|
|
12
18
|
| Token | Means |
|
|
@@ -14,18 +20,12 @@ To withdraw or suspend an approval, open the comment with one of these tokens on
|
|
|
14
20
|
| `[MERGE_HOLD]` | Do not merge at this head. A prior approval is not a current authorization. |
|
|
15
21
|
| `[RE_REVIEW_HOLD]` | The approval stands but the head moved; re-review before merging. |
|
|
16
22
|
|
|
17
|
-
`validateMergeReady` reads them and blocks readiness, naming you as the holder
|
|
18
|
-
from that and both matter to you:
|
|
23
|
+
`validateMergeReady` reads them and blocks readiness, naming you as the holder:
|
|
19
24
|
|
|
20
|
-
- **Only a NEWER submitted review from you clears your hold.** A follow-up comment does not
|
|
21
|
-
|
|
25
|
+
- **Only a NEWER submitted review from you clears your hold.** A follow-up comment does not, not even
|
|
26
|
+
yours. A hold is not a round, so that review takes the full template.
|
|
22
27
|
- **No other peer can clear it.** A third party dispositioning your objection would read as resolved
|
|
23
28
|
while you still object.
|
|
24
29
|
|
|
25
30
|
Matching is structural, not lexical: the token must open a line. Writing *"no reason to
|
|
26
|
-
`[MERGE_HOLD]` this"* mid-sentence does **not** hold the PR
|
|
27
|
-
issuing one. An unrecognised token is not a hold — use the two above or the gate will not see you.
|
|
28
|
-
|
|
29
|
-
Dismissing the approval through GitHub's UI also works and is the stronger signal; the tokens exist
|
|
30
|
-
because remembering to dismiss was load-bearing and nothing prompted it.
|
|
31
|
-
|
|
31
|
+
`[MERGE_HOLD]` this"* mid-sentence does **not** hold the PR. An unrecognised token is not a hold.
|
|
@@ -324,8 +324,8 @@ After `[REJECTED_WITH_RATIONALE]` (`review-response-protocol.md §4`), re-escala
|
|
|
324
324
|
|
|
325
325
|
### 9.2 Withdrawing an approval
|
|
326
326
|
|
|
327
|
-
A
|
|
328
|
-
|
|
327
|
+
A "do not merge" comment does not retract an approval: use `CHANGES_REQUESTED` if a round is
|
|
328
|
+
justified, else a hold token ([`merge-hold-tokens.md`](./merge-hold-tokens.md)).
|
|
329
329
|
|
|
330
330
|
## 10. A2A Comment-ID Hand-off (warm-cache review cycles)
|
|
331
331
|
|
|
@@ -80,11 +80,11 @@ The authoring surface is **`.github/RELEASE_NOTES/v{version}.md`** in the engine
|
|
|
80
80
|
|
|
81
81
|
1. **Pre-flight requires it** (`publish.mjs` §1): the release ERRORS if the file is absent. The version comes from `package.json` (bumped manually before the cut).
|
|
82
82
|
2. The file is **committed and iterated on dev** ahead of the cut (§1) — the v13.0 lineage precedent, formalized.
|
|
83
|
-
3.
|
|
83
|
+
3. `publish.mjs finish` releases the merged note (frontmatter stripped, first H1 = title) with the **atomic-changelog-hash line** in the release body, via `gh release create` on the merge commit (cascades to npm).
|
|
84
84
|
4. **publish.mjs keeps the file**: the authored note is the archive, and nothing re-materializes it. The SECOND runbook command, `npm run ai:post-release-sync` (fail-closed preflight; publish prints it), uploads the Knowledge Base and writes nothing into the engine. The corpus picks the release up from GitHub Releases.
|
|
85
85
|
5. **Its guards:** `PublishReleaseNoteOrphan.spec.mjs` pins the authored path, the kept file and the flat layout; the release-note link scan in `Generate.spec.mjs` refuses mutable GitHub links.
|
|
86
86
|
6. Known observation (epic-tracked): `buildScripts/docs/index/release.mjs` scans flat files recursively, so a committed staging note surfaces its version in `releases.json` when the docs index regenerates pre-cut.
|
|
87
|
-
7. **The cut
|
|
87
|
+
7. **The cut's one human step is merging the release PR** (`§critical_gates`): agents run `publish.mjs prepare --ticket <prep leaf> --body-file <body>` to open it, then `finish`. Re-runs resume; the cut record stays open until npm and the Portal verify.
|
|
88
88
|
|
|
89
89
|
## §7 Cut-readiness checklist — `MACHINE-ENFORCEABLE-CANDIDATE`
|
|
90
90
|
|
|
@@ -95,7 +95,7 @@ The notes epic's final iteration passes when:
|
|
|
95
95
|
- [ ] Scope numbers regenerated at the cut boundary (§2 re-run) and reconciled in-document
|
|
96
96
|
- [ ] Every claim anchor-verified (§4); the numbers-verify sweep (the `#14327` class, "sequence LAST") has run against the final text
|
|
97
97
|
- [ ] The staging note is `.github/RELEASE_NOTES/v{version}.md`, matching `package.json`'s bump
|
|
98
|
-
- [ ]
|
|
98
|
+
- [ ] `publish.mjs prepare --rehearse --ticket <prep leaf> --body-file <body>` passes
|
|
99
99
|
|
|
100
100
|
## Lifecycle position
|
|
101
101
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "neo-agent-skills",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.41",
|
|
4
4
|
"description": "Install the workflow substrate a cross-model AI team actually runs on: ticket intake, PR review gates, lane coordination and guards, versioned as a package. The skills Neo.mjs maintainers load every session — materialized into your repo, not copied.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|