feat(review): add improvementSignal converged-feature activation - #4753
Conversation
Config-as-code foundation for the PR improvement signal (#4738, sub-issue of epic #4737): registers improvementSignal as a standard ConvergedFeatureKey alongside rag/reputation/unifiedComment/safety/grounding/e2eTests, resolved through the existing shared feature-activation core rather than a bespoke wire file. Global default OFF via GITTENSORY_REVIEW_IMPROVEMENT_SIGNAL, with a per-repo features.improvementSignal true/false/null override in .gittensory.yml layered on top of that kill-switch, mirroring the e2eTests plain-symmetric-override shape (no force-on/force-off asymmetry, since this is a read-only advisory signal, not a security control). This is activation wiring only -- no tier reads the resolved value yet; sibling sub-issues build the deterministic, LLM, and panel behavior that will gate on it.
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
gittensory-ui | 61bd85d | Commit Preview URL Branch Preview URL |
Jul 10 2026, 11:03 PM |
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #4753 +/- ##
=======================================
Coverage 94.22% 94.22%
=======================================
Files 440 441 +1
Lines 38715 38716 +1
Branches 14103 14104 +1
=======================================
+ Hits 36479 36480 +1
Misses 1576 1576
Partials 660 660
🚀 New features to boost your workflow:
|
|
Warning 🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 ⏸️ Gittensory review result - manual review recommendedReview updated: 2026-07-10 23:17:26 UTC
⏸️ Suggested Action - Manual Review
Review summary Nits — 2 non-blocking
Linked issue satisfactionPartially addressed 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.
|






Summary
signal (sub-issue of epic Epic: PR improvement signal — quality-delta scoring as the positive-axis counterpart to slop-risk #4737 — this closes Config-as-code foundation: improvementSignal as a converged feature (global + per-repo) #4738 specifically; the epic itself stays open
until its remaining sub-issues land). Registers
improvementSignalas a standardConvergedFeatureKey(
packages/gittensory-engine/src/focus-manifest.ts) alongside the existingrag/reputation/unifiedComment/safety/grounding/e2eTests, resolved through the existing sharedresolveConvergedFeaturecore (src/review/feature-activation.ts) rather than a bespoke wire file.GITTENSORY_REVIEW_IMPROVEMENT_SIGNAL(
src/env.d.ts,wrangler.jsonc), following the exact naming/doc-comment convention of its convergedsiblings.
.gittensory.ymlfeatures.improvementSignal: true|false|null, layered on topof that kill-switch exactly like
features.e2eTests— a plain symmetric override with noforce-on/force-off asymmetry (this is a read-only advisory signal, not a security control, so a
repo-level
falsebehaves like any other plain override).resolveConvergedFeature(env, manifest, "improvementSignal", repoFullName)yet outside thisfeature's own tests. Sibling sub-issues (Generalize reconstructOldContent into a shared before-content capability on AnalysisContext #4739-MCP pre-submit value-potential tool #4746) build the deterministic (REES), LLM, and panel
behavior that will gate on it.
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:checknpm run ui:lintnpm run ui:typechecknpm run ui:buildnpm audit --audit-level=moderateIf any required check was skipped, explain why:
npm run test:cistep list end to end:
db:migrations:check,db:schema-drift:check,selfhost:env-reference:check,selfhost:validate-observability,cf-typegen:check,test:engine-parity,test:driver-parity, the@jsonbored/gittensory-engineworkspace's own test suite,test:miner-pack,rees:test,ui:openapi:settings-parity(confirms zeroRepositorySettings/OpenAPI drift — this PR intentionallydoes not touch that surface, see Notes),
ui:version-audit,manifest:drift-check,engine-parity:drift-check,command-reference:check,docs:drift-check, andui:test— all green.feature-activation.tsand the newimprovement-signal-wire.tsare both at 100% line and branchcoverage on this diff (verified against the raw
coverage/lcov.info, not just the terminal summary).One unrelated, pre-existing
ui:testfailure surfaced in a local sandbox run(
onboarding-preview-card.test.tsx, awindow.localStorageTypeError) — confirmed byte-identical tomain(not part of this diff) and root-caused to this sandbox's Node runtime (v26) differing from therepo's
.nvmrc-pinned Node 22; passingNODE_OPTIONS=--localstorage-file=...makes all 5 of its testspass, confirming it is a local Node-version artifact rather than a real regression.
Safety
varsdefault added).ui:openapi:checkandui:openapi:settings-parityboth confirm zero drift.UI Evidencesection below with JPG/JPEG or PNG screenshots. — see Notes: this session's preview tooling could not reach this worktree, so no fresh screenshot was captured.UI Evidence
Not captured. The only UI-adjacent changes are one new
<li>entry indocs.tuning.tsxand one newline in an existing
<CodeBlock>indocs.privacy-security.tsx, each mirroring the exact structure ofthe six adjacent sibling entries already live on those pages (documenting
GITTENSORY_REVIEW_E2E_TESTS,GITTENSORY_REVIEW_GROUNDING, etc.) — required bydocs:drift-check's exhaustive feature-flagcross-check, not a new visual state or layout. This session's preview/browser tooling was bound to a
worktree path outside this PR's own working tree, so a live screenshot could not be captured without
touching another session's directory;
npm run ui:builddid compile both edits cleanly with notype/lint errors.
Notes
main, not the state Config-as-code foundation: improvementSignal as a converged feature (global + per-repo) #4738 assumed. The issue referencesresolveFeatureActivation's"standard"mode and listsscreenshotsas an existingConvergedFeatureKeysibling, both introduced by refactor(review): unify six advisory-feature activation checks behind one shared resolver #4692 (refactor/unify-wire-activation-4616) — butthat PR is still open/unmerged as of this branch. This PR instead registers
improvementSignalthrough the shared core that is live on
maintoday (resolveConvergedFeature): it is added toCONVERGED_FEATURE_KEYSwithout asafety/grounding-style special case, so it falls through to theexisting plain
override ?? allowlist-defaultpath — semantically identical toresolveFeatureActivation's"standard"mode, just expressed against the resolver shape currently inmain. If refactor(review): unify six advisory-feature activation checks behind one shared resolver #4692 lands first,a follow-up can trivially move this key onto the new abstraction with no behavior change (same pattern
refactor(review): unify six advisory-feature activation checks behind one shared resolver #4692 itself uses for
screenshots).ConvergedFeatureKeysiblings has aRepositorySettingsDB column — every one of them resolves purely from the env kill-switch plus the.gittensory.yml-parsedfeatures:block (cached via the existing generic focus-manifestsignal-snapshot infrastructure, not a dedicated table). Adding a DB column here would be a genuinely
new shape for this feature class, which Config-as-code foundation: improvementSignal as a converged feature (global + per-repo) #4738's own requirement docs(site): align public docs with gittensor aesthetic #4 explicitly says not to do
("follow the existing pattern ... don't invent a new shape").
improvementSignalfollows that existingpattern exactly; no migration was needed or added.
no override; env on + repo
true; env on + repofalse) in a dedicateddescribeblock intest/unit/feature-activation.test.ts, plus the pre-existing generic "every converged feature key mapsto its own flag" test now covers
improvementSignalautomatically.