LalaSkye/policy-lint

GitHub: LalaSkye/policy-lint

用于治理声明的确定性静态检查器,识别不可证伪声明和模糊安全语言,输出态势分类与0-1评分。

Stars: 0 | Forks: 0

![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/c63df0d346084945.svg) [![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![Python](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12-blue)](https://www.python.org/) ![stdlib only](https://img.shields.io/badge/stdlib-only-green) ![< 200 LOC](https://img.shields.io/badge/LOC-%3C200-lightgrey) # policy-lint 用于治理声明的确定性 Linter —— 揭示不可证伪的声明、模糊的安全语言和范围缺口。无 AI、无 ML、无观点。 ## 为什么存在此项目 政策文件充斥着听起来像承诺但不包含可测试声明的句子。像“始终安全”、“确保负责任的行为”或“显著降低风险”这样的词语,虽然在语法上是有效的,但在操作层面上是空洞的。`policy-lint` 以低成本且可复现的方式将这些问题可视化,以便审查人员、审计人员和工程师能够发问:*这句话可以被证伪吗?* 它不提供建议,也不重写任何内容。它仅揭示现有内容的结构属性。治理声明本身也需要治理 —— 这是政策语言在进入决策面之前的准入检查。 ## 架构 ``` Input (string / --file / stdin) | v ┌──────────────────────────────────────────────────────┐ │ policy_lint.py │ │ │ │ Rule engine (named regex patterns, stdlib re only) │ │ │ │ WARN_UNIVERSAL ──┐ │ │ WARN_VAGUE_SAFETY ──┤ │ │ WARN_INTENT_LANGUAGE──┤──> sorted typed warnings │ │ WARN_MARKETING ──┤ │ │ WARN_NON_OPERATIONAL──┤ │ │ WARN_SCOPE_MISSING ──┤ │ │ WARN_EMPTY ──┘ │ │ | │ │ v │ │ Posture classification + 0–1 score │ └──────────────────────────────────────────────────────┘ | v Plain text output OR --json (deterministic key ordering) ``` ## 快速开始 ``` git clone https://github.com/LalaSkye/policy-lint.git cd policy-lint pip install -e . # Inline statement policy-lint "The system is always safe and trustworthy." # File of statements policy-lint --file examples/sample_statements.txt # Stdin echo "Data is never shared without consent." | policy-lint # JSON output policy-lint --json "The API shall respond within 500ms for 99% of requests." ``` ## 示例输出 ``` STATEMENT : 'The system is always safe and trustworthy.' [ERROR ] WARN_UNIVERSAL --> always [WARNING] WARN_VAGUE_SAFETY --> safe, trustworthy POSTURE : NON_FALSIFIABLE SCORE : 0.2857 FLAGS : WARN_UNIVERSAL, WARN_VAGUE_SAFETY --- STATEMENT : 'The API shall respond within 500ms for 99% of requests.' (no warnings) POSTURE : HARD_INVARIANT SCORE : 1.0000 FLAGS : -- --- STATEMENT : 'The system ensures responsible behaviour for all users.' [WARNING] WARN_NON_OPERATIONAL --> ensures [WARNING] WARN_VAGUE_SAFETY --> responsible [WARNING] WARN_SCOPE_MISSING --> users POSTURE : COST_CURVE SCORE : 0.4286 FLAGS : WARN_NON_OPERATIONAL, WARN_VAGUE_SAFETY, WARN_SCOPE_MISSING ``` JSON 输出: ``` { "statement": "The API shall respond within 500ms for 99% of requests.", "posture": "HARD_INVARIANT", "score": 1.0, "flags": [], "warnings": [] } ``` ## 态势分类 | 态势 | 含义 | |---|---| | `HARD_INVARIANT` | 可衡量、有范围、无绝对声明 —— 结构上可证伪 | | `COST_CURVE` | 软性承诺(`aims`/`seeks`/`should`)或中等警告负载 | | `AMBIGUOUS` | 信号不足,难以明确分类 | | `NON_FALSIFIABLE` | 高警告负载、绝对声明,或无条件模糊安全声明 | ## 规则族 | 规则 ID | 触发条件 | |---|---| | `WARN_EMPTY` | 输入为空或仅含空白字符 | | `WARN_INTENT_LANGUAGE` | `understands`、`wants`、`decides`、`knows`、`believes`、`intends` | | `WARN_MARKETING_LANGUAGE` | `significantly`、`substantially`、`industry-leading`、`best-in-class` | | `WARN_NON_OPERATIONAL` | `ensure`、`prevent`、`avoid`、`mitigate`、`promote` 且未定义范围 | | `WARN_SCOPE_MISSING` | `users`、`data`、`harm`、`system`、`model` 且无修饰语 | | `WARN_UNIVERSAL` | `always`、`never`、`guaranteed`、`cannot fail`、`impossible`、`100%`、`zero risk` | | `WARN_VAGUE_SAFETY` | `safe`、`secure`、`robust`、`ethical`、`responsible`、`trustworthy`、`fair`、`aligned` | ## 设计约束 - **确定性:** 在 Python 3.10 / 3.11 / 3.12 环境下,相同输入产生相同输出;无随机性,无语言环境依赖 - **可审计:** 所有规则均为单一文件中的命名正则表达式模式;无隐藏逻辑 - **轻量:** 核心模块 < 200 LOC;零非 stdlib 依赖 - **经过测试:** pytest 套件覆盖确定性、规则触发、边缘情况和排序稳定性 ## 测试 ``` pip install pytest pytest -v ``` ## 非目标 无 Web UI。无 GitHub Action 模板。无 LLM 集成。无推荐引擎。无自动重写。无数据集收集。非 AI。非法律建议。非策略引擎。 ## 执行边界系列的一部分 | 仓库 | 层级 | 功能 | |---|---|---| | [interpretation-boundary-lab](https://github.com/LalaSkye/interpretation-boundary-lab) | 上游边界 | 针对解释的 10 规则准入门控 | | [dual-boundary-admissibility-lab](https://github.com/LalaSkye/dual-boundary-admissibility-lab) | 完整走廊 | 具有压力监控和 C 区旋转的双边界模型 | | [execution-boundary-lab](https://github.com/LalaSkye/execution-boundary-lab) | 执行边界 | 演示缺乏上游治理时的级联故障 | | [stop-machine](https://github.com/LalaSkye/stop-machine) | 控制原语 | 确定性的三态停止控制器 | | [constraint-workshop](https://github.com/LalaSkye/constraint-workshop) | 控制原语 | 权限门控、不变性试金石、停止机器 | | [csgr-lab](https://github.com/LalaSkye/csgr-lab) | 度量 | 收缩稳定性与漂移度量 | | [invariant-lock](https://github.com/LalaSkye/invariant-lock) | 漂移预防 | 除非版本递增,否则拒绝执行 | | [policy-lint](https://github.com/LalaSkye/policy-lint) | 策略验证 | 用于治理声明的确定性 Linter | | [deterministic-lexicon](https://github.com/LalaSkye/deterministic-lexicon) | 词汇表 | 固定术语、精确匹配、无推理 | ## 许可证 Apache 2.0。参见 `LICENSE`。
标签:DevSecOps, JSONLines, Python, 上游代理, 云安全监控, 安全态势, 文本分析, 无依赖, 无后门, 模糊语言检测, 治理与风险, 瑞士军刀, 策略合规, 轻量级工具, 零信任, 静态分析