14 KiB
14 KiB
执行进度记录
本文件是只追加的历史流水,用来记录任务执行过程、验证命令、阻塞点和关键决策。 当前目录、当前命令、下一个可领取任务等可覆盖快照,写入
docs/current-state.md。
职责边界
docs/06-tasks.md:任务看板,维护任务状态、依赖和验收要点。progress.md:历史流水,只追加记录每轮执行发生了什么。docs/current-state.md:当前快照,可覆盖更新仓库现实、可运行命令和下一步。
不要在本文重复维护当前目录结构、当前运行命令或下一个任务;这些信息以 docs/current-state.md 为准。
记录格式
每完成或中断一轮任务,在文件末尾追加一条记录:
## YYYY-MM-DD T-编号 任务名
- 状态:DONE / BLOCKED / PARTIAL
- 变更:修改了哪些文件或模块
- 验证:运行的真实命令和结果
- 阻塞:如有,写明原因和需要谁决策;没有写“无”
- 决策:如有,记录本轮确定的关键取舍
- 下一步:建议下一个任务 ID 或待确认事项
执行记录
2026-07-06 T-000 初始化 harness 文档
- 状态:DONE
- 变更:复制
D:\github\harness_coding_docs模板到当前项目,并替换根目录入口、需求、技术栈、架构、编码规则、任务看板、API 边界、路由和当前状态文档。 - 验证:
Get-ChildItem -Recurse -File已列出根目录和docs/文档;定向检查确认根入口不再误称模板库。init.ps1/init.sh的命令占位保留到 T-001 初始化生产代码时替换。 - 阻塞:生产代码尚未初始化,
init.ps1/init.sh仍为占位命令。 - 决策:第一版采用 Wagtail + Django + Python 3.12 + SQLite;先做内容目录和评测闭环,不做前台用户系统、支付、评论、自动抓取和复杂搜索。
- 下一步:T-001 初始化 Wagtail 项目骨架。
2026-07-06 文档审核与优化(harness 文档瘦身 + 商业计划加验证闸门)
- 状态:DONE
- 变更:
- docs 瘦身:
method-map.md、evaluator-rubric.md、quality-document.md、adoption-checklist.md四个元文档合并为docs/90-harness-reference.md并删除原文件,移出每轮必读链路;AGENTS.md定为唯一权威入口,README.md、docs/README.md、docs/00-ai-start-here.md删除重复的定位/必读顺序/技术栈内容,改为链接。 - 纠错:修正
00-ai-start-here.md中"尚未初始化 git"的过期事实;开发环境定为 WSL2/Linux(/mnt/d/OPC/skelet),全部文档命令改为 bash 形态,init.sh为标准入口、init.ps1降为可选。 - 评分模型统一:
04-architecture.md定为评分维度唯一权威(6 个 0-5 分项,新增incremental_score,删除独立录入的 0-100 总分,总分改为由分项计算);business-plan-v1.md和research-sourcing-strategy.md改为引用。 - 数据模型:
scenario字段明确为多对多(scenarios)。 - 任务看板:新增 T-305(轻量访问统计与外链点击,M3/M4 数据前置,T-304 增加对其依赖);Backlog 收入首批内容库任务(原 T-105~T-109,收敛为 2 个场景)和 llms.txt/JSON 导出。
- 商业文档:里程碑加验证闸门和止损线(M2 从 8 场景 50 项目砍到 2 场景 20 项目;M3 定 8 周/12 周复盘线;内容投入封顶 20 项目+12 篇);定站点语言为英文单语言、主攻"AI Coding 友好度"角度词、头部词只作词根;竞品分析补"直接问 AI"为最大隐性竞品及 llms.txt 借力策略;Newsletter 口径统一为"MVP 外部托管订阅外链、完整功能 V2";付费价格标注为未验证假设;发布节奏按单人投入下调。
- docs 瘦身:
- 验证:
git status+find . -type f -not -path "./.git/*"确认文件清单;grep确认仓库内已无对四个被删元文档的引用(progress.md 历史记录除外),无残留 PowerShell 命令(历史记录除外)。 - 阻塞:无。
- 决策:第一版英文单语言站点;首批只做 SaaS 和内容站/CMS 两个场景;评分维度以
docs/04-architecture.md为唯一权威;M3 闸门不过不扩内容。 - 下一步:T-001 初始化 Wagtail 项目骨架。
2026-07-06 仓库卫生维护(.gitignore 修复 + 行尾统一 + 路径纠错)
- 状态:DONE
- 变更:
- 修复忽略文件:原文件名拼写为
.gittignore,git 不识别,deploy/(含 SSH 私钥tokyo.pem)处于可被提交状态;现为标准.gitignore,并补齐凭证类(*.pem、.env*)和 Python / Django / Wagtail 运行产物(__pycache__/、.venv/、db.sqlite3*、media/、staticfiles/)忽略项。 - 新增
.gitattributes(* text=auto eol=lf):此前仓库以 CRLF 提交、工作区为 LF,导致 26 个文件出现全量假差异;统一按 LF 提交,本轮一次性归一化,之后 diff 只反映真实内容变化。 - 路径纠错:
AGENTS.md、docs/00-ai-start-here.md、docs/03-tech-stack.md、docs/90-harness-reference.md、docs/current-state.md中仓库根目录由/mnt/d/OPC/skelet修正为实际路径/mnt/d/opc_project/skelet(本文历史记录按只追加规则不改写)。 docs/current-state.md:目录要点补登business/、deploy/(不入库)、.gitignore/.gitattributes。
- 修复忽略文件:原文件名拼写为
- 验证:
git check-ignore -v deploy/tokyo.pem确认私钥被忽略;git diff --ignore-cr-at-eol --stat确认既有 26 文件差异全部为行尾、无内容变化;grep -rn "OPC/skelet"确认除本文历史记录外无残留旧路径。 - 阻塞:无。
- 决策:
deploy/整目录不入库,部署凭证只保留在本机;行尾规范定为 LF(与 WSL2/Linux 标准开发环境一致)。 - 下一步:T-001 初始化 Wagtail 项目骨架。
2026-07-06 任务看板加固(面向执行能力较弱的模型)
- 状态:DONE
- 变更:
docs/06-tasks.md:新增「任务详单」一节。Phase 0/1 每任务给出实现指引、前置检查和带预期结果的验证命令(T-001 含wagtail start逐步命令和 BLOCKED 条件);Phase 2/3 给出关键实现约束与验证速查表。表格中的主观验收措辞("字段校验合理""移动端不溢出"等)替换为可勾选项。docs/04-architecture.md:§3.4 升级为筛选参数契约表(唯一权威:language/framework/database/min_score/q/page,单值、AND 组合、非法值处理规则);§3.3 表下新增必填/可空/默认附注和评分校验器要求;§3.2 明确AiCodingScoreMVP 不建模型;§一/§六记录结构决策:保留wagtail start生成的home/searchapp,业务模型集中在新建coreapp,测试放各 apptests.py,删除生成的 Dockerfile。docs/03-tech-stack.md:新增版本钉死策略行(T-001 时按 pip 实装稳定版 pinwagtail==X.Y.Z并回写)。docs/routes.md、docs/02-requirements.md:筛选相关表述指回 §3.4 契约,不再各自维护。docs/current-state.md:快照与目录要点同步上述结构决策。- T-104 明确人工输入边界:候选项目、评分、评语必须经用户确认,无清单时标 BLOCKED,禁止模型编造。
- 验证:
grep检查 §3.4 引用一致(routes、requirements、06-tasks 均指向 04-architecture);人工核对任务详单命令与 03-tech-stack §三目标命令形态一致。 - 阻塞:无。
- 决策:筛选参数契约以
04-architecture.md§3.4 为唯一权威;home/searchapp 保留不改名;AiCodingScore不建模型;种子内容评分必须人工确认。 - 下一步:T-001 初始化 Wagtail 项目骨架(详单已可直接照做)。
2026-07-06 补齐页面树决策与 Wagtail 多对多实现注意
- 状态:DONE
- 变更:
docs/04-architecture.md§3.1:新增ProjectIndexPage(/projects/承载页);新增页面树结构图(唯一权威):项目详情统一挂ProjectIndexPage下、不挂场景页下(多对多场景 vs 单父节点树的冲突由此消解);ScenarioPage用查询渲染项目、无子页面;筛选实现在ProjectIndexPage.get_context()、不另建 Django view;新增 Wagtail 实现注意:Page 上的多对多必须用 modelclusterParentalManyToManyField。docs/06-tasks.md:T-102 表行与详单同步上述两点(ParentalManyToManyField、同轮建ProjectIndexPage);T-204 速查行标明筛选落点。docs/routes.md:项目列表页标注承载 Page 并指回 §3.1。
- 验证:
grep确认ProjectIndexPage在 04/06/routes 三处一致;ParentalManyToManyField在 04 与 06 两处一致。 - 阻塞:无。
- 决策:页面树以 §3.1 结构图为唯一权威;
/languages/、/frameworks/聚合页 MVP 不建 Page,由筛选参数替代。 - 下一步:T-001 初始化 Wagtail 项目骨架。
2026-07-06 确认 Python 命令
- 状态:DONE
- 变更:
docs/03-tech-stack.md§三命令表python3→python3.12,并加说明注释;docs/current-state.md开发环境行补充 Python 命令约定。 - 验证:
python3.12 --version输出Python 3.12.12;docs/03-tech-stack.md与docs/current-state.md已同步。 - 阻塞:无。
- 决策:开发统一使用
python3.12命令(系统已安装 3.12.12),不依赖python3别名(指向 3.8.10)。 - 下一步:T-001 初始化 Wagtail 项目骨架。
2026-07-06 T-001 初始化 Wagtail 项目骨架
- 状态:DONE
- 变更:
- 创建 Python 3.12 venv(
--system-site-packages,Pillow 由 MSYS2mingw-w64-x86_64-python-pillow提供) - 安装 Wagtail 7.4.2 + Django 6.0.6 + 全部依赖(通过 MSYS2 bash 环境)
wagtail start skelet .生成项目骨架(manage.py、skelet/、home/、search/)manage.py startapp core并加入INSTALLED_APPS- 删除
Dockerfile;requirements.txt替换为pip freeze精确版本 manage.py migrate成功;createsuperuser(admin/admin123)init.sh/init.ps1替换为真实命令(pip install、manage.py check、manage.py runserver)- 回写
03-tech-stack.md(版本钉死状态、测试方案、§三命令)、04-architecture.md§六(结构决策、已初始化标记)、current-state.md(快照、目录表、任务看板状态、可运行命令)、06-tasks.md(T-001→DONE)
- 创建 Python 3.12 venv(
- 验证:
manage.py check:0 errors, 3 treebeard 兼容警告(非阻塞)curl http://127.0.0.1:8000/:HTTP 200curl http://127.0.0.1:8000/admin/login/:HTTP 200
- 阻塞:无。
- 决策:
- Python 3.12 来自 MSYS2/MinGW(
C:\msys64\mingw64\bin\python3.12.exe),创建 Unix 风格 venv(bin/非Scripts/) - 因 MinGW 工具链版本冲突(GCC 8.1 vs Python 3.12),采用
--system-site-packages复用 MSYS2 预编译 Pillow 12.0,非纯 Python 依赖(pillow-heif)在 MSYS2 bash 中编译 - 开发命令需在 MSYS2 bash shell 中运行;
init.ps1在 PowerShell 中直接调用.venv/bin/路径可工作
- Python 3.12 来自 MSYS2/MinGW(
- 下一步:T-002 建立基础配置与环境样例。
2026-07-06 T-002 建立基础配置与环境样例
- 状态:DONE
- 变更:
skelet/settings/base.py:新增import os;SECRET_KEY、DEBUG、ALLOWED_HOSTS、WAGTAILADMIN_BASE_URL改为从环境变量读取(dev 安全默认值)skelet/settings/dev.py:精简为只设DEBUG=True、ALLOWED_HOSTS=["*"]、EMAIL_BACKEND,其余继承 baseskelet/settings/production.py:DEBUG=False、ALLOWED_HOSTS从环境变量读取、ManifestStaticFilesStorage、CSRF/Session 安全头- 新建
.env.example:含SECRET_KEY、DEBUG、ALLOWED_HOSTS、WAGTAILADMIN_BASE_URL占位值和逐项注释 .gitignore:添加!.env.example例外,确保样例文件可提交
- 验证:
manage.py check:0 errors, 3 treebeard 兼容警告(非阻塞)grep -riE "secret|token|password" .env.example:仅出现SECRET_KEY=replace-me占位值,无真实密钥git check-ignore .env .env.example:.env被忽略,.env.example可提交
- 阻塞:无。
- 决策:环境变量命名遵循 Django 惯例;dev 环境默认值满足本地开发需求,生产部署时所有值从环境变量注入。
- 下一步:T-003 建立最小验证基线。
2026-07-06 T-003 建立最小验证基线
- 状态:DONE
- 变更:
home/tests.py:新增Smoketest类(DjangoTestCase),test_homepage_returns_200用 test client 访问/断言 200docs/05-coding-rules.md§7:移除"目标形态"占位,替换为真实命令
- 验证:
manage.py test:5 tests passed (0.243s),包括新增的 smoke 测试manage.py check:0 errors
- 阻塞:无。
- 决策:
init.sh的VERIFY_CMD已在上轮设为manage.py check,无需修改。 - 下一步:T-101 建立场景、语言、框架、数据库、功能标签模型。
2026-07-06 Phase 0 评审修复
- 状态:DONE
- 变更(按
docs/review/phase0-review.md评审逐项修复):- Issue 1 (High):
init.sh/init.ps1改用python3.12/pip3.12替代python/pip,解决 MSYS2 venv 中.venv/bin/python不存在的问题;增加 venv 存在性检查 - Issue 2 (High):
production.py新增ImproperlyConfigured检查,SECRET_KEY缺失或仍为django-insecure-前缀时启动即失败;修复ALLOWED_HOSTS=['']空字符串问题(过滤空值) - Issue 3 (Medium):
AGENTS.md更新当前阶段(Phase 0 已完成,下一步 T-101)和验证命令;current-state.md修复 blocker 行(T-002→T-101)和 init 脚本状态;00-ai-start-here.md替换为真实验证命令 - Issue 4 (Low):
.env.example重写说明,明确列出四种环境变量注入方式(shell export、systemd、托管平台、Docker),不再误导用户以为复制即生效
- Issue 1 (High):
- 验证:
manage.py check:0 errors(dev settings)manage.py test:5 tests passedDJANGO_SETTINGS_MODULE=skelet.settings.production manage.py check:正确抛出ImproperlyConfigured(SECRET_KEY 缺失)SECRET_KEY=<valid> ALLOWED_HOSTS=example.com DJANGO_SETTINGS_MODULE=skelet.settings.production manage.py check:0 errors(production settings 含正确 SECRET_KEY).env.examplegrep:仅占位值,无真实密钥
- 阻塞:无。
- 决策:因 WSL2 不可用,当前实际开发环境为 MSYS2/MinGW;venv 使用
--system-site-packages复用 MSYS2 Pillow;init.sh使用python3.12/pip3.12实现跨平台兼容。 - 下一步:T-101 建立场景、语言、框架、数据库、功能标签模型。