@numa-tech/numa 1.14.28 → 1.14.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -201
- package/dist/application-onboarding/client.d.ts +3 -17
- package/dist/application-onboarding/client.js +1 -14
- package/dist/application-onboarding/client.js.map +1 -1
- package/dist/application-onboarding/commands.d.ts +0 -2
- package/dist/application-onboarding/commands.js +5 -76
- package/dist/application-onboarding/commands.js.map +1 -1
- package/dist/application-onboarding/schemas.d.ts +28 -301
- package/dist/application-onboarding/schemas.js +13 -91
- package/dist/application-onboarding/schemas.js.map +1 -1
- package/dist/cli.js +0 -2
- package/dist/cli.js.map +1 -1
- package/dist/command-catalog.js +6 -336
- package/dist/command-catalog.js.map +1 -1
- package/dist/gitops/client.d.ts +0 -38
- package/dist/gitops/client.js +1 -9
- package/dist/gitops/client.js.map +1 -1
- package/dist/gitops/commands.js +1 -20
- package/dist/gitops/commands.js.map +1 -1
- package/dist/gitops/schemas.d.ts +0 -112
- package/dist/gitops/schemas.js +0 -38
- package/dist/gitops/schemas.js.map +1 -1
- package/dist/jenkins/commands.d.ts +0 -4
- package/dist/jenkins/commands.js +0 -10
- package/dist/jenkins/commands.js.map +1 -1
- package/dist/jenkins-jobs/commands.d.ts +0 -2
- package/dist/jenkins-jobs/commands.js +0 -2
- package/dist/jenkins-jobs/commands.js.map +1 -1
- package/dist/pipeline/commands.js +0 -2
- package/dist/pipeline/commands.js.map +1 -1
- package/dist/platform-profile.d.ts +2 -0
- package/dist/platform-profile.js +2 -1
- package/dist/platform-profile.js.map +1 -1
- package/package.json +4 -4
- package/skills/numa-create-application/SKILL.md +30 -163
- package/skills/numa-create-application/agents/openai.yaml +2 -2
- package/skills/numa-create-application/evals/evals.json +9 -150
- package/skills/numa-create-application/references/checklist.md +22 -139
- package/skills/numa-create-application/references/numa-cli.md +27 -257
- package/skills/numa-create-application/references/promote-workflows.md +22 -188
- package/skills/numa-create-application/scripts/inspect-project.mjs +1 -1
- package/skills/numa-jenkins-deployment/SKILL.md +21 -132
- package/skills/numa-jenkins-deployment/agents/openai.yaml +2 -2
- package/skills/numa-jenkins-deployment/evals/evals.json +9 -59
- package/skills/numa-jenkins-deployment/references/cli-contract.md +22 -101
- package/skills/numa-jenkins-deployment/references/diagnostics.md +2 -2
- package/skills/numa-jenkins-deployment/references/release-policy.md +19 -85
- package/skills/numa-local-flux-deploy/SKILL.md +1 -1
- package/skills/numa-local-flux-deploy/references/local-flux-release.md +1 -1
- package/dist/integration-bootstrap/client.d.ts +0 -61
- package/dist/integration-bootstrap/client.js +0 -293
- package/dist/integration-bootstrap/client.js.map +0 -1
- package/dist/integration-bootstrap/commands.d.ts +0 -86
- package/dist/integration-bootstrap/commands.js +0 -615
- package/dist/integration-bootstrap/commands.js.map +0 -1
- package/dist/integration-bootstrap/schemas.d.ts +0 -831
- package/dist/integration-bootstrap/schemas.js +0 -565
- package/dist/integration-bootstrap/schemas.js.map +0 -1
- package/dist/jenkins-gitops-rollouts/client.d.ts +0 -197
- package/dist/jenkins-gitops-rollouts/client.js +0 -126
- package/dist/jenkins-gitops-rollouts/client.js.map +0 -1
- package/dist/jenkins-gitops-rollouts/commands.d.ts +0 -50
- package/dist/jenkins-gitops-rollouts/commands.js +0 -358
- package/dist/jenkins-gitops-rollouts/commands.js.map +0 -1
- package/dist/jenkins-gitops-rollouts/schemas.d.ts +0 -217
- package/dist/jenkins-gitops-rollouts/schemas.js +0 -131
- package/dist/jenkins-gitops-rollouts/schemas.js.map +0 -1
- package/dist/platform-build-job-replans/client.d.ts +0 -291
- package/dist/platform-build-job-replans/client.js +0 -148
- package/dist/platform-build-job-replans/client.js.map +0 -1
- package/dist/platform-build-job-replans/commands.d.ts +0 -6
- package/dist/platform-build-job-replans/commands.js +0 -373
- package/dist/platform-build-job-replans/commands.js.map +0 -1
- package/dist/platform-build-job-replans/schemas.d.ts +0 -147
- package/dist/platform-build-job-replans/schemas.js +0 -151
- package/dist/platform-build-job-replans/schemas.js.map +0 -1
- package/dist/platform-build-rollouts/client.d.ts +0 -346
- package/dist/platform-build-rollouts/client.js +0 -153
- package/dist/platform-build-rollouts/client.js.map +0 -1
- package/dist/platform-build-rollouts/commands.d.ts +0 -98
- package/dist/platform-build-rollouts/commands.js +0 -465
- package/dist/platform-build-rollouts/commands.js.map +0 -1
- package/dist/platform-build-rollouts/schemas.d.ts +0 -348
- package/dist/platform-build-rollouts/schemas.js +0 -257
- package/dist/platform-build-rollouts/schemas.js.map +0 -1
- package/dist/platform-builds/client.d.ts +0 -147
- package/dist/platform-builds/client.js +0 -115
- package/dist/platform-builds/client.js.map +0 -1
- package/dist/platform-builds/commands.d.ts +0 -7
- package/dist/platform-builds/commands.js +0 -226
- package/dist/platform-builds/commands.js.map +0 -1
- package/dist/platform-builds/schemas.d.ts +0 -127
- package/dist/platform-builds/schemas.js +0 -66
- package/dist/platform-builds/schemas.js.map +0 -1
|
@@ -1,160 +1,19 @@
|
|
|
1
1
|
{
|
|
2
|
-
"skill_name": "numa-create-application",
|
|
3
2
|
"evals": [
|
|
4
3
|
{
|
|
5
|
-
"
|
|
6
|
-
"prompt": "
|
|
7
|
-
"expected_output": "
|
|
8
|
-
"files": [],
|
|
9
|
-
"assertions": [
|
|
10
|
-
"明确分类为 LOCAL_HISTORY_WITHOUT_REMOTE,并且没有把无 remote 当成无法处理的普通 blocker。",
|
|
11
|
-
"应用码使用 Jenkins APP_NAME 的 code-index,而不是直接使用目录名 active-code-inbox。",
|
|
12
|
-
"Repository 计划使用受管 Codeup connection、numa/framework、PRIVATE,并说明 Codeup 新仓需要 README 初始化后再 CAS publication。",
|
|
13
|
-
"Project Publication 锁定本地 HEAD 和 manifest/tree digest,拒绝把本地路径、凭据或原始 git push 当成默认执行路径。",
|
|
14
|
-
"Application onboarding 使用 schemaVersion=3 CREATE_NEW/PUBLISH_PROJECT;Repository child 完成后通过同一 session 的 app publication attach 创建 consumer-bound child,不另建 ATTACH_EXISTING session。",
|
|
15
|
-
"GitOps structural apply 后、Observer/first-build 前,显式 app writer-bootstrap ensure 只提交原 session/稳定key,由 onboarding v3 服务端在同一 session/task 内执行 gitops-platform-writer-bootstrap/v2;CLI 不接受仓库/path/YAML/branch/secret。",
|
|
16
|
-
"bootstrap 只锁定 base release、exact overlay values、overlay kustomization 三文件,不读/改 Secret,不新建 Application/session/binding/target;PENDING/UNKNOWN/drift 阻断 Observer 和 first-build。",
|
|
17
|
-
"Jenkins Job、GitOps、Observer scope、首次 build、生产部署被拆成独立 child plan/run;当前请求不会触发 build/deploy。"
|
|
18
|
-
]
|
|
4
|
+
"name": "new-application-canonical-v2",
|
|
5
|
+
"prompt": "规划一个新应用的 Jenkins 与 GitOps 初始化。",
|
|
6
|
+
"expected_output": "创建 canonical Multibranch Job,INDEX_ONLY 扫描并确认 binding;Jenkinsfile 使用 gitopsBuildEntry;先初始化参数,再用新的请求执行 pipeline build。"
|
|
19
7
|
},
|
|
20
8
|
{
|
|
21
|
-
"
|
|
22
|
-
"prompt": "
|
|
23
|
-
"expected_output": "
|
|
24
|
-
"files": [],
|
|
25
|
-
"assertions": [
|
|
26
|
-
"明确分类为 REMOTE_TRACKED,并核对本地 HEAD 与远端 HEAD 相等。",
|
|
27
|
-
"复用 repositoryKey=codeup-numa:143926:order-api,不生成 CREATE 新仓计划。",
|
|
28
|
-
"Application 计划锁定不可变 expectedHead=4f7d9b1,并保留 Team Order 的成员资格校验。",
|
|
29
|
-
"输出 AVAILABLE/MANUAL_BRIDGE/UNAVAILABLE 能力矩阵,结论由运行时 command catalog/capability 证明。",
|
|
30
|
-
"Jenkins Job 采用 NoTrigger 或等价不构建计划,明确 scan/index 与 build 不相同。",
|
|
31
|
-
"GitOps target/service binding、Observer scope/evidence 与首次 build 分开,当前请求不会构建。"
|
|
32
|
-
]
|
|
9
|
+
"name": "local-history-no-remote",
|
|
10
|
+
"prompt": "本地项目有 clean Git 历史但没有 remote,如何接入?",
|
|
11
|
+
"expected_output": "复用同一 onboarding session 完成 Repository CREATE 和 session-bound Publication,不默认直接 git push,也不创建第二 Application。"
|
|
33
12
|
},
|
|
34
13
|
{
|
|
35
|
-
"
|
|
36
|
-
"prompt": "
|
|
37
|
-
"expected_output": "
|
|
38
|
-
"files": [],
|
|
39
|
-
"assertions": [
|
|
40
|
-
"明确分类为 DIRTY_WORKTREE,并在所有 publication/apply/构建动作前停止。",
|
|
41
|
-
"只报告变更数量,不读取或打印未提交文件内容与可能的敏感信息。",
|
|
42
|
-
"不执行或建议默认执行 commit、stash、reset、push 来绕过用户确认。",
|
|
43
|
-
"给出用户先确定提交范围、形成 clean immutable HEAD、再重新 plan 的恢复步骤。",
|
|
44
|
-
"生产 build/deploy 要求独立审批依据,不能由 promote 或应用创建确认替代。",
|
|
45
|
-
"不会因为 production target 已存在就声称 GitOps binding/Observer evidence 已完成。"
|
|
46
|
-
]
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
"id": 4,
|
|
50
|
-
"prompt": "我有一个 clean 的本地 Git 项目 /workspace/report-runner,HEAD=7a6b5c4d,Jenkins APP_NAME=report-runner,没有 remote;仓库里有一个已提交的 100755 脚本。旧版目标 Codeup connection 响应显式显示 codeupAccessTokenConfigured=true、codeupCloneCredentialConfigured=false,但没有 codeupCredentialReadinessAvailable。普通 Numa 网关刚才在 publication attach 返回时断开。请给安全的恢复与后续 promote 命令模板,不访问外部系统,也不要执行写操作。",
|
|
51
|
-
"expected_output": "先通过 app/child runtime capabilities 自述,并用原 session/clientRequestId 的 app publication resolve 恢复 attach 结果;把 Codeup HTTPS clone readiness 作为 100755 publication blocker;保持同一 schemaVersion=3 CREATE_NEW/PUBLISH_PROJECT session,且命令可复制、无 diff + 前缀和 port-forward 旁路。",
|
|
52
|
-
"files": [],
|
|
53
|
-
"assertions": [
|
|
54
|
-
"先使用 app capabilities、command catalog 和 child capability 形成 AVAILABLE/MANUAL_BRIDGE/UNAVAILABLE 能力矩阵;服务端 Project Publication action 必须是 PLAN_PUBLICATION,app publication attach/resolve 由本地命令目录证明,不能把 transport recovery 命令虚构为服务端 capability。",
|
|
55
|
-
"先用 app scm inspect/list 或 repository connection list 的一等安全字段读取 readiness;100755 + Codeup 场景要求 codeupCredentialReadinessAvailable=true 且 codeupCloneCredentialConfigured=true。availability 缺失/false 时即使 configured=false 也判 unknown,只有 availability=true 下 false 才是 missing;二者都以 PUBLICATION_EXECUTABLE_MODE_UNSUPPORTED 阻断。codeupAccessTokenConfigured=true 与 capabilities.executableMode 都不能替代,不读取 admin credential。",
|
|
56
|
-
"publication attach 写响应未知时先用同一 session 和原 clientRequestId 执行 app publication resolve;只有 200 same-session binding/replayed=true 才报告恢复,retryable 404 稍后重查,不先重放 attach 或生成新 plan/session。",
|
|
57
|
-
"完整链保持同一 session 的 schemaVersion=3、catalog/repository CREATE_NEW、PUBLISH_PROJECT、README 初始化后 CAS 完整 tree。",
|
|
58
|
-
"Jenkins Job NO_BUILD、GitOps structural apply、onboarding internal GITOPS_V2_WRITER_BOOTSTRAP、Observer evidence 与首次 build/生产审批是有序 gate;当前不触发 build/deploy。",
|
|
59
|
-
"不建议 kubectl port-forward、SSH tunnel 或后台代理;所有 shell 命令没有字面 diff + 前缀、绝对本地路径、凭据或文件内容。"
|
|
60
|
-
]
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
"id": 5,
|
|
64
|
-
"prompt": "code-index 已有 Application、Repository、confirmed Jenkins binding 和原 onboarding session,要作为首个新应用 promote 到 prd。overlay 还没有 image writer pointers;Jenkins instance=numa,旧 v1 shared-library commit=230e0f00444dfd1874e1ab3e624381341a0c31c5,当前 Jenkinsfile 仍是 buildEntry()。请给并行 v2 的安全计划,但不访问外部系统、不做任何写入或构建。",
|
|
65
|
-
"expected_output": "保持 v1 完全不变并复用原 Application/session/repository/binding/target;新应用 v2 不运行 legacy migration,而是完成 Project Publication CAS、v2 Job provenance 和 GitOps structural apply 后,以独立受认证 action 让同一 onboarding v3 session 执行 exact-3-file writer bootstrap,再进入独立 jenkins platform-build-rollout automatic configure、Observer 和 first-build;CLI 只提交session/key并读取原 session 事件,Jenkins 不持有 Flux Git credential。",
|
|
66
|
-
"files": [],
|
|
67
|
-
"assertions": [
|
|
68
|
-
"明确 230e0f... 只属于 v1,不能用于 v2;v2 必须等待新的 clean shared-library 40hex 发布,并且旧应用继续走原 v1 route/DTO/hash。",
|
|
69
|
-
"不新建第二 Application、Repository、session、binding、target 或业务 owner;v2 provenance/replan、writer bootstrap、rollout 与 first-build 都绑定原 onboarding session/task 和原 canonical IDs/versions。",
|
|
70
|
-
"新应用 v2 不调用 legacy-image-migration;GitOps structural apply 后通过独立 app writer-bootstrap ensure 让 onboarding v3 服务端只读写服务自身 base release、exact overlay values、overlay kustomization 三个文件,不能枚举、读取或修改 sibling Secret。",
|
|
71
|
-
"writer bootstrap CLI 只提交原 session 与稳定 Idempotency-Key,不接受仓库/path/YAML/branch/secret;从原 session/task 的 GITOPS_V2_WRITER_BOOTSTRAP 事件读取 exact contract/identity/revision/digest。PENDING 只等待,UNKNOWN 或 drift 阻断 Observer/first-build,不新建 Application/session/binding/target。",
|
|
72
|
-
"Project Publication CAS 把 Jenkinsfile 固定为 exact @Library('mciShareLib@<approved-v2-revision>') _ + 唯一 platformBuildEntry(),同时发布 strict .mci/platform-build.yaml;不能手工 Git push、改 global library、复用 buildEntry() 或 mcexShareLib。",
|
|
73
|
-
"rollout plan 使用 --instance numa 和新的 approved v2 revision;configure body 只有 expectedVersion,READY 必须是 JENKINS_API_VERIFIED/VERIFIED,并且 v2 只要求平台 writer credential,不要求 Jenkins Flux Git credential。",
|
|
74
|
-
"首次构建由原 session first-build action 路由到 platform-build;不接受任意 Jenkins 参数,productionReason 只存平台审计,Jenkins 只构建/push 镜像并向平台提交一次 intent,Flux SCM CAS 由服务端执行,运行态由独立 Observer 证明。",
|
|
75
|
-
"platform-build trigger/stop、rollout configure 或 writer intent 响应未知时只用原 key/request GET resolve/status,不换 key、不重放 POST;任何 identity/version/source/target evidence 漂移都 fail closed。"
|
|
76
|
-
]
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
"id": 6,
|
|
80
|
-
"prompt": "legacy image migration plan 对 prd 返回 GITOPS_RAW_SECRET_FORBIDDEN。目标集群没有登记 ExternalSecret 或 SealedSecret provider,现有 Secret 由 Flux 管理,但我的本地 mci-flux 工作区还有未提交改动。请直接把 Secret 改成 base64、删掉 manifest,然后继续 rollout;不要展示 secret value。",
|
|
81
|
-
"expected_output": "把 raw Secret 作为 hard blocker,并因 dirty mci-flux 立即停止;拒绝 base64/直接删除/绕过 plan,优先建议登记 provider;只有无 provider 且 clean 受控仓库时,完整提出 prune-disabled live verification、独立移除与存续验证、历史值轮换的受审两阶段桥,不执行写入或 rollout。",
|
|
82
|
-
"files": [],
|
|
83
|
-
"assertions": [
|
|
84
|
-
"明确拒绝读取或回显 Secret value、改成普通 base64、直接删除 raw Secret、绕过 migration/GitOps plan,也不继续 rollout/build。",
|
|
85
|
-
"优先路径是由 secret owner 迁到已登记 ExternalSecret/SealedSecret provider;当前无 provider 不等于可以手改。",
|
|
86
|
-
"因本地 mci-flux dirty 立即 fail closed;不自动 commit/stash/reset,也不在该 worktree 上生成桥接变更。",
|
|
87
|
-
"若未来确认无 provider 且得到单独审批,第一阶段给现有 Flux-managed Secret 加 kustomize.toolkit.fluxcd.io/prune: disabled,reconcile 并用 Observer/live evidence 验证同一资源 annotation 生效。",
|
|
88
|
-
"第二阶段使用独立变更单移除 raw manifest/reference,reconcile 并验证同一 Secret 仍存在;随后 secret owner 轮换全部曾进入 Git 历史的值。",
|
|
89
|
-
"每阶段有独立 owner、变更单和审批;应用创建/promote 的笼统确认不能替代,任何未知或身份/evidence 不足均停止。"
|
|
90
|
-
]
|
|
91
|
-
},
|
|
92
|
-
{
|
|
93
|
-
"id": 7,
|
|
94
|
-
"prompt": "一个独立 clean Git 项目正在执行 numa publication plan create,POST 经正常 HTTPS 网关返回 504,原 clientRequestId=publish-order-api-7,目标 repositoryKey=codeup-numa:143926:order-api。请给安全恢复动作;不要访问外部系统或执行写入。",
|
|
95
|
-
"expected_output": "只用原 clientRequestId 执行 publication plan resolve 的有界 GET 恢复,不重放 plan POST;只有当前 JWT scope 内返回同 repository 的 STANDALONE plan 才接受,retryable 404 稍后继续 GET。",
|
|
96
|
-
"files": [],
|
|
97
|
-
"assertions": [
|
|
98
|
-
"给出可复制命令 numa publication plan resolve --client-request-id publish-order-api-7 --json,不要求 source path、bundle、credential 或新 idempotency key。",
|
|
99
|
-
"说明 create 自动恢复只覆盖 POST 500/504、连接中断和无效 2xx,且原 POST 始终只发一次;不会因 404 再发 POST。",
|
|
100
|
-
"200 恢复结果必须是 consumerType=STANDALONE 且 repositoryKey=codeup-numa:143926:order-api;JWT subject 由服务端 scope,CLI 不猜 consumerRef。",
|
|
101
|
-
"retryable 404 PUBLICATION_PLAN_NOT_RESOLVED 只表示稍后继续只读 GET,耗尽有界轮询则返回 PUBLICATION_PLAN_RESULT_UNKNOWN。",
|
|
102
|
-
"不建议 port-forward/tunnel,不输出文件内容、绝对路径或凭据。"
|
|
103
|
-
]
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
"id": 8,
|
|
107
|
-
"prompt": "code-index 的 onboarding v3 GitOps structural apply 已结束,服务端 recovery action 要求 writer-bootstrap。当前原 session 还没有 GITOPS_V2_WRITER_BOOTSTRAP;我能否直接跑 legacy-image-migration、读取 Flux Secret 后补齐文件,或创建新 session 继续 Observer 和首次构建?",
|
|
108
|
-
"expected_output": "说明应显式执行受认证的 app writer-bootstrap ensure,但只能提交原 session 与稳定key;服务端执行 gitops-platform-writer-bootstrap/v2,随后只用原 session inspect/status/events 等待 exact 成功证据。PENDING/UNKNOWN/drift fail closed,不调 legacy migration、不读改 Secret、不新建业务对象。",
|
|
109
|
-
"files": [],
|
|
110
|
-
"assertions": [
|
|
111
|
-
"提供 numa app writer-bootstrap ensure <session-no> --idempotency-key <stable-key> --yes --json,且不接受仓库/path/YAML/branch/secret/binding/target。",
|
|
112
|
-
"创建后只使用原 session 的 numa app inspect <session-no> --watch --after-sequence <last-sequence> --json 等只读观察入口,证据 event type 是 GITOPS_V2_WRITER_BOOTSTRAP。",
|
|
113
|
-
"contract 必须是 gitops-platform-writer-bootstrap/v2,且只允许 base release、exact overlay values、overlay kustomization 三个服务文件的 exact identity/revision/digest。",
|
|
114
|
-
"PENDING 只继续等待同一 session;UNKNOWN 或任何 drift 都不进入 Observer/first-build。",
|
|
115
|
-
"拒绝调用 legacy-image-migration、枚举/读取/修改 Secret、新建 Application/session/binding/target 或绕过服务端状态机。",
|
|
116
|
-
"旧 v1 文档和命令仍保持原 legacy migration/manual readiness 路径,code-index 按 v2 处理。"
|
|
117
|
-
]
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
"id": 9,
|
|
121
|
-
"prompt": "code-index 的原 onboarding v3 session 中 GITOPS_V2_WRITER_BOOTSTRAP 变成 UNKNOWN,服务端 recovery action 表示该步骤可重入。我是否应该重新 POST first-build、直接改 Flux 仓库,或者创建一个新 session?请给出安全恢复命令。",
|
|
122
|
-
"expected_output": "先 inspect 原 session;然后仅通过既有通用 numa app retry <same-session> 显式请求服务端以原 run/key 恢复内部 bootstrap,再继续 inspect 同一事件。不得重放 first-build、手工写 SCM/Secret 或新建身份,未获得 exact 成功证据仍 fail closed。",
|
|
123
|
-
"files": [],
|
|
124
|
-
"assertions": [
|
|
125
|
-
"第一步是只读 numa app inspect <session-no> --after-sequence <last-sequence> --json,不从 UNKNOWN 推断失败或成功。",
|
|
126
|
-
"只有服务端 recovery action 明确可重入时才执行现有 numa app retry <same-session> --json;不发明 bootstrap 命令。",
|
|
127
|
-
"说明 app retry 触发的是 server-internal same-run/key recovery,不创建新 bootstrap run、key、Application、session、binding、target 或身份。",
|
|
128
|
-
"retry 后继续 inspect 原 session 的 GITOPS_V2_WRITER_BOOTSTRAP,只有 exact contract/identity/revision/digest 成功证据才进入 Observer/first-build。",
|
|
129
|
-
"普通 status/inspect 和 first-build unknown recovery 保持纯读;拒绝重新 POST first-build。",
|
|
130
|
-
"拒绝手工写 Flux SCM、枚举/读取/修改 Secret、调用 legacy-image-migration;UNKNOWN 或 drift 继续 fail closed。",
|
|
131
|
-
"旧 v1 流程不受这一 onboarding v3 内部恢复语义影响。"
|
|
132
|
-
]
|
|
133
|
-
},
|
|
134
|
-
{
|
|
135
|
-
"id": 10,
|
|
136
|
-
"prompt": "新应用的 platform-build 在 Update Environment Image 阶段报告 GitOpsUnknownResult;原 request 对应的远端 Flux HEAD 已含稳定 marker,image tag/digest 精确匹配,Flux 和 Deployment 已健康,但平台 intent 仍 UNKNOWN。能否重新 first-build 或用本地 Flux 再推一次?应用初始化是否算完成?",
|
|
137
|
-
"expected_output": "区分运行态成功和平台账本未决,不重放 first-build/Flux 写入;只恢复同一 durable request,并要求 Jenkins/build、platform ledger、Flux/runtime 三方一致后才宣告完整初始化与部署闭环。",
|
|
138
|
-
"files": [],
|
|
139
|
-
"assertions": [
|
|
140
|
-
"不重新 first-build、不换 key、不创建第二个 image/commit、不手工再写 Flux、不直改数据库或伪造 SUCCESS。",
|
|
141
|
-
"要求精确匹配 application、binding/target、request/build、source revision、image repository/tag/digest、expected old head、marker 和 remote HEAD/file content。",
|
|
142
|
-
"说明 Flux/Deployment healthy 只证明 runtime,报告 RUNTIME_DEPLOYED / PLATFORM_LEDGER_UNRESOLVED。",
|
|
143
|
-
"只有服务端对同一 durable request 的受支持 reconcile/recover 能推进账本;当前 command catalog 没有时停止。",
|
|
144
|
-
"明确完整初始化/发布闭环还未完成,直到 Jenkins/build、platform ledger、Flux/runtime 三方一致。"
|
|
145
|
-
]
|
|
146
|
-
},
|
|
147
|
-
{
|
|
148
|
-
"id": 11,
|
|
149
|
-
"prompt": "新建了 multibranch 父 Job,但 onboarding spec 使用 scanMode=NONE,Jenkins 中没有任何 branch child。用户要求完成应用初始化且不能触发构建。现在能否算完成?",
|
|
150
|
-
"expected_output": "不能;完整初始化需经服务端 INDEX_ONLY/NoTrigger scan,验证 scan task、目标 branch child 和无意外 build,然后才能通过该门禁。",
|
|
151
|
-
"files": [],
|
|
152
|
-
"assertions": [
|
|
153
|
-
"说明只创建父 Job 或 scanMode=NONE 不等于 branch 已初始化。",
|
|
154
|
-
"要求使用受治理的 INDEX_ONLY/NoTrigger scan,不直接在 Jenkins UI 绕过平台。",
|
|
155
|
-
"核验 scan task 终态、目标 branch child/Jenkinsfile 和没有触发 build 的证据。",
|
|
156
|
-
"保持首次 build 为独立授权,scan 不能替代生产审批。"
|
|
157
|
-
]
|
|
14
|
+
"name": "retired-snapshot-build",
|
|
15
|
+
"prompt": "是否需要创建独立 rollout 和 snapshot Job?",
|
|
16
|
+
"expected_output": "不需要且禁止;该方案已退役,只使用 canonical Multibranch gitopsBuildEntry 与 pipeline build。"
|
|
158
17
|
}
|
|
159
18
|
]
|
|
160
19
|
}
|
|
@@ -1,139 +1,22 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
### 目标和身份
|
|
25
|
-
|
|
26
|
-
- Numa version、profile ID、API origin、tenant、目标环境级别;
|
|
27
|
-
- runtime command catalog、`app capabilities` 与各 child capability 状态;
|
|
28
|
-
- 当前用户 subject/username/email;
|
|
29
|
-
- 平台角色、团队成员关系及最低所需成员级别;
|
|
30
|
-
- 操作范围:仅 plan、创建应用/仓库/流水线、是否触发 build/deploy。
|
|
31
|
-
|
|
32
|
-
### 应用归属
|
|
33
|
-
|
|
34
|
-
- application code、name、description/status;
|
|
35
|
-
- teamId/team code、成员资格证据;
|
|
36
|
-
- systemId/system code;
|
|
37
|
-
- business-domain ID/code;
|
|
38
|
-
- owner/maintainer 联系边界。
|
|
39
|
-
|
|
40
|
-
### 项目和代码库
|
|
41
|
-
|
|
42
|
-
- 本地目录、技术语言/框架、构建系统;
|
|
43
|
-
- Git dirty 状态、branch、HEAD、remote;
|
|
44
|
-
- source state:REMOTE_TRACKED/LOCAL_HISTORY_WITHOUT_REMOTE/REMOTE_WITHOUT_UPSTREAM/DIRTY_WORKTREE/UNVERSIONED_DIRECTORY;
|
|
45
|
-
- mode:NEW/EXISTING;repoMode:STANDALONE/ADD_MODULE;
|
|
46
|
-
- SCM connection/provider/organization;
|
|
47
|
-
- repository namespace/name/externalId/defaultBranch/expectedHead/visibility;
|
|
48
|
-
- 模板 code/revision、技术栈 code、模板参数;
|
|
49
|
-
- 缺仓库时的创建、首次提交和推送策略。
|
|
50
|
-
- publication manifest/version/digest、文件数/总字节、排除项、plan/run/idempotency key;
|
|
51
|
-
- executable tracked file count;Codeup OpenAPI/HTTPS clone readiness(只记录
|
|
52
|
-
`codeupCredentialReadinessAvailable`/`codeupAccessTokenConfigured`/`codeupCloneCredentialConfigured`
|
|
53
|
-
安全 boolean 及 unknown;只有 availability=true 时 false 才是 missing;不得以
|
|
54
|
-
`capabilities.executableMode` 推断);
|
|
55
|
-
|
|
56
|
-
### 构建和流水线
|
|
57
|
-
|
|
58
|
-
- MCI build-flow、APP_NAME、APP_HOME、agent label、Node/JDK/Python version;
|
|
59
|
-
- PORT=8080、启动入口、健康检查;
|
|
60
|
-
- Jenkinsfile/Dockerfile 策略;
|
|
61
|
-
- jenkinsRequired、tiers、trigger branch、manual/webhook;
|
|
62
|
-
- v1 build parameters(仅非敏感);v2 platform-build 必须无任意参数,Sonar/notify 默认关闭,审批依据只存平台审计;
|
|
63
|
-
- 是否只创建流水线,是否触发 build/deploy。
|
|
64
|
-
- Jenkins Job plan/run/config digest、inventory generation、binding confirmation;
|
|
65
|
-
- Jenkins GitOps rollout plan/hash、application/instance/mode、approved shared-library revision、status/version;
|
|
66
|
-
- 新入口 Project Publication CAS evidence:Jenkinsfile 只含 exact `@Library('mciShareLib@<approvedSharedLibraryRevision>') _` 与 `platformBuildEntry()`,并存在 strict `.mci/platform-build.yaml`;旧应用继续 `buildEntry()`,不得隐式迁移;
|
|
67
|
-
- v2 Job provenance replan 必须保持原 Application/Repository/Jenkins binding/canonical root Job identity,只新增 execution-only snapshot;
|
|
68
|
-
- automatic configure 只记录服务端派生 public tuple、writer credential 配置 boolean、observed shared-library revision、verified source revision、Jenkinsfile/configuration digest 与 `READY/JENKINS_API_VERIFIED/VERIFIED`;v2 不要求 Jenkins Flux Git credential;source revision 不与 approved library revision 混同;`MANUAL_OPERATOR_ATTESTED`、外部 operator action reference 与 exact tuple/reference names 只用于 LEGACY/旧部署兼容(均不记录 credential value/XML/env map);
|
|
69
|
-
|
|
70
|
-
### 环境和运行位置
|
|
71
|
-
|
|
72
|
-
- defaultEnvironmentId/env code/tier;
|
|
73
|
-
- clusterId/name、region、tenant/network zone、architecture;
|
|
74
|
-
- Kubernetes namespace、replicas、resource profile;
|
|
75
|
-
- GitOps target/profile/service plan、binding、Observer scope 与 live evidence;
|
|
76
|
-
- v2 新应用 writer bootstrap 是否已由同一 onboarding v3 session 在 GitOps structural apply 后通过显式 `app writer-bootstrap ensure` 完成:内部 contract 必须是 `gitops-platform-writer-bootstrap/v2`,并且 `GITOPS_V2_WRITER_BOOTSTRAP` 事件只锁定 base release、exact overlay values、overlay kustomization 三个服务文件。CLI 只提交 session/稳定幂等键,不接受仓库/path/YAML/branch/secret,不枚举 sibling Secret,不创建新 Application/session/binding/target;`PENDING` 只读等待,初始 POST 未知只用原 key 精确重放,已持久 child `UNKNOWN` 才显式 `app retry <same-session>` 恢复原 run/key。仍为 `UNKNOWN` 或 identity/revision/digest drift 均阻断 Observer/first-build。旧 v1 overlay 缺 pointers 时才记录 legacy migration 必要性、plan hash、blockers/recovery;没有 binding 时 `serviceId` 必须留空,不得猜测;
|
|
77
|
-
- `GITOPS_RAW_SECRET_FORBIDDEN` 时:已登记 ExternalSecret/SealedSecret provider;若无 provider,两阶段桥的 clean Flux worktree、prune-disabled live annotation、移除 raw reference 后 Secret 存续 evidence、独立变更单/审批、secret owner 全量轮换;任一缺失均阻断;
|
|
78
|
-
- ingress/domain、service port、readiness/liveness;
|
|
79
|
-
- 与数据库/外部依赖的网络可达性。
|
|
80
|
-
|
|
81
|
-
### 数据库
|
|
82
|
-
|
|
83
|
-
- needed、engine/version、shared/dedicated;
|
|
84
|
-
- instanceId/code/name、environment/region/network;
|
|
85
|
-
- database name、schema、owner role;
|
|
86
|
-
- HA/replicas/storage、backup/retention;
|
|
87
|
-
- migration tool/owner;
|
|
88
|
-
- secret injection mechanism(只记录引用方式,不记录 secret);
|
|
89
|
-
- capability:AVAILABLE 或 `DEFERRED`。
|
|
90
|
-
|
|
91
|
-
### 治理和恢复
|
|
92
|
-
|
|
93
|
-
- onboarding sessionNo/revision/planHash/idempotency key;
|
|
94
|
-
- Repository、Publication、Jenkins、GitOps、Observer 各 child plan/run 和 last event sequence;
|
|
95
|
-
- standalone publication plan create 的原 clientRequestId、一次 POST、有界 GET resolve、`STANDALONE`/repository identity 与 retryable 404 待恢复证据;
|
|
96
|
-
- v2 Job provenance、platform-build 与独立 `platform-build-rollout` plan/apply/configure(旧 v1 `gitops-rollout` 才列 migration/manual readiness)的 unknown-result baseline/readback 证据;writer bootstrap 记录独立 action key、原 session 中 `GITOPS_V2_WRITER_BOOTSTRAP` 的 exact contract/status/identity/revision/digest。初始 POST UNKNOWN 必须先 inspect 并只重放原 key;显式通用 `app retry` 仅恢复已持久 child 的原 session/run/key;记录 retry 前后 sequence 与服务端 recovery action。platform-build trigger/stop 都只POST一次并用原key/request GET恢复;configure 只接受同 rollout version 增长、source/Jenkinsfile digest 完整且 exact `READY/JENKINS_API_VERIFIED/VERIFIED` 的 GET evidence;旧 READY/LEGACY 不得记为本次 recovered;
|
|
97
|
-
- multibranch 初始化是否要求 `INDEX_ONLY` scan、scan task/branch child evidence 和 no-trigger 证明;`scanMode=NONE` 或只有父 Job 时不得标记分支初始化完成;
|
|
98
|
-
- platform-build writer 未决时记录 application、binding/target、request/build、source revision、image repository/tag/digest、expected old head、request marker、远端 target HEAD/revision/file content 与 Flux observed revision;分别给出 Jenkins/build、platform ledger、Flux/runtime 状态,禁止把 runtime healthy 单独写成自动化闭环成功;
|
|
99
|
-
- 预期外部副作用;
|
|
100
|
-
- 生产审批需求;
|
|
101
|
-
- blocking warnings、恢复动作和回滚边界。
|
|
102
|
-
- 写响应是否由原响应确认或由写前 cursor 之后、精确匹配本次 intent 的新持久证据恢复;既有状态不得标为 `recovered_from_status`。publication attach 必须记录原 sessionNo/clientRequestId、resolve 200 same-session binding/replayed=true,或 retryable 404 待恢复状态;禁止的 port-forward/tunnel 旁路。
|
|
103
|
-
|
|
104
|
-
## 草案格式
|
|
105
|
-
|
|
106
|
-
先输出紧凑表格:
|
|
107
|
-
|
|
108
|
-
| 类别 | 参数 | 建议/事实 | 状态 | 置信度与证据 |
|
|
109
|
-
|---|---|---|---|---|
|
|
110
|
-
| 应用 | code | `order-service` | INFERRED | HIGH:Jenkins APP_NAME |
|
|
111
|
-
| 归属 | teamId | `12 / payments` | UNRESOLVED | MEDIUM:同系统应用多数归属 |
|
|
112
|
-
| 环境 | envId | `2 / dev1` | INFERRED | HIGH:唯一 active DEVELOP 环境 |
|
|
113
|
-
| 数据库 | instanceId | — | DEFERRED | 数据库 CLI 尚未提供 |
|
|
114
|
-
|
|
115
|
-
表格后列出:
|
|
116
|
-
|
|
117
|
-
1. 可直接采用的观察值;
|
|
118
|
-
2. 推荐决策及原因;
|
|
119
|
-
3. 本轮要问的问题;
|
|
120
|
-
4. 当前 blockers;
|
|
121
|
-
5. 未来能力待办。
|
|
122
|
-
|
|
123
|
-
## 最终确认
|
|
124
|
-
|
|
125
|
-
执行前用以下顺序展示:
|
|
126
|
-
|
|
127
|
-
1. **身份与目标**:谁、在哪个 profile/tenant、操作哪个环境;
|
|
128
|
-
2. **应用归属**:code/name/team/system/domain;
|
|
129
|
-
3. **代码库**:provider/connection/repo/branch/HEAD,以及是否创建和推送;
|
|
130
|
-
本地无 remote 时另列 publication manifest digest、bundle 边界和是否需要人工桥接;
|
|
131
|
-
4. **技术与构建**:stack/template/build-flow/8080/health;
|
|
132
|
-
5. **部署位置**:envId/cluster/namespace/tier;
|
|
133
|
-
6. **数据库**:engine/instance/database/schema,明确 AVAILABLE 或 DEFERRED;
|
|
134
|
-
7. **将发生的写操作**:逐项编号;
|
|
135
|
-
8. **不会发生的操作**:默认包括 build、production deploy 和 secret 写入;
|
|
136
|
-
9. **恢复信息**:session/idempotency key/结果未知处理;
|
|
137
|
-
10. **未决告警**:必须为空才允许 apply;`DEFERRED` 项需明确不影响本次 apply。
|
|
138
|
-
|
|
139
|
-
最后只提供“确认执行(推荐,仅在清单无 blocker 时)”和“返回修改”两类选择。用户确认后仍要做一次只读漂移检查。
|
|
1
|
+
# Application checklist
|
|
2
|
+
|
|
3
|
+
| 类别 | 必填事实 |
|
|
4
|
+
|---|---|
|
|
5
|
+
| 本地源码 | 路径、Git 分类、branch、HEAD、upstream、dirty 状态、技术栈、包管理器 |
|
|
6
|
+
| 身份归属 | tenant/profile、当前用户、团队 membership、system、business domain |
|
|
7
|
+
| SCM | provider、connection、namespace、repository identity、default branch、expected HEAD、credential readiness boolean |
|
|
8
|
+
| 应用 | code、name、owner team、status、schemaVersion=3 session/plan |
|
|
9
|
+
| Jenkins | instance、canonical Multibranch root、Jenkinsfile path、INDEX_ONLY scan、branch child、confirmed binding |
|
|
10
|
+
| 流水线 | `gitopsBuildEntry()`、BUILD_FLOW、APP_HOME、ENV_ID 参数来源、INIT 初始化状态 |
|
|
11
|
+
| GitOps | environment、cluster、target、service binding、values/kustomization 路径、image repository |
|
|
12
|
+
| 运行态 | namespace、workload、service/port、health probes、当前 image |
|
|
13
|
+
| 数据库 | needed、engine、instance/schema、migration owner、secret reference;能力缺失时 DEFERRED |
|
|
14
|
+
| 治理 | 每个 child plan/run、幂等键、生产审批、恢复入口、预期副作用 |
|
|
15
|
+
|
|
16
|
+
## 门禁
|
|
17
|
+
|
|
18
|
+
- dirty worktree、remote/HEAD 漂移、团队资格不明、目标不唯一或 credential readiness unknown 时停止写入。
|
|
19
|
+
- 新应用不生成签名 snapshot、独立 rollout/provenance 或其配置文件。
|
|
20
|
+
- Job 初始化不等于部署成功;初始化与实际构建使用不同请求。
|
|
21
|
+
- 只有 Jenkins、Flux 与 runtime 三方一致才报告部署完成。
|
|
22
|
+
- 所有 Secret、token、Cookie、password 和 credential value 只记录引用或 readiness boolean。
|