kairos-chain 3.65.0 → 3.67.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0b5f8504e1a59fe2e58603f654ad32a747381897a62dba70ba436388c5be3f55
4
- data.tar.gz: c4c86ca90fb56858a45c126aca497277846225c1b127549700be1e80484c0755
3
+ metadata.gz: 0506a7cc642b812cabab1bb2840d928e1a9f550bf2486466741a54b6d71ee74f
4
+ data.tar.gz: bf1ff56bf44cf13d78c01dedd26d0bdc6188453dea18ca1975027f2b3a6c7f8d
5
5
  SHA512:
6
- metadata.gz: 3535630f908f30fc87319e960207ea5552de1f29284211cf24e4802171a7699b3ebcde4ebce74875341d368004ea04ccf36211f4b68037755907a1ef77550ae6
7
- data.tar.gz: a01fbf7861eac890a2d020ce8a0606970d41a7a9f3d0f1840f1db7a19580c87f77b77af1ffebd4028c538f4535b562db78adff1c847389c2fd6a162dda5fa3f4
6
+ metadata.gz: 7c4ef69fda47be727f4ba9da5f44ee95d6cf63f5cff559bb3b3b2cc7dfc8df67022f47086d6468b6dc332f41b95908745557e294d2bc8d1e4dec70a763ec208a
7
+ data.tar.gz: 1838ad363f5bc95a8e5abdb1ca07c7be7891a0ab5410cbdc22456b5187bc4297f193d57f2a93b57578582704702b788eb2e5e78d5c4ff7c0f978bcc58c8cd4c5
data/CHANGELOG.md CHANGED
@@ -4,6 +4,33 @@ All notable changes to the `kairos-chain` gem will be documented in this file.
4
4
 
5
5
  This project follows [Semantic Versioning](https://semver.org/).
6
6
 
7
+ ## [3.67.0] - 2026-08-15
8
+
9
+ ### Added
10
+
11
+ - **The Minimum Nomic bench ships.** Three language models play a self-amending
12
+ game with nine changeable rules, no goal and no termination condition, while a
13
+ fourth decides only who speaks next. It lived at `bench/minimum_nomic/` in the
14
+ development checkout, which the gemspec never walked, so nobody outside this
15
+ repository could reproduce a run. It is now the `minimum_nomic` SkillSet under
16
+ `templates/skillsets/`, with the five scripts in `bin/`.
17
+
18
+ The single thing that kept it out was a hard-coded `../../.kairos/` path to the
19
+ `llm_client` adapters, which resolved only in the development checkout.
20
+ `llm_client` is now resolved as a **sibling SkillSet**
21
+ (`../../llm_client/lib/llm_client`), the same relative path in the gem's
22
+ templates and in a projected instance. When it is absent the run aborts naming
23
+ both directories it searched, rather than failing inside a `require`.
24
+
25
+ `bin/cross_model.rb` is new: it analyses a stored game with one named model at
26
+ one named reasoning effort, instead of the panel recorded in the game's own
27
+ line-up. Without it, a comparison between model generations reuses both stored
28
+ panels and confounds generation with effort — the stored games ran
29
+ `claude-opus-4-6` at medium and `claude-opus-5` at high.
30
+
31
+ Not yet demonstrated: no game has been played from an installed gem. Until one
32
+ has, treat distribution as untested.
33
+
7
34
  ## [3.65.0] - 2026-08-13
8
35
 
9
36
  ### Changed
@@ -1,4 +1,4 @@
1
1
  module KairosMcp
2
- VERSION = "3.65.0"
2
+ VERSION = "3.67.0"
3
3
  CHANGELOG_URL = "https://github.com/masaomi/KairosChain_2026/blob/main/CHANGELOG.md"
4
4
  end
@@ -50,6 +50,7 @@
50
50
  "Stop": [
51
51
  {
52
52
  "gate": "readable_gate",
53
+ "_description": "Measures the turn's last message against declared readability limits — length, headings, tables, undefined shorthand, a missing diagram — and reports to its log, or blocks the turn once blocking is true.",
53
54
  "section": "§ Readable output",
54
55
 
55
56
  "_blocking_note": "false on purpose in the example. The vocabulary rule below is the one thing here that cannot be got right by reading: whether a shape is coined shorthand or an ordinary technical word depends on what you write about. Start in report-only mode, read your log for a week, then set this to true. Shipping the example with true meant a consumer who copied it as instructed was blocked on the first message mentioning a character encoding.",
@@ -20,16 +20,42 @@ under `.kairos/hook_configs/`.
20
20
  Not auto-installed (not a core SkillSet): install it by name first —
21
21
  `system_upgrade command="apply" approved=true names=["kairos_hook_projector"]`.
22
22
 
23
- 1. Copy `mode_hooks/_EXAMPLE.json` beside your mode body as
24
- `<mode>.mode_hooks.json` (e.g. `.kairos/skills/masa.mode_hooks.json`).
25
- 2. Edit `mode_name` inside it to `<mode>` filename and field must agree
26
- and replace the example numbers with your own.
27
- 3. `mode_hooks_validate` reports what the copy still needs.
23
+ 1. `mode_hooks_add mode="<mode>" gate="readable_gate"` writes
24
+ `<mode>.mode_hooks.json` beside the mode body — creating it, or appending
25
+ to it; an entry with the same gate already on the event is refused, never
26
+ overwritten. Omitting `mode` targets the active mode, and on a stock init
27
+ that is `tutorial` a gem-shipped template body carrying no
28
+ readable-output norm — so name your mode. The entry comes from the
29
+ catalogue (`mode_hooks/_EXAMPLE.json`): event, section, blocking, and
30
+ starting params. Tune the numbers in the written file afterwards, they are
31
+ the mode's own — and edit `section` to a heading your mode body actually
32
+ contains: it is copied from the catalogue, it is a claim about your own
33
+ text, and the gate quotes it verbatim in every block reason. Called
34
+ without `gate` it lists the catalogue and writes nothing. It stops at the
35
+ declaration and never touches `.claude/settings.json`.
36
+ 2. Or by hand, for someone who wants to write the numbers themselves: copy
37
+ `mode_hooks/_EXAMPLE.json` beside your mode body as
38
+ `<mode>.mode_hooks.json` (e.g. `.kairos/skills/masa.mode_hooks.json`),
39
+ then edit `mode_name` inside it to `<mode>` — filename and field must
40
+ agree — edit `section` to a heading your mode body actually contains (the
41
+ gate quotes it verbatim in every block reason), and replace the example
42
+ numbers with your own.
43
+ 3. `mode_hooks_validate` reports what the declaration still needs.
28
44
  4. `mode_hooks_project` proposes by default and writes nothing; to install,
29
45
  call again with `apply=true` and the `confirm_sha256` from the proposal.
30
46
  5. `mode_hooks_validate`, run again, answers whether the gate is installed:
31
47
  its `installed` check compares declaration and `.claude/settings.json`.
32
48
 
49
+ The catalogue is gem-shipped and is not an extension point on the instance:
50
+ `system_upgrade` overwrites `mode_hooks/_EXAMPLE.json` on any reinstall — at
51
+ the same version, with no warning, without naming the file — so an edit to
52
+ the installed copy does not survive. Adding a gate kind is a core release
53
+ act: the catalogue entry, the kind in the compiler's known-gate table (until
54
+ then every call refuses it as `unknown_gate`), and the gate implementation
55
+ itself. Your declaration lives beside the mode body, outside the SkillSet,
56
+ for the same reason — the tool refuses to write declarations inside the
57
+ SkillSet directory because an upgrade would undo them.
58
+
33
59
  ## Removing a mode's hooks
34
60
 
35
61
  Two routes, and either works: empty the declaration's `hooks` object
@@ -54,6 +80,9 @@ installed command names them; delete them by hand if you want them gone.
54
80
 
55
81
  ## Tools
56
82
 
83
+ - `mode_hooks_add` — write or extend a mode's declaration from the catalogue
84
+ (`mode_hooks/_EXAMPLE.json`); append-only, stops at the declaration, never
85
+ touches `.claude/settings.json`. Without `gate`, lists the catalogue.
57
86
  - `mode_hooks_validate` (read-only) — mode body vs declaration drift, compile
58
87
  resolvability, and declared-vs-installed divergence in both directions.
59
88
  - `mode_hooks_project` — compile and install; touches only entries it placed
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kairos_hook_projector",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "Projects an instruction mode's declared hooks into the harness configuration. Stage 1 compiles a mode_hooks declaration to a hook artifact plus a compile record. Stage 2 installs it: mode_hooks_project proposes by default and writes nothing, applying only when the caller echoes back the artifact hash from the proposal, and rewriting only hook groups carrying this SkillSet's marker for that mode — hand-added hooks and other modes' hooks are counted and left alone. Ships the generic readable_gate implementation; a mode supplies its own thresholds, the core supplies none.",
5
5
  "author": "Masaomi Hatakeyama",
6
6
  "layer": "L1",
@@ -15,12 +15,14 @@
15
15
  "hooks_status_readonly",
16
16
  "mode_hooks_validation",
17
17
  "mode_hooks_projection",
18
+ "mode_hooks_declaration",
18
19
  "readable_gate"
19
20
  ],
20
21
  "tool_classes": [
21
22
  "KairosMcp::SkillSets::KairosHookProjector::Tools::HooksStatus",
22
23
  "KairosMcp::SkillSets::KairosHookProjector::Tools::ModeHooksValidate",
23
- "KairosMcp::SkillSets::KairosHookProjector::Tools::ModeHooksProject"
24
+ "KairosMcp::SkillSets::KairosHookProjector::Tools::ModeHooksProject",
25
+ "KairosMcp::SkillSets::KairosHookProjector::Tools::ModeHooksAdd"
24
26
  ],
25
27
  "config_files": [],
26
28
  "knowledge_dirs": [],