Foundation for #1954: introduce a new review.auto_review sub-mapping on FocusManifestReviewConfig with an empty/default shape that round-trips through parseReviewConfig and reviewConfigToJson byte-identically when absent. No predicate logic yet — just the parsed container + a pure decideReviewEligibility(config, prFacts) shell that always returns eligible, so subsequent predicate PRs each add one branch. Default unset ⇒ every PR reviewed exactly as today.
Deliverables
References
src/signals/focus-manifest.ts:124
src/signals/focus-manifest.ts:653
src/signals/focus-manifest.ts:835
#1954
Part of #1954.
size: S · gittensor:feature
Foundation for #1954: introduce a new
review.auto_reviewsub-mapping on FocusManifestReviewConfig with an empty/default shape that round-trips through parseReviewConfig and reviewConfigToJson byte-identically when absent. No predicate logic yet — just the parsed container + a puredecideReviewEligibility(config, prFacts)shell that always returns eligible, so subsequent predicate PRs each add one branch. Default unset ⇒ every PR reviewed exactly as today.Deliverables
autoReviewfield (typed shape with all predicate knobs defaulting to off/empty) toFocusManifestReviewConfigin src/signals/focus-manifest.ts:124parseReviewConfig(src/signals/focus-manifest.ts:653) to parsereview.auto_reviewas a mapping (warn + ignore on non-mapping), include it in theemptyliteral (src/signals/focus-manifest.ts:654) and thepresentcomputation (src/signals/focus-manifest.ts:681)reviewConfigToJson(src/signals/focus-manifest.ts:835) to emitauto_reviewonly when a knob is set (absent ⇒ omitted key ⇒ byte-identical)decideReviewEligibility(autoReview, facts): { eligible: boolean; skipReason: string | null }shell (returns eligible=true always) in a new src/review/review-eligibility.ts module??/optional (97% branch-counted)References
src/signals/focus-manifest.ts:124src/signals/focus-manifest.ts:653src/signals/focus-manifest.ts:835#1954Part of #1954.
size: S · gittensor:feature