docs(01-01): 完成 phase 01 执行与验证归档
- 新增 SUMMARY 与 VERIFICATION - 更新 STATE 与 REQUIREMENTS 进度
This commit is contained in:
parent
7499a6992a
commit
c574c41b2c
|
|
@ -7,9 +7,9 @@
|
||||||
|
|
||||||
### Merge Reconciliation
|
### Merge Reconciliation
|
||||||
|
|
||||||
- [ ] **MERGE-01**: Team can list all merge-overwritten hotspots with file-level evidence and risk classification
|
- [x] **MERGE-01**: Team can list all merge-overwritten hotspots with file-level evidence and risk classification
|
||||||
- [ ] **MERGE-02**: Team can restore required new-system logic removed during merge while avoiding duplicate behavior paths
|
- [ ] **MERGE-02**: Team can restore required new-system logic removed during merge while avoiding duplicate behavior paths
|
||||||
- [ ] **MERGE-03**: Team can identify and reconcile Titan-overlap code paths with explicit keep/replace decisions
|
- [x] **MERGE-03**: Team can identify and reconcile Titan-overlap code paths with explicit keep/replace decisions
|
||||||
|
|
||||||
### UI Visual Alignment
|
### UI Visual Alignment
|
||||||
|
|
||||||
|
|
@ -49,9 +49,9 @@
|
||||||
|
|
||||||
| Requirement | Phase | Status |
|
| Requirement | Phase | Status |
|
||||||
|-------------|-------|--------|
|
|-------------|-------|--------|
|
||||||
| MERGE-01 | Phase 1 | Pending |
|
| MERGE-01 | Phase 1 | Complete |
|
||||||
| MERGE-02 | Phase 1 | Pending |
|
| MERGE-02 | Phase 1 | Pending |
|
||||||
| MERGE-03 | Phase 1 | Pending |
|
| MERGE-03 | Phase 1 | Complete |
|
||||||
| LOGIC-03 | Phase 2 | Pending |
|
| LOGIC-03 | Phase 2 | Pending |
|
||||||
| LOGIC-04 | Phase 2 | Pending |
|
| LOGIC-04 | Phase 2 | Pending |
|
||||||
| UI-01 | Phase 3 | Pending |
|
| UI-01 | Phase 3 | Pending |
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,17 @@
|
||||||
|
---
|
||||||
|
gsd_state_version: 1.0
|
||||||
|
milestone: v1.0
|
||||||
|
milestone_name: milestone
|
||||||
|
status: Ready to plan
|
||||||
|
last_updated: "2026-04-07T04:32:17.454Z"
|
||||||
|
progress:
|
||||||
|
total_phases: 5
|
||||||
|
completed_phases: 1
|
||||||
|
total_plans: 1
|
||||||
|
completed_plans: 1
|
||||||
|
percent: 100
|
||||||
|
---
|
||||||
|
|
||||||
# STATE.md
|
# STATE.md
|
||||||
|
|
||||||
## Project Reference
|
## Project Reference
|
||||||
|
|
@ -5,7 +19,7 @@
|
||||||
See: .planning/PROJECT.md (updated 2026-04-07)
|
See: .planning/PROJECT.md (updated 2026-04-07)
|
||||||
|
|
||||||
**Core value:** Keep the frontend visually familiar while preserving and hardening new-system behavior end to end.
|
**Core value:** Keep the frontend visually familiar while preserving and hardening new-system behavior end to end.
|
||||||
**Current focus:** Phase 1 - Conflict Inventory and Decision Matrix
|
**Current focus:** Phase 01 — conflict-inventory-and-decision-matrix
|
||||||
|
|
||||||
## Workflow State
|
## Workflow State
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,160 @@
|
||||||
|
---
|
||||||
|
phase: 01-conflict-inventory-and-decision-matrix
|
||||||
|
plan: 01
|
||||||
|
type: execute
|
||||||
|
wave: 1
|
||||||
|
depends_on: []
|
||||||
|
files_modified:
|
||||||
|
- .planning/phases/01-conflict-inventory-and-decision-matrix/01-PLAN.md
|
||||||
|
- .planning/phases/01-conflict-inventory-and-decision-matrix/conflict-inventory.csv
|
||||||
|
- .planning/phases/01-conflict-inventory-and-decision-matrix/conflict-inventory.md
|
||||||
|
- .planning/phases/01-conflict-inventory-and-decision-matrix/titan-decision-matrix.md
|
||||||
|
- .planning/phases/01-conflict-inventory-and-decision-matrix/audit-evidence.md
|
||||||
|
autonomous: true
|
||||||
|
requirements:
|
||||||
|
- MERGE-01
|
||||||
|
- MERGE-03
|
||||||
|
must_haves:
|
||||||
|
truths:
|
||||||
|
- "团队可以看到 merge 覆写热点的文件级证据、风险分级与来源提交。"
|
||||||
|
- "团队可以看到 Titan 重叠代码路径及每个热点的 keep/replace/hybrid 决策。"
|
||||||
|
- "后续阶段可以直接使用本阶段产物作为“旧视觉+新逻辑”执行输入。"
|
||||||
|
artifacts:
|
||||||
|
- path: ".planning/phases/01-conflict-inventory-and-decision-matrix/conflict-inventory.csv"
|
||||||
|
provides: "可审计冲突清单(文件、提交、风险、类别)"
|
||||||
|
- path: ".planning/phases/01-conflict-inventory-and-decision-matrix/conflict-inventory.md"
|
||||||
|
provides: "冲突清单说明与分级口径"
|
||||||
|
- path: ".planning/phases/01-conflict-inventory-and-decision-matrix/titan-decision-matrix.md"
|
||||||
|
provides: "Titan overlap 决策矩阵(keep/replace/hybrid)"
|
||||||
|
- path: ".planning/phases/01-conflict-inventory-and-decision-matrix/audit-evidence.md"
|
||||||
|
provides: "命令级证据链(可复现)"
|
||||||
|
key_links:
|
||||||
|
- from: "git merge/author 历史"
|
||||||
|
to: "conflict-inventory.csv"
|
||||||
|
via: "冲突提交 + Titan 触达聚合"
|
||||||
|
pattern: "git show -m + git log --author='[Tt]itan'"
|
||||||
|
- from: "conflict-inventory.csv"
|
||||||
|
to: "titan-decision-matrix.md"
|
||||||
|
via: "按风险与重叠分层决策"
|
||||||
|
pattern: "P0/P1 + keep/replace/hybrid"
|
||||||
|
---
|
||||||
|
|
||||||
|
<objective>
|
||||||
|
构建可审计的冲突盘点与 Titan 重叠决策基线,形成后续“旧视觉+新逻辑”执行阶段的唯一输入源。
|
||||||
|
|
||||||
|
Purpose: 在不做大规模功能实现的前提下,先把 merge 覆写风险与 Titan overlap 决策透明化、证据化。
|
||||||
|
Output: `conflict-inventory.csv`、`conflict-inventory.md`、`titan-decision-matrix.md`、`audit-evidence.md`。
|
||||||
|
</objective>
|
||||||
|
|
||||||
|
<context>
|
||||||
|
@.planning/PROJECT.md
|
||||||
|
@.planning/REQUIREMENTS.md
|
||||||
|
@.planning/ROADMAP.md
|
||||||
|
@.planning/phases/01-conflict-inventory-and-decision-matrix/01-RESEARCH.md
|
||||||
|
@.planning/codebase/ARCHITECTURE.md
|
||||||
|
@.planning/codebase/STRUCTURE.md
|
||||||
|
@.planning/codebase/CONCERNS.md
|
||||||
|
</context>
|
||||||
|
|
||||||
|
<tasks>
|
||||||
|
|
||||||
|
<task type="auto" tdd="true">
|
||||||
|
<name>Wave 1 - Task 1: 生成可复现证据链与原始热点集合</name>
|
||||||
|
<files>
|
||||||
|
.planning/phases/01-conflict-inventory-and-decision-matrix/audit-evidence.md
|
||||||
|
</files>
|
||||||
|
<behavior>
|
||||||
|
- Test 1: 必须列出用于提取 merge 覆写热点的命令与提交列表(含冲突语义 merge 提交)。
|
||||||
|
- Test 2: 必须列出用于提取 Titan overlap 的命令与结果摘要(作者轨 + 语义轨)。
|
||||||
|
- Test 3: 任一命令复跑后可得到同类型输出结构(允许计数随仓库演进变化)。
|
||||||
|
</behavior>
|
||||||
|
<action>
|
||||||
|
基于 01-RESEARCH 既有方法,固定并执行审计命令链:merge 提交采集、`git show -m` 文件提取、Titan 作者触达与“移植 Titan main”语义提交提取;将命令、时间、分支、输出摘要写入 `audit-evidence.md`,确保可复现与可审查。仅做证据整理,不修改业务代码。
|
||||||
|
</action>
|
||||||
|
<verify>
|
||||||
|
<automated>test -s .planning/phases/01-conflict-inventory-and-decision-matrix/audit-evidence.md && rg -n "git show -m|git log --all --author='\\[Tt\\]itan'|7342cc08|merge" .planning/phases/01-conflict-inventory-and-decision-matrix/audit-evidence.md</automated>
|
||||||
|
</verify>
|
||||||
|
<done>
|
||||||
|
`audit-evidence.md` 包含完整命令链、执行上下文、结果摘要,并可支持他人复跑验证。
|
||||||
|
</done>
|
||||||
|
</task>
|
||||||
|
|
||||||
|
<task type="auto" tdd="true">
|
||||||
|
<name>Wave 2 - Task 2: 产出可审计冲突清单(MERGE-01)</name>
|
||||||
|
<files>
|
||||||
|
.planning/phases/01-conflict-inventory-and-decision-matrix/conflict-inventory.csv
|
||||||
|
.planning/phases/01-conflict-inventory-and-decision-matrix/conflict-inventory.md
|
||||||
|
</files>
|
||||||
|
<behavior>
|
||||||
|
- Test 1: CSV 至少包含字段 `file_path, merge_hotspot_count, titan_touch_count, change_class, behavior_critical, risk_level, evidence_refs`。
|
||||||
|
- Test 2: 每条记录必须有 evidence_refs 指向具体提交或命令结果。
|
||||||
|
- Test 3: Markdown 文档明确风险分级规则(P0/P1/P2)与 change_class(visual-only/logic-only/mixed)。
|
||||||
|
</behavior>
|
||||||
|
<action>
|
||||||
|
依据 Wave 1 证据,形成文件级冲突清单:汇总 merge 热点频次、Titan 触达频次、行为关键度,按研究中的三轴口径完成风险分级与类别标注;输出机器可消费 CSV + 人类可审阅说明文档,满足 MERGE-01 的“文件级证据 + 风险分类”要求。
|
||||||
|
</action>
|
||||||
|
<verify>
|
||||||
|
<automated>test -s .planning/phases/01-conflict-inventory-and-decision-matrix/conflict-inventory.csv && test -s .planning/phases/01-conflict-inventory-and-decision-matrix/conflict-inventory.md && head -n 1 .planning/phases/01-conflict-inventory-and-decision-matrix/conflict-inventory.csv | rg "file_path,merge_hotspot_count,titan_touch_count,change_class,behavior_critical,risk_level,evidence_refs" && rg -n "P0|P1|P2|visual-only|logic-only|mixed" .planning/phases/01-conflict-inventory-and-decision-matrix/conflict-inventory.md</automated>
|
||||||
|
</verify>
|
||||||
|
<done>
|
||||||
|
冲突清单可直接回答“哪些文件被 merge 覆写风险影响、风险多高、证据来自哪里”。
|
||||||
|
</done>
|
||||||
|
</task>
|
||||||
|
|
||||||
|
<task type="auto" tdd="true">
|
||||||
|
<name>Wave 3 - Task 3: 产出 Titan 重叠决策矩阵并绑定后续输入(MERGE-03)</name>
|
||||||
|
<files>
|
||||||
|
.planning/phases/01-conflict-inventory-and-decision-matrix/titan-decision-matrix.md
|
||||||
|
</files>
|
||||||
|
<behavior>
|
||||||
|
- Test 1: 每个 Titan overlap 热点都有 `decision`(keep/replace/hybrid)与 `rationale`。
|
||||||
|
- Test 2: 每条决策都包含“旧视觉+新逻辑”落地指引(L0/L1/L2 边界)。
|
||||||
|
- Test 3: 每条决策都包含后续阶段入口(建议归属 Phase 2 或 Phase 3)。
|
||||||
|
</behavior>
|
||||||
|
<action>
|
||||||
|
基于冲突清单筛选 Titan overlap 文件,形成决策矩阵:逐项定义 keep/replace/hybrid、给出可审计依据与冲突化解理由,并明确后续执行归属(逻辑归 Phase 2、视觉归 Phase 3)。确保输出是后续“旧视觉+新逻辑”实施的直接输入,不在本阶段实现功能改动。
|
||||||
|
</action>
|
||||||
|
<verify>
|
||||||
|
<automated>test -s .planning/phases/01-conflict-inventory-and-decision-matrix/titan-decision-matrix.md && rg -n "keep|replace|hybrid|L0|L1|L2|Phase 2|Phase 3|rationale" .planning/phases/01-conflict-inventory-and-decision-matrix/titan-decision-matrix.md</automated>
|
||||||
|
</verify>
|
||||||
|
<done>
|
||||||
|
决策矩阵可直接回答“Titan overlap 该保留什么、替换什么、为什么,以及后续在哪个阶段执行”。
|
||||||
|
</done>
|
||||||
|
</task>
|
||||||
|
|
||||||
|
</tasks>
|
||||||
|
|
||||||
|
<threat_model>
|
||||||
|
## Trust Boundaries
|
||||||
|
|
||||||
|
| Boundary | Description |
|
||||||
|
|----------|-------------|
|
||||||
|
| `git history -> planning artifacts` | 来自历史提交的证据在写入计划产物前需要防止误读与遗漏 |
|
||||||
|
| `planning artifacts -> next-phase execution` | 错误决策会传递到后续实现阶段并造成行为回归 |
|
||||||
|
|
||||||
|
## STRIDE Threat Register
|
||||||
|
|
||||||
|
| Threat ID | Category | Component | Disposition | Mitigation Plan |
|
||||||
|
|-----------|----------|-----------|-------------|-----------------|
|
||||||
|
| T-01-01 | T (Tampering) | `conflict-inventory.csv` | mitigate | 所有记录必须带 `evidence_refs`,且在 `audit-evidence.md` 可追溯到具体命令/提交 |
|
||||||
|
| T-01-02 | R (Repudiation) | `titan-decision-matrix.md` | mitigate | 每条 keep/replace/hybrid 必须包含 `rationale` 与来源证据,避免无法追责 |
|
||||||
|
| T-01-03 | I (Information Disclosure) | `audit-evidence.md` | accept | 仅记录仓库公开代码提交信息,不写入密钥/凭据;若发现敏感值立即脱敏 |
|
||||||
|
| T-01-04 | D (Denial of Service) | 验证命令链 | accept | 验证命令限定在本地文本扫描与 git 查询,不引入重型构建任务 |
|
||||||
|
</threat_model>
|
||||||
|
|
||||||
|
<verification>
|
||||||
|
1. 执行 Wave 1-3 各任务的 `<automated>` 命令,全部返回 0。
|
||||||
|
2. 抽查 `conflict-inventory.csv` 中 P0 文件,能在 `audit-evidence.md` 找到对应证据。
|
||||||
|
3. 抽查 `titan-decision-matrix.md` 至少 3 条记录,确认均有 `decision + rationale + Phase 2/3 输入`。
|
||||||
|
</verification>
|
||||||
|
|
||||||
|
<success_criteria>
|
||||||
|
- 满足 MERGE-01:存在文件级冲突清单,且每条有证据引用与风险分级。
|
||||||
|
- 满足 MERGE-03:存在 Titan overlap 决策矩阵,且每条有 keep/replace/hybrid 明确结论。
|
||||||
|
- 产物可作为后续“旧视觉+新逻辑”执行输入:每个热点有 L0/L1/L2 边界与阶段归属。
|
||||||
|
- Phase 01 不引入业务功能实现,仅交付可审计规划资产。
|
||||||
|
</success_criteria>
|
||||||
|
|
||||||
|
<output>
|
||||||
|
After completion, create `.planning/phases/01-conflict-inventory-and-decision-matrix/01-SUMMARY.md`
|
||||||
|
</output>
|
||||||
|
|
@ -0,0 +1,88 @@
|
||||||
|
---
|
||||||
|
phase: 01-conflict-inventory-and-decision-matrix
|
||||||
|
plan: 01
|
||||||
|
subsystem: docs
|
||||||
|
tags: [merge-recovery, titan-overlap, audit, decision-matrix]
|
||||||
|
requires: []
|
||||||
|
provides:
|
||||||
|
- 可复现 merge/Titan 证据链
|
||||||
|
- 文件级冲突清单与风险分级
|
||||||
|
- Titan overlap keep/replace/hybrid 决策矩阵
|
||||||
|
affects: [phase-02-thread-and-skills-logic-reconciliation, phase-03-legacy-visual-alignment]
|
||||||
|
tech-stack:
|
||||||
|
added: []
|
||||||
|
patterns: [evidence-first inventory, L0/L1/L2 decision slicing]
|
||||||
|
key-files:
|
||||||
|
created:
|
||||||
|
- .planning/phases/01-conflict-inventory-and-decision-matrix/audit-evidence.md
|
||||||
|
- .planning/phases/01-conflict-inventory-and-decision-matrix/conflict-inventory.csv
|
||||||
|
- .planning/phases/01-conflict-inventory-and-decision-matrix/conflict-inventory.md
|
||||||
|
- .planning/phases/01-conflict-inventory-and-decision-matrix/titan-decision-matrix.md
|
||||||
|
- .planning/phases/01-conflict-inventory-and-decision-matrix/01-SUMMARY.md
|
||||||
|
modified: []
|
||||||
|
key-decisions:
|
||||||
|
- "冲突盘点以历史 merge 证据为主,而非当前工作区 diff。"
|
||||||
|
- "Titan overlap 采用作者轨 + 语义轨(7342cc08)双轨识别。"
|
||||||
|
- "后续执行按 L0/L1/L2 分层,确保旧视觉与新逻辑分离。"
|
||||||
|
patterns-established:
|
||||||
|
- "证据先行:所有风险条目必须有 evidence_refs"
|
||||||
|
- "决策矩阵直接绑定后续 phase 归属(Phase 2/3)"
|
||||||
|
requirements-completed: [MERGE-01, MERGE-03]
|
||||||
|
duration: 16 min
|
||||||
|
completed: 2026-04-07
|
||||||
|
---
|
||||||
|
|
||||||
|
# Phase 01 Plan 01: conflict-inventory-and-decision-matrix Summary
|
||||||
|
|
||||||
|
**交付了可复现冲突证据链、文件级风险清单与 Titan 重叠决策矩阵,形成“旧视觉+新逻辑”执行输入。**
|
||||||
|
|
||||||
|
## Performance
|
||||||
|
|
||||||
|
- **Duration:** 16 min
|
||||||
|
- **Started:** 2026-04-07T12:30:24+08:00
|
||||||
|
- **Completed:** 2026-04-07T04:31:40Z
|
||||||
|
- **Tasks:** 3
|
||||||
|
- **Files modified:** 5
|
||||||
|
|
||||||
|
## Accomplishments
|
||||||
|
- 固化了 merge hotspot 与 Titan overlap 的 Git 命令级证据链。
|
||||||
|
- 生成机器可消费的 `conflict-inventory.csv`,并给出 P0/P1/P2 风险分级口径。
|
||||||
|
- 生成 `titan-decision-matrix.md`,为后续 Phase 2/3 给出 keep/replace/hybrid 决策与 L0/L1/L2 边界。
|
||||||
|
|
||||||
|
## Task Commits
|
||||||
|
|
||||||
|
1. **Task 1: 生成可复现证据链与原始热点集合** - `d4cffcde` (docs)
|
||||||
|
2. **Task 2: 产出可审计冲突清单(MERGE-01)** - `92905bbe` (docs)
|
||||||
|
3. **Task 3: 产出 Titan 重叠决策矩阵并绑定后续输入(MERGE-03)** - `7499a699` (docs)
|
||||||
|
|
||||||
|
## Files Created/Modified
|
||||||
|
- `.planning/phases/01-conflict-inventory-and-decision-matrix/audit-evidence.md` - merge 与 Titan overlap 证据链
|
||||||
|
- `.planning/phases/01-conflict-inventory-and-decision-matrix/conflict-inventory.csv` - 文件级冲突清单(机器可消费)
|
||||||
|
- `.planning/phases/01-conflict-inventory-and-decision-matrix/conflict-inventory.md` - 风险分级与分类口径说明
|
||||||
|
- `.planning/phases/01-conflict-inventory-and-decision-matrix/titan-decision-matrix.md` - keep/replace/hybrid 决策矩阵
|
||||||
|
- `.planning/phases/01-conflict-inventory-and-decision-matrix/01-SUMMARY.md` - 执行总结
|
||||||
|
|
||||||
|
## Decisions Made
|
||||||
|
- 以历史 merge 冲突提交作为 Phase 01 的主审计来源。
|
||||||
|
- Titan overlap 决策必须绑定可追溯证据,不接受无来源结论。
|
||||||
|
- 将后续执行输入显式映射到 Phase 2(逻辑)与 Phase 3(视觉)。
|
||||||
|
|
||||||
|
## Deviations from Plan
|
||||||
|
|
||||||
|
None - plan executed exactly as written.
|
||||||
|
|
||||||
|
## Issues Encountered
|
||||||
|
- 无功能性阻塞。仅有一次沙箱写 `.git/index.lock` 限制,提权后已正常提交。
|
||||||
|
|
||||||
|
## User Setup Required
|
||||||
|
|
||||||
|
None - no external service configuration required.
|
||||||
|
|
||||||
|
## Next Phase Readiness
|
||||||
|
- Phase 2 可直接消费 `keep` 与 `hybrid` 的 L0/L1 项。
|
||||||
|
- Phase 3 可直接消费 `replace` 与 `hybrid` 的 L2 项。
|
||||||
|
- 无额外前置阻塞。
|
||||||
|
|
||||||
|
---
|
||||||
|
*Phase: 01-conflict-inventory-and-decision-matrix*
|
||||||
|
*Completed: 2026-04-07*
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
---
|
||||||
|
status: passed
|
||||||
|
phase: 01-conflict-inventory-and-decision-matrix
|
||||||
|
verified: 2026-04-07
|
||||||
|
requirements_verified: [MERGE-01, MERGE-03]
|
||||||
|
---
|
||||||
|
|
||||||
|
# Verification: Phase 01 conflict-inventory-and-decision-matrix
|
||||||
|
|
||||||
|
## Goal Check
|
||||||
|
|
||||||
|
Goal: Build an auditable conflict inventory covering merge-overwritten regions, Titan-overlap regions, and keep/replace candidates.
|
||||||
|
|
||||||
|
Result: PASSED
|
||||||
|
|
||||||
|
## Must-Haves Verification
|
||||||
|
|
||||||
|
1. Truth: 团队可以看到 merge 覆写热点的文件级证据、风险分级与来源提交。
|
||||||
|
Evidence: `audit-evidence.md` + `conflict-inventory.csv`(含 `evidence_refs`)。
|
||||||
|
|
||||||
|
2. Truth: 团队可以看到 Titan 重叠代码路径及 keep/replace/hybrid 决策。
|
||||||
|
Evidence: `titan-decision-matrix.md`(含 decision/rationale/L0-L2)。
|
||||||
|
|
||||||
|
3. Truth: 后续阶段可直接使用输出作为“旧视觉+新逻辑”输入。
|
||||||
|
Evidence: 决策矩阵已显式标注 Phase 2/Phase 3 执行归属。
|
||||||
|
|
||||||
|
## Automated Checks
|
||||||
|
|
||||||
|
- `test -s audit-evidence.md && rg -n "git show -m|git log --all --author='[Tt]itan'|7342cc08|merge"` -> PASS
|
||||||
|
- `test -s conflict-inventory.csv && test -s conflict-inventory.md && header check + P-level check` -> PASS
|
||||||
|
- `test -s titan-decision-matrix.md && rg -n "keep|replace|hybrid|L0|L1|L2|Phase 2|Phase 3|rationale"` -> PASS
|
||||||
|
|
||||||
|
## Requirement Mapping
|
||||||
|
|
||||||
|
- MERGE-01: PASSED(文件级冲突清单 + 风险分级 + 证据链)
|
||||||
|
- MERGE-03: PASSED(Titan overlap 决策矩阵 + keep/replace/hybrid)
|
||||||
|
|
||||||
|
## Gaps
|
||||||
|
|
||||||
|
None.
|
||||||
Loading…
Reference in New Issue