Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
- Supersedes / closes: none
- Proposed by: LoopX maintainers
- Date: 2026-08-15
- Last revised: 2026-10-07
- Last revised: 2026-10-08
- Scope: an incremental, replacement-first migration of the LoopX control-plane
core from Python to TypeScript without maintaining two semantic
implementations
Expand Down Expand Up @@ -197,6 +197,20 @@ Frozen failures/missing evidence remain visible. T4 deletes proven redundant
owners alongside implementation, without waiting for R6 or all Python to vanish.
This replaces stale current-count estimates, not historical execution evidence.

Frozen generator candidate `3830f242e` retains its specialized Python regex/Host-file IO
owner. A candidate removes the literal check's generator while preserving
Unicode folding, authoritative regexes, every scan root, fresh reads and pre-open
private-state filtering. Whole File/SQLite packet parity, 178 focused source
tests and 185 real-path/negative probes per fresh wheel/sdist pass. Performance
is **not qualified**: against pinned main `62acd670f` with matched 1,341-file
scan populations, 32 alternating full-quota CLI pairs per backend measure File
p50/p95 874.95/1117.08 → 945.14/1202.86 ms (p95 +7.68%) and SQLite
831.09/1003.24 → 824.57/994.60 ms (-0.86%). Keep the original cost gate and
all failed/interrupted evidence; the earlier source-only improvement cannot
override this final-source File failure. Diagnose the actual consumer before
promotion. This does not resolve the earlier frontier cutover's File cost hold,
released-default admission, C1 writer retirement or D2.

Public-scan privacy checkpoint: the retained Python filesystem/regex owner
classifies canonical inputs before reader submission, independently of display
paths. Overlapping roots cannot remove a private classification; reports use the
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
- 替代 / 关闭:无
- Proposed by:LoopX maintainers
- Date:2026-08-15
- Last revised:2026-10-07
- Last revised:2026-10-08
- Scope:LoopX 控制面核心从 Python 到 TypeScript 的增量、replacement-first
迁移;不长期维护两份语义实现
- Tracking issue:[#3225](https://github.com/loopx-project/loopx/issues/3225)
Expand Down Expand Up @@ -155,6 +155,18 @@ outbox、Host 或发布默认验收。
D2 已通过;冻结的失败/缺项保持可见。T4 随实现删除已证明重复的 owner,不等 R6
或所有 Python 消失。本节替代陈旧的当前数量估算,不覆盖历史执行证据。

冻结的 generator 候选 `3830f242e` 保留既有 Python 正则/Host 文件 IO owner。候选实现省去
literal 检查的 generator,保留 Unicode 折叠、权威正则、全部扫描根、新鲜
读取及打开前私有状态过滤。完整 File/SQLite packet 等价、178 项源码用例、
每种新 wheel/sdist 各 185 项真实路径/反例通过;性能**尚未资格化**。相对
固定 main `62acd670f`,匹配 1,341 文件扫描范围、每个 backend 32 组交替
完整 quota CLI 对照,File p50/p95 为
874.95/1117.08 → 945.14/1202.86 ms(p95 +7.68%),SQLite 为
831.09/1003.24 → 824.57/994.60 ms(-0.86%)。保留原成本门槛及全部失败/
中断证据;此前纯源码对照的改善不能覆盖最终源码 File 失败。晋升前继续定位
实际消费者成本;不消除此前 frontier 切换的 File 成本 hold,也不认证发布
默认准入、C1 writer 退役或 D2。

公共扫描隐私检查点:保留的 Python 文件系统/正则 owner 在提交 reader 前分类
canonical 输入,分类独立于显示路径。重叠扫描根不能移除私有分类;报告统一使用
最宽的请求根。窄范围显式文件/目录保留私有祖先信息。经 Git 核验的 worktree
Expand Down
7 changes: 6 additions & 1 deletion loopx/contract.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,12 @@ class LeakRule:
required_literals: tuple[str, ...]

def is_candidate(self, folded_text: str) -> bool:
return any(literal in folded_text for literal in self.required_literals)
# This runs for every rule/file and candidate line; avoid allocating a
# generator while retaining the same substring-only short circuit.
for literal in self.required_literals:
if literal in folded_text:
return True
return False


# Python's Unicode re.IGNORECASE matches ASCII I/i against both dotted and
Expand Down
2 changes: 1 addition & 1 deletion loopx/semantics/project_registry_io_manifest_v1.json
Original file line number Diff line number Diff line change
Expand Up @@ -1047,7 +1047,7 @@
},
{
"site": "loopx/contract.py::<module>.check_contract::codec_read:load_registry#1",
"line": 1107,
"line": 1112,
"column": 20,
"kind": "codec_read",
"api": "load_registry",
Expand Down
Loading