sqlite-web 0.7.2
gitea.db
package_version
Create
Query
access
access_token
action
action_artifact
action_run
action_run_index
action_run_job
action_runner
action_runner_token
action_schedule
action_schedule_spec
action_task
action_task_output
action_task_step
action_tasks_version
action_variable
app_state
attachment
auth_token
badge
branch
collaboration
comment
commit_status
commit_status_index
commit_status_summary
commit_sync_log
commit_sync_status
dbfs_data
dbfs_meta
deploy_key
email_address
email_hash
external_login_user
follow
gpg_key
gpg_key_import
hook_task
issue
issue_assignees
issue_content_history
issue_dependency
issue_index
issue_label
issue_pin
issue_user
issue_watch
label
language_stat
lfs_lock
lfs_meta_object
login_source
milestone
mirror
notice
notification
oauth2_application
oauth2_authorization_code
oauth2_grant
org_user
package
package_blob
package_blob_upload
package_cleanup_rule
package_file
package_property
package_version
project
project_board
project_issue
protected_branch
protected_tag
public_key
pull_auto_merge
pull_request
push_mirror
reaction
release
renamed_branch
repo_archiver
repo_hidden_file
repo_indexer_status
repo_license
repo_redirect
repo_topic
repo_transfer
repo_unit
repository
review
review_state
secret
session
sqlite_sequence
star
stopwatch
system_setting
task
team
team_invite
team_repo
team_unit
team_user
topic
tracked_time
two_factor
upload
user
user_badge
user_blocking
user_open_id
user_redirect
user_setting
version
watch
webauthn_credential
webhook
Toggle helper tables
Structure
Content
Query
Insert
Drop
Import
Export
Delete row 15 from package_version
id
15
package_id
4
creator_id
5
version
1.0.0-rc.3
lower_version
1.0.0-rc.3
created_unix
1789365045
is_internal
0
metadata_json
{"scope":"@juhai","name":&
{"scope":"@juhai","name":"governance","description":"基础设施层跨仓门禁(设计方案 §9):check:pins(exact pin 消费规则)、check:fixtures(契约正反例夹具)、verify:candidate(候选可晋级核验)、release:manifest(已知事实清单)、CI 模板;零依赖 CLI,供上层仓 exact pin 后在 CI 运行。","license":"UNLICENSED","bin":{"juhai-governance":"bin/cli.mjs"},"readme":"# @juhai/governance — 基础设施跨仓门禁\n\n设计方案 §4.2 / §9 定义的 `governance/` 交付:一组**零依赖**的构建期检查,随基础设施仓同一 Release 版本号发布到 Gitea npm registry(DEC-031),供上层仓 **exact pin** 后在 CI 运行(`check:pins` 为必需检查,DEC-031 附带条款 4)。\n\n## 命令(`juhai-governance \u003ccommand\u003e [--root \u003cdir\u003e]`)\n\n| 命令 | 用途 | 报告 | 退出码 |\n|---|---|---|---|\n| `check:pins [--require \u003cpkg\u003e]…` | `@juhai/*` 依赖只允许 `x.y.z` 或 `workspace:*`;`--require` 要求该包至少一处 exact pin(证明消费者已接入) | 无(stdout) | 1 = 有违规 |\n| `check:port-conformance` | 基础设施仓内独立端口测试:先构建 contracts/modules/clients,再跑 `runtime/test/port`;必须完整通过内核 14、模块 6、客户端 21 例,拒绝跳过与空跑 | `reports/port-conformance.latest.json` | 1 = 构建/测试/覆盖核验失败 |\n| `check:fixtures --suite \u003csuite.json\u003e… [--allow-unavailable-suite \u003cid\u003e]…` | 契约正反例夹具:校验套件配置后,ACCEPT 须零原因、REJECT 须有原因且含声明前缀;缺工作区默认失败,显式允许且有其他用例执行才可 partial | `reports/fixtures.latest.json` | 1 = 配置错误、空跑、不可用或用例不符 |\n| `verify:candidate --candidate \u003cdir\u003e --sha \u003csha\u003e …` | 候选可晋级核验(Q12-C / X12):逐份 required 报告核 sourceSha / dirty / 状态 / 地板 / digest,缺失即不合格 | `\u003cdir\u003e/release-candidate.json` 或 `--out` | 1 = 不合格 |\n| `release:manifest` | 已知事实清单,**逐项按磁盘判定**:`governance/package.json`、`runtime/clients/\u003cm\u003e/package.json`(name 须为 `@juhai/client-\u003cm\u003e`)、`reports/image-digest.json`(`sha256:` 且 `sourceSha` = HEAD)、compose 镜像是否 `@sha256:` 锁定、`reports/sbom.spdx.json`、`reports/signature.json`;任一缺失即 `status=partial` 并写明缺什么,不判定晋级 | `reports/release-manifest.latest.json` | 0 |\n| `ci:template [--out \u003cfile\u003e]` | 输出消费者最小 CI 模板(私包认证 + contracts/governance 必需 exact pin + 必需夹具) | — | 0 |\n| `check:modules` / `check:module-imports` / `check:catalog` / `catalog:drift` | 基础设施仓内部门禁(依赖 `runtime/modules.json` 与 `contracts/catalogs`) | `reports/*.latest.json` | 1 = 违规(drift 默认 0) |\n| `check:migration-decs` | 仓纪律 3:`runtime/modules/*/prisma/migrations` 与 `identity/apps/*/prisma/migrations` 的 `migration.sql` 前 10 行须有 `-- decision: DEC-NNN` 且该 DEC 已批准;`state=shape` 模块不得有迁移;例外只能逐个迁移登记在 `migration-decs.exceptions.json`(条件失效判 `EXCEPTION_STALE`) | `reports/migration-decs.latest.json` | 1 = 违规 |\n| `check:facts [--candidates \u003cdir\u003e] [--report-only]` | §6.4:`modules.json` 声明的 Fact ⊆ `contracts/catalogs/facts.json` ∪ CHG-004 候选(候选须 `status: pending-dec` + `blocked_by`);候选目录不可用时报 `UNRESOLVED`(fail-closed)。**接入根 `pnpm check` 前置 CT-2 材料落地** | `reports/facts.latest.json` | 1 = 违规 / unresolved |\n| `check:caddy` | §5 / §7:`modules.json` 的 HTTP 契约经 `caddy-routes.json` 映射前缀后必须被 `stack/caddy/Caddyfile` 的 path 匹配器覆盖;`/healthz`、`X-Request-Id` 注入、`{$PLATFORM_API_UPSTREAM}` 必备;本机有 `caddy` 则 `caddy validate`,否则报告 `validate: skipped`(`CHECK_CADDY_DOCKER=1` 走 docker) | `reports/caddy.latest.json` | 1 = 违规 / 语法失败 |\n\n所有报告带 `provenance`(`gitSha` / `worktreeDirty` / `runner` 原值 / `runnerNormalized` / `runId`);`worktreeDirty` 忽略 latest 报告本身。\n\nG-7 的 `port-conformance` job 保留同仓 PR 的私包认证约束,不访问数据库。每次执行使用新的临时 Vitest JSON;构建失败、测试失败或没有新报告时覆盖旧成功状态为 failed。三组逐文件地板在 `lib/port-conformance.mjs`,新增套件须同步更新覆盖清单。candidate 依赖该 job 成功,且十一份 required 报告中必须含同源码、干净工作树的端口报告;旧十份报告不能用于新版本候选。发布门禁沿用相同的源码必需报告策略。此门禁证明端口一致性,不提升模块 shape 状态。\n\n`verify:candidate` 在候选源码工作树的根目录运行:从 `runtime/reports/baseline.json` 与 `identity/reports/baseline.json` 读取最低测试数量,不能用 artifact 自报的较低地板代替。报告须为对象,验收计数与地板须为正整数,治理报告须含固定必需指标且为零;缺失、`null`、数组、标量和显式 `PARTIAL` 状态均不合格。旧治理报告没有 `status` 字段时仍按必需指标核验。指定 `--run-id` 或运行于 GitHub Actions 时要求每份报告为 CI runner;本地诊断保留 local 来源,不代表远端验收。独立调用纯函数 `evaluateCandidate` 时须显式传入 `{ baselines, requireCi, mainlineRequired }`;CLI 自动读取源码基线和 `runtime/modules.json`。\n\n### 持久化主线候选证据\n\n候选源码中的 fact / permission / audit 任一模块进入 `authority` 或 `e2` 后,必需报告从 11 份增加为 13 份,增加 `mainline-acceptance` 和 `revocation-sla`。模块登记缺失、损坏或状态非法时拒绝候选;不能由 artifact 自报关闭此要求。RC 发布入口读取相同源码策略,不接受只含旧 11 份报告的候选。\n\n主线报告须完整包含事实持久化 11、审计篡改 5、主线/撤权/混沌 11 项;各套件唯一,退出成功,无失败、pending 或 todo。撤权报告至少 20 个正数样本,按样本重算 p95/max 并比对摘要,要求 p95 \u003c 30 秒、max \u003c 60 秒。Grant 撤销通过而就业 Scope 仍待实现时,报告必须显式保持 `partial` 和未验证说明,候选结果保留这项覆盖边界;这不表示 MS-3、真实 HR/OS 接入或生产签收完成。\n\nruntime artifact 兼容旧单目录扁平上传,以及新增仓根报告后的目录结构。只在本次下载目录内读取固定的两种路径,不回退到仓内历史报告;同时发现两份时拒绝。源登记或目录读取失败也覆盖写入不合格候选,防止遗留成功报告。\n\n## 镜像、SBOM 与签名(开发计划 §3A D-1 / D-2;仓根脚本)\n\n| 脚本 | 作用 | 产物 |\n|---|---|---|\n| `pnpm image:build`(`governance/build-image.mjs`) | 用 `runtime/Dockerfile` 构建运行时镜像;默认 `--context head`(`git archive HEAD:runtime`,本机 WIP 不进镜像);私有 registry token 只经 `--secret id=npmrc,src=\u003cnpmrc\u003e`(默认 `~/.npmrc`,`--npmrc` 可指定)进入安装层,不进镜像、不打印 | `reports/image-digest.json`:`digest` = 本机 `--load` 的 image id(`digestKind` 说明;推送后换 registry manifest digest)、`sourceSha` / `worktreeDirty` / `dockerfileTracked` / 平台 / 大小 / 基础镜像 |\n| `pnpm image:sbom`(`governance/sbom.mjs`) | `syft` 或 `docker sbom` 生成完整 SPDX(OS + Node);两者都缺时退到 **lockfile 模式**:从镜像里 deploy 树的 pnpm lock 与工作区包生成只含 Node 依赖的 SPDX 2.3(`sbom.latest.json.scope` 标 partial,Debian 包不在内;完整 SBOM 由 CI image job 的 syft 产出);镜像不可用则退出 3 不写空文件 | `reports/sbom.spdx.json` + 元数据 `reports/sbom.latest.json`(tool / scope / sha256 / 包数) |\n| `pnpm image:sign`(`governance/sign-image.mjs`) | `cosign sign --key $COSIGN_KEY \u003cregistry ref@digest\u003e`;未推送 / 无密钥 / 无 cosign 时明确跳过、退出 0 | `reports/signature.json`(缺失即 Manifest `missing: signature`) |\n\n`release:manifest` 逐项按磁盘判定这三份产物;CI 的 `image` job 在 Secret 配置后产出同名 artifact(不推 registry)。\n\n## 环境晋级记录(开发计划 PF-23;DEC-024 A / DEC-026;仓根脚本)\n\n| 脚本 | 作用 | 产物 |\n|---|---|---|\n| `pnpm promotion:check -- --record \u003crecord.json\u003e [--manifest …] [--template …]`(`governance/check-promotion.mjs`) | 核验一份晋级记录:R1 形状(`stack/promotion/promotion-record.schema.json`)、R2 级序 dev→test→staging→prod(preview←candidate)、R3 同 digest(记录 = 候选 = Manifest 文件 `images.runtime.digest`,prod 禁止 rebuild 由此机器化)、R4 级别门槛(staging:eligible + SBOM + 签名或未过期 waiver;prod:Manifest complete + 签名 + 签收全闭)、R5 必需检查项、R6 审批角色、R7 回滚演练 ≤ 600 s、R8 preview 上限、R9 签收项在模板内 | `reports/promotion.latest.json`(`verdict` APPROVED / APPROVED_WITH_PENDING_SIGNOFFS / REJECTED;REJECTED 退出 1) |\n\n记录模板 `stack/promotion/promotion-record.template.json`,签收模板 `stack/promotion/target-env-signoff.template.json`(P1—P9,取自 OS `target-env-signoff.json`);步骤见 [staging 晋级操作说明](../docs/staging晋级操作说明.md)。纯函数 `evaluatePromotion(record, { schema, manifest, template, today })` 可独立调用(`governance/test/promotion.test.mjs` 18 例)。\n\n## 消费方接入\n\n```bash\npnpm add -D @juhai/governance@1.0.0-rc.1 # exact pin;.npmrc 配 @juhai 作用域到 Gitea registry\npnpm exec juhai-governance ci:template --out .github/workflows/platform-governance.yml\npnpm exec juhai-governance check:pins --require @juhai/contracts --require @juhai/governance\npnpm exec juhai-governance check:fixtures --suite governance/fixtures/contracts.suite.json\n```\n\n夹���套件格式见 `check-fixtures.mjs` 头注;示例 `fixtures/contracts.suite.json`(正例取 `@juhai/contracts` 的 examples,反例故意破坏必填 / 类型 / 血缘字段)。消费者须在自己仓内建立 `governance/fixtures/contracts.suite.json`,按实际安装位置调整 schema / inputFile 路径;模板不再跳过缺失文件。\n\n套件必须有非空且不重复的 id / case id、合法 expect、已声明 schema,以及 input / inputFile 二选一。空套件、缺失 schema、损坏的本地引用、文件读取/解析/模块加载错误会生成 failed 报告并退出 1,覆盖旧的成功报告;规则必须显式返回原因数组,DEC-039 适配器的失败结论不能被重新判为成功。JSON Schema 校验仍是头注声明的子集,不代表完整元 Schema 校验或支持所有关键字。\n\n根 `pnpm check:fixtures` 先构建运行时模块,再显式带 `--allow-unavailable-suite dec-039-party-model`,仅容许独立克隆缺少企业应用工作区时跳过 DEC-039 外部套件,报告 status=partial、保留 unavailable 计数;contracts 与六个模块套件仍必须执行,缺失模块构建产物不会被该豁免放过。全部套件不可用、配置错误和真实用例失败仍阻断。消费者模板使用默认严格模式。`--allow-unavailable` 保留为显式允许所有不可用套件的诊断开关,不用于本仓根门禁。以上增强为仓内新源码,已发布的 `1.0.0-rc.0` 保持不变,本仓已准备 `1.0.0-rc.1`,实际发布及 Registry 安装状态见发布记录。\n\n## 本仓内\n\n`pnpm check`(仓根)已串联:`check:pins` → `check:modules` → `check:module-imports` → `check:catalog` → `catalog:drift` → `check:fixtures` → `check:facts` → `check:migration-decs` → `check:caddy` → governance 测试 → contracts → runtime 静态门禁。`pnpm check:port-conformance` 独立运行真实端口测试,CI 单独生产证据。`.github/CODEOWNERS` 仍为角色占位,不能把覆盖测试通过解释为真实团队审批已生效。发布走 DEC-031 的固定源码 RC 通道;已发布版本不覆盖,新包代码须使用后续新 RC 版本。\n","repository":{"type":"","url":""}}
...
download_count
1
Delete
Cancel