Skip to content

feat(auth): M0A.5c password-only 切换 - #90

Open
wangjk9527 wants to merge 4 commits into
datagallery-lab:mainfrom
wangjk9527:cursor/m0a5c-on-m0a5b
Open

feat(auth): M0A.5c password-only 切换#90
wangjk9527 wants to merge 4 commits into
datagallery-lab:mainfrom
wangjk9527:cursor/m0a5c-on-m0a5b

Conversation

@wangjk9527

@wangjk9527 wangjk9527 commented Jul 28, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Completes M0A.5c password-only: remove API/Web/Metadata/test development identity bypasses (DATAFOUNDRY_AUTH_MODE switch, X-Dev-Token, /api/v1/dev/*, default/dev user).
  • Native deploy defaults to loopback; ensureDeploymentEnvironment strips legacy DATAFOUNDRY_AUTH_MODE / NEXT_PUBLIC_DATAFOUNDRY_AUTH_MODE from upgraded .env.
  • API ignores leftover DATAFOUNDRY_AUTH_MODE=password (compat) and rejects removed modes such as dev.
  • CI adds test:password-only gate; public docs drop removed development-token / auth-mode switch wording (architecture overview aligned).
  • Fix: DTC Growth builtin datasource unit test seeds a verified identity via createVerifiedTestIdentity (FK failure after removing upsertDevUser).

@wangjk9527
wangjk9527 force-pushed the cursor/m0a5c-on-m0a5b branch 2 times, most recently from 9766f16 to 677bbdd Compare July 28, 2026 07:18
移除 API/Web/Metadata 与测试中的开发身份旁路,原生部署默认 loopback,
升级路径剥离旧 AUTH_MODE,并加入 password-only 扫描门禁与文档对齐。
补充升级失败排障、TUI 正式态入口与 auth/status 接口说明。
MySQL 要求 SET TRANSACTION READ ONLY 在事务开始之前执行;
先前 beginTransaction 在前会导致只读查询失败。
删除 docs/superpowers、docs/plans、docs/engineering 等未纳入 mkdocs nav 的设计草稿与工程备忘,减少公开文档噪音。

@iancaoo iancaoo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

两处真实运行时缺陷:scripts/smoke-task-state.mjs:16scripts/verify-tools/task-collab-tools.mjs:23const userId = "dev-user" 换成了 const resourceId = userId,但这两个文件都没有 import createVerifiedTestIdentity、也没定义 userId。我在 PR 分支的临时 worktree 里实跑确认:两者在模块加载阶段就抛 ReferenceError: userId is not defined,脚本完全跑不起来。

这两条不在 CI core-smoke-tests 里(smoke:task-state / verify-tools 都没进 CI step),password-only-cutover.test.mjs 的门禁只做源码子串/正则检查不做运行,node --check 又只查语法不查绑定,所以 CI 仍是绿的——但脚本对任何手动跑的人是坏的。这和 #83/#88node --check 门禁想挡的“看起来迁移完、实际跑不了”是同一类回归。建议合并前补一个 userId 来源(最省事是复用 createVerifiedTestIdentity,和其它 smoke 一致),或直接把 resourceId 改成一个 randomUUID()

Comment thread scripts/smoke-task-state.mjs Outdated
Comment thread scripts/verify-tools/task-collab-tools.mjs Outdated

@iancaoo iancaoo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

两处真实运行时缺陷:scripts/smoke-task-state.mjs:16scripts/verify-tools/task-collab-tools.mjs:23const userId = "dev-user" 换成了 const resourceId = userId,但这两个文件都没有 import createVerifiedTestIdentity、也没定义 userId。我在 PR 分支的临时 worktree 里实跑确认:两者在模块加载阶段就抛 ReferenceError: userId is not defined,脚本完全跑不起来。

这两条不在 CI core-smoke-tests 里(smoke:task-state / verify-tools 都没进 CI step),password-only-cutover.test.mjs 的门禁只做源码子串/正则检查不做运行,node --check 又只查语法不查绑定,所以 CI 仍是绿的——但脚本对任何手动跑的人是坏的。这和 #83/#88node --check 门禁想挡的“看起来迁移完、实际跑不了”是同一类回归。建议合并前补一个 userId 来源(最省事是复用 createVerifiedTestIdentity,和其它 smoke 一致),或直接把 resourceId 改成一个 randomUUID()

Comment thread scripts/smoke-task-state.mjs Outdated
Comment thread scripts/verify-tools/task-collab-tools.mjs Outdated

@iancaoo iancaoo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

两处真实运行时缺陷:scripts/smoke-task-state.mjs:16scripts/verify-tools/task-collab-tools.mjs:23const userId = "dev-user" 换成了 const resourceId = userId,但这两个文件都没有 import createVerifiedTestIdentity、也没定义 userId。我在 PR 分支的临时 worktree 里实跑确认:两者在模块加载阶段就抛 ReferenceError: userId is not defined,脚本完全跑不起来。

这两条不在 CI core-smoke-tests 里(smoke:task-state / verify-tools 都没进 CI step),password-only-cutover.test.mjs 的门禁只做源码子串/正则检查不做运行,node --check 又只查语法不查绑定,所以 CI 仍是绿的——但脚本对任何手动跑的人是坏的。这和 #83/#88node --check 门禁想挡的“看起来迁移完、实际跑不了”是同一类回归。建议合并前补一个 userId 来源(最省事是复用 createVerifiedTestIdentity,和其它 smoke 一致),或直接把 resourceId 改成一个 randomUUID()

Comment thread scripts/smoke-task-state.mjs Outdated
Comment thread scripts/verify-tools/task-collab-tools.mjs Outdated

@iancaoo iancaoo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

两处真实运行时缺陷:scripts/smoke-task-state.mjs:16scripts/verify-tools/task-collab-tools.mjs:23const userId = "dev-user" 换成了 const resourceId = userId,但这两个文件都没有 import createVerifiedTestIdentity、也没定义 userId。我在 PR 分支的临时 worktree 里实跑确认:两者在模块加载阶段就抛 ReferenceError: userId is not defined,脚本完全跑不起来。

这两条不在 CI core-smoke-tests 里(smoke:task-state / verify-tools 都没进 CI step),password-only-cutover.test.mjs 的门禁只做源码子串/正则检查不做运行,node --check 又只查语法不查绑定,所以 CI 仍是绿的——但脚本对任何手动跑的人是坏的。这和 #83/#88node --check 门禁想挡的“看起来迁移完、实际跑不了”是同一类回归。建议合并前补一个 userId 来源(最省事是复用 createVerifiedTestIdentity,和其它 smoke 一致),或直接把 resourceId 改成一个 randomUUID()

Comment thread scripts/smoke-task-state.mjs Outdated
Comment thread scripts/verify-tools/task-collab-tools.mjs Outdated
@iancaoo
iancaoo dismissed stale reviews from themself July 28, 2026 12:20

duplicate submission (network retry); keeping first copy

smoke-task-state 与 task-collab-tools 在去掉 dev-user 后误引用未定义的 userId,
模块加载即 ReferenceError。这两处脚本只需 Mastra resourceId,改为 randomUUID()。
@wangjk9527

Copy link
Copy Markdown
Collaborator Author

评审意见处理(bc62660

意见 判定 处理
scripts/smoke-task-state.mjsuserId 未定义导致 ReferenceError 成立 改为 randomUUID();commit bc62660
scripts/verify-tools/task-collab-tools.mjs:同上 成立 同上

说明:评审中同一问题因重复提交出现多条 inline/review,实质仅上述两处。无其他独立评审意见。

验证:smoke:task-state / task-collab-tools / test:auth-foundation / test:password-only / @datafoundry/tui test 均通过。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants