CI / lint + test + build (push) Canceled after 0s
- README 现代化重写:徽章区、特性一览、统一 GitHub 提示块格式、修正版本号与 AI 默认值 - 新增 docs/PROJECT_REPORT.md 学术项目报告(含许可证合规分析与死链修复记录) - 收录 23 份 ADR 架构决策记录与 CONTEXT.md 领域术语表 - 新增开发配置:.editorconfig / .shellcheckrc / .markdownlint-cli2.jsonc - .gitignore 补充 mo_map/、检查报告、编辑器临时文件 - 新增 config.example.json 配置模板(不含真实密钥)
8 lines
1018 B
Markdown
8 lines
1018 B
Markdown
# mo_env 白名单键加载(配置即数据)
|
|
|
|
帮助文档宣称"所有选项均可通过环境变量或 mo_env 文件配置",实现却只从 mo_env 提取 8 个键(认证/AI),其余键仅认环境变量——文档与实现不符。决定:全量加载——从 `MO_ENV_TEMPLATE` 提取键名集合作为白名单,对每个键复用 `parse_config_key` 式提取,注入 `${VAR:-mo_env:-默认}` 链,形成 **CLI > 环境变量 > mo_env > 默认值** 四层优先级。
|
|
|
|
mo_env 永不 source、内容永不执行——配置文件是数据而非代码,安全模型只依赖"文件所有者可信"(沿用现有 600 权限 + `check_secure_file` 所有者校验),不依赖"文件内容无害"。白名单外的自定义键不支持(无此需求)。
|
|
|
|
**Considered Options**: `source` 整个文件——一行到位,但使配置文件成为可执行文本,安全模型退化;只修文档列举 8 键——宣称的优先级模型本是合理设计,是实现欠账而非文档夸大。
|