[特殊字符] 龍魂 AI|LH-INGESTOR PHASE 0 总执行包 PHASE 0 · MASTER EXECUTION PACKAGE

本文档定义龍魂AI统一资料入口引擎LH-INGESTOR的PHASE 0工程准备与安全基线规范。核心内容包括:只读、Fail-Closed模式下的工程目录规划、SIT-7冻结资产隔离机制、基于SQLite的资产元数据索引Schema设计、路径白名单/保护边界规则、统一资产数据模型(含evidence_level/verification_status等15+关键字段)、静态安全审查要求及测试方案框架。所有操作禁止真实数据扫描、文件修改、网络访问、AI调用与Notion集成,强调权限显式授权与范围可验证性。

🐉 龍魂 AI|LH-INGESTOR PHASE 0 总执行包

PHASE 0 · MASTER EXECUTION PACKAGE

项目: 龍魂 AI 统一资料入口与自动治理基础设施
核心引擎: LH-INGESTOR
执行包编号: LH-INGESTOR-P0-MEP-001
版本: v1.0
执行工具: CodeBuddy
技术栈: Python 3 + SQLite
执行模式: CONTROLLED · FAIL-CLOSED · READ-ONLY
当前阶段: PHASE 0-A 工程准备与安全基线
后续阶段: PHASE 0-B 只读索引准入检查
当前状态: READY_FOR_OWNER_SCOPE_CONFIRMATION

⸻

  1. 执行总声明

0.1 本阶段目标

建立 LH-INGESTOR 的第一套工程基础和安全准入机制。

本阶段需要完成:

  1. 工程目录规划。
  2. 任务拆分。
  3. 数据库Schema设计。
  4. 路径白名单和保护规则设计。
  5. SIT-7冻结资产排除机制。
  6. 文件只读策略。
  7. 数据库与报告输出隔离策略。
  8. 安全检查模块设计。
  9. 测试代码设计。
  10. CodeBuddy执行报告规范。
  11. PHASE 1准入条件。

0.2 本阶段不做什么

PHASE 0不负责:

  • 扫描真实资料。
  • 批量读取真实文件。
  • 解析文档正文。
  • AI语义分类。
  • 自动整理文件。
  • 自动移动文件。
  • 自动删除文件。
  • 自动重命名。
  • 修改原始文件。
  • Notion连接或写入。
  • Git仓库提交或推送。
  • 自动安装依赖。
  • 自动部署。
  • 自动发布。

0.3 当前权限状态

PROJECT_CREATION = NOT_AUTHORIZED
SOURCE_SCAN = NOT_AUTHORIZED
REAL_DATA_READ = NOT_AUTHORIZED
DATABASE_WRITE = NOT_AUTHORIZED
REPORT_WRITE = NOT_AUTHORIZED
NOTION_READ = NOT_AUTHORIZED
NOTION_WRITE = NOT_AUTHORIZED
NETWORK_ACCESS = DISABLED
AI_ACCESS = DISABLED
DEPENDENCY_INSTALL = NOT_AUTHORIZED
TEST_EXECUTION = NOT_AUTHORIZED
GIT_COMMIT = NOT_AUTHORIZED
GIT_PUSH = NOT_AUTHORIZED
DEPLOYMENT = NOT_AUTHORIZED
SIT7_FROZEN = TRUE
SIT7_SCAN = PROHIBITED
SIT7_READ = PROHIBITED
SIT7_EXPORT = PROHIBITED
SIT7_REPAIR = NOT_AUTHORIZED
SIT7_PUBLISH = NOT_AUTHORIZED

重要解释:

本执行包允许CodeBuddy先审查方案、核对现有工作目录并生成实施计划。

只有用户明确指定新工程目录并授权创建后,才允许创建工程文件。

只有用户明确批准真实扫描范围,才允许进入真实资料索引阶段。

⸻

第一部分:PHASE 0总体任务树

1.1 任务结构

LH-INGESTOR-PHASE-0
│
├── P0-00 执行环境与权限确认
│
├── P0-01 工程目标与目录核对
│
├── P0-02 扫描范围和保护边界设计
│
├── P0-03 SIT-7冻结隔离规则
│
├── P0-04 统一资产数据模型
│
├── P0-05 SQLite数据库Schema
│
├── P0-06 路径保护配置
│
├── P0-07 只读索引接口设计
│
├── P0-08 审计日志和错误处理
│
├── P0-09 测试用例设计
│
├── P0-10 静态安全审查
│
├── P0-11 PHASE 0验收
│
└── P0-12 PHASE 1准入申请

1.2 任务状态

统一使用:

NOT_STARTED
IN_PROGRESS
BLOCKED
READY_FOR_REVIEW
ACCEPTED
ACCEPTED_WITH_LIMITS
REJECTED

状态规则:

  • 未执行不能标记完成。
  • 没有证据不能标记通过。
  • 未知信息不能推断为通过。
  • BLOCKED不能自动跳过。
  • ACCEPTED_WITH_LIMITS必须列出限制。
  • 只有人工批准才能启动下一阶段。

⸻

第二部分:CodeBuddy逐项执行任务

P0-00:执行环境与权限确认

目标: 确认CodeBuddy当前工作环境,不进行任何写入。

检查项目:

编号 检查内容 预期结果
00-01 当前工作目录 真实路径
00-02 当前工程目录 真实路径或UNKNOWN
00-03 当前Git仓库 真实路径或NOT_A_REPOSITORY
00-04 Git工作区状态 只读检查结果
00-05 是否存在同名工程 存在/不存在/未知
00-06 是否存在未提交文件 只读确认
00-07 Python版本 只读取版本信息
00-08 系统类型 OS信息
00-09 当前执行权限 记录实际权限
00-10 是否具备路径边界信息 YES/NO

禁止:

  • 执行Git checkout。
  • 执行Git reset。
  • 执行Git clean。
  • 执行Git commit。
  • 执行Git push。
  • 安装依赖。
  • 修改环境变量。
  • 自动切换目录。
  • 运行项目程序。

交付:

P0-00-ENVIRONMENT-REPORT.md

验收:

  • 所有信息有实际来源。
  • 无法获取的信息标记UNKNOWN。
  • 不推断工作区状态。
  • 没有发生文件写入。

P0-01:工程目录规划

目标工程名称:

LH-INGESTOR

建议目录结构:

LH-INGESTOR/
│
├── README.md
├── VERSION
├── CHANGELOG.md
├── LICENSE-STATUS.md
│
├── config/
│ ├── config.example.yaml
│ ├── protected_paths.example.yaml
│ ├── classification_rules.yaml
│ └── governance_rules.yaml
│
├── src/
│ └── lh_ingestor/
│ ├── init.py
│ ├── main.py
│ ├── cli.py
│ ├── config.py
│ │
│ ├── security/
│ │ ├── init.py
│ │ ├── scope_guard.py
│ │ └── protection.py
│ │
│ ├── core/
│ │ ├── init.py
│ │ ├── discovery.py
│ │ ├── metadata.py
│ │ └── hashing.py
│ │
│ ├── storage/
│ │ ├── init.py
│ │ ├── database.py
│ │ └── schema.sql
│ │
│ ├── engines/
│ │ ├── init.py
│ │ ├── duplicates.py
│ │ └── version_hints.py
│ │
│ ├── audit/
│ │ ├── init.py
│ │ └── logger.py
│ │
│ └── reports/
│ ├── init.py
│ └── generator.py
│
├── schemas/
│ ├── asset.schema.json
│ ├── intake.schema.json
│ └── task.schema.json
│
├── tests/
│ ├── unit/
│ ├── security/
│ ├── integration/
│ └── fixtures/
│
├── docs/
│ ├── architecture.md
│ ├── security-model.md
│ ├── data-dictionary.md
│ ├── operations.md
│ └── phase-0-acceptance.md
│
└── migrations/
└── sqlite/

规则:

  1. 该目录为新工程建议结构。
  2. 不得覆盖已有同名工程。
  3. 不得在现有项目目录中擅自创建。
  4. 不得将工程放入SIT-7或其他冻结资产目录。
  5. 不得把输出目录放入扫描目录。
  6. 创建权限尚未授予时,只输出目录规划,不实际创建。

交付:

P0-01-PROJECT-STRUCTURE.md

P0-02:扫描范围与保护边界

建立三个独立概念:

SCAN_ALLOWLIST
SCAN_DENYLIST
OUTPUT_ALLOWLIST

SCAN_ALLOWLIST

只允许扫描明确授权的目录。

SCAN_DENYLIST

明确禁止扫描的目录。

OUTPUT_ALLOWLIST

只允许写入明确授权的独立输出目录。

路径规则:

  • 使用绝对路径。
  • 规范化路径。
  • 检查目录真实边界。
  • 不使用简单字符串前缀判断路径关系。
  • 检查符号链接。
  • 不跟随符号链接。
  • 不允许扫描根目录与输出目录重叠。
  • 不允许扫描目录包含保护目录。
  • 不允许保护范围无法确定时继续。

路径校验结果:

SCOPE_VALID
SCOPE_INVALID
SCOPE_UNKNOWN

只有SCOPE_VALID可以进入下一步申请。

交付:

P0-02-SCOPE-BOUNDARY.md

P0-03:SIT-7冻结隔离

本任务只负责保护规则设计。

不读取、不检查、不扫描SIT-7实际资产。

固定规则:

SIT7_FROZEN = TRUE
SIT7_SCAN = PROHIBITED
SIT7_READ = PROHIBITED
SIT7_EXPORT = PROHIBITED
SIT7_REPAIR = NOT_AUTHORIZED
SIT7_BUNDLE = NOT_AUTHORIZED
SIT7_GIT_GC = PROHIBITED
SIT7_HISTORY_REWRITE = PROHIBITED
SIT7_PUBLISH = NOT_AUTHORIZED
SIT7_PUSH = NOT_AUTHORIZED

禁止通过以下方式绕过冻结:

  • 全盘扫描后再过滤。
  • 先读取再排除。
  • 通过符号链接访问。
  • 通过Git索引获取冻结资产。
  • 通过缓存或副本重新引入冻结资产。
  • 将冻结资产改名后重新登记。

如果扫描根目录可能包含SIT-7资产,且不能证明完全隔离:

STATUS = BLOCKED
REASON = SIT7_SCOPE_NOT_PROVABLE
NEXT_ACTION = WAIT_FOR_OWNER_DECISION

不得自行寻找SIT-7文件来验证隔离。

交付:

P0-03-PROTECTION-BOUNDARY.md

P0-04:统一资产数据模型

建立统一资产模型。

资产分类:

PROJECT
PERSONA
SKILL
ALGORITHM
CODE
SPEC
AUDIT
SOURCE
EXPERIMENT
LOG
EVIDENCE
ARCHIVE
TOOL
MODEL
ROUTE
POLICY
UNKNOWN

资产字段:

字段 类型 必需 说明
asset_id TEXT 是 统一资产ID
asset_type TEXT 是 资产分类
asset_name TEXT 是 资产名称
asset_version TEXT 否 版本
project_id TEXT 否 项目ID
source_type TEXT 是 来源类型
source_id TEXT 否 原始来源ID
source_uri TEXT 否 来源链接
original_location TEXT 否 原始位置
content_hash TEXT 否 SHA-256
hash_status TEXT 是 哈希状态
evidence_level TEXT 是 证据等级
verification_status TEXT 是 验证状态
permission_level TEXT 是 权限等级
risk_level TEXT 是 风险等级
lifecycle_status TEXT 是 生命周期
governance_status TEXT 是 治理状态
registered_at TEXT 是 登记时间
updated_at TEXT 是 更新时间

统一证据等级:

E0_UNKNOWN
E1_DECLARED
E2_REPORTED
E3_DIRECT
E4_VERIFIED
E5_INDEPENDENTLY_REVIEWED

统一验证状态:

NOT_MEASURED
UNKNOWN
PASS
FAIL
BLOCKED
NOT_APPLICABLE

注意:

UNKNOWN不等于FAIL。

NOT_MEASURED不等于0。

DECLARED不等于VERIFIED。

交付:

P0-04-ASSET-DATA-MODEL.md

P0-05:SQLite数据库Schema

数据库名称:

asset_index.sqlite

数据库只负责索引和治理元数据,不存储原始文件正文。

5.1 数据表

schema_meta
scan_runs
assets
asset_sources
asset_hashes
asset_versions
asset_relations
classifications
duplicate_groups
duplicate_members
evidence_records
verification_records
processing_tasks
task_events
governance_decisions
protected_assets
routing_rules
routing_decisions
audit_events
scan_errors

5.2 核心Schema

以下SQL为设计基线,必须先静态审查。不得在未经授权的情况下创建真实数据库。

PRAGMA foreign_keys = ON;
CREATE TABLE IF NOT EXISTS schema_meta (
schema_version TEXT PRIMARY KEY,
applied_at TEXT NOT NULL,
description TEXT
);
CREATE TABLE IF NOT EXISTS scan_runs (
scan_id TEXT PRIMARY KEY,
started_at TEXT NOT NULL,
finished_at TEXT,
scan_status TEXT NOT NULL,
scan_roots_json TEXT NOT NULL,
excluded_roots_json TEXT NOT NULL,
files_discovered INTEGER DEFAULT 0,
files_hashed INTEGER DEFAULT 0,
files_skipped INTEGER DEFAULT 0,
files_failed INTEGER DEFAULT 0,
errors_count INTEGER DEFAULT 0,
tool_version TEXT NOT NULL,
rules_version TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS assets (
asset_id TEXT PRIMARY KEY,
asset_type TEXT NOT NULL DEFAULT ‘UNKNOWN’,
asset_name TEXT NOT NULL,
asset_version TEXT,
project_id TEXT,
original_location TEXT,
lifecycle_status TEXT NOT NULL DEFAULT ‘ACTIVE’,
evidence_level TEXT NOT NULL DEFAULT ‘E0_UNKNOWN’,
verification_status TEXT NOT NULL DEFAULT ‘NOT_MEASURED’,
permission_level TEXT NOT NULL DEFAULT ‘A0’,
risk_level TEXT NOT NULL DEFAULT ‘UNKNOWN’,
governance_status TEXT NOT NULL DEFAULT ‘PENDING’,
registered_at TEXT NOT NULL,
updated_at TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS asset_sources (
source_record_id TEXT PRIMARY KEY,
asset_id TEXT NOT NULL,
source_type TEXT NOT NULL,
source_id TEXT,
source_uri TEXT,
source_timestamp TEXT,
source_status TEXT NOT NULL DEFAULT ‘UNKNOWN’,
FOREIGN KEY (asset_id) REFERENCES assets(asset_id)
);
CREATE TABLE IF NOT EXISTS asset_hashes (
hash_id TEXT PRIMARY KEY,
asset_id TEXT NOT NULL,
algorithm TEXT NOT NULL,
hash_value TEXT,
hash_status TEXT NOT NULL,
calculated_at TEXT,
FOREIGN KEY (asset_id) REFERENCES assets(asset_id)
);
CREATE INDEX IF NOT EXISTS idx_asset_hash_value
ON asset_hashes(hash_value);
CREATE INDEX IF NOT EXISTS idx_asset_type
ON assets(asset_type);
CREATE INDEX IF NOT EXISTS idx_asset_project
ON assets(project_id);
CREATE TABLE IF NOT EXISTS asset_versions (
version_relation_id TEXT PRIMARY KEY,
source_asset_id TEXT NOT NULL,
target_asset_id TEXT NOT NULL,
relation_type TEXT NOT NULL,
evidence TEXT,
confidence REAL,
review_status TEXT NOT NULL DEFAULT ‘PENDING’,
FOREIGN KEY (source_asset_id) REFERENCES assets(asset_id),
FOREIGN KEY (target_asset_id) REFERENCES assets(asset_id),
CHECK (source_asset_id <> target_asset_id)
);
CREATE TABLE IF NOT EXISTS asset_relations (
relation_id TEXT PRIMARY KEY,
source_asset_id TEXT NOT NULL,
target_asset_id TEXT NOT NULL,
relation_type TEXT NOT NULL,
evidence TEXT,
review_status TEXT NOT NULL DEFAULT ‘PENDING’,
FOREIGN KEY (source_asset_id) REFERENCES assets(asset_id),
FOREIGN KEY (target_asset_id) REFERENCES assets(asset_id),
CHECK (source_asset_id <> target_asset_id)
);
CREATE TABLE IF NOT EXISTS classifications (
classification_id TEXT PRIMARY KEY,
asset_id TEXT NOT NULL,
classification_type TEXT NOT NULL,
classification_value TEXT NOT NULL,
method TEXT NOT NULL,
rule_version TEXT,
confidence REAL,
evidence TEXT,
review_status TEXT NOT NULL DEFAULT ‘PENDING’,
created_at TEXT NOT NULL,
FOREIGN KEY (asset_id) REFERENCES assets(asset_id)
);
CREATE TABLE IF NOT EXISTS duplicate_groups (
duplicate_group_id TEXT PRIMARY KEY,
algorithm TEXT NOT NULL,
hash_value TEXT,
duplicate_type TEXT NOT NULL,
review_status TEXT NOT NULL DEFAULT ‘PENDING’,
created_at TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS duplicate_members (
duplicate_group_id TEXT NOT NULL,
asset_id TEXT NOT NULL,
PRIMARY KEY (duplicate_group_id, asset_id),
FOREIGN KEY (duplicate_group_id)
REFERENCES duplicate_groups(duplicate_group_id),
FOREIGN KEY (asset_id)
REFERENCES assets(asset_id)
);
CREATE TABLE IF NOT EXISTS evidence_records (
evidence_id TEXT PRIMARY KEY,
asset_id TEXT NOT NULL,
evidence_type TEXT NOT NULL,
evidence_uri TEXT,
evidence_hash TEXT,
evidence_level TEXT NOT NULL DEFAULT ‘E0_UNKNOWN’,
collection_method TEXT,
collected_at TEXT,
verification_status TEXT NOT NULL DEFAULT ‘NOT_MEASURED’,
FOREIGN KEY (asset_id) REFERENCES assets(asset_id)
);
CREATE TABLE IF NOT EXISTS verification_records (
verification_id TEXT PRIMARY KEY,
asset_id TEXT NOT NULL,
verification_type TEXT NOT NULL,
verification_method TEXT,
verifier_type TEXT NOT NULL,
result TEXT NOT NULL,
evidence_reference TEXT,
verified_at TEXT,
FOREIGN KEY (asset_id) REFERENCES assets(asset_id)
);
CREATE TABLE IF NOT EXISTS processing_tasks (
task_id TEXT PRIMARY KEY,
scan_id TEXT,
asset_id TEXT,
task_type TEXT NOT NULL,
task_status TEXT NOT NULL,
permission_level TEXT NOT NULL DEFAULT ‘A0’,
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL,
FOREIGN KEY (scan_id) REFERENCES scan_runs(scan_id),
FOREIGN KEY (asset_id) REFERENCES assets(asset_id)
);
CREATE TABLE IF NOT EXISTS task_events (
event_id TEXT PRIMARY KEY,
task_id TEXT NOT NULL,
event_type TEXT NOT NULL,
event_detail TEXT,
created_at TEXT NOT NULL,
FOREIGN KEY (task_id) REFERENCES processing_tasks(task_id)
);
CREATE TABLE IF NOT EXISTS governance_decisions (
decision_id TEXT PRIMARY KEY,
asset_id TEXT NOT NULL,
decision_type TEXT NOT NULL,
decision_status TEXT NOT NULL,
reason TEXT,
evidence_reference TEXT,
reviewer TEXT,
decided_at TEXT,
FOREIGN KEY (asset_id) REFERENCES assets(asset_id)
);
CREATE TABLE IF NOT EXISTS protected_assets (
protection_id TEXT PRIMARY KEY,
protected_type TEXT NOT NULL,
protected_reference TEXT NOT NULL,
protection_status TEXT NOT NULL,
reason TEXT,
created_at TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS routing_rules (
rule_id TEXT PRIMARY KEY,
rule_version TEXT NOT NULL,
asset_type TEXT NOT NULL,
target_database TEXT,
priority INTEGER NOT NULL,
rule_status TEXT NOT NULL,
requires_review INTEGER NOT NULL DEFAULT 1,
created_at TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS routing_decisions (
routing_id TEXT PRIMARY KEY,
asset_id TEXT NOT NULL,
rule_id TEXT,
suggested_target TEXT,
decision_status TEXT NOT NULL,
explanation TEXT,
reviewed_by TEXT,
created_at TEXT NOT NULL,
FOREIGN KEY (asset_id) REFERENCES assets(asset_id),
FOREIGN KEY (rule_id) REFERENCES routing_rules(rule_id)
);
CREATE TABLE IF NOT EXISTS audit_events (
audit_id TEXT PRIMARY KEY,
task_id TEXT,
asset_id TEXT,
actor TEXT NOT NULL,
action TEXT NOT NULL,
result TEXT NOT NULL,
evidence_reference TEXT,
created_at TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS scan_errors (
error_id TEXT PRIMARY KEY,
scan_id TEXT NOT NULL,
relative_path TEXT,
error_type TEXT NOT NULL,
error_message TEXT,
severity TEXT NOT NULL,
occurred_at TEXT NOT NULL,
FOREIGN KEY (scan_id) REFERENCES scan_runs(scan_id)
);

5.3 数据库约束

必须额外检查:

  1. 所有时间统一使用UTC ISO 8601格式。
  2. 所有ID必须唯一。
  3. 外键必须启用。
  4. 哈希算法名称必须明确。
  5. 哈希失败不能写入伪造哈希。
  6. 不确定分类必须为UNKNOWN。
  7. 版本关系必须保留证据。
  8. 重复关系不得自动删除文件。
  9. 数据库不能位于扫描目录内。
  10. 数据库不能存储原始文件正文。

5.4 Schema版本

初始版本:

SCHEMA_VERSION = 1.0.0

未来修改Schema必须通过迁移文件。

禁止静默修改已有数据库结构。

交付:

P0-05-SQLITE-SCHEMA.md
P0-05-schema.sql

P0-06:路径保护配置

建立:

config/protected_paths.example.yaml

模板:

version: “1.0”
mode:
default: “BLOCK”
fail_closed: true
follow_symlinks: false
scan:
roots: []
allow_recursive: true
max_file_size_bytes: 2147483648
include_hidden: false
exclude:
roots: []
patterns:
- “.git”
- “pycache”
- “.venv”
- “node_modules”
- “.cache”
protected_assets:
sit7:
status: “FROZEN”
scan: false
read: false
export: false
repair: false
publish: false
push: false
path_references: []
output:
root: null
require_outside_scan_roots: true
network:
enabled: false
ai:
enabled: false
notion:
enabled: false
execution:
scan_enabled: false
write_source_files: false
move_files: false
delete_files: false
rename_files: false

规则:

  • 空白路径不代表默认全盘扫描。
  • 空白保护路径不代表SIT-7已排除。
  • 未知保护边界必须阻断。
  • 不得把占位路径当作真实路径。
  • 不得在配置中保存密钥或密码。

交付:

P0-06-PATH-PROTECTION.md
protected_paths.example.yaml

P0-07:只读索引接口设计

第一版CLI:

python -m lh_ingestor doctor

检查环境和配置。

python -m lh_ingestor config-check

检查路径规则,不扫描文件内容。

python -m lh_ingestor schema-info

显示数据库Schema版本,不创建数据库。

python -m lh_ingestor status

显示系统配置状态。

真实扫描命令预留:

python -m lh_ingestor scan --config config.yaml

但在PHASE 0必须保持禁用。

必须设置双重检查:

CONFIG_SCAN_ENABLED = FALSE
OWNER_SCAN_AUTHORIZATION = FALSE

两者必须同时满足授权要求,才可启动真实扫描。

交付:

P0-07-CLI-SPEC.md

P0-08:审计日志和错误处理

每次任务记录:

TASK_ID
SCAN_ID
TASK_TYPE
START_TIME
END_TIME
ACTOR
TOOL_VERSION
RULE_VERSION
INPUT_SCOPE
OUTPUT_SCOPE
PERMISSION_LEVEL
RESULT
ERRORS
EVIDENCE

错误类型:

PATH_NOT_FOUND
PATH_PERMISSION_DENIED
SCOPE_OVERLAP
PROTECTED_PATH_CONFLICT
SYMLINK_BLOCKED
FILE_CHANGED
FILE_TOO_LARGE
HASH_FAILED
DATABASE_ERROR
CONFIG_INVALID
UNKNOWN_ASSET

错误处理:

  • 记录错误。
  • 保留已完成的有效记录。
  • 不扩大扫描范围。
  • 不尝试提权。
  • 不跳过保护检查。
  • 不自动重试危险操作。
  • 严重错误立即停止。

日志禁止记录文件正文、密钥和隐私内容。

交付:

P0-08-AUDIT-ERROR-HANDLING.md

P0-09:测试方案设计

测试必须使用独立临时目录。

不使用真实资料目录。

不使用任何SIT-7资产。

测试代码至少覆盖:

编号 测试场景 预期结果
T01 正常路径 允许通过边界检查
T02 未授权路径 BLOCKED
T03 扫描与输出目录重叠 BLOCKED
T04 保护目录与扫描目录重叠 BLOCKED
T05 符号链接 不跟随
T06 空文件 正确计算SHA-256
T07 完全重复文件 识别相同哈希
T08 同名不同内容 不认定完全重复
T09 无扩展名 UNKNOWN
T10 超过大小限制 HASH_SKIPPED
T11 读取权限不足 记录错误
T12 文件读取中发生变化 FILE_CHANGED
T13 数据库外键错误 事务失败
T14 非法配置 CONFIG_INVALID
T15 冻结范围不明确 BLOCKED
T16 空白扫描白名单 BLOCKED

测试阶段分开:

TEST_CODE_CREATED
TEST_STATIC_REVIEWED
TEST_EXECUTION_AUTHORIZED
TEST_EXECUTED
TEST_RESULT_VERIFIED

不能把测试代码已创建说成测试已经通过。

当前只允许设计测试,不执行测试。

交付:

P0-09-TEST-PLAN.md

P0-10:静态安全审查

检查:

  • 是否存在自动删除函数。
  • 是否存在自动移动函数。
  • 是否存在自动重命名函数。
  • 是否存在网络请求。
  • 是否存在Notion接口。
  • 是否存在模型API。
  • 是否存在Shell命令执行。
  • 是否存在动态代码执行。
  • 是否存在隐式全盘扫描。
  • 是否存在符号链接绕过。
  • 是否存在路径前缀误判。
  • 是否存在输出目录与扫描目录重叠。
  • 是否存在未保护的数据库写入。
  • 是否存在密钥明文。
  • 是否存在未经授权的Git操作。

审查结果:

PASS
FAIL
UNKNOWN
BLOCKED

发现任何高风险行为,必须先阻断。

交付:

P0-10-STATIC-SECURITY-REVIEW.md

P0-11:PHASE 0验收

所有前述任务汇总。

必须提交:

  1. 环境报告。
  2. 工程目录规划。
  3. 范围保护说明。
  4. SIT-7排除规则。
  5. 统一资产模型。
  6. SQLite Schema。
  7. 路径保护配置。
  8. CLI接口规范。
  9. 审计日志规范。
  10. 测试计划。
  11. 静态安全审查报告。
  12. 未完成事项。

验收状态:

ACCEPTED
ACCEPTED_WITH_LIMITS
BLOCKED
INCOMPLETE
REJECTED

P0-12:PHASE 1准入申请

只有PHASE 0验收通过后才能提出PHASE 1申请。

PHASE 1申请至少包含:

SCAN_ROOTS
EXCLUDED_ROOTS
PROTECTED_ROOTS
OUTPUT_ROOT
MAX_FILE_SIZE
FILE_TYPES
RECURSIVE_SCAN
SYMLINK_POLICY
RESOURCE_LIMIT
EXPECTED_FILE_COUNT
DATA_PRIVACY_LEVEL
OWNER_AUTHORIZATION

所有路径必须由负责人提供。

不得自动推断。

PHASE 1申请通过不代表Notion写入、AI接入或自动整理获得授权。

⸻

第三部分:工程文件清单

3.1 必须准备的文件

编号 文件 用途 PHASE 0状态
F001 README.md 项目说明 待创建
F002 VERSION 版本记录 待创建
F003 CHANGELOG.md 变更历史 待创建
F004 config.example.yaml 基础配置 待创建
F005 protected_paths.example.yaml 保护配置 待创建
F006 governance_rules.yaml 治理规则 待创建
F007 scope_guard.py 路径保护 待创建
F008 discovery.py 文件发现 待创建
F009 metadata.py 元数据提取 待创建
F010 hashing.py SHA-256 待创建
F011 database.py SQLite接口 待创建
F012 schema.sql 数据库Schema 待创建
F013 duplicates.py 重复识别 待创建
F014 version_hints.py 版本线索 待创建
F015 audit.py 审计记录 待创建
F016 reports.py 报告生成 待创建
F017 cli.py 命令行入口 待创建
F018 test_scope_guard.py 路径安全测试 待创建
F019 test_hashing.py 哈希测试 待创建
F020 test_database.py 数据库测试 待创建
F021 architecture.md 架构说明 待创建
F022 security-model.md 安全模型 待创建
F023 data-dictionary.md 字段字典 待创建
F024 operations.md 操作说明 待创建
F025 phase-0-acceptance.md 验收清单 待创建

3.2 文件状态规则

PLANNED
CREATED
STATIC_REVIEWED
TESTED
VERIFIED
APPROVED

每个文件记录实际状态。

不得将PLANNED标记为CREATED。

不得将CREATED标记为TESTED。

⸻

第四部分:PHASE 0交付目录

完成后,交付物应位于经授权的独立输出位置。

建议:

LH-INGESTOR-PHASE0-DELIVERY/
│
├── 00-EXECUTION-SUMMARY.md
│
├── 01-ENVIRONMENT/
│ └── environment-report.md
│
├── 02-ARCHITECTURE/
│ ├── project-structure.md
│ └── architecture.md
│
├── 03-SECURITY/
│ ├── scope-boundary.md
│ ├── protection-boundary.md
│ └── static-security-review.md
│
├── 04-DATABASE/
│ ├── schema.sql
│ └── data-dictionary.md
│
├── 05-CONFIG/
│ ├── config.example.yaml
│ └── protected_paths.example.yaml
│
├── 06-TESTS/
│ └── test-plan.md
│
├── 07-ACCEPTANCE/
│ ├── acceptance-checklist.md
│ └── phase1-entry-request.md
│
└── 08-AUDIT/
└── execution-audit.md

此目录为交付结构建议,不代表已创建。

⸻

第五部分:PHASE 0验收清单

A. 项目和环境

  • [ ] 工程目标明确。
  • [ ] 当前工作目录已确认。
  • [ ] 新工程目录已确认。
  • [ ] 未覆盖现有项目。
  • [ ] 未修改其他仓库。
  • [ ] 执行权限已记录。
  • [ ] 未知信息没有被猜测。

B. 路径和安全

  • [ ] 扫描白名单已定义。
  • [ ] 排除清单已定义。
  • [ ] 输出路径独立。
  • [ ] 输出路径不在扫描范围。
  • [ ] 不跟随符号链接。
  • [ ] 不允许路径越界。
  • [ ] 不允许扫描范围模糊。
  • [ ] 冻结资产有明确拒绝规则。
  • [ ] SIT-7保持冻结。
  • [ ] 没有触碰SIT-7。

C. 数据模型

  • [ ] Asset_ID定义明确。
  • [ ] Asset_Type定义明确。
  • [ ] Source关系定义明确。
  • [ ] Version关系定义明确。
  • [ ] Evidence等级定义明确。
  • [ ] Verification状态定义明确。
  • [ ] Permission等级定义明确。
  • [ ] Risk等级定义明确。
  • [ ] UNKNOWN状态保留。
  • [ ] 不确定关系不被强行建立。

D. 数据库

  • [ ] Schema已审查。
  • [ ] 主键已定义。
  • [ ] 外键已定义。
  • [ ] 索引已定义。
  • [ ] Schema版本已定义。
  • [ ] 数据库输出位置已定义。
  • [ ] 不存储原始文件正文。
  • [ ] 不存在未经授权的数据库创建。

E. 工程接口

  • [ ] CLI命令已定义。
  • [ ] 扫描功能默认禁用。
  • [ ] Notion接口默认禁用。
  • [ ] AI接口默认禁用。
  • [ ] 网络访问默认禁用。
  • [ ] 错误处理规则已定义。
  • [ ] 审计记录格式已定义。

F. 测试与安全

  • [ ] 测试方案已定义。
  • [ ] 测试目录独立。
  • [ ] 不使用真实资料进行测试。
  • [ ] 不使用冻结资产进行测试。
  • [ ] 静态审查已完成。
  • [ ] 风险问题已记录。
  • [ ] 未经授权未执行测试。

G. 交付

  • [ ] 环境报告。
  • [ ] 工程目录规划。
  • [ ] 数据库Schema。
  • [ ] 路径保护配置。
  • [ ] 安全审查报告。
  • [ ] 测试计划。
  • [ ] 验收报告。
  • [ ] PHASE 1申请。
  • [ ] 所有证据可以追溯。

⸻

第六部分:CodeBuddy总执行指令

以下内容作为CodeBuddy的执行主指令。

CODEBUDDY · MASTER PROMPT

你现在负责实施:

LH-INGESTOR PHASE 0 · 本地资料自动消化引擎安全基线与工程准备。

你必须严格遵守本执行包。

任务目标

建立长期统一资料治理引擎的工程基础。

当前不是文件整理任务。

当前不是Notion同步任务。

当前不是AI分类任务。

当前不是代码仓库修复任务。

当前不是SIT-7复核任务。

执行顺序

必须依次完成:

P0-00
P0-01
P0-02
P0-03
P0-04
P0-05
P0-06
P0-07
P0-08
P0-09
P0-10
P0-11
P0-12

每完成一个任务,先输出该任务报告。

不能跳步。

不能自行扩大范围。

不能把多个任务合并成无法核对的结果。

当前允许动作

在尚未获得工程创建授权前,只允许:

  • 阅读本执行包。
  • 分析技术要求。
  • 检查当前工作目录信息。
  • 输出工程规划。
  • 输出数据库Schema草案。
  • 输出配置草案。
  • 输出测试方案。
  • 输出安全审查意见。

当前禁止动作

SOURCE_FILE_WRITE = PROHIBITED
SOURCE_FILE_DELETE = PROHIBITED
SOURCE_FILE_MOVE = PROHIBITED
SOURCE_FILE_RENAME = PROHIBITED
REAL_DATA_SCAN = NOT_AUTHORIZED
REAL_DATA_READ = NOT_AUTHORIZED
NOTION_CONNECT = DISABLED
NOTION_READ = NOT_AUTHORIZED
NOTION_WRITE = NOT_AUTHORIZED
NETWORK = DISABLED
AI_MODEL = DISABLED
API_CALL = DISABLED
DEPENDENCY_INSTALL = NOT_AUTHORIZED
TEST_EXECUTION = NOT_AUTHORIZED
GIT_COMMIT = NOT_AUTHORIZED
GIT_PUSH = NOT_AUTHORIZED
GIT_RESET = PROHIBITED
GIT_CLEAN = PROHIBITED
GIT_GC = PROHIBITED
HISTORY_REWRITE = PROHIBITED
SIT7_ACCESS = PROHIBITED
SIT7_SCAN = PROHIBITED
SIT7_REPAIR = NOT_AUTHORIZED
SIT7_EXPORT = NOT_AUTHORIZED
SIT7_PUBLISH = NOT_AUTHORIZED

失败处理

如果遇到:

  • 路径不明确。
  • 权限不明确。
  • 冻结边界不明确。
  • 现有工程目录冲突。
  • 输出目录不安全。
  • 数据库可能覆盖已有文件。
  • 需要安装依赖。
  • 需要联网。
  • 需要读取受保护资产。

立即停止对应任务。

输出:

STATUS = BLOCKED
REASON = PERMISSION_OR_SCOPE_UNCLEAR
ACTION = STOP
NEXT_ACTION = WAIT_FOR_OWNER_DECISION

报告规则

每个任务报告必须包含:

TASK_ID
TASK_STATUS
START_TIME
END_TIME
INPUTS
OUTPUTS
FILES_CREATED
FILES_MODIFIED
FILES_DELETED
FILES_READ
NETWORK_ACCESS
NOTION_ACCESS
AI_ACCESS
GIT_OPERATIONS
SIT7_STATUS
SECURITY_FINDINGS
EVIDENCE
UNRESOLVED_ITEMS
NEXT_ACTION

没有执行的项目必须写:

NOT_EXECUTED

无法确认的项目必须写:

UNKNOWN

不得用“正常”“无问题”“已完成”替代实际证据。

最终停止点

PHASE 0完成后:

PHASE_0_STATUS = READY_FOR_OWNER_REVIEW
PHASE_1_STATUS = NOT_STARTED
REAL_DATA_SCAN = NOT_AUTHORIZED

不得自动启动PHASE 1。

必须等待负责人明确授权。

⸻

第七部分:PHASE 0最终裁定模板

PROJECT:
LH-INGESTOR
EXECUTION_PACKAGE:
LH-INGESTOR-P0-MEP-001
VERSION:
1.0
PHASE:
0
RESULT:
ACCEPTED / ACCEPTED_WITH_LIMITS / BLOCKED / INCOMPLETE / REJECTED
ENGINEERING_BASELINE:
PASS / FAIL / UNKNOWN
DATABASE_SCHEMA:
PASS / FAIL / UNKNOWN
PATH_PROTECTION:
PASS / FAIL / UNKNOWN
SIT7_ISOLATION:
PASS / FAIL / UNKNOWN
STATIC_SECURITY_REVIEW:
PASS / FAIL / UNKNOWN
TEST_PLAN:
PASS / FAIL / UNKNOWN
SOURCE_FILES_MODIFIED:
YES / NO / UNKNOWN
REAL_DATA_SCANNED:
YES / NO / UNKNOWN
NOTION_ACCESSED:
YES / NO / UNKNOWN
NETWORK_ACCESSED:
YES / NO / UNKNOWN
AI_ACCESSED:
YES / NO / UNKNOWN
GIT_WRITE_OPERATIONS:
YES / NO / UNKNOWN
NEXT_PHASE:
PHASE_1_APPLICATION / BLOCKED / WAIT
OWNER_AUTHORIZATION:
PENDING

⸻

第八部分:PHASE 1准入申请模板

只有PHASE 0验收后才填写。

phase: “1”
project: “LH-INGESTOR”
scan_roots: []
excluded_roots: []
protected_roots: []
output_root: null
recursive_scan: true
follow_symlinks: false
max_file_size_bytes: 2147483648
allowed_file_types: []
include_hidden_files: false
network_enabled: false
ai_enabled: false
notion_enabled: false
source_write_enabled: false
source_delete_enabled: false
owner_authorization:
status: “PENDING”
scope: null
approved_at: null

注意:

路径必须由负责人实际填写。

空白配置不能自动转换成全盘扫描。

PHASE 1仅申请只读索引,不包含文件移动、删除、Notion写入或AI分类。

⸻

最终系统状态

PROJECT = LH-INGESTOR
EXECUTION_PACKAGE = LH-INGESTOR-P0-MEP-001
VERSION = 1.0
PHASE_0A = READY_FOR_IMPLEMENTATION_REVIEW
PHASE_0B = WAITING_FOR_SCOPE_CONFIRMATION
PROJECT_CREATION = NOT_AUTHORIZED
REAL_DATA_SCAN = NOT_AUTHORIZED
NOTION_ACCESS = NOT_AUTHORIZED
AI_ACCESS = DISABLED
NETWORK = DISABLED
TEST_EXECUTION = NOT_AUTHORIZED
SIT7_FROZEN = TRUE
SIT7_ACCESS = PROHIBITED
PHASE_1 = NOT_STARTED
NEXT_ACTION = OWNER_SCOPE_CONFIRMATION

核心执行原则:

先建立边界,再建立引擎。

先建立索引,再理解内容。

先确认来源,再建立关系。

先验证证据,再进入知识库。

先获得授权,再执行写入。

LH-INGESTOR必须成为龍魂 AI 的统一资料入口,但统一入口永远不能成为绕过专业系统权限和冻结规则的通道。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值