xlibgate

module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 12, 2026 License: MIT

README

xlibgate

xlibgate 是基于 xlib-standard 的门禁与验证运行时仓库,承担五类职责:Standard SourceGo Reference TemplateGeneratorHarnessEvidence Runtime。它把基础库的公共 API、配置、错误、健康检查、metrics、测试、release Evidence、Goal Runtime 和下游生成规则放在同一套可验证工件中维护。

旧名 baselib-template 和示例名 foundationx 只允许出现在迁移文档语境中;新的默认下游集成目标是 kernel,生成库包括 configxobservextestkitxpostgresxredisxkafkaxnatsxtaosxossxclickhousex

标准源仓库 URL 为 xlib-standard。本仓库继承其标准规范,专注于门禁验证和 Evidence 运行时。

五类职责

  • Standard Source:维护基础库 P0 标准、仓库角色、分层、模块边界、DoD、安全、release 和 Evidence 协议。
  • Go Reference Template:提供可编译参考包 pkg/templatex、内部辅助、examples、contracts 和 testkit,用于证明标准可落地。
  • Generator:通过 docs/generation.mdscripts/render_template.sh 渲染具体基础库 module path、package name、README、docs 和 contracts。
  • Harness:通过 Makefile、scripts、CI 和 .agent/harness/harness.yaml 固化 required、extended、docs、boundary、integration、score 和 final gate。
  • Evidence Runtime:通过 docs/standard/evidence-protocol.mddocs/release.md.agentrelease/manifest/latest.json 记录可追溯完成状态。

非目标

  • 不依赖 x.go,也不把 x.go 作为基础库构建前提。
  • 不包含 x.go 业务模型、业务 repository、业务消息 schema 或应用 wiring。
  • 不隐式读取生产密钥,不把 /home/k8s/secrets/env/* 的内容写入源码、README、测试日志、manifest 或 PR 描述。
  • 不创建隐藏全局客户端、不可关闭后台进程或真实基础设施 runtime。
  • 不把旧 baselib-template / foundationx 叙事继续作为主身份。

标准结构

  • pkg/templatex:公共包 API 的可编译参考实现;渲染后会移动到 pkg/<package-name>
  • internal/:脱敏、校验和运行时说明等内部辅助代码。
  • testkit/:可复用测试夹具和断言。
  • examples/:最小使用示例。
  • contracts/:JSON schema 和 metrics contract。
  • docs/:规格、设计、API、配置、测试、标准、迁移和发布文档。
  • scripts/:Harness gate 与 Evidence 脚本。
  • .agent/:Full Goal Runtime v3.1 工件、Evidence、评审、发布、回滚和复盘模板。
  • release/manifest/:release manifest 模板;latest.json 由 release gate 生成并作为 Evidence artifact 保存。

文档入口

命令

本地运行完整 gate 前默认需要安装 golangci-lintmake security 默认只运行 secret scan,不访问漏洞库。只有 XLIB_ENABLE_VULNCHECK=1 且一周窗口到期、状态缺失,或 XLIB_FORCE_VULNCHECK=1 时才执行 govulncheck ./...。状态文件默认 .cache/security/govulncheck-last-run,可用 XLIB_VULNCHECK_INTERVAL_HOURS / XLIB_VULNCHECK_STATE 调整。缺少默认必需工具,或漏洞扫描到期/强制执行时缺少 govulncheck,相关 gate 必须失败,不允许把必需 gate 记录为跳过。

首次 clone 必跑

新协作者 clone 仓库后必须立即执行:

make install-hooks   # 启用 .githooks 本地 P0 防线(RULE-WORKTREE-001 + RULE-SECRET-001)
make doctor-hooks    # 验证 core.hooksPath=.githooks 已生效
make sync-main       # 拉取并 fast-forward 本地 main(RULE-MAIN-SYNC-002)

make install-hooksgit config core.hooksPath 指向仓库内的 .githooks/ 目录。未启用 hooks 时,pre-commitpre-push 不会被 Git 调用,本地 P0 防线(禁止在 main commit、secret 提前拦截)形同虚设。 此外,go run ./cmd/goalcli doctor 会在 details 中报告当前 hooks 启用状态,配合 make doctor-hooks 形成自检闭环。make ci 链首位的 doctor-hooks-local 也会在本地环境强制 fail-fast(CI 环境通过 $CI / $GITHUB_ACTIONS 自动跳过)。

标准 gate
make ci
make ci-extended
GOWORK=off make dependency-check
GOWORK=off make standard-impact-check
GOWORK=off make docs-check
XLIB_CONTEXT=release_verify GOWORK=off make release-check
XLIB_CONTEXT=release_verify GOWORK=off make release-final-check
XLIB_CONTEXT=release_verify GOWORK=off make release-preflight VERSION=v0.4.13
make evidence

release-checkrelease-check-extended 已依赖 dependency-checkstandard-impact-checkdocs-check,用于在生成 Evidence 前确认依赖漂移自动化、标准影响报告、标准文档入口、下游同步策略、链接、模板占位符、当前命名、关键文本和 release manifest 协议没有漂移。dependency-check 读取 renovate.json.github/dependabot.ymlgo.modstandard-impact-check 生成 release/standard-impact/latest.md,并把 downstream_sync_requireddownstream_release_decision(只允许 required / not_required)和 repository_rules_release_decision(只允许 audit_required / not_required)结论交给 release manifest。docs-check 是结构性 gate,不替代人工语义审查。

Release gate 还必须执行 GOWORK=off go run ./cmd/goalcli score --min 9.8。GitHub Actions workflow 引用的第三方 Action 必须固定为 40 位 commit SHA 并保留来源 tag 注释;CI、Release Check、Auto Patch 和 Docker Contract workflow 默认设置 XLIB_ENABLE_VULNCHECK=0,Security workflow 每周一 03:17 UTC 定时强制执行漏洞扫描;启用或定时扫描时必须使用固定基线 golang.org/x/vuln/cmd/govulncheck@v1.1.4,不得用 @latest 作为发布门禁配置。

生成 kernel 示例:

scripts/render_template.sh \
  --module-name kernel \
  --module-path github.com/ZoneCNH/kernel \
  --package-name kernel \
  --out ../kernel

发布式验证必须使用 GOWORK=off,避免父级或本地 go.work 改写 module 解析并掩盖模板独立性问题:

GOWORK=off make docs-check
XLIB_CONTEXT=release_verify GOWORK=off make release-check

Evidence

完成需要 release manifest 和 CI Evidence。release/manifest/latest.json 是生成产物,不提交到源码历史;对应的 release/manifest/latest.json.sha256 也是生成产物,两者都必须保持在 .gitignore 中。manifest 会记录 module、commit、tree SHA、源码摘要、contract 指纹、dependenciestools、生成时间、工作区状态、gate 结果、standard_impactdownstream_sync_requiredgenerator_evidencescoreworkflow 和这两个 Evidence artifact;其中 standard_impact.downstream_release_decision 只能使用 requirednot_requiredstandard_impact.repository_rules_release_decision 只能使用 audit_requirednot_requiredrelease-check 会生成并校验 checksum,CI 会上传两者作为 artifact。make release-evidence-check 会验证 manifest 与当前仓库事实一致,make release-final-check 会额外要求工作区为 clean。Release manifest 测试必须在临时 fixture 仓库中构造所需 .omc state,不得依赖当前工作区的 Agent 运行态文件。最终完成声明必须包含 DONE with evidence:

Full Goal Runtime v3.1 位于 .agent,其中 goal-runtimeobject-modelstate-machinetraceability-matrixharnessevidence-protocolrelease-templateretrospective-templaterisk-registerdecision-logrollback-protocol 和 patch 文档用于把标准、执行、评审、发布和复盘连接到同一套 Evidence 协议。

Smoke 覆盖

go test ./... 必须覆盖公共包、internal/contracts/testkit/examples/。当前示例 smoke 测试会验证 examples/basic 输出模块名、examples/config 输出脱敏值、examples/health 输出健康状态,防止文档示例和模板行为漂移。

scripts/run_fuzz_smoke.sh 默认执行快速 fuzz smoke,FUZZ_SMOKE_TIME 未设置时每个 fuzz target 使用 10s。需要深度 fuzz 时显式设置更长时间,例如 FUZZ_SMOKE_TIME=2m make fuzz-smoke,并在最终 Evidence/DONE 说明中记录该时间配置。

Docker Toolchain Runtime

Docker Toolchain Runtime 是工具链运行时,不是第二套 gate。它定义 .dockerignore / .git build context 边界、BuildKit/cache/volume、环境变量 pass-through(XLIB_CONTEXTGOWORKVERSIONDOWNSTREAMXLIB_ENABLE_VULNCHECK)和下游模板继承规则。

GOWORK=off make docker-toolchain-check
GOWORK=off make docker-ci
XLIB_CONTEXT=release_verify GOWORK=off make docker-release-check

docker-ci 只在容器运行时中调用既有 make cidocker-release-check 只在容器运行时中调用既有 make release-check。发布、Harness、CI 和 downstream verification 仍必须使用 GOWORK=off

Directories

Path Synopsis
cmd
goalcli command
xlibgate command
examples
basic command
config command
health command
internal
common
Package common provides shared utilities used across internal packages.
Package common provides shared utilities used across internal packages.
tools/releasemanifest command
SPDX-License-Identifier: Apache-2.0
SPDX-License-Identifier: Apache-2.0
pkg
templatex
Package templatex provides a minimal base-library template package.
Package templatex provides a minimal base-library template package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL