kairos-chain 3.61.1 → 3.62.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 +4 -4
- data/CHANGELOG.md +39 -0
- data/lib/kairos_mcp/version.rb +1 -1
- data/templates/knowledge/project_orientation_report/project_orientation_report.md +39 -17
- data/templates/knowledge/project_orientation_report/references/worked_example.md +15 -6
- data/templates/knowledge/project_orientation_report/scripts/check_report.py +449 -86
- data/templates/knowledge/project_orientation_report/test/fixtures/bad_class_hidden_headings.html +1 -0
- data/templates/knowledge/project_orientation_report/test/fixtures/bad_comment_hidden_headings.html +1 -0
- data/templates/knowledge/project_orientation_report/test/fixtures/bad_declared_flood.html +33 -0
- data/templates/knowledge/project_orientation_report/test/fixtures/bad_fullwidth_tokens.html +31 -0
- data/templates/knowledge/project_orientation_report/test/fixtures/bad_svg_title_placeholder.html +31 -0
- data/templates/knowledge/project_orientation_report/test/fixtures/bad_transform_order.html +31 -0
- data/templates/knowledge/project_orientation_report/test/fixtures/bad_wide_punctuation_overflow.html +31 -0
- data/templates/knowledge/project_orientation_report/test/fixtures/good_adjacent_cells.html +31 -0
- data/templates/knowledge/project_orientation_report/test/fixtures/good_css_font_size.html +32 -0
- data/templates/knowledge/project_orientation_report/test/fixtures/good_dotted_tokens.html +33 -0
- data/templates/knowledge/project_orientation_report/test/fixtures/good_group_anchor.html +31 -0
- data/templates/knowledge/project_orientation_report/test/fixtures/good_highlight_rect.html +31 -0
- data/templates/knowledge/project_orientation_report/test/fixtures/good_indented_source.html +113 -0
- data/templates/knowledge/project_orientation_report/test/fixtures/good_media_query_hidden.html +32 -0
- data/templates/knowledge/project_orientation_report/test/fixtures/good_nested_summary.html +32 -0
- data/templates/knowledge/project_orientation_report/test/fixtures/good_scoped_stylesheet.html +36 -0
- data/templates/knowledge/project_orientation_report/test/fixtures/good_short_labels.html +31 -0
- data/templates/knowledge/project_orientation_report/test/fixtures/good_style_font_size.html +31 -0
- data/templates/knowledge/project_orientation_report/test/fixtures/good_style_over_attr.html +31 -0
- data/templates/knowledge/project_orientation_report/test/fixtures/good_thirteen_declared.html +32 -0
- data/templates/knowledge/project_orientation_report/test/fixtures/good_three_exempt.html +30 -0
- data/templates/knowledge/project_orientation_report/test/fixtures/good_translated_no_x.html +31 -0
- data/templates/knowledge/project_orientation_report/test/fixtures/good_wide_punctuation.html +31 -0
- data/templates/knowledge/project_orientation_report/test/fixtures/good_worked_example.html +31 -0
- data/templates/knowledge/project_orientation_report/test/test_check_report.py +35 -3
- metadata +25 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d07ef9eddf8433aed348e6ff25d910547da041e89abdf94dc6e5008f2148f417
|
|
4
|
+
data.tar.gz: bddb2825ffb56e57681be7a1c368e683103133dad90888dff052a8fc5c430ae8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f432b43e89098c0d794b8e96d8241009802a6ca41e71804ab77f0ad73abaac07aa0b413889f5d84f0425e22bfddcc6f9fa9a3cbc968196bd6ddbda843e89d1f1
|
|
7
|
+
data.tar.gz: ff82bd049b30fd06ba14d529ff3910ca9d540c071f441519c23f0189619b90a1b1bfa072449713ba8b53bd575cd5dde763eed6022d141465849f8b6769e5e862
|
data/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,45 @@ 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.62.0] - 2026-08-06
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- **`project_orientation_report`'s checker stops rejecting reports that are fine.**
|
|
12
|
+
Three review rounds on a fixed panel, counting findings rather than approvals:
|
|
13
|
+
16, then 6, then 7. Nearly all of the first round's findings were reports a
|
|
14
|
+
reader would accept that the tool rejected, which is the failure mode that
|
|
15
|
+
matters for a lint — a missed defect costs an ugly figure, a false rejection
|
|
16
|
+
costs the author the report.
|
|
17
|
+
|
|
18
|
+
Adjacent text nodes were concatenated with nothing between them, so two table
|
|
19
|
+
cells holding `Ruby` and `3.4.10` produced a work-internal token `Ruby3` that
|
|
20
|
+
appeared nowhere in the document. Markup indentation counted toward the length
|
|
21
|
+
budget, so a report a browser renders as 3,556 characters was rejected at
|
|
22
|
+
6,226. `text-anchor` was not inherited from an enclosing group, so centred
|
|
23
|
+
labels were reported as overflowing by an amount that did not exist. A label
|
|
24
|
+
with no `x` inside a translated group was called unmeasurable although `x`
|
|
25
|
+
defaults to zero. Ambiguous-width characters had lost their width, so arrow and
|
|
26
|
+
box-drawing labels measured 45% short in the CJK font the template mandates.
|
|
27
|
+
Two-character Japanese labels did not count as a figure at all.
|
|
28
|
+
|
|
29
|
+
Reports now declare a worked prose example with `data-example="values"`,
|
|
30
|
+
satisfying invariant 8 the way the skill always promised. Body text is
|
|
31
|
+
NFKC-normalised before the token scan, so a full-width spelling — what a
|
|
32
|
+
Japanese input method emits by default — no longer slips past. Stylesheets are
|
|
33
|
+
parsed once, with comments stripped, for hiding, preformatting and absolute
|
|
34
|
+
font sizes alike.
|
|
35
|
+
|
|
36
|
+
Left open and stated as such: a rect is treated as a label's box when it
|
|
37
|
+
contains the label's whole width, which promotes a figure border to "the box"
|
|
38
|
+
and so disables overflow detection inside it. The opposite rule rejects
|
|
39
|
+
decorative highlight bands. Both are wrong in opposite directions; this ships
|
|
40
|
+
the one that errs toward passing. Choosing between them is a design question,
|
|
41
|
+
not a patch.
|
|
42
|
+
|
|
43
|
+
46 fixtures, 24 of which had never been added to git — a clone ran the suite
|
|
44
|
+
with them missing and no way to notice.
|
|
45
|
+
|
|
7
46
|
## [3.61.1] - 2026-08-06
|
|
8
47
|
|
|
9
48
|
### Fixed
|
data/lib/kairos_mcp/version.rb
CHANGED
|
@@ -153,13 +153,19 @@ SVG の制約。守らないと壊れる。
|
|
|
153
153
|
6. **人が読む。** 通らなかった節が分かったら、**レポートではなくこの skill を直す**。
|
|
154
154
|
条件 7・8・9・10 はすべて、この段の判定から出た。
|
|
155
155
|
|
|
156
|
-
## レポート側が守る
|
|
156
|
+
## レポート側が守る 3 つの約束ごと
|
|
157
157
|
|
|
158
|
-
機械が読むための印を
|
|
158
|
+
機械が読むための印を 3 つ、レポートの HTML に入れる。
|
|
159
159
|
|
|
160
160
|
**図表の無い節は、見出しで宣言する。** `<h2 data-visual="none">決まっていないこと</h2>`。
|
|
161
161
|
宣言の無い節は図か表を要求される。位置で免除しない——節が 1 つ増えただけで免除が
|
|
162
|
-
|
|
162
|
+
隣の節へずれるため。宣言できるのは 3 節まで(表紙、「決まっていないこと」、
|
|
163
|
+
食い違いが無いときの「記録の食い違い」で使い切る想定)。
|
|
164
|
+
|
|
165
|
+
**図表の代わりに実際の値の例で満たす節は、その要素に印を付ける。**
|
|
166
|
+
`<p data-example="values">入力 X を送ると出力は Y だった。</p>`。
|
|
167
|
+
条件 8 は「図・表・実際の値による具体例のいずれか」を認めており、この印が
|
|
168
|
+
「値の入った例」を機械に伝える。印の無いただの散文は数えない。
|
|
163
169
|
|
|
164
170
|
> この宣言は v0.2 で入った。**それ以前に書かれたレポートは、表紙と「決まっていないこと」の
|
|
165
171
|
> 見出しに属性を 1 つずつ足すまで落ちる。** 読み手に見えるものは変わらないので、
|
|
@@ -170,7 +176,15 @@ SVG の制約。守らないと壊れる。
|
|
|
170
176
|
`<meta name="orientation-allowed-tokens" content="A4, Q3, gpt-5">`。
|
|
171
177
|
検出はわざと広くしてあるので、紙の大きさやモデル名のような無害な語も引っかかる。
|
|
172
178
|
それを消すには宣言を書く。**宣言を書くこと自体が規律**で、スクリプトの中の許可リストを
|
|
173
|
-
太らせるより安全である。組み込みの免除は層の名前 3
|
|
179
|
+
太らせるより安全である。組み込みの免除は層の名前 3 語だけ。宣言できるのは 16 語まで——
|
|
180
|
+
節の免除と同じで、宣言で要求を丸ごと消す形は認めない。この上限は、条件 7 を生んだ
|
|
181
|
+
「符牒 13 種で読めなかったレポート」への余白として選んだ数ではない。あの 13 種は
|
|
182
|
+
**宣言されずに**本文へ出た符牒で、上限はそこでは発火しない(自分の符牒を全部宣言してしまう形は、
|
|
183
|
+
適用範囲の表にあるとおり、意図しなければ起きない容認済みの抜け道である)。一方で、実在する
|
|
184
|
+
技術の段落が SHA-256 や Ed25519 のような公開語彙を 13 語、正当に宣言する必要があった。
|
|
185
|
+
上限が止めるのは宣言で要求を丸ごと消す形だけなので、正当な宣言の実測最大 13 語を
|
|
186
|
+
落とさない粗い天井として 16 にしてある。`v0.9` や `TLS-1.3` のような
|
|
187
|
+
語は書いたとおりに宣言すればよい(部分文字列に割って宣言し直す必要は無い)。
|
|
174
188
|
|
|
175
189
|
## 検収
|
|
176
190
|
|
|
@@ -179,13 +193,13 @@ SVG の制約。守らないと壊れる。
|
|
|
179
193
|
|
|
180
194
|
| 検査 | 合格条件 |
|
|
181
195
|
|---|---|
|
|
182
|
-
| 未記入 | 《》で囲まれた placeholder が 0
|
|
183
|
-
| 符牒 | 見えている文に、宣言されていない符牒が 0
|
|
184
|
-
| 整形済みの塊 | `<pre>` と `white-space: pre` が本体に 0
|
|
185
|
-
| 分量 | 見えている文が 6000 文字以内(`--max-body-chars`
|
|
196
|
+
| 未記入 | 《》で囲まれた placeholder が 0 個。未記入のテンプレートは通らない。SVG の `<title>` も読み上げられるので対象 |
|
|
197
|
+
| 符牒 | 見えている文に、宣言されていない符牒が 0 個。全角で書いた符牒(F1)も NFKC 正規化で同じ符牒として数える。宣言は 16 語まで |
|
|
198
|
+
| 整形済みの塊 | `<pre>` と `white-space: pre` が本体に 0 個。付録や印刷だけに効く stylesheet の規則は数えない |
|
|
199
|
+
| 分量 | 見えている文が 6000 文字以内(`--max-body-chars` で変更可)。markup の字下げは数えない |
|
|
186
200
|
| 節 | 8 節以上 |
|
|
187
|
-
| 視覚要素 |
|
|
188
|
-
| 図の収まり | すべての行が、囲んでいる `<rect>`
|
|
201
|
+
| 視覚要素 | 宣言で免除されていない全節に、**中身のある**図か表、または `data-example="values"` を付けた値の例がある(空の表は不可)。図として数える label は 2 文字以上。免除宣言は 3 節まで |
|
|
202
|
+
| 図の収まり | すべての行が、囲んでいる `<rect>` に収まる。箱とみなすのは行の全幅を含む最小の `<rect>` で、全幅を含む `<rect>` が無いときだけ開始点を含む最小の `<rect>` と照合する(強調の帯を箱と誤認しないため)。`<rect>` が無ければ図の枠に収まる |
|
|
189
203
|
|
|
190
204
|
「見えている内容」の定義がこの検収の要である。折りたたまれていない `<details open>` の中も、
|
|
191
205
|
`<svg>` の中の `<text>` も、読み手には見えているので本文に数える。`<script>` `<style>`
|
|
@@ -200,7 +214,7 @@ SVG の制約。守らないと壊れる。
|
|
|
200
214
|
|---|---|
|
|
201
215
|
| ASCII 図、未記入の欄、箱から溢れる label | 別紙の CSS が `content:` で描く文字 |
|
|
202
216
|
| 測り方が拾えない書き方の `translate` | `<iframe srcdoc>` の中身 |
|
|
203
|
-
| `em` のような相対単位の font-size |
|
|
217
|
+
| `em` のような相対単位の font-size、全角で書いた符牒 | 幅ゼロ文字を混ぜた符牒 |
|
|
204
218
|
| 全部の節を免除にしてしまう | 禁止すべき符牒を自分で許可宣言する |
|
|
205
219
|
| 見出しを `display:none` で隠す | 入れ子の `<svg>` を親の外へ置く |
|
|
206
220
|
| 折りたたんだ付録の `<summary>` に本文を書く | `textLength` で描画幅を上書きする |
|
|
@@ -212,8 +226,9 @@ SVG の制約。守らないと壊れる。
|
|
|
212
226
|
|
|
213
227
|
### 検収が測っていないもの
|
|
214
228
|
|
|
215
|
-
不変条件は 10 個あり、**機械が見ているのは 3
|
|
216
|
-
|
|
229
|
+
不変条件は 10 個あり、**機械が見ているのは 3 個だけ**(7 符牒、8 視覚要素、9 分量)。
|
|
230
|
+
図の収まりも機械が測るが、あれは「図の作り方」の規約の検査であって、10 個の不変条件の
|
|
231
|
+
うちの 1 つではない。残る 7 個は人が守るしかない。
|
|
217
232
|
|
|
218
233
|
| 未検査の条件 | なぜ機械で測れないか |
|
|
219
234
|
|---|---|
|
|
@@ -230,10 +245,14 @@ SVG の制約。守らないと壊れる。
|
|
|
230
245
|
|
|
231
246
|
## テスト
|
|
232
247
|
|
|
233
|
-
`test/test_check_report.py` が `test/fixtures/` の
|
|
248
|
+
`test/test_check_report.py` が `test/fixtures/` の 46 件を走らせる。標準ライブラリだけで動く。
|
|
234
249
|
|
|
235
|
-
fixture は **2 方向**ある。
|
|
236
|
-
|
|
250
|
+
fixture は **2 方向**ある。25 件は「読めないのに通ってしまった形」、21 件は「読めるのに
|
|
251
|
+
落とされた形」。落ちる側のうち 8 件は外部の評価者が実際に実行して示した抜け道で
|
|
252
|
+
(最初の 10 件のうち `bad_missing_section.html` と `bad_comment_details.html` の 2 件は
|
|
253
|
+
初版でも「節」で落ちていたので抜け道ではない)、
|
|
254
|
+
残りはその後のレビューで見つかった、書き手が普通に書いていて踏む事故の形と、
|
|
255
|
+
修正の後退を防ぐ検査である。
|
|
237
256
|
**塞ぐだけなら全部不合格にすれば達成できる**ので、両方向を同時に測る。
|
|
238
257
|
どの検査が捕まえるべきかも fixture ごとに宣言してあり、別の理由で落ちた場合はテストが赤くなる。
|
|
239
258
|
|
|
@@ -253,5 +272,8 @@ KairosChain の機能ではない。KairosChain 単体で動かす場合は、
|
|
|
253
272
|
|
|
254
273
|
**実装は 1 度 multi-LLM review に落ちている。** 4 者中 0 者が承認、深刻な指摘 14 件。
|
|
255
274
|
初版の検収スクリプトはタグを見ていたので、内容を除外領域へ移すだけで全部すり抜けられた。
|
|
256
|
-
評価者が実行して示した抜け道が、いま `test/fixtures/` の `bad_*` 10
|
|
275
|
+
評価者が実行して示した抜け道が、いま `test/fixtures/` の `bad_*` のうち最初の 10 件中
|
|
276
|
+
8 件になっている(`bad_missing_section.html` と `bad_comment_details.html` は初版でも
|
|
277
|
+
「節」で落ちていたので抜け道ではない。残りの `bad_*` も後のレビューで加わった事故の形と
|
|
278
|
+
後退防止で、評価者由来ではない)。
|
|
257
279
|
経緯は `references/worked_example.md`。
|
|
@@ -55,9 +55,17 @@
|
|
|
55
55
|
|
|
56
56
|
## fixture — 破られた形がそのまま検査になっている
|
|
57
57
|
|
|
58
|
-
`test/fixtures/` の
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
`test/fixtures/` の 46 件。`test/test_check_report.py` が走らせる。
|
|
59
|
+
内訳は四世代ある。初版で破られた形(下の 2 表)、レビュー 2 周目で入った
|
|
60
|
+
「書き手が普通に書いていて踏む事故の形」8 件、3 周目のレビュー指摘の
|
|
61
|
+
修正に付けた後退防止の検査、そして 4 周目(普通に書いたレポートに誤った答えを
|
|
62
|
+
返す形の修正)で加わった検査。どの fixture をどの検査が捕まえるべきかの宣言は
|
|
63
|
+
`test_check_report.py` にある。
|
|
64
|
+
|
|
65
|
+
**落ちる側の fixture のうち、初版由来の 10 件。うち抜け道は 8 件**(評価者が実行して
|
|
66
|
+
示したのは 8 件。※印の 2 件——`bad_missing_section.html` と `bad_comment_details.html`——は
|
|
67
|
+
初版(9c3eb0a)でもどちらも「節」の検査で落ちており、抜け道ではなく最初からある検査の
|
|
68
|
+
確認である。それ以降に追加された落ちる側の fixture も評価者由来ではない)
|
|
61
69
|
|
|
62
70
|
| fixture | 何を再現しているか | 捕まえる検査 |
|
|
63
71
|
|---|---|---|
|
|
@@ -68,11 +76,12 @@
|
|
|
68
76
|
| `bad_svg_overflow_rect.html` | 図の枠には収まるが箱から溢れる label | 図の収まり |
|
|
69
77
|
| `bad_svg_transform.html` | `translate` で画面外へ出る label | 図の収まり |
|
|
70
78
|
| `bad_token_forms.html` | `f1` `c-1` `step-3` `#12` のような形 | 符牒 |
|
|
71
|
-
| `bad_comment_details.html` | コメントの中の `<details` で本文を切る | 整形済みの塊 |
|
|
79
|
+
| `bad_comment_details.html` ※抜け道ではない | コメントの中の `<details` で本文を切る | 整形済みの塊 |
|
|
72
80
|
| `bad_whitespace_pre.html` | `<pre>` を使わずに ASCII 図を出す | 整形済みの塊 |
|
|
73
|
-
| `bad_missing_section.html` | 節が 1 つ足りない | 節 |
|
|
81
|
+
| `bad_missing_section.html` ※抜け道ではない | 節が 1 つ足りない | 節 |
|
|
74
82
|
|
|
75
|
-
**落としてはいけない 4
|
|
83
|
+
**落としてはいけない fixture のうち、初版からの 4 件**(その後、レビュー指摘で判明した
|
|
84
|
+
「正しく書いたのに落とされる形」を通す fixture が 17 件加わり、通る側は計 21 件)
|
|
76
85
|
|
|
77
86
|
| fixture | なぜ通らねばならないか |
|
|
78
87
|
|---|---|
|