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.
Files changed (3) hide show
  1. package/CHANGELOG.md +100 -0
  2. package/VERSION +1 -1
  3. 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.0
1
+ 2.21.2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kodelyth-ecc",
3
- "version": "2.21.0",
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",