|
48011
|
27153
|
76
|
5
|
392edae1d66f6c69758745969e4b6d191b57f69e
|
0
|
Platform consumer gate
|
1
|
name: Platform governance (consumer)
"on": name: Platform governance (consumer)
"on":
pull_request:
push:
branches: [main]
jobs:
required:
name: Platform consumer gate
runs-on: ubuntu-latest
if: always()
steps:
- name: Require completed pins and fixture checks
run: test "$PINS_RESULT" = success
env:
PINS_RESULT: ${{ needs.pins.result }}
timeout-minutes: "2"
permissions:
contents: read
...
|
required
|
["pins"]
|
["ubuntu-latest"]
|
38833
|
2
|
1794063746
|
1794063746
|
1794063722
|
1794063747
|
|
1
|
|
0
|
Edit
Delete
|
|
48012
|
27154
|
160
|
5
|
ee879b971aaea3c3a207b5e5281800ad45444d11
|
0
|
Frontend Type Check
|
1
|
name: CI
"on":
push:
branches: name: CI
"on":
push:
branches: [main]
pull_request:
branches: [main]
env:
NODE_OPTIONS: --max-old-space-size=8192
NODE_VERSION: "20"
jobs:
frontend-typecheck:
name: Frontend Type Check
runs-on: ubuntu-latest
steps:
- uses: https://gitea.com/actions/checkout@v4
- uses: https://gitea.com/pnpm/action-setup@v4
- uses: https://gitea.com/actions/setup-node@v4
with:
cache: pnpm
node-version: ${{ env.NODE_VERSION }}
- run: pnpm install --frozen-lockfile --ignore-scripts
- name: Build shared package
run: pnpm -C shared run build
- name: React 前端类型检查(tsc --noEmit)
run: pnpm --filter ./frontend-react run type-check
...
|
frontend-typecheck
|
null
|
["ubuntu-latest"]
|
38834
|
1
|
1794065202
|
1794065359
|
1794065201
|
1794065359
|
|
0
|
|
0
|
Edit
Delete
|
|
48013
|
27154
|
160
|
5
|
ee879b971aaea3c3a207b5e5281800ad45444d11
|
0
|
Lint & Type Check
|
1
|
name: CI
"on":
push:
branches: name: CI
"on":
push:
branches: [main]
pull_request:
branches: [main]
env:
NODE_OPTIONS: --max-old-space-size=8192
NODE_VERSION: "20"
jobs:
lint-and-typecheck:
name: Lint & Type Check
runs-on: ubuntu-latest
steps:
- uses: https://gitea.com/actions/checkout@v4
- uses: https://gitea.com/pnpm/action-setup@v4
- uses: https://gitea.com/actions/setup-node@v4
with:
cache: pnpm
node-version: ${{ env.NODE_VERSION }}
- run: pnpm install --frozen-lockfile --ignore-scripts
- name: Generate Prisma Client
run: pnpm -C backend exec prisma generate
- name: Build shared package
run: pnpm -C shared run build
- name: Backend type check
run: pnpm -C backend run type-check
- name: Lint
run: pnpm -C backend run lint
...
|
lint-and-typecheck
|
null
|
["ubuntu-latest"]
|
38835
|
1
|
1794065360
|
1794066232
|
1794065201
|
1794066232
|
|
0
|
|
0
|
Edit
Delete
|
|
48014
|
27154
|
160
|
5
|
ee879b971aaea3c3a207b5e5281800ad45444d11
|
0
|
Unit Tests (HARD GATE)
|
1
|
name: CI
"on":
push:
branches: name: CI
"on":
push:
branches: [main]
pull_request:
branches: [main]
env:
NODE_OPTIONS: --max-old-space-size=8192
NODE_VERSION: "20"
jobs:
unit-tests:
name: Unit Tests (HARD GATE)
runs-on: ubuntu-latest
steps:
- uses: https://gitea.com/actions/checkout@v4
- uses: https://gitea.com/pnpm/action-setup@v4
- uses: https://gitea.com/actions/setup-node@v4
with:
cache: pnpm
node-version: ${{ env.NODE_VERSION }}
- run: pnpm install --frozen-lockfile --ignore-scripts
- name: Generate Prisma Client
run: pnpm -C backend exec prisma generate
- name: Build shared package
run: pnpm -C shared run build
- name: Run unit tests
run: pnpm -C backend run test:unit
...
|
unit-tests
|
["frontend-typecheck","lint-and-typech ["frontend-typecheck","lint-and-typecheck"]...
|
["ubuntu-latest"]
|
38837
|
1
|
1794066296
|
1794066758
|
1794065201
|
1794066758
|
|
1
|
|
0
|
Edit
Delete
|
|
48015
|
27154
|
160
|
5
|
ee879b971aaea3c3a207b5e5281800ad45444d11
|
0
|
State Machine Model-Based (HARD GATE)
|
1
|
name: CI
"on":
push:
branches: name: CI
"on":
push:
branches: [main]
pull_request:
branches: [main]
env:
NODE_OPTIONS: --max-old-space-size=8192
NODE_VERSION: "20"
jobs:
state-machine-model:
name: State Machine Model-Based (HARD GATE)
runs-on: ubuntu-latest
steps:
- uses: https://gitea.com/actions/checkout@v4
- uses: https://gitea.com/pnpm/action-setup@v4
- uses: https://gitea.com/actions/setup-node@v4
with:
cache: pnpm
node-version: ${{ env.NODE_VERSION }}
- run: pnpm install --frozen-lockfile --ignore-scripts
- name: Generate Prisma Client
run: pnpm -C backend exec prisma generate
- name: Build shared package
run: pnpm -C shared run build
- name: Run state machine model-based tests
run: pnpm -C backend run test:state-machines:model
...
|
state-machine-model
|
["lint-and-typecheck"]
|
["ubuntu-latest"]
|
38838
|
1
|
1794066758
|
1794067107
|
1794065201
|
1794067108
|
|
1
|
|
0
|
Edit
Delete
|
|
48016
|
27154
|
160
|
5
|
ee879b971aaea3c3a207b5e5281800ad45444d11
|
0
|
Governance Audit (HARD GATE)
|
1
|
name: CI
"on":
push:
branches: name: CI
"on":
push:
branches: [main]
pull_request:
branches: [main]
env:
NODE_OPTIONS: --max-old-space-size=8192
NODE_VERSION: "20"
jobs:
governance-audit:
name: Governance Audit (HARD GATE)
runs-on: ubuntu-latest
steps:
- uses: https://gitea.com/actions/checkout@v4
- uses: https://gitea.com/pnpm/action-setup@v4
- uses: https://gitea.com/actions/setup-node@v4
with:
cache: pnpm
node-version: ${{ env.NODE_VERSION }}
- run: pnpm install --frozen-lockfile --ignore-scripts
- name: Generate Prisma Client
run: pnpm -C backend exec prisma generate
- name: Build shared package
run: pnpm -C shared run build
- name: Audit 多租户隔离(HARD GATE / 红线1,不豁免)
run: pnpm -C backend run audit:tenant
- name: Audit Prisma Schema 镜像一致性(HARD GATE)
run: pnpm run audit:prisma-schema-source
- name: Audit Prisma↔Zod 契约
run: pnpm -C backend exec tsx scripts/audit-prisma-zod-contract.ts
continue-on-error: true
- name: Audit FormRules↔Zod
run: pnpm run audit:formrules-zod
continue-on-error: true
- name: Audit Response Columns
run: pnpm run audit:response-columns
continue-on-error: true
- name: Audit Field Payload
run: pnpm run audit:field-payload
continue-on-error: true
- name: Audit Enum Consistency
run: pnpm run audit:enum-consistency
continue-on-error: true
- name: Audit useListPage ↔ Router
run: pnpm run audit:list-page-routes
continue-on-error: true
- name: Audit 前端权限键 ↔ 后端真源(HARD GATE / 防按钮 fail-closed 隐藏)
run: pnpm run audit:permission-keys
- name: Audit Page AI Assist Coverage
run: pnpm run audit:ai-assist-coverage
continue-on-error: true
- name: Audit Page AI Assist Skill Binding
run: pnpm run audit:ai-assist-skill-binding
continue-on-error: true
- name: Audit Page AI Assist Context Providers
run: pnpm run audit:context-provider-redact
continue-on-error: true
- name: Audit Coach Script Library
run: pnpm run audit:coach-script-library
continue-on-error: true
- name: Audit AI Decision Quality
run: pnpm run audit:ai-decision-quality
continue-on-error: true
- name: Audit Event Publishing
run: pnpm -C backend run audit:events
continue-on-error: true
- name: Audit State Machines
run: pnpm -C backend run audit:state-machines
continue-on-error: true
- name: Audit Money Decimal Purity (CFO-P0 防御)
run: node --import tsx scripts/audit-money-decimal-purity.ts
continue-on-error: true
- name: Audit Nested Transaction (CFO-P0-1 + RO-P0-3 防御)
run: node --import tsx scripts/audit-nested-transaction.ts
continue-on-error: true
- name: Audit Test Assertion Density (QA-P0 防御)
run: node --import tsx scripts/audit-test-assertion-density.ts
continue-on-error: true
- name: Audit API Test Coverage (probe-only / read-covered / action-covered / complete-crud)
run: pnpm -C backend run audit:api-test-coverage
continue-on-error: true
- name: Audit Consumer Test Authenticity (断言剧场防御 / 假绿防御)
run: node --import tsx scripts/audit-consumer-test-authenticity.ts
continue-on-error: true
- name: Audit Consumer Idempotency (去重路径假覆盖防御)
run: node --import tsx scripts/audit-consumer-idempotency.ts
continue-on-error: true
- name: Audit State Machine Unwired Guards (死守卫 / 假保护防御)
run: node --import tsx scripts/audit-state-machine-unwired-guards.ts
continue-on-error: true
- name: Audit Migration Topology (影子迁移防御)
run: node --import tsx scripts/audit-migration-topology.ts
continue-on-error: true
- name: Audit API Test Fixed IDs (并行化降债棘轮 / write-pk)
run: pnpm -C backend run audit:api-test-fixed-ids
continue-on-error: true
- name: 30d Evidence - Launch Smoke Scope
run: pnpm run audit:launch-smoke-scope
continue-on-error: true
- name: 30d Evidence - Rollout Scope Freeze
run: pnpm run audit:rollout-scope-freeze
continue-on-error: true
- name: 30d Evidence - Production Foundation
run: pnpm run audit:production-foundation-evidence
continue-on-error: true
- name: 30d Evidence - RLS Staging Canary Plan
run: pnpm run audit:rls-staging-canary
continue-on-error: true
- name: 30d Evidence - Customer Signoff Status
run: node --import tsx scripts/harness/customer-signoff-status.ts
continue-on-error: true
- name: 30d Evidence - Production Gate Projection
run: node --import tsx scripts/production-release-gate.ts --no-fail
continue-on-error: true
- name: 30d Evidence - Gate Integrity
run: pnpm run audit:production-release-gate-integrity
continue-on-error: true
- name: Harness Report 聚合
run: pnpm harness report --save
continue-on-error: true
- name: 30d Evidence - Harness Meta Tests
run: pnpm run harness:test
- name: 30d Evidence - War Plan Markdown
run: node --import tsx scripts/governance-30d-war-plan.ts
- if: always()
name: Upload audit reports
uses: https://gitea.com/actions/upload-artifact@v3
with:
name: governance-audit-reports
path: |
reports/prisma-zod-contract-audit.latest.json
reports/formrules-zod-audit.latest.json
reports/response-columns-audit.latest.json
reports/field-payload-audit.latest.json
reports/enum-consistency-audit.latest.json
reports/list-page-routes-audit.latest.json
reports/ai-assist-coverage.latest.json
reports/ai-assist-skill-binding.latest.json
reports/ai-assist-context-providers.latest.json
reports/coach-script-library.latest.json
reports/ai-decision-quality.latest.json
reports/event-publishing-audit.latest.json
reports/state-machine-integration-audit.latest.json
reports/harness-dashboard.latest.json
reports/module-grades.latest.json
reports/money-decimal-purity-audit.latest.json
reports/nested-transaction-audit.latest.json
reports/test-assertion-density-audit.latest.json
reports/api-test-coverage.latest.json
reports/api-test-fixed-ids-audit.latest.json
reports/consumer-test-authenticity-audit.latest.json
reports/consumer-idempotency-audit.latest.json
reports/state-machine-unwired-guards-audit.latest.json
reports/migration-topology-audit.latest.json
reports/customer-signoff-status.latest.json
reports/p0-customer-input-status.latest.json
reports/rollout-scope-freeze.latest.json
reports/rollout-scope-freeze.latest.md
reports/production-foundation-evidence.latest.json
reports/production-foundation-evidence.latest.md
reports/launch-smoke-scope.latest.json
reports/launch-smoke-scope.latest.md
reports/rls-staging-canary.latest.json
reports/rls-staging-canary.latest.md
reports/production-release-gate.latest.json
reports/production-release-gate.latest.md
reports/production-release-actions.latest.json
reports/production-release-actions.latest.md
reports/production-release-gate-integrity.latest.json
reports/production-release-gate-integrity.latest.md
reports/governance-30d-war-plan.latest.md
retention-days: "14"
- if: always()
name: 输出 governance summary
run: node --import tsx scripts/ci-governance-summary.ts --title "Governance Audit Summary" --include-rules
- name: 治理硬门禁 — 豁免感知 verdict(HARD)
run: node --import tsx scripts/harness/governance-gate.ts
- name: 文档对账 — CLAUDE.md GOVERNANCE-BASELINE ↔ reports 实测(HARD)
run: node --import tsx scripts/harness/baseline-reconcile.ts
- name: Harness Gate 综合 PR 验收(HARD)
run: pnpm harness gate
...
|
governance-audit
|
["lint-and-typecheck"]
|
["ubuntu-latest"]
|
38839
|
2
|
1794067108
|
1794069336
|
1794065201
|
1794069337
|
|
1
|
|
0
|
Edit
Delete
|
|
48017
|
27154
|
160
|
5
|
ee879b971aaea3c3a207b5e5281800ad45444d11
|
0
|
Gate Integrity (meta-gate · HARD)
|
1
|
name: CI
"on":
push:
branches: name: CI
"on":
push:
branches: [main]
pull_request:
branches: [main]
env:
NODE_OPTIONS: --max-old-space-size=8192
NODE_VERSION: "20"
jobs:
gate-integrity:
name: Gate Integrity (meta-gate · HARD)
runs-on: ubuntu-latest
steps:
- uses: https://gitea.com/actions/checkout@v4
- uses: https://gitea.com/pnpm/action-setup@v4
- uses: https://gitea.com/actions/setup-node@v4
with:
cache: pnpm
node-version: ${{ env.NODE_VERSION }}
- run: pnpm install --frozen-lockfile --ignore-scripts
- name: 校验治理硬门禁未被软化
run: node --import tsx scripts/harness/gate-integrity-check.ts
...
|
gate-integrity
|
null
|
["ubuntu-latest"]
|
38836
|
1
|
1794066232
|
1794066295
|
1794065201
|
1794066296
|
|
0
|
|
0
|
Edit
Delete
|
|
37813
|
25331
|
125
|
16
|
958ef4eaa9c5c873973a94474f7ffb6ab9c16cd2
|
0
|
baseline
|
1
|
name: verify
"on": [push, pull_request]
jo name: verify
"on": [push, pull_request]
jobs:
baseline:
name: baseline
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
cache: maven
distribution: temurin
java-version: "25"
- run: ./mvnw -B -ntp verify
- if: always()
uses: actions/upload-artifact@v4
with:
name: test-reports
path: |
**/target/surefire-reports/*.xml
**/target/failsafe-reports/*.xml
timeout-minutes: "20"
permissions:
contents: read
...
|
baseline
|
null
|
["ubuntu-latest"]
|
31822
|
2
|
1791611084
|
1791611174
|
1791611083
|
1791611175
|
|
0
|
|
0
|
Edit
Delete
|
|
38032
|
25368
|
125
|
16
|
06556f73ea74b431979b8b819de8e85358843b49
|
0
|
baseline
|
1
|
name: verify
"on": [push, pull_request]
jo name: verify
"on": [push, pull_request]
jobs:
baseline:
name: baseline
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
cache: maven
distribution: temurin
java-version: "25"
- run: ./mvnw -B -ntp verify
- if: always()
uses: actions/upload-artifact@v4
with:
name: test-reports
path: |
**/target/surefire-reports/*.xml
**/target/failsafe-reports/*.xml
timeout-minutes: "20"
permissions:
contents: read
...
|
baseline
|
null
|
["ubuntu-latest"]
|
31959
|
3
|
1791627069
|
1791628278
|
1791626275
|
1791628278
|
|
0
|
|
0
|
Edit
Delete
|
|
39359
|
25576
|
125
|
16
|
4bda2cc02706e1c64d5cd23c233673a0b32d0a72
|
0
|
baseline
|
1
|
name: verify
"on": [push, pull_request]
jo name: verify
"on": [push, pull_request]
jobs:
baseline:
name: baseline
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
cache: maven
distribution: temurin
java-version: "25"
- run: ./mvnw -B -ntp verify
- if: always()
uses: actions/upload-artifact@v4
with:
name: test-reports
path: |
**/target/surefire-reports/*.xml
**/target/failsafe-reports/*.xml
timeout-minutes: "20"
permissions:
contents: read
...
|
baseline
|
null
|
["ubuntu-latest"]
|
32810
|
2
|
1791733916
|
1791741278
|
1791733915
|
1791741278
|
|
0
|
|
0
|
Edit
Delete
|
|
39612
|
25614
|
125
|
16
|
4bda2cc02706e1c64d5cd23c233673a0b32d0a72
|
0
|
audit
|
1
|
name: dependency-security
"on":
workfl name: dependency-security
"on":
workflow_dispatch:
schedule:
- cron: '0 2 * * 1'
jobs:
audit:
name: audit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
cache: maven
distribution: temurin
java-version: "25"
- run: ./mvnw -B -ntp verify -Psecurity-audit dependency-check:aggregate
env:
NVD_API_KEY: ${{ secrets.NVD_API_KEY }}
- if: always()
uses: actions/upload-artifact@v4
with:
name: dependency-security
path: target/dependency-check-report.*
timeout-minutes: "45"
permissions:
contents: read
...
|
audit
|
null
|
["ubuntu-latest"]
|
32972
|
2
|
1791770416
|
1791770637
|
1791770415
|
1791770637
|
|
0
|
|
0
|
Edit
Delete
|
|
39730
|
25633
|
125
|
16
|
faac5481c1cca66e4708222686b6588a43938150
|
0
|
baseline
|
1
|
name: verify
"on": [push, pull_request]
jo name: verify
"on": [push, pull_request]
jobs:
baseline:
name: baseline
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
cache: maven
distribution: temurin
java-version: "25"
- run: ./mvnw -B -ntp verify
- if: always()
uses: actions/upload-artifact@v4
with:
name: test-reports
path: |
**/target/surefire-reports/*.xml
**/target/failsafe-reports/*.xml
timeout-minutes: "20"
permissions:
contents: read
...
|
baseline
|
null
|
["ubuntu-latest"]
|
33081
|
2
|
1791818109
|
1791818322
|
1791818107
|
1791818322
|
|
0
|
|
0
|
Edit
Delete
|
|
40496
|
25776
|
125
|
16
|
85e2c17b4829f451e34f938ca6c11354a0b17f30
|
0
|
baseline
|
1
|
name: verify
"on": [push, pull_request]
jo name: verify
"on": [push, pull_request]
jobs:
baseline:
name: baseline
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
cache: maven
distribution: temurin
java-version: "25"
- run: ./mvnw -B -ntp verify
- if: always()
uses: actions/upload-artifact@v4
with:
name: test-reports
path: |
**/target/surefire-reports/*.xml
**/target/failsafe-reports/*.xml
timeout-minutes: "20"
permissions:
contents: read
...
|
baseline
|
null
|
["ubuntu-latest"]
|
33397
|
2
|
1791872390
|
1791872616
|
1791852703
|
1791872617
|
|
0
|
|
0
|
Edit
Delete
|
|
40752
|
25818
|
125
|
16
|
ff5ee33515b0a21b6ba738d00c52373fabfaa50d
|
0
|
baseline
|
1
|
name: verify
"on": [push, pull_request]
jo name: verify
"on": [push, pull_request]
jobs:
baseline:
name: baseline
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
cache: maven
distribution: temurin
java-version: "25"
- run: ./mvnw -B -ntp verify
- if: always()
uses: actions/upload-artifact@v4
with:
name: test-reports
path: |
**/target/surefire-reports/*.xml
**/target/failsafe-reports/*.xml
timeout-minutes: "20"
permissions:
contents: read
...
|
baseline
|
null
|
["ubuntu-latest"]
|
33440
|
3
|
1791877969
|
1791878086
|
1791877967
|
1791878086
|
|
0
|
|
0
|
Edit
Delete
|
|
40753
|
25819
|
125
|
16
|
ff5ee33515b0a21b6ba738d00c52373fabfaa50d
|
0
|
baseline
|
1
|
name: verify
"on": [push, pull_request]
jo name: verify
"on": [push, pull_request]
jobs:
baseline:
name: baseline
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
cache: maven
distribution: temurin
java-version: "25"
- run: ./mvnw -B -ntp verify
- if: always()
uses: actions/upload-artifact@v4
with:
name: test-reports
path: |
**/target/surefire-reports/*.xml
**/target/failsafe-reports/*.xml
timeout-minutes: "20"
permissions:
contents: read
...
|
baseline
|
null
|
["ubuntu-latest"]
|
33441
|
3
|
1791878088
|
1791878106
|
1791877984
|
1791878106
|
|
0
|
|
0
|
Edit
Delete
|
|
40754
|
25820
|
125
|
16
|
cf70e039ad30edff8e3a51877be4561ed564e95f
|
0
|
baseline
|
1
|
name: verify
"on": [push, pull_request]
jo name: verify
"on": [push, pull_request]
jobs:
baseline:
name: baseline
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
cache: maven
distribution: temurin
java-version: "25"
- run: ./mvnw -B -ntp verify
- if: always()
uses: actions/upload-artifact@v4
with:
name: test-reports
path: |
**/target/surefire-reports/*.xml
**/target/failsafe-reports/*.xml
timeout-minutes: "20"
permissions:
contents: read
...
|
baseline
|
null
|
["ubuntu-latest"]
|
33442
|
2
|
1791901404
|
1791901619
|
1791901403
|
1791901620
|
|
0
|
|
0
|
Edit
Delete
|
|
40755
|
25821
|
125
|
16
|
695ea4d16f5066a81e3808b0ba4432b2a69cbd87
|
0
|
baseline
|
1
|
name: verify
"on": [push, pull_request]
jo name: verify
"on": [push, pull_request]
jobs:
baseline:
name: baseline
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
cache: maven
distribution: temurin
java-version: "25"
- run: ./mvnw -B -ntp verify
- if: always()
uses: actions/upload-artifact@v4
with:
name: test-reports
path: |
**/target/surefire-reports/*.xml
**/target/failsafe-reports/*.xml
timeout-minutes: "20"
permissions:
contents: read
...
|
baseline
|
null
|
["ubuntu-latest"]
|
33443
|
2
|
1791901620
|
1791901831
|
1791901432
|
1791901831
|
|
0
|
|
0
|
Edit
Delete
|