kodelyth-ecc 2.21.0 → 2.21.2
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 +100 -0
- package/VERSION +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,106 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to Kodelyth ECC are documented here.
|
|
4
4
|
|
|
5
|
+
## v2.21.2 — same content, with a GitHub release attached (September 2026)
|
|
6
|
+
|
|
7
|
+
Identical to 2.21.1 in every shipped file. It exists because 2.21.1 could not be
|
|
8
|
+
given a GitHub release.
|
|
9
|
+
|
|
10
|
+
What happened: the v2.21.1 tag was created against a commit that predated a fix
|
|
11
|
+
to `publish.yml`, and GitHub runs a release workflow from the tagged ref rather
|
|
12
|
+
than from the default branch — so the release fired the old workflow, which
|
|
13
|
+
tried to publish a version npm already had and failed. Deleting the release to
|
|
14
|
+
retag was the wrong move: this repository has immutable releases enabled, so
|
|
15
|
+
publishing a release permanently reserves its tag name and deleting it does not
|
|
16
|
+
give the name back. `v2.21.1` is now unusable as a tag.
|
|
17
|
+
|
|
18
|
+
2.21.1 remains a perfectly good version on npm. It simply has no GitHub release,
|
|
19
|
+
and cannot be given one.
|
|
20
|
+
|
|
21
|
+
The lesson is recorded in `publish.yml` itself: tag the commit that carries the
|
|
22
|
+
workflow you want the release to run.
|
|
23
|
+
|
|
24
|
+
**647 tests passing.**
|
|
25
|
+
|
|
26
|
+
## v2.21.1 — the release pipeline itself (September 2026)
|
|
27
|
+
|
|
28
|
+
**No change to the toolkit.** The shipped package is byte-identical to 2.21.0 —
|
|
29
|
+
797 files, zero differences. Every change below is CI and deploy infrastructure,
|
|
30
|
+
which the package excludes. Upgrading gains you nothing; it is recorded here
|
|
31
|
+
because the changelog is the project's memory.
|
|
32
|
+
|
|
33
|
+
Hence a patch, not a minor: nothing was added to what you install.
|
|
34
|
+
|
|
35
|
+
### Fixed — releases were not reaching the website
|
|
36
|
+
|
|
37
|
+
The workflow that tells the website a release happened had been removed after it
|
|
38
|
+
was found reporting green while returning HTTP 403. Its last line was:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
[ "$STATUS" = "204" ] && echo ok || echo failed
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
which exits 0 either way, so a broken dispatch and a working one produced the
|
|
45
|
+
same green check. It had silently done nothing for an unknown number of
|
|
46
|
+
releases.
|
|
47
|
+
|
|
48
|
+
Restored, with every failure path exiting non-zero. A preflight now separates
|
|
49
|
+
the failure modes, which a bare response cannot: the site repo is private, so
|
|
50
|
+
GitHub answers 404 rather than 403 to a token that cannot see it, making "wrong
|
|
51
|
+
repo path", "no repository access", and "access but no write permission" look
|
|
52
|
+
identical. It also reports the token type and its expiry, warning under 30 days
|
|
53
|
+
and erroring once lapsed — an expired token is what broke this the first time.
|
|
54
|
+
|
|
55
|
+
One correction worth recording: the preflight originally passed on
|
|
56
|
+
`permissions.push` from the repo API. That field is the permission of the *user*
|
|
57
|
+
who owns the token, not the permissions granted *to* the token, so a token
|
|
58
|
+
holding only `Metadata: Read` reported `push=true` and was still refused every
|
|
59
|
+
write. It now logs that as context and never gates on it.
|
|
60
|
+
|
|
61
|
+
### Fixed — the site redeployed every cron tick for identical content
|
|
62
|
+
|
|
63
|
+
Each content sync rewrites a `syncedAt` timestamp whether or not anything
|
|
64
|
+
changed, so `git status` was never clean, `changed` was permanently true, and
|
|
65
|
+
every scheduled run rebuilt and redeployed the server.
|
|
66
|
+
|
|
67
|
+
Measured over 24 hours: **14 sync commits, 2 with a real change.** The other 12
|
|
68
|
+
each ran a full install, build, rsync, an `rm -rf` and `mv` over the live
|
|
69
|
+
directories, and a container recreate — to ship byte-identical output.
|
|
70
|
+
Timestamp-only churn is now discarded rather than committed.
|
|
71
|
+
|
|
72
|
+
### Fixed — the cache purge reported success when it failed
|
|
73
|
+
|
|
74
|
+
The Cloudflare purge ended in the same shape as the dispatch bug —
|
|
75
|
+
`grep -q ... && echo OK || { echo failed; exit 0; }` — always exiting 0 with the
|
|
76
|
+
failure buried in a plain echo inside a green job. It now parses the response,
|
|
77
|
+
surfaces Cloudflare's own error codes as annotations, and stays non-fatal on
|
|
78
|
+
purpose: the site is live at origin and only the edge is stale, so failing the
|
|
79
|
+
job would misreport a good deploy.
|
|
80
|
+
|
|
81
|
+
### Added — deploys cannot collide
|
|
82
|
+
|
|
83
|
+
Push, dispatch and cron could all fire at once, and the swap step `rm -rf`s and
|
|
84
|
+
`mv`s live directories on the server. Runs are now queued on one concurrency
|
|
85
|
+
group rather than cancelled, since cancelling mid-swap is the state being
|
|
86
|
+
avoided. It caught three real collisions on the day it was added.
|
|
87
|
+
|
|
88
|
+
### Changed — actions on v7
|
|
89
|
+
|
|
90
|
+
`actions/checkout` and `actions/setup-node` moved v4 to v7, clearing GitHub's
|
|
91
|
+
Node 20 deprecation warning on every run. The majors were checked rather than
|
|
92
|
+
crossed blind: `setup-node` v5 auto-enables caching when `package.json` declares
|
|
93
|
+
`packageManager`, which neither repo does. `appleboy/ssh-action` stays on v1,
|
|
94
|
+
already current within that major.
|
|
95
|
+
|
|
96
|
+
### Measured — the cron is not a 10-minute backstop
|
|
97
|
+
|
|
98
|
+
The schedule is configured `*/10`, but GitHub throttles high-frequency
|
|
99
|
+
schedules. Across the last 14 scheduled runs the average gap was **228 minutes**,
|
|
100
|
+
the longest **345**. Documented in the workflow so nobody plans around ten
|
|
101
|
+
minutes again.
|
|
102
|
+
|
|
103
|
+
**647 tests passing.**
|
|
104
|
+
|
|
5
105
|
## v2.21.0 — the hooks were never actually turned on (September 2026)
|
|
6
106
|
|
|
7
107
|
Every hook ECC ships has been inert since the shell installer was written. Not
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2.21.
|
|
1
|
+
2.21.2
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kodelyth-ecc",
|
|
3
|
-
"version": "2.21.
|
|
3
|
+
"version": "2.21.2",
|
|
4
4
|
"description": "Production-grade AI coding toolkit — 70 agents (incl. devil-mode adversarial crew), 194 skills, 97 commands, parallel multi-agent commands, semantic intent routing, self-learning memory, and a built-in MCP server (16 tools / 6 prompts / 377 resources) that bridges to Claude Desktop, LangGraph, AutoGen, CrewAI, and OpenAI Agents SDK. Works with Claude Code, Windsurf, Cursor, Codex, Antigravity, OpenCode, Cline, RooCode, Aider, Kimi, and Gemini CLI.",
|
|
5
5
|
"author": "Kodelyth <github.com/sifxprime>",
|
|
6
6
|
"license": "MIT",
|