akm-cli 0.9.27-alpha.2 → 0.9.27
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/CHANGELOG.md +46 -0
- package/dist/commands/proposal/drain.js +5 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,52 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.9.27] - 2026-10-07
|
|
10
|
+
|
|
11
|
+
The stable release of the 0.9.27 line: 0.9.27-alpha.1, alpha.2 and alpha.3.
|
|
12
|
+
When upgrading from 0.9.26:
|
|
13
|
+
|
|
14
|
+
- **The nightly queue stops refilling with duplicates.** Consolidate no longer
|
|
15
|
+
re-offers a memory whose body a reviewer rejected, and the drain's judge sees
|
|
16
|
+
the five knowledge notes nearest a promotion and rejects one they already
|
|
17
|
+
cover. A confident `subsumed` or `supersedes` retirement that the second look
|
|
18
|
+
confirms resolves unattended, like a duplicate (alpha.2).
|
|
19
|
+
- **The judge rejects a promotion that is not durable:** a status, rollout,
|
|
20
|
+
version or test count, a plan not yet carried out, or something retired or
|
|
21
|
+
replaced. On 65 labelled promotions it accepted 13 of 61 bad ones before and
|
|
22
|
+
3 to 6 after, keeping 3 of the 4 good ones (alpha.3).
|
|
23
|
+
- **Distill writes a lesson only when its memory holds one.** The writer may
|
|
24
|
+
answer that there is none; its judge rejects a lesson that only records what
|
|
25
|
+
was done, repeats an asset the library holds or claims what the memory does
|
|
26
|
+
not say; both see the related lessons, knowledge notes and skills (alpha.2).
|
|
27
|
+
- **Reflect skips feedback an accepted exact fix already resolved**, and no
|
|
28
|
+
longer writes a second copy of a skill's reference files (alpha.1, alpha.2).
|
|
29
|
+
- **Fixed:** an old (0.9.1-era) index is recreated instead of crashing every
|
|
30
|
+
`akm index`; an updated index scores like a fresh one; strict APIs that reject
|
|
31
|
+
`chat_template_kwargs` get one retry without it, and every response schema is
|
|
32
|
+
strict-valid; extract reports a lesson it refuses; a codex dispatch with a
|
|
33
|
+
schema leaves no temp folder (alpha.1).
|
|
34
|
+
- **Removed:** `scripts/akm-eval`, now in itlackey/akm-eval (alpha.2).
|
|
35
|
+
|
|
36
|
+
## [0.9.27-alpha.3] - 2026-10-07
|
|
37
|
+
|
|
38
|
+
### Fixed
|
|
39
|
+
|
|
40
|
+
- **The drain's judge rejects a promotion that is a status snapshot, a plan or
|
|
41
|
+
something retired, not only a duplicate.** Its rubric for a promotion (a memory
|
|
42
|
+
proposed as a new knowledge note) said to reject a note that is wrong, a
|
|
43
|
+
duplicate or contradicts the live asset, and to accept a correct, valuable one,
|
|
44
|
+
so it judged only whether the note was new: the reasons it gave for accepting a
|
|
45
|
+
note pinned to commits and versions, a rollout status or a retired host were
|
|
46
|
+
"distinct from the existing notes". The reject line now also names a note that
|
|
47
|
+
reports the state of something that changes (a status, rollout, branch, commit,
|
|
48
|
+
version, test count, "as of <date>"), a plan not yet carried out, or something
|
|
49
|
+
already retired, replaced or superseded, and says a lesson drawn from an
|
|
50
|
+
incident is durable. On the owner's 65 labelled promotions (chat/qwen3.8-27b,
|
|
51
|
+
two runs each) the judge accepted 7 and 8 of the 14 stale ones and 4 and 5 of
|
|
52
|
+
the 7 ephemeral ones before, and 1 and 3, 0 and 1 after. Other proposals keep
|
|
53
|
+
the old rubric. No new settings.
|
|
54
|
+
|
|
9
55
|
## [0.9.27-alpha.2] - 2026-10-07
|
|
10
56
|
|
|
11
57
|
### Removed
|
|
@@ -144,6 +144,8 @@ export function fencedBlock(text) {
|
|
|
144
144
|
}
|
|
145
145
|
/** The judgment prompt: the proposal, the live asset it would overwrite, same-ref siblings, and for a promotion the nearest knowledge notes. */
|
|
146
146
|
export function buildJudgmentPrompt(proposal, reason, ctx) {
|
|
147
|
+
// A promotion (a memory proposed as a new knowledge note) must also be durable.
|
|
148
|
+
const promotion = proposal.source === "consolidate" && ctx.liveAsset === undefined;
|
|
147
149
|
const sections = [
|
|
148
150
|
"You are adjudicating a pending knowledge-base proposal no quality judge has",
|
|
149
151
|
"passed yet. Decide whether to accept, reject, or defer it.",
|
|
@@ -174,7 +176,9 @@ export function buildJudgmentPrompt(proposal, reason, ctx) {
|
|
|
174
176
|
}
|
|
175
177
|
sections.push("", "Reject the promotion if these notes already cover what it says, even in other words.");
|
|
176
178
|
}
|
|
177
|
-
sections.push("", "## Your task", 'Return ONLY a JSON object: {"decision": "accept" | "reject" | "defer", "reason": "<short reason>"}.', "- accept: the proposed content is a correct, valuable update worth committing.",
|
|
179
|
+
sections.push("", "## Your task", 'Return ONLY a JSON object: {"decision": "accept" | "reject" | "defer", "reason": "<short reason>"}.', "- accept: the proposed content is a correct, valuable update worth committing.", promotion
|
|
180
|
+
? '- reject: the proposal is wrong, a duplicate, contradicts the live asset, or is not durable: it reports the state of something that changes (a status, rollout, branch, commit, version, test count, "as of <date>"), is a plan not yet carried out, or describes something already retired, replaced or superseded. A lesson drawn from an incident is durable.'
|
|
181
|
+
: "- reject: the proposal is wrong, a duplicate, or contradicts the live asset.", "- defer: you cannot decide from the provided context (leave it pending).", "Output the JSON object and nothing else.");
|
|
178
182
|
return sections.join("\n");
|
|
179
183
|
}
|
|
180
184
|
/** A verdict from raw runner output (the first JSON object), or null. */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "akm-cli",
|
|
3
|
-
"version": "0.9.27
|
|
3
|
+
"version": "0.9.27",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "akm (Agent Knowledge Manager) — a portable, local-first capability library for AI agents. Discover, load, share, and improve reusable skills, scripts, workflows, and knowledge across any shell-capable coding agent, including Claude Code, OpenCode, and Cursor.",
|
|
6
6
|
"keywords": [
|