Evidence: SELF — go build ./...、go vet ./pkg/extension/...、go test ./pkg/extension/... ./internal/config/... -count=1 本地通过;权威以本 PR HEAD CI 为准。
Impact: 仅产品二进制启动路径;认证关闭时行为不变。
Refs: Backend PR #216、#217;实施执行 agent-per-unit(Cursor,fresh_session;首个单元因单元约束禁止物化子模块而 blocked,修正约束后以新单元完成)。
Why: 超级管理员合入(#217)后 app.Run 要求开启认证时 opt.SuperAdmin 有效,但产品组合根 pkg/extension/link 从不填充该字段;RDM 等产品二进制在 --auth on 下即使设置了 SUPER_ADMIN_OWNER/SUPER_ADMIN_PASSWORD(或 AGENT_SYSTEM_ENV_FILE)也拒绝启动(8788 部署 rdm@fc5c53a 实测启动即退出、自动回滚)。
What: link 运行器新增 runOptions,按与 cmd/agent-system 相同的规则(config.Resolved.AuthEnabled + config.LoadSuperAdmin(os.LookupEnv, "", authEnabled))补齐 SuperAdmin,加载错误直接返回;appOptions 映射不变。新增 4 个测试(环境变量、0600 env 文件、认证关闭、组/其他可读 env 文件被拒)。
Evidence: SELF — go build ./...、go vet ./pkg/extension/...、go test ./pkg/extension/... ./internal/config/... -count=1 本地通过;权威以本 PR HEAD CI 为准。
Impact: 仅产品二进制启动路径;认证关闭时行为不变。
Refs: Backend PR #216、#217;实施执行 agent-per-unit(Cursor,fresh_session;首个单元因单元约束禁止物化子模块而 blocked,修正约束后以新单元完成)。
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Why: 超级管理员合入(#217)后 app.Run 要求开启认证时 opt.SuperAdmin 有效,但产品组合根 pkg/extension/link 从不填充该字段;RDM 等产品二进制在 --auth on 下即使设置了 SUPER_ADMIN_OWNER/SUPER_ADMIN_PASSWORD(或 AGENT_SYSTEM_ENV_FILE)也拒绝启动(8788 部署 rdm@fc5c53a 实测启动即退出、自动回滚)。
What: link 运行器新增 runOptions,按与 cmd/agent-system 相同的规则(config.Resolved.AuthEnabled + config.LoadSuperAdmin(os.LookupEnv, "", authEnabled))补齐 SuperAdmin,加载错误直接返回;appOptions 映射不变。新增 4 个测试(环境变量、0600 env 文件、认证关闭、组/其他可读 env 文件被拒)。
Evidence: SELF — go build ./...、go vet ./pkg/extension/...、go test ./pkg/extension/... ./internal/config/... -count=1 本地通过;权威以本 PR HEAD CI 为准。
Impact: 仅产品二进制启动路径;认证关闭时行为不变。
Refs: Backend PR #216、#217;实施执行 agent-per-unit(Cursor,fresh_session;首个单元因单元约束禁止物化子模块而 blocked,修正约束后以新单元完成)。