chore(review): remove AutonomyLevel.suggest/.propose and fix a stale milestone-match comment - #4730
Conversation
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
gittensory-ui | 33474d9 | Commit Preview URL Branch Preview URL |
Jul 10 2026, 09:59 PM |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #4730 +/- ##
=======================================
Coverage 94.22% 94.22%
=======================================
Files 440 440
Lines 38714 38714
Branches 14103 14103
=======================================
Hits 36478 36478
Misses 1576 1576
Partials 660 660
🚀 New features to boost your workflow:
|
|
Caution 🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥 🛑 Gittensory review result - fixes requiredReview updated: 2026-07-10 22:24:59 UTC
🛑 Suggested Action - Manual Review
Review summary Nits — 7 non-blocking
CI checks failing
Review context
Contributor next steps
Signal definitions
Visual preview
Click any thumbnail to open the full-size screenshot. Before = production · After = this PR's preview deploy. 🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed 💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →. Checked by Gittensory, a quiet PR intelligence layer for OSS maintainers.
|
…milestone-match comment (#4620) Both values were 100% behaviorally identical to "observe" since day one -- isActingAutonomyLevel/autonomyRequiresApproval only ever distinguished acting (auto/auto_with_approval) from everything else, so the doc comment's promise ("surface guidance/concrete proposals without executing") was never implemented. No stored config used either value (both already degraded to observe's no-op behavior), so this is a pure type-surface removal with no runtime behavior change for any existing repo. Updates the mirrored engine-package copy + the UI's own local type/dropdown/description text in the same commit. Also fixes ProjectMilestoneMatchMode's doc comment, which still claimed "auto" behaves identically to "suggest" until #3185 wires real milestone attachment -- #3185 shipped (verified: maybeSuggestMilestoneMatchForPr's "auto" branch genuinely calls attachToMilestone/attachToProject), the comment was just never updated to match.
fb1515d to
33474d9
Compare
…uggest removal (#4620) test/unit/config-templates.test.ts still exercised the removed "suggest" level, which normalizeAutonomyPolicy now silently drops as invalid -- switch both fixtures to auto_with_approval, a still-valid level distinct from the sibling "auto" action in the same assertion.
Summary
This is a decision-and-partial-implementation PR for #4620, which explicitly required a wire-or-remove call per item before any code changed. Verified every item against the actual current source (not just the issue's own characterization) — this caught two real mischaracterizations, documented below.
Decisions (all 9 items)
AutonomyLevel.suggest/.proposeisActingAutonomyLevel/autonomyRequiresApproval) only ever distinguished acting from non-acting, so both were 100% identical toobserve. No stored config uses either value — zero behavior change for any existing repo.checkRunDetailLevel.deepbuildCheckRunAnnotations,formatCheckRunOutputinsrc/rules/advisory.ts) only branch on"minimal"vs everything else —"standard"/"deep"produce byte-identical output. The system's own design philosophy (formatCheckRunOutput's summary text: "Gittensory public check output is intentionally minimal. Detailed maintainer context is available only through private API/MCP surfaces") argues against ever wiring more public detail. Deferred to a follow-up PR — real footprint across 6 files (types.ts, openapi/schemas.ts, github/app.ts, api/routes.ts, rules/advisory.ts, db/repositories.ts), decision already made here so it's a fast, low-risk mechanical follow-up.autoProjectMilestoneMatch: "auto"maybeSuggestMilestoneMatchForPr's"auto"branch genuinely callsattachToMilestone/attachToProject— this is a real, working, distinct behavior today. The only actual bug was a stale doc comment never updated after #3185 merged. Fixed in this PR.firstTimeContributorGracecopycatGateModequalityGateMode: "block"buildQualityGateWarning(src/rules/advisory.ts) always returns aseverity: "warning"finding regardless of mode, and the finding code isn't inisConfiguredGateBlocker's allowlist either — this is a deliberate two-layer safety clamp (a fuzzy readiness score should never hard-block a PR), not forgotten dead code. Reversing it would be a real product decision about whether quality-gate should ever be allowed to block, not a cleanup.reviewCheckMode: "visible""visible"and"required"deliberately produce identical gittensory-side behavior by design; the value exists to signal operator intent, not to drive code. Not dead code.ScreenshotTableGateAction: "advisory""advisory"skips only the auto-close path (screenshotTableMatchonly forms whenaction === "close"), while the gate still evaluates and reports. A real, working, intentionally-scoped alternate mode (#4535), just mischaracterized by #4620's summary as a "no-op."gateCheckModeNet: 5 of 9 items were legitimate, deliberate design decisions already made elsewhere (not dead code) — only 2 are genuine removals, and 1 was a stale-comment bug rather than a config-surface issue at all. Recording this here so the next person doesn't re-litigate the same research.
What's actually in this PR
"suggest"/"propose"fromAutonomyLevel(src/types.ts),AUTONOMY_LEVELS(src/settings/autonomy.ts), the zod validator (src/api/routes.ts), the mirrored engine-package copies, and the maintainer-settings UI's local type/dropdown/description text.ProjectMilestoneMatchMode's stale doc comment."suggest"/"propose"as valid-but-arbitrary non-acting examples — replaced with"observe"(the value they were always behaviorally equivalent to) or another still-valid level, preserving each test's actual intent.Follow-up (tracked, decision already made, not blocking this PR): remove
checkRunDetailLevel.deepin a separate PR given its wider file footprint.Closes #4620
Scope
type(scope): short summaryConventional Commit format, for examplefix(api): restore profile access checks.CONTRIBUTING.mdand does not reintroduce GitHub Pages, VitePress,site/, orCNAME.Closes #123) — a linked open issue is required for every contributor PR.Validation
git diff --checknpm run actionlintnpm run typechecknpm run test:coveragelocally;codecov/patchrequires ≥99% coverage of the lines AND branches you changed (aim for 100% on your diff so CI variance does not fail near the threshold). Global coverage is a non-blocking trend with a loose 90% backstop, not the gate.npm run test:workersnpm run build:mcpnpm run test:mcp-packnpm run ui:openapi:check(N/A — no API/OpenAPI schema change; enum shrink is TS-level only)npm run ui:lintnpm run ui:typechecknpm run ui:testnpm run ui:buildnpm audit --audit-level=moderatenpm run engine-parity:drift-check— clean; caught and fixed a real drift on the first pass (a comment-text mismatch between the twoautonomy.tscopies).If any required check was skipped, explain why:
ui:test/ui:buildweren't run locally (onlyui:lint/ui:typecheck, both clean) given no runtime UI behavior changed (dropdown option count only); CI will run the full UI suite.test:coveragewas run targeted on the 5 affected test files (319/319 passing) rather than the full unsharded suite.Safety
hasGenericSecretAssignmentdetector directly — clean.)autonomyAPI field already accepted arbitrary strings server-side via allowlist-drop normalization)UI Evidencesection below. See below — minor, text-only settings-panel change.UI Evidence
Minor text-only change to the maintainer settings panel's autonomy dropdown (fewer options:
observe → auto_with_approval → autoinstead ofobserve → suggest → propose → auto_with_approval → auto) and its description text. No screenshot captured — purely a dropdown-option-count reduction with the exact same visual layout, not a rendering/state change.Notes
autoProjectMilestoneMatchwas actually already fixed by a since-shipped issue;ScreenshotTableGateAction.advisorywas never actually dead). Verifying against live source rather than trusting the issue text caught both before any wrong code change happened.