agentcss 0.11.6 → 0.11.7

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 CHANGED
@@ -16,6 +16,32 @@
16
16
 
17
17
  (无)
18
18
 
19
+ ## [0.11.7] - 2026-10-29
20
+
21
+ **交付物零变化,改的是"我们怎么验自己"**:外网泄漏审查此前**一个文件都没读到**
22
+ 却打印「✅ 零泄漏」,现在必须读到 100% 才下结论;同时把"哪些文件属于门禁工具"
23
+ 这条判据合并成一处,本地与外网两个扫描器口径不再分叉。
24
+
25
+ ### Fixed
26
+
27
+ - **外网审查的空跑**:`outsider-audit.py` 只走 `raw.githubusercontent.com` 一条通道,
28
+ 这条在本机被断连时每个文件都抛异常并被静默吞掉 —— 报告写「扫了 0 个文本文件」
29
+ 却接着打「✅ 零泄漏」。现在读取量必须等于分母:读到 0 个退出码即 2,
30
+ 差一个都算"未取证"并列路径。附 `--selftest`(5 组数字,专验「0 个文件必须红」),
31
+ 已进日常门禁(离线、~0ms)。
32
+ - **读取方式**:改成一次取整库快照(zipball,1 次请求 / 同一个 commit 的完整树 /
33
+ 顶层目录名自带 sha)。逐文件抓一个文件一次请求,匿名配额 60 次/小时 ⇒
34
+ 几百个文件的仓库必然 403;而且中途有人推代码就会拼出"半新旧混合体"。
35
+ 覆盖率由此从"不确定"变成 334/334,耗时从数分钟降到 4 秒。
36
+ - **同一判据两套口径**:「这是门禁工具自己的文件」原本 `leak-scan` 按目录豁免、
37
+ `outsider-audit` 按文件名豁免,于是同一个仓库本地报干净、外网报 43 处。
38
+ 判据合并到 `terms.is_tool_file()`,两边都调它;豁免数量现在写进报告
39
+ (「需扫 334 个,不计入分母 308 个(baseline 2,binary 91,tool 215)」)——
40
+ "少扫了 215 个"与"扫了全部"必须一眼可分。
41
+ - **删掉两处永远不会执行的豁免分支**(`leak-scan` 里 `rel.startswith('05-audit/')`
42
+ 的两处 `continue`:循环开头已经跳过整个目录)。它们不只是废码 ——
43
+ 读起来像"门禁目录也被扫了",正是上面那次误判的成因。
44
+
19
45
  ## [0.11.6] - 2026-10-29
20
46
 
21
47
  **文档站不再"静默丢内容"**:README 里写着的代码块,页面上必须一块不少;
package/CONTRIBUTING.md CHANGED
@@ -8,7 +8,7 @@ npm run gate # 全量:含浏览器类
8
8
  npm run gate:fast # 只跑静态层,不用装浏览器
9
9
  ```
10
10
 
11
- 全量是 **180 道门禁**(本机约 12 分钟)。
11
+ 全量是 **181 道门禁**(本机约 12 分钟)。
12
12
 
13
13
  ⚠️ 上面的数字写在**代码块外**是有意的:`doc-facts-gate` 会核对
14
14
  「文档里的门禁数」与 `check-all.sh` 的真实注册数,而**代码块内的内容被豁免**
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
3
  "generatedBy": "05-audit/gen-ai-contract.py",
4
- "libraryVersion": "0.11.6",
4
+ "libraryVersion": "0.11.7",
5
5
  "$comment": "机器可读的组件契约。slots = BEM 元素名(在本库里元素名就是插槽名),states.enum = 组件会在 DOM 上写出的 data-* 取值,states.legacyClass = 仍未收敛到 data 属性的历史状态类(INVARIANT I-8 未达标)。",
6
6
  "maturityCriteria": {
7
7
  "alpha": "缺 demo.html 或缺 05-audit 下的专属门禁 ⇒ 还没被机器验证过,不要用",
package/index.html CHANGED
@@ -92,7 +92,7 @@ li a:active { background: var(--surface-sunken); }
92
92
  </p>
93
93
  </main>
94
94
  <footer class="wrap">
95
- <p class="note">0.11.6 · 零第三方运行时依赖</p>
95
+ <p class="note">0.11.7 · 零第三方运行时依赖</p>
96
96
  </footer>
97
97
  </body>
98
98
  </html>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentcss",
3
- "version": "0.11.6",
3
+ "version": "0.11.7",
4
4
  "description": "移动 Web 组件库:CSS + 可选行为脚本,零第三方运行时依赖。样式用 bundler 引入,交互行为用 script 标签引入。",
5
5
  "keywords": [
6
6
  "css",