feat(config): add review.linkedIssueSatisfaction knob (off/advisory/block, default off) (#2173) - #3659
Conversation
…lock, default off) (JSONbored#2173) Config-as-code slice for JSONbored#1961: parse + normalize the per-repo knob through the FocusManifestReviewConfig parse path only. Default null (unset) ⇒ byte-identical to today. Does NOT touch the merge/close decision — that maintainer-only slice reads the resolved mode separately. - focus-manifest.ts: LinkedIssueSatisfactionMode ('off'|'advisory'|'block') + linkedIssueSatisfaction field; normalizeOptionalEnum parse (warn+ignore on malformed), default null; reviewConfigToJson round-trip (omitted when null ⇒ byte-identical) + present + EMPTY literals. - .gittensory.yml.example: documented review.linkedIssueSatisfaction (distinct from the existing linkedIssuePolicy, which only checks a link EXISTS). - Tests: absent→null (omitted), each valid mode round-trips + marks present, malformed + non-string → warn+null. Ships the .gittensory.yml parity per the config-as-code rule (enforced by the existing "documents review.*" parity test).
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
|
Caution 🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥 🛑 Gittensory review result - fixes requiredReview updated: 2026-07-06 00:14:06 UTC
🛑 Suggested Action - Fix Blockers Review summary Nits — 5 non-blocking
CI checks failing
Review context
Contributor next steps
Signal definitions
🟩 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.
|
❌ 1 Tests Failed:
View the top 1 failed test(s) by shortest run time
To view more test analytics, go to the Test Analytics Dashboard |
|
Gittensory is closing this pull request on the maintainer's behalf (CI is failing (validate, validate-code)). 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. |
Closes #2173 (config slice for #1961).
Wires the
review.linkedIssueSatisfactionconfig-as-code knob through theFocusManifestReviewConfigparse path only — parse + normalize + default-off. Defaultnull(unset) ⇒ byte-identical to today. It deliberately does not touch the merge/close decision; that maintainer-only slice reads the resolved mode separately.What's here
focus-manifest.ts—LinkedIssueSatisfactionMode('off' | 'advisory' | 'block') +linkedIssueSatisfactiononFocusManifestReviewConfig; parsed with the sharednormalizeOptionalEnum(warn + ignore on malformed), defaultnull;reviewConfigToJsonround-trip (omitted whennull⇒ byte-identical) +present+ theEMPTYliterals..gittensory.yml.example— documented the knob (distinct from the existinglinkedIssuePolicy, which only checks a link exists; this is about whether it's satisfied).Validation
Typecheck clean. Focused suites green (incl. the
documents review.*doc-parity test that enforces the.gittensory.ymlentry, and the updated review-config literals):Tests cover: absent →
null(omitted on serialize), each valid mode round-trips + markspresent, and malformed / non-string → warn +null.