Operator limits: tier selection in settings, no model names for managed workspaces
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 22/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- typescript
Research direction
This depends on #280, which is not merged, so confirm that work lands first. Start with the review-settings routes and the settings form, then the copy in src/copy/, the place where credentials are masked in results, and the comment-publishing path for Diff and Dynamic runs. Done means test cases T01 to T09 pass, including the scan that finds no tier model id in any managed-workspace output.
Written by the indexing model from the issue text.
Description
Part of #268. Depends on #280.
Problem
With managed tiers (#280) a workspace on the operator's key chooses a level, not a model. The review settings still show model fields, and models can leak through places nobody designed to show them: a run's log tail, an error message, a published comment.
Behavior
- Settings form. For a workspace whose key mode is
managed, the project and workspace-default review settings replace the model, fallback model and Dynamic model fields with one Quality choice: Low, Medium, High. Each level is described in a sentence by speed and depth only ("faster, lighter" … "slower, deeper"); never by model, vendor or cost. The three descriptions and the labels are copy insrc/copy/. For other workspaces nothing changes. - API. The review-settings routes return and accept
modelTierfor a managed workspace and do not return model fields for it; they refuse a model field in a write from a managed workspace's member with the stable codeMODEL_MANAGED_BY_INSTANCE. - No leaks. Before a result, a log tail or an error message of a job that ran on a managed workspace is stored, every configured tier model id (all of them, not only the one used) is removed (replaced by
[model]), in the same place the app masks credentials in results. The Runs view never shows a model for such a run. - Published text. A Diff or Dynamic review comment for a managed job contains no model id. If PR-Agent's output carries one, the runner removes or the configuration disables it; a test pins the comment of a fake run.
- The instance admin's view of the Runs and of the settings is unchanged (the admin is the operator).
Scope
Settings form and routes for the managed case, completion-time redaction, comment check, copy, docs, tests.
Out of scope
Choosing which models back the tiers, tier descriptions beyond speed and depth, per-tier limits.
Test cases
| ID | kind | level | case | expected |
|---|---|---|---|---|
| T01 | behavior | ui | managed workspace opens project review settings | one Quality choice (Low/Medium/High); no model field |
| T02 | regression | ui | own-key workspace | the model fields exactly as before |
| T03 | security | unit | copy for the three levels | no model name, vendor or cost; speed and depth wording only (a test scans the strings) |
| T04 | negative | integration | managed member PUTs model |
refused MODEL_MANAGED_BY_INSTANCE |
| T05 | security | integration | a job result and log tail containing a tier model id | stored with [model]; every tier id is removed, not only the used one |
| T06 | security | integration | error message of a managed run containing a model id | redacted before storage and display |
| T07 | security | integration | run list, run detail, usage page and settings API of a managed workspace | no tier model id anywhere (search) |
| T08 | security | integration | published comment of a fake Diff and Dynamic run on a managed workspace | no model id |
| T09 | behavior | integration | instance admin | still sees everything it saw before |
- Dominant language
- TypeScript
- Stars
- 0
- Forks
- 1
- Avg merge
- 1h 18m
- Merged PRs (30d)
- 186
Getting set up
- Ships a Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from ExpidetGames/code-reviewer
-
area: app type: bug
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
ExpidetGames/code-reviewer#308 ·
Maintainers usually reply within 1 day
-
type: docs
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
ExpidetGames/code-reviewer#94 ·
Maintainers usually reply within 1 day
-
area: app post-mvp type: feature
Difficulty 5/5 Over a week Newbie friendliness 12/100
ExpidetGames/code-reviewer#339 ·
Maintainers usually reply within 1 day
-
area: runner post-mvp type: feature
Difficulty 5/5 Over a week Newbie friendliness 18/100
ExpidetGames/code-reviewer#338 ·
Maintainers usually reply within 1 day
-
area: runner post-mvp type: feature
Difficulty 5/5 Over a week Newbie friendliness 12/100
ExpidetGames/code-reviewer#337 ·
Maintainers usually reply within 1 day
All issues in ExpidetGames/code-reviewer
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
xdjs/MusicNerdWeb#1532 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
sebastian-software/ardo#352 ·
Maintainers usually reply within 1 day
-
@react95/core good first issue
Difficulty 1/5 Under an hour Newbie friendliness 88/100
Maintainers usually reply within 3 days
-
@shikijs/stream: `ShikiStreamTokenizer.clone()` shares its `tokensStable` array with the originalPossibly taken @xyrolle claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 6 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day