fix(ops): recalibrate PR quality gates and slop bands#3939
Merged
Conversation
Contributor
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
JSONbored
approved these changes
Jul 7, 2026
Contributor
|
Gittensory is closing this pull request on the maintainer's behalf (No linked issue detected; duplicate of another open PR). This is an automated maintenance action — to pursue this change, please open a new pull request with the issues resolved. Closed PRs may be analyzed later to improve review accuracy, but they are not automatically reopened or re-reviewed. |
❌ 6 Tests Failed:
View the top 3 failed test(s) by shortest run time
To view more test analytics, go to the Test Analytics Dashboard |
15 tasks
JSONbored
added a commit
that referenced
this pull request
Jul 7, 2026
…#3939) #3939 lowered the live .gittensory.yml readiness minScore from 60 to 40 but didn't update this bundled fallback copy, leaving the two byte-mismatched -- already broken on main independent of this branch, just first surfaced here because this PR also touches this file. Incidental fix, bundled in since a separate branch/rebase cycle for a one-line sync isn't worth the overhead.
JSONbored
added a commit
that referenced
this pull request
Jul 7, 2026
…d linked issues (#3938) * fix(review): let bug/feature labels propagate from maintainer-authored linked issues (#3903) Linked-issue label propagation only ever fired when the PR author had directly opened or been assigned the linked issue, so gittensor:bug/gittensor:feature almost never mirrored the issue's label in practice -- our issues are nearly always maintainer-authored for open community pickup, and rarely formally assigned. Split the ownership check by label sensitivity: a mapping can opt into trustMaintainerAuthoredIssue so it also unlocks for an issue authored by the repo owner/admin/write-collaborator, while gittensor:priority (the scarce, maintainer-hand-picked reward label) keeps the strict direct-ownership requirement. Also logs a structured event whenever a linked issue's labels get filtered, so a future "why didn't my PR inherit the label" report doesn't need a source read. Enables propagation on this repo's own .gittensory.yml (bug/feature relaxed, priority strict) as a live example for other gated repos to copy. * fix(engine): mirror trustMaintainerAuthoredIssue into the extracted engine package Rebasing onto #3891 (extract focus-manifest parse/compile core) surfaced that packages/gittensory-engine keeps its own hand-synced copies of LinkedIssueLabelPropagationMapping and its normalizer, predating this PR's new field. Without this, the engine package's manifest parser would silently drop trustMaintainerAuthoredIssue from any .gittensory.yml it parses, including this repo's own. * test(engine): cover trustMaintainerAuthoredIssue in the engine-package normalizer mirror codecov/patch flagged 2 missing lines in packages/gittensory-engine's copy of normalizeMapping -- test/unit/linked-issue-label-propagation-engine.test.ts mirrors the app-side suite but predates this PR's new field. Adds the same 3 cases (true passthrough, omitted stays undefined, malformed warns without defaulting to true) already covered on the src/ side. * fix(test): avoid the private_key_block secret-scan false positive on the ephemeral test PEM helper generatePrivateKeyPem() builds a valid PEM string from a freshly-generated in-memory key for test-only JWT signing -- no real credential is ever embedded. The literal "-----BEGIN PRIVATE KEY-----" marker text still matched the review-safety secrets scanner's private_key_block pattern (a pure text match with no awareness the bytes between the markers are generated per test run), hard-blocking the gate. Splits the marker text across a join() so it never appears contiguous in source; the produced PEM string (and all runtime behavior) is byte-identical. * fix(config): sync bundled self-manifest minScore with .gittensory.yml (#3939) #3939 lowered the live .gittensory.yml readiness minScore from 60 to 40 but didn't update this bundled fallback copy, leaving the two byte-mismatched -- already broken on main independent of this branch, just first surfaced here because this PR also touches this file. Incidental fix, bundled in since a separate branch/rebase cycle for a one-line sync isn't worth the overhead.
bohdansolovie
added a commit
to bohdansolovie/gittensory
that referenced
this pull request
Jul 7, 2026
…holds Update golden fixtures and score-30 expectations after the elevated-band floor moved to 31; sync bundled focus manifest minScore with .gittensory.yml. Co-authored-by: Cursor <cursoragent@cursor.com>
JSONbored
added a commit
that referenced
this pull request
Jul 7, 2026
#3939 raised the elevated-band floor from 25 to 31, so two stacked weak signals (30) now land in low, not elevated. Five fixtures still asserted the pre-recalibration boundary; adjust the genuine multi- signal cases to a real 3-signal stack (45) and the single-signal cases to their now-correct low band, per the recalibration's own stated design (elevated requires >=45 or 3x weak).
JSONbored
added a commit
that referenced
this pull request
Jul 7, 2026
…3962) * fix(review): close repeated ready<->draft cycling as review evasion Enable reviewEvasionProtection for our own repos and add a new guard that fires on the second (and every later) draft conversion for a PR, independent of whether an active review or a recorded gate failure is present. The two existing draft guards only catch dodging DURING a still-running review or AFTER a stored gate block — a contributor who drafts before either fires (e.g. immediately on open, or before CI settles) can otherwise cycle ready<->draft indefinitely to harvest free AI-review/CI feedback while sidestepping the one-shot disposition. * test(slop): update golden fixtures for the #3939 band recalibration #3939 raised the elevated-band floor from 25 to 31, so two stacked weak signals (30) now land in low, not elevated. Five fixtures still asserted the pre-recalibration boundary; adjust the genuine multi- signal cases to a real 3-signal stack (45) and the single-signal cases to their now-correct low band, per the recalibration's own stated design (elevated requires >=45 or 3x weak). * fix(config): merge the duplicate settings: block the rebase produced Rebasing onto #3938's own new settings: block (linkedIssueLabelPropagation) left two top-level settings: keys in .gittensory.yml and its bundled fallback -- invalid YAML that would have silently dropped one of the two setting groups depending on parser behavior. Merge into one block.
4 tasks
JSONbored
added a commit
that referenced
this pull request
Jul 7, 2026
…in (#3975) * test(slop): update golden fixtures for the #3939 band recalibration #3939 raised the elevated-band floor from 25 to 31, so two stacked weak signals (30) now land in low, not elevated. Five fixtures still asserted the pre-recalibration boundary; adjust the genuine multi- signal cases to a real 3-signal stack (45) and the single-signal cases to their now-correct low band, per the recalibration's own stated design (elevated requires >=45 or 3x weak). * docs(slop): fix remaining #3939 threshold drift in issue rubric + comments The #3939 recalibration updated slopBandFor and SLOP_RUBRIC_MARKDOWN but left ISSUE_SLOP_RUBRIC_MARKDOWN (which renders through the same banding function) and two comments still documenting the old 1-24/25-59 split.
bohdansolovie
added a commit
to bohdansolovie/gittensory
that referenced
this pull request
Jul 7, 2026
…holds Update golden fixtures and score-30 expectations after the elevated-band floor moved to 31; sync bundled focus manifest minScore with .gittensory.yml. Co-authored-by: Cursor <cursoragent@cursor.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Addresses the
ops_anomalyissue (GITTENSORY-1D) by recalibrating PR quality gates and slop score bands. This reduces false-positive rates and improves the predictive accuracy of the slop score.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:
The PR description does not provide details on validation steps performed.
Safety
UI Evidencesection below with JPG/JPEG or PNG screenshots arranged as organized, captioned, clickable thumbnails. SVG screenshots are not used as review evidence. Review-only screenshots or recordings are not committed to the repository.UI Evidence
This PR does not involve visible UI changes.
<a href="FULL_URL.png"><img src="FULL_URL.png" alt="Loaded state" width="240"></a>Notes
Changes Made:
Lowered
gate.readiness.minScorein.gittensory.yml(from 60 to 40):readiness_score_below_thresholdgate was generating a 73% false-positive rate, indicating that PRs with readiness scores between 40 and 59 were frequently merged without issue. The previousminScoreof 60 was too strict. This adjustment aligns the gate with actual merge behavior, reducing false positives.Adjusted
slopBandForthresholds andSLOP_RUBRIC_MARKDOWNinsrc/signals/slop.ts:elevatedslop band previously started at 25, meaning a single strong signal (e.g.,trivialWhitespaceChurnat 30 points) would place a PR in theelevatedband. These PRs were often merged, leading to an inverteddiscriminatessignal (higher-severity bands merging more often).lowband threshold has been raised to 31. Now, a single strong signal (30 points) will correctly fall into thelowband. Theelevatedband (31-59) now requires genuinely multi-signal evidence (e.g., a strong signal plus a weak one, or multiple weak signals), making the slop score more predictive and restoring discrimination.SLOP_RUBRIC_MARKDOWNhas been updated to reflect these new band boundaries.These changes aim to reduce the false-positive rates of the affected gates and improve the predictive accuracy of the slop score, thereby resolving the
ops_anomalyalerts.Fixes GITTENSORY-1D