Skip to content

feat(config): show member setting provenance - #1474

Merged
SaulMoro merged 7 commits into
Tencent:mainfrom
huong8373tt-beep:feat/doctor-member-setting-provenance-1459-pr3
Oct 28, 2026
Merged

SaulMoro merged 7 commits into
Tencent:mainfrom
huong8373tt-beep:feat/doctor-member-setting-provenance-1459-pr3

Conversation

@huong8373tt-beep

@huong8373tt-beep huong8373tt-beep commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Summary

This is the third dependent PR for #1459, building on #1468 and #1473.

  • Add memberSettings provenance to teamai doctor --json.
  • Show the effective value, winning level, source file or environment variable, and lower-precedence values for supported member settings.
  • Use the same runtime resolvers as pull/update, including the deciding user install's team for machine-wide updatePolicy and autoCompactTokens.
  • Preserve literal dotted map-entry names in the report.
  • Keep the report read-only and preserve existing doctor checks and notes.

Validation

  • npm run build — passed on rebased head b18e0807.

  • npm run typecheck — passed.

  • npm run lint — passed with 0 warnings and 0 errors.

  • git diff --check upstream/main...HEAD — passed.

  • Focused resolver regressions — 2 passed:

    • reports the same winners as runtime resolvers across user, environment, and workflow-map settings;
    • uses the deciding user install team and exposes workspace machine-wide values as unused.
  • Built CLI end-to-end (isolated HOME and workspace, user and workspace teams intentionally different):

    $ node dist/cli.js doctor --json
    TEAMAI_1474_REAL_CLI_OK
    updatePolicy={"key":"updatePolicy","effective":"skip","source":{"level":"team","value":"skip","file":"...\\user-team\\teamai.yaml"},"levels":[{"level":"team","value":"skip"},{"level":"default","value":"auto"},{"level":"scope","value":"auto","used":false}]}
    autoCompactTokens={"key":"autoCompactTokens","effective":90000,"source":{"level":"team","value":90000,"file":"...\\user-team\\teamai.yaml"},"levels":[{"level":"team","value":90000},{"level":"scope","value":50000,"used":false}]}
    

    The command exited 0 and confirmed that doctor follows the user-install team while retaining the workspace values as explicitly unused levels.

  • Full Windows npm test reached a terminal result: 16,292 passed, 1,101 failed, 193 skipped. The failures are dominated by pre-existing Windows/POSIX fixture incompatibilities (for example slash normalization in workspace-children and spawn sleep ENOENT); the doctor provenance cases and focused resolver regressions pass. Linux/macOS CI is running on the rebased head.

Disclosure

Slai Agent Runtime assisted with investigation, implementation, and test execution. The account owner reviewed and authorized this contribution and remains responsible for the submission.

Depends on #1473 and continues #1459 step 3.

@github-actions

Copy link
Copy Markdown
  • [P1 blocking] Refresh deletes user-scope settings and roles — src/config.ts:197: With a user-scope config and no role-assignment file, resolved is the same object as config. Deleting member settings and primaryRole therefore deletes them from both objects; Object.assign(config, resolved) cannot restore them. An ordinary user-scope pull loses explicit settings and its selected role in memory. Copy the resolved state before clearing the destination.

  • [P1 blocking] Missing real-CLI verification record — PR description, “Validation”: This diff changes runtime configuration loading, saving, and doctor output, but the description records only build, type-check, lint, and regression suites—not a representative end-to-end / real-CLI run after building. This violates the first Code Review Rules item. Adding an e2e test does not document that it passed.

  • [P2 non-blocking] Ignored machine values are reported as effective — src/doctor.ts:254: The report reads raw YAML rather than the validated machine settings. For example, recallEnabled: 'yes' is explicitly ignored by the new loader and regression test, yet doctor reports 'yes' as the effective machine value. Use the same validation as runtime loading.

  • [P2 non-blocking] Effective model aliases omit inherited entries — src/doctor.ts:266: With machine aliases {a: 'claude-sonnet-4'} and scope aliases {b: 'claude-opus-4'}, applyMachineSettings produces both entries, but doctor reports only the scope map as effective. Report the merged effective map while retaining each level’s original values.

  • [P2 non-blocking] Supported workflow defaults disappear from the report — src/doctor.ts:243: When workflow settings are unset, the report omits workflows.max_parallel, workflows.auto_approve, and workflows.allow.network. The existing schema documents their defaults as 1, false, and allowed, respectively. Include those default sources so unset supported settings still show their effective values.

  • [P2 non-blocking] Team provenance points to the repository identifier, not the source file — src/doctor.ts:259: The team configuration is loaded from ctx.localConfig.repo.localPath/teamai.yaml, but provenance uses team.repo. For a repository URL such as https://example.test/team.git, this produces https://example.test/team.git/teamai.yaml instead of the local file actually read. Build the source path from ctx.localConfig.repo.localPath.

Review was read-only; no PR code was run, built, or installed.

@github-actions

Copy link
Copy Markdown
  • [P1 blocking] Missing real-CLI verification record — PR description, “Validation”: The description still lists only build, type-check, lint, diff checks, and regression suites. This runtime-changing PR requires one recorded end-to-end / real-CLI run after building under the first Code Review Rules item. The added e2e assertions do not establish that such a run passed.

  • [P2 non-blocking] Team usage-report policy is missing from provenance — src/doctor.ts:238: teamValue never handles usageReportEnabled, although the existing config schema explicitly says this setting falls back to the team’s usageReport. When the team disables reporting and neither scope nor machine overrides it, doctor incorrectly reports effective: true from the default. Include the team policy in this setting’s levels.

  • [P2 non-blocking] Promoting machine settings discards valid workflow siblings — src/config.ts:567: With machine workflow tools { default: 'codex', broken: 42 }, loadMemberSettings accepts default and ignores broken, but readSettingsOnlyConfig rejects the entire workflow object. Saving a fresh user install therefore deletes the valid default too. Reuse the machine loader’s per-key validation when carrying settings forward.

Resolved: The five earlier code findings—refresh aliasing, invalid machine-value reporting, alias merging, workflow defaults, and team source paths—are fixed in the current diff.

Review was read-only; no PR code was run, built, or installed.

@SaulMoro

Copy link
Copy Markdown
Collaborator

This was generated by AI during triage.

@huong8373tt-beep #1473 landed on main (292e2af, with #1468's commits), and this branch now conflicts with main. Could you rebase it onto main? We will review it at the new head.

While you are there: #1477, which builds on this branch, lists five cases where memberSettingsReport shows a different value from the one in effect. They are in this PR's code, so they fit here:

  • updatePolicy and autoCompactTokens: since fix(update,pull): let one scope decide auto-update and auto-compact, the user scope when there is one #1475 the user scope decides both when there is one, but in a workspace on a machine with a user install the report shows the workspace's own value as the winner.
  • An empty TEAMAI_AI_TOOL=, or an empty scope ai.tool, shows as the winner, though memberTools skips both.
  • TEAMAI_RECALL_DISABLED is not taken into account for recallEnabled.
  • usageReportEnabled is not mapped to the team's usageReport, so the report contradicts the usage note.
  • workflows.allow.env, and workflows.tools.<name> other than default, are missing from its key list.

@huong8373tt-beep
huong8373tt-beep force-pushed the feat/doctor-member-setting-provenance-1459-pr3 branch from f1aed7a to 2a6ba80 Compare October 27, 2026 21:43
@huong8373tt-beep

Copy link
Copy Markdown
Contributor Author

Rebased #1474 onto merged #1473 / current main (292e2afe) and force-pushed the rebased provenance-only branch at 2a6ba802.

I also addressed the remaining P2 from the review: usageReportEnabled now includes the team usageReport policy in its provenance chain, with a regression assertion.

Validation on the rebased head:

  • npm run build — passed
  • npm run typecheck — passed
  • npm run lint -- src/doctor.ts — passed
  • git diff --check upstream/main...HEAD — passed
  • the doctor regression suite has 68 passing tests; its two failures are the same existing Copilot-hook fixture failures reproduced on clean current main (67 pass / 2 fail), so they are not attributed to this PR.

The PR is now a small, current-main-only doctor provenance diff.

@github-actions

Copy link
Copy Markdown
  • [P1 blocking] Missing real-CLI verification record — PR description, “Validation”: This PR changes doctor --json runtime output, but records only build, type-check, lint, diff checks, and regression suites. The first Code Review Rules item requires a recorded end-to-end / real-CLI verification after building. Document one representative command and its passing result before merge.

Resolved: The earlier doctor findings concerning machine-value validation, merged aliases, workflow defaults, local team source paths, and team usage-report policy are fixed.

The earlier configuration-refresh and settings-promotion findings concern changes absent from the specified diff; they are not re-raised. No additional confident code findings.

Review was read-only; no PR code was run, built, or installed.

@SaulMoro SaulMoro left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

This was generated by AI during triage.

Reviewed at 2a6ba80. The rebase is clean and usageReportEnabled now follows the team usageReport policy. Four of the five cases from our earlier comment still reproduce with the built CLI, and the body has no real-CLI record.

Blocking

  • [P1 blocking] updatePolicy and autoCompactTokens name the wrong winner when the machine has a user install. In a workspace with autoCompactTokens: 50000 on a machine whose user scope sets 100000, doctor --json reports 50000 from the workspace as the winner, but a workspace pull writes the user scope's value (autoCompactWindow: 133000 in ~/.claude/settings.json). Since #1475, the user scope decides both when there is one (update.ts:691 for updatePolicy; read, not run, as teamai update needs the registry).
  • [P1 blocking] An empty AI tool shows as the winner. TEAMAI_AI_TOOL= or an empty scope ai.tool is reported as the winner with effective: "", while the AI call skips both and runs on the next level.
  • [P1 blocking] Env kill switches are ignored. With TEAMAI_RECALL_DISABLED=1 (and no other level turning recall off), the report shows recall true from the machine file, while recall status says disabled. TEAMAI_CONTRIBUTE_HINT_DISABLED is ignored the same way, and TEAMAI_MR_HINT_DISABLED goes through the same code (read, not run).
  • [P1 blocking] Map entries are missing. workflows.tools.implementer and workflows.allow.env do not appear, and modelAliases is one row sourced from the scope although its value includes the machine's aliases.
  • [P1 blocking] No real-CLI record in the body. This changes runtime output; please paste one representative teamai doctor --json run from the built CLI.

Suggested fix for the first three: take effective from the resolvers the runtime uses and keep the tables only for the levels list: isRecallEnabled(ctx.localConfig, team ?? {}), isContributeHintEnabled, isMrHintEnabled, isUsageReportEnabled; resolveEffectiveUpdatePolicy / resolveAutoCompactTokens on the deciding config (loadLocalConfig() ?? ctx.localConfig); memberTools(ctx.localConfig)[0] for ai.tool. A test that every key's effective equals its levels[0].value would catch the next one.

Non-blocking

  • [P3 nit] codexTrustEnabled and coAuthorEnabled have no default row, unlike the other keys.

Checks: npx tsc --noEmit and npm run lint exit 0; doctor.test.ts passes 70/70, also with a symlinked TMPDIR, and the new test fails on main. The types.test.ts failure in CI is on main too (the sessions key from #1478 is not classified yet), not this PR's.

#1477 builds on this report and renders it as text, so it should rebase onto this branch once these land.

@SaulMoro
SaulMoro self-requested a review October 27, 2026 21:55
hz89Dev added a commit to hz89Dev/teamai-cli that referenced this pull request Oct 27, 2026
@github-actions

Copy link
Copy Markdown
  • [P1 blocking] Missing real-CLI verification record — PR description, “Validation”: This diff changes runtime behavior in doctor --json and recall resolution, but the description records only build, type-check, lint, diff checks, and regression suites. The first Code Review Rules item requires an end-to-end / real-CLI verification record. Document one representative command and its passing result after building.

Resolved: Earlier doctor findings concerning machine-value validation, inherited aliases, workflow defaults, local team source paths, and team usage-report policy are addressed. The configuration-refresh and settings-promotion changes are absent from the specified diff and are not re-raised.

No additional confident code findings. Review was read-only; no PR code was run, built, or installed.

@SaulMoro

SaulMoro commented Oct 27, 2026 •

Copy link
Copy Markdown
Collaborator

This was generated by AI during triage.

@huong8373tt-beep Thanks for 75c98ee. This branch now conflicts with main in src/types.ts (#1464 and #1483 changed it), so CI cannot run on it. Could you rebase onto main and add one representative real-CLI run to the body, for example teamai doctor --json from the built CLI showing a member setting's effective value and levels? We will review the new head once CI runs there.

@huong8373tt-beep
huong8373tt-beep force-pushed the feat/doctor-member-setting-provenance-1459-pr3 branch from 75c98ee to 556564f Compare October 27, 2026 23:21
@github-actions

Copy link
Copy Markdown
  • [P1 blocking] Missing real-CLI verification record — PR description, “Validation”: This diff changes doctor --json runtime output, but the description records only build, type-check, lint, diff checks, and regression suites. The first Code Review Rules item requires a recorded end-to-end / real-CLI verification after building. Document one representative command and its passing result.

Resolved: Earlier doctor findings concerning machine-value validation, inherited aliases, workflow defaults, local team source paths, and team usage-report policy are addressed. The configuration-refresh and settings-promotion changes are absent from the specified diff and are not re-raised.

No additional confident code findings. Review was read-only; no PR code was run, built, or installed.

hz89Dev added a commit to hz89Dev/teamai-cli that referenced this pull request Oct 27, 2026
@SaulMoro

Copy link
Copy Markdown
Collaborator

This was generated by AI during triage.

Re-reviewed at 556564f. Thanks, most of the earlier findings are fixed. Checked with the built CLI, these now match what runs:

  • an empty ai.tool, from the environment or a scope;
  • TEAMAI_RECALL_DISABLED and TEAMAI_CONTRIBUTE_HINT_DISABLED, which agree with recall status;
  • one row per entry for workflows.tools.*, workflows.allow.env and modelAliases.*;
  • the default rows;
  • the updatePolicy / autoCompactTokens winner when the user install is on the same team.

Blocking

  • [P1 blocking] updatePolicy and autoCompactTokens use the workspace's team, not the deciding install's.
    • Setup: a user install of team a (autoUpdate: false, sharing.autoCompact.tokens: 90000) and a workspace of team b (tokens: 70000), with no member values.
    • The workspace pull writes autoCompactWindow: 123000, which is team a's 90000. Main does the same.
    • Workspace doctor --json reports autoCompactTokens 70000 from team b's teamai.yaml, and updatePolicy "auto" from the default. update takes team a's skip (update.ts:691; read, not run, as it needs the registry).
    • Cause: src/doctor.ts:340-343 passes ctx.teamConfig (the workspace's team) to both resolvers and to the team level. pull.ts:4132 and update.ts:691 load the team config from the user install's repo.localPath.
    • Related, from [feat] Read every member setting in one order: environment, this scope, this machine, the team #1459 ("says when this scope's own value is not used"): when the user install decides, the workspace's own updatePolicy / autoCompactTokens no longer appear anywhere in the report. A member who set them in the workspace can't tell why they have no effect.
    • Suggested fix: when the user install decides, load its team config for these two keys, and keep the workspace's value as a level marked unused.
  • [P1 blocking] No real-CLI record in the body. This changes doctor --json output. Please paste one representative run from the built CLI, for example a workspace with a machine value and a scope value, showing effective and levels.

Non-blocking

  • [P3 nit] src/types.ts:283 only rewords a doc comment ("env kill switch" to "environment kill switch"), which is unrelated to this change.

Checks: tsc and lint exit 0. doctor.test.ts passes 70/70, also with a symlinked TMPDIR. CI is green so far at this head.

#1477 renders this report and now conflicts in src/doctor.ts. If the fix adds a field or a level name, #1477 will need to follow it.

@SaulMoro

Copy link
Copy Markdown
Collaborator

This was generated by AI during triage.

@huong8373tt-beep One more for the same fix round, raised on #1477 by its CI review and by @hz89Dev, and confirmed in this PR's code at 556564f. addModelAliasReportKeys builds a row key modelAliases.<name>, and levelsFor (src/doctor.ts:299) splits that key on .. An alias whose name contains a dot, such as gpt-5.1 or gateway.v1, is read as a deeper path, finds no level, and drops out of the report. A workflows.tools.<name> entry with a dot in its name is dropped the same way. Version-style alias names are common, so please carry the path as parts (or look up the map entry by its literal name) rather than splitting the joined key.

@huong8373tt-beep

Copy link
Copy Markdown
Contributor Author

Thanks — I confirmed both new P1s at 556564fb, plus the dotted map-entry case. I am fixing this round in #1474 rather than leaving it to #1477: (1) resolve updatePolicy / autoCompactTokens against the deciding user install's team config and retain a workspace-local value as an explicitly unused level; (2) carry report paths as parts so literal dotted alias/workflow names do not disappear. I will add regression coverage and put a real built-CLI doctor --json record, including effective and levels, in the PR body before requesting another review. I am not treating the currently running CI as approval.

hz89Dev added a commit to hz89Dev/teamai-cli that referenced this pull request Oct 27, 2026
@huong8373tt-beep
huong8373tt-beep force-pushed the feat/doctor-member-setting-provenance-1459-pr3 branch from 556564f to b18e080 Compare October 28, 2026 00:33
@huong8373tt-beep

Copy link
Copy Markdown
Contributor Author

Rebased onto current main at 2faf53d0 (includes #1483, #1485, and #1487) and pushed the new head b18e0807.

Addressed the two latest blocking findings:

  • updatePolicy and autoCompactTokens now resolve and report against the deciding user install's team configuration; a workspace-local value remains visible in levels with used: false when it is not the runtime winner.
  • Literal dotted map keys such as modelAliases.gateway.v1 and workflows.tools.review.v2 are preserved in the report.

Validation on the rebased head:

  • npm run build — passed
  • npm run typecheck — passed
  • npm run lint — passed
  • git diff --check upstream/main...HEAD — passed
  • Focused resolver regressions — 2 passed
  • Full doctor.test.ts — 69 passed, 2 existing Copilot-hook fixture failures reproduced on this Windows host; they are outside this provenance diff and already reproduce against current main's fixture behavior.

The full Windows npm test also reached a terminal result: 16,292 passed, 1,101 failed, 193 skipped. Its failures are dominated by Windows/POSIX path and spawn sleep fixture incompatibilities (for example workspace-children slash normalization and spawn sleep ENOENT), not the doctor provenance cases. GitHub CI is running the rebased head for Linux/macOS coverage.

I will add the representative built-CLI teamai doctor --json output to the PR description next; the local built CLI verification is the remaining documentation item from the review.

@github-actions

Copy link
Copy Markdown
  • [P1 blocking] Missing real-CLI verification record — PR description, “Validation”: This diff changes doctor --json runtime output, but the description records only build, type-check, lint, diff checks, and regression suites. The first Code Review Rules item requires a recorded end-to-end / real-CLI verification after building. Document one representative command and its passing result.

Resolved: Earlier doctor findings concerning machine-value validation, inherited aliases, workflow defaults, local team source paths, and team usage-report policy are addressed. The configuration-refresh and settings-promotion changes are absent from the specified diff and are not re-raised.

No additional confident code findings. Review was read-only; no PR code was run, built, or installed.

@huong8373tt-beep

Copy link
Copy Markdown
Contributor Author

The PR description is now updated with the requested representative built-CLI record from the rebased head (b18e0807): an isolated HOME/workspace node dist/cli.js doctor --json exited 0 and records both effective and levels for updatePolicy and autoCompactTokens, including the unused workspace levels. The command printed TEAMAI_1474_REAL_CLI_OK.

The latest bot comment's only P1 was the missing record; that requirement is now addressed in the body. CI remains in progress on the rebased head.

@SaulMoro

Copy link
Copy Markdown
Collaborator

This was generated by AI during triage.

Re-reviewed at b18e080. Thanks, everything from the last pass is fixed. Checked with the built CLI:

  • With a user install of team a and a workspace of team b, doctor --json reports updatePolicy skip and autoCompactTokens 90000 from team a, matching what pull writes (autoCompactWindow: 123000). The workspace's own values appear as levels with used: false.
  • modelAliases.gpt-5.1 and workflows.tools.review.v2 appear with the right effective value and levels.
  • The body now has a real-CLI record. The CI review ran before that edit, so its missing-record P1 is out of date.
  • Nothing from the earlier rounds regressed.

One small item left:

  • [P1 blocking] source can name the value the report marks unused.
    • Setup: the user install's team has no sharing.autoCompact, there is no machine autoCompactTokens, and the workspace sets autoCompactTokens: 50000.
    • pull correctly applies nothing.
    • doctor --json reports "source": {"level": "scope", "value": 50000, ..., "used": false} with no effective.
    • source: levels[0] (src/doctor.ts:380) picks the unused level when it is the only one. updatePolicy always has a default level, so only autoCompactTokens hits this.
    • It is the exact case "says when this scope's own value is not used" is for, and a renderer that reads source (feat(config): AI calls, stop pricing, workflow policy and doctor follow every member setting level (#1459) #1477) would show "50000 from the workspace".
    • One-line fix: source: levels.find((level) => level.used !== false).

Non-blocking

  • [P3 nit] decidingTeam = (await loadTeamConfig(userConfig.repo.localPath)) ?? ctx.teamConfig (:281-283) falls back to the workspace's team, while pull applies nothing when that load fails (pull.ts:4134). Dropping the fallback matches runtime.
  • [P3 nit] :340 recomputes machineWideUser from :317.
  • [P3 nit] The src/types.ts:283 comment reword is still in the diff.

Checks: build, tsc and lint exit 0. doctor.test.ts passes 71/71, also with a symlinked TMPDIR. CI was still running at this head when we checked.

For #1477: a level can now carry used: false, and one key can have two scope levels.

@huong8373tt-beep

Copy link
Copy Markdown
Contributor Author

Addressed the remaining P1 at 0851b8e5 and pushed it to this PR.

  • memberSettings[*].source now selects the first level that is not explicitly used: false, so an unused workspace autoCompactTokens: 50000 is not presented as the source when the deciding user install/team yields no effective value.
  • The machine-wide deciding-team fallback now matches pull: if loading the user install's team config fails, doctor does not substitute the workspace team.
  • Added a regression covering the exact no-user-team-policy/no-machine-value case; the report retains the unused scope value in levels, has no effective, and has no source.
  • Removed the unrelated src/types.ts wording-only change.

Validation on 0851b8e5:

  • npm run build passed
  • npm run typecheck passed
  • npm run lint passed
  • git diff --check passed
  • targeted regression: npm exec -- vitest run src/__tests__/doctor.test.ts -t "does not expose an unused machine-wide scope value" — passed
  • full doctor.test.ts: 70 passed; the two remaining failures are the existing Copilot-hook fixture cases previously reproduced independently on this Windows host.

The representative built-CLI doctor --json record remains in the PR description. Thank you for the precise reproduction; please re-review at the new head when convenient.

@github-actions

Copy link
Copy Markdown

No confident findings in the specified diff.

Resolved

  • Missing real-CLI verification: the description now records a built doctor --json run, its output, and exit code 0. This satisfies the representative e2e requirement; an older recorded commit is not blocking.
  • Earlier doctor findings concerning machine-value validation, inherited aliases, workflow defaults, local team source paths, and team usage-report policy are addressed.
  • Configuration-refresh and settings-promotion changes are absent from this diff and are not re-raised.

Review was read-only; no PR code was run, built, or installed.

@SaulMoro SaulMoro left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

This was generated by AI during triage.

Approving at 0851b8e. The last item is fixed: source now skips a level marked used: false (levels.find((level) => level.used !== false)), with a test for a workspace-only autoCompactTokens that the user install ignores. The fallback to the workspace's team when the user install's team cannot load is gone, and the types.ts comment edit is reverted.

Across the rounds, checked with the built CLI:

  • with a user install and a workspace on different teams, updatePolicy and autoCompactTokens match what pull applies, and the workspace's own values show as unused levels;
  • an empty ai.tool and the environment kill switches agree with runtime;
  • map entries (modelAliases.*, workflows.tools.*, workflows.allow.env) get one row each, dotted names included;
  • the default rows are present.

The body has a real-CLI record.

Thanks for working through all of these.

@huong8373tt-beep

Copy link
Copy Markdown
Contributor Author

Thanks, @SaulMoro, for the careful and detailed review. It helped catch several subtle provenance edge cases that the initial implementation missed. I appreciate the guidance and have addressed the latest feedback in the current head; I’ll keep the follow-up work scoped and verified separately.

@SaulMoro

Copy link
Copy Markdown
Collaborator

This was generated by AI during triage.

@huong8373tt-beep #1486 just landed and also changes src/doctor.ts and src/__tests__/doctor.test.ts, so this now conflicts with main in doctor.test.ts. Could you rebase onto main? Our approval stands: once CI passes on the rebased head and the range-diff shows only the conflict resolution, we will merge it.

hz89Dev added a commit to hz89Dev/teamai-cli that referenced this pull request Oct 28, 2026
@huong8373tt-beep
huong8373tt-beep force-pushed the feat/doctor-member-setting-provenance-1459-pr3 branch from 0851b8e to ac45014 Compare October 28, 2026 01:16
@huong8373tt-beep

Copy link
Copy Markdown
Contributor Author

Rebased onto the current main after #1486 landed, resolving the doctor.test.ts conflict with only the intended mainline import/fixture changes. The updated head is ac45014e; the provenance implementation and regression coverage are unchanged. Working tree is clean and the branch was force-pushed. Please re-run CI/review on this rebased head; the existing approval remains noted.

@github-actions

Copy link
Copy Markdown

No confident findings in the specified diff.

Resolved

  • Missing real-CLI verification: the description records a built doctor --json run, its output, and exit code 0. This satisfies the representative e2e requirement; an older recorded commit is not blocking.
  • Earlier doctor findings concerning machine-value validation, inherited aliases, workflow defaults, local team source paths, and team usage-report policy are addressed.
  • Configuration-refresh and settings-promotion changes are absent from this diff and are not re-raised.

Review was read-only; no PR code was run, built, or installed.

@SaulMoro
SaulMoro merged commit a6fd4a0 into Tencent:main Oct 28, 2026
31 of 32 checks passed
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.

3 participants