Resume
Resume 是一个 Astro 静态简历站点:本地完整构建用于打印与视觉检查,publish artifact 提供 value-free loading shell,再由 Edge Function 在访问验证后返回结构化简历内容与 PDF 能力(README.md、astro.config.mjs、src/data/resume.ts)。
- Astro site
- TypeScript web
- Playwright e2e
- Manual version release delivery
- SemVer change governance
- Quality gates
- Release failure notification
- EdgeOne Makers static-site deploy
目录
技术栈
运行与交付
- CI 工作流
- ci.yml
- deploy.yml
- e2e-full.yml
- manual-release.yml
- notify-release-failure.yml
- release-completion.yml
- release.yml
- 能力标记
- github_actions
- package_json
- pnpm_lock
依赖与工具
- package.json
- 开发依赖
- @astrojs/check
- @biomejs/biome
- @playwright/test
- @types/node
- 生产依赖
- @lucide/astro
- astro
- 项目脚本
- audit:assets
- audit:pdf-runtime
- audit:privacy
- build
配置与质量
- 配置文件
- .env.example
- .gitignore
- biome.json
- package.json
- pnpm-lock.yaml
- skills-lock.json
- tsconfig.json
{
"ci_workflows": [
"ci.yml",
"deploy.yml",
"e2e-full.yml",
"manual-release.yml",
"notify-release-failure.yml",
"release-completion.yml",
"release.yml"
],
"configs_root": [
".env.example",
".gitignore",
"biome.json",
"package.json",
"pnpm-lock.yaml",
"skills-lock.json",
"tsconfig.json"
],
"markers_present": [
"github_actions",
"package_json",
"pnpm_lock"
],
"package_json": {
"deps_dev": [
"@astrojs/check",
"@biomejs/biome",
"@playwright/test",
"@types/node",
"@types/pngjs",
"@types/subset-font",
"edgeone",
"esbuild",
"parse5",
"pixelmatch",
"pngjs",
"subset-font",
"tsx",
"typescript",
"vitest"
],
"deps_prod": [
"@lucide/astro",
"astro"
],
"scripts": [
"audit:assets",
"audit:pdf-runtime",
"audit:privacy",
"build",
"build:discovery-test",
"build:landing-preview",
"build:publish",
"check",
"dev",
"lint",
"preview",
"preview:landing",
"test",
"test:a4",
"test:content",
"test:dom",
"test:e2e",
"test:e2e:all",
"test:e2e:discovery",
"test:e2e:tuner"
]
}
}Purpose
Resume 是一个 Astro 静态简历站点:本地完整构建用于打印与视觉检查,publish artifact 提供 value-free loading shell,再由 Edge Function 在访问验证后返回结构化简历内容与 PDF 能力(README.md、astro.config.mjs、src/data/resume.ts)。本 snapshot 记录 checked-in 项目合同和可复用交付模式,不宣称已完成真实 production Release。
Taxonomy
- Tags: Astro site, TypeScript web, Playwright e2e, Manual version release delivery, SemVer change governance, Quality gates, Release failure notification, EdgeOne Makers static-site deploy
- Why / evidence:
astro.config.mjs、package.json、playwright.config.ts、.github/quality-gates.json、.github/release-contract.json与.github/workflows/分别支撑站点、TypeScript/浏览器验证、质量门禁、手动版本交付、失败通知和 EdgeOne artifact 交付边界。
Repository map
src/保存 Astro 页面、组件、resume data、runtime renderer 与样式;edge-functions/保存受保护内容接口;public/保存静态资产;tests/保存 Vitest、发布合同和 Playwright 测试。scripts/提供 publish build、PDF 生成/验证、隐私与资产审计;docs/specs/、docs/solutions/与docs/adr/保存设计合同、实现记录和决策。.github/release-contract.json定义版本 grammar、identity refs、manual release 输入、artifact publication 与 recovery;.github/workflows/manual-release.yml、release-completion.yml、release.yml、deploy.yml和notify-release-failure.yml分开准备、门禁、Release、Deploy 与通知阶段。
Runtime and delivery
本地开发使用 pnpm install 与 pnpm dev;完整站点可用 pnpm build,发布构建使用 pnpm build:publish,需要的联系字段通过 .env.example 约束。发布流程以 .github/release-contract.json 为合同,采用 workflow_dispatch、append-only reservation、VERSION-only verified preparation、exact-head merge 和显式 Release/Deploy handoff;这些是 checked-in workflow 设计,不是本 snapshot 对远端执行结果的声明。
Architecture notes
站点把页面内容维护在 src/data/resume.ts,由 Astro components 与 src/styles/resume.css 渲染;发布面先构建无内容的 shell,访问验证后由 edge-functions/api/resume.js 返回结构化 JSON,浏览器再通过 src/runtime/resume-renderer.js 展示内容(README.md)。
手动 release 的 identity 边界由 .github/release-contract.json、.github/scripts/release_chain.py 与 .github/workflows/manual-release.yml 共同实现。owner 未给出 exact version 时,ADR 规定 Agent 从当前 candidate 的 repository-local、base/source-bound、verified impact 选择同名 symbolic patch、minor 或 major;exact final/prerelease 仅来自 owner 的 exact input;历史、外部或 unresolved evidence 必须 fail closed(docs/adr/0015-agent-release-target-selection.md、.github/scripts/test-release-contract.py)。
Workflow and quality gates
.github/workflows/ci.yml 的 verify job 运行 lint、release contract、PDF、content、DOM、font、print、A4、E2E、publish、asset、privacy 和 runtime checks;package.json 记录对应的本地命令。.github/quality-gates.json 将 verify 声明为 required check,并把 branch protection 状态列为 owner-side repository-plan boundary。
.github/scripts/test-release-contract.py 覆盖 symbolic impact mapping、exact owner version、缺失或过期 candidate binding、外部/其他 checkout record、scope/classification 不一致与非法 evidence 的 fail-closed 行为。.github/workflows/notify-release-failure.yml 与 .github/release-failure-notification.json 只表达失败上下文与通知合同;本 snapshot 未验证任何真实通知、Release 或 Deploy run。
Reusable decisions
- 将 SemVer impact classification 与 manual release target selection 分成两个边界:SemVer policy 只产出 verified
patch/minor/major,manual consumer 决定是否把它作为 symbolic workflow input。 - 将供 normal progression 消费的 impact record 保存在当前 repository,并绑定 candidate
base_sha与source_sha;历史 record、缺少 binding、scope drift 或 classification unresolved 时不使用 fallback。 - 将 owner-specified exact final/prerelease 与 symbolic progression 分成不同输入路径,并在 preparation provenance 中保留 target source。
- 将 preparation、Release、Deploy、same-SHA recovery 和 failure notification 作为独立阶段,以 immutable identity 与单一 artifact 维持可审计边界。
Risks and open questions
- 目标提交
3328a8d7ffe9cba2d7a5bc3b5114c3aaeef9f4a1中的docs/release/version-impact.json是一个 feature impact record,但不含当前候选的candidatebinding;resolver 将这种历史/未绑定 record 拒绝为 normal progression 输入,后续候选必须生成新的本地绑定记录。 - 可访问证据证明了 checked-in contract、resolver 和 tests,但没有证明真实 production GitHub Release、EdgeOne deployment、tag consumption 或 failure notification 已完成;本 snapshot 保持
mediumconfidence。 .github/quality-gates.json记录了当前 private repository plan 下 GitHub required-check enforcement 的 owner-side 限制;是否改变仓库计划或可见性不属于本次 Playbook 写入范围。
Evidence index
README.mdpackage.jsonastro.config.mjsplaywright.config.tssrc/data/resume.tssrc/runtime/resume-renderer.jsedge-functions/api/resume.js.github/quality-gates.json.github/release-contract.json.github/release-failure-notification.json.github/scripts/release_chain.py.github/scripts/test-release-contract.py.github/workflows/ci.yml.github/workflows/manual-release.yml.github/workflows/release-completion.yml.github/workflows/release.yml.github/workflows/deploy.yml.github/workflows/notify-release-failure.yml.agents/skills/semver-change-governance/SKILL.md.agents/skills/semver-change-governance/assets/templates/version-impact-record.example.jsondocs/adr/0015-agent-release-target-selection.mddocs/release/version-impact.json
相关内容
Astro site
主题Astro site 用于标记把 Astro 作为 public/static site 交付面的项目。它不等同于“整个仓库都是 Astro 应用”:在当前代表项目里,Astro 负责面向读者的 public content rendering 和 static export,而 admin SPA、gateway、API 或 legacy runtime 由其他边界承担。关键证据通常包括 astro.config.
Manual version release delivery
主题Manual version release delivery 是一种可复用的发布交付合同:维护者显式选择或确认一次 release target,系统再用可插拔的 Version Policy 校验版本、绑定 source identity、完成 reservation、经过 PR 与质量门禁、创建显式 Release,并让部署与 recovery 复用该 identity 下对应的不可变产物。
SemVer change governance
主题SemVer change governance 是一套可选的 house policy,用于在 owner 明确要求时分类一个 compatibility scope 对 public API 与 persistent state 合同的版本影响。