Skip to content

fix(engine): include experimental and fairnessAnalytics in the manifest preview - #8966

Merged
JSONbored merged 1 commit into
JSONbored:mainfrom
shin-core:fix/manifest-preview-experimental-fairness-8867
Jul 26, 2026
Merged

fix(engine): include experimental and fairnessAnalytics in the manifest preview#8966
JSONbored merged 1 commit into
JSONbored:mainfrom
shin-core:fix/manifest-preview-experimental-fairness-8867

Conversation

@shin-core

Copy link
Copy Markdown
Contributor

What & why

Closes #8867.

packages/loopover-engine/src/focus-manifest-validation.ts's focusManifestToNormalizedJson was
missing the experimentalConfigToJson/fairnessAnalyticsConfigToJson calls, even though both blocks
carry a .present flag like the other 17 wired blocks and config-lint.ts's TOP_LEVEL_FIELDS
already lists them (so no "unrecognized field" warning fired). A configured experimental: or
fairnessAnalytics: block therefore silently never appeared in the .loopover.yml validation
preview — the same two-sibling-enumeration-site omission already fixed once for
federatedIntelligence (commit 1c80fb84b).

Change

Add the two missing serializer calls to focusManifestToNormalizedJson, matching the existing
per-block !== null pattern used for all 17 other blocks.

Validation

  • New regression tests mirroring the federatedIntelligence block: a configured experimental
    (gittensor: true) and fairnessAnalytics (enabled: true) block each now appears in the
    normalized preview with no warnings, and both are asserted absent when unconfigured.
  • Bug-catch verified: removing the two calls fails exactly the two new assertions.
  • 100% patch coverage on both new serializer call sites (present and absent branches).

…st preview

focusManifestToNormalizedJson was missing the experimentalConfigToJson and
fairnessAnalyticsConfigToJson calls, even though both blocks carry a .present flag
like the other 17 wired blocks and config-lint's TOP_LEVEL_FIELDS already lists
them (so no unrecognized-field warning fired). A configured experimental or
fairnessAnalytics block therefore never appeared in the .loopover.yml validation
preview. This is the same two-sibling-enumeration-site omission fixed once for
federatedIntelligence (1c80fb8).

Add the two missing serializer calls, matching the existing per-block pattern.

Adds regression tests mirroring the federatedIntelligence block: a configured
experimental/fairnessAnalytics block now shows in the preview, and both are absent
when unconfigured.

Closes JSONbored#8867
@shin-core
shin-core requested a review from JSONbored as a code owner July 26, 2026 14:32
@superagent-security superagent-security Bot added the contributor:flagged Contributor flagged for review by trust analysis. label Jul 26, 2026
@superagent-security

Copy link
Copy Markdown
Contributor

🚨 Contributor flagged. Click here for more info: Superagent Dashboard

@superagent-security

Copy link
Copy Markdown
Contributor

Superagent didn't find any vulnerabilities or security issues in this PR.

@codecov

codecov Bot commented Jul 26, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.86%. Comparing base (b723ba8) to head (d0ace57).
⚠️ Report is 9 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #8966      +/-   ##
==========================================
+ Coverage   90.56%   93.86%   +3.30%     
==========================================
  Files          96      807     +711     
  Lines       22490    80350   +57860     
  Branches     3884    24352   +20468     
==========================================
+ Hits        20367    75424   +55057     
- Misses       1945     3561    +1616     
- Partials      178     1365    +1187     
Flag Coverage Δ
backend 95.15% <100.00%> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...s/loopover-engine/src/focus-manifest-validation.ts 100.00% <100.00%> (ø)

... and 710 files with indirect coverage changes

@loopover-orb loopover-orb Bot added the gittensor:bug Gittensor-scored bug fix — scores a 0.05x multiplier. label Jul 26, 2026
@loopover-orb

loopover-orb Bot commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

Warning

⏸️ LoopOver review result - manual review recommended

Review updated: 2026-07-26 14:59:28 UTC

2 files · 1 AI reviewer · no blockers · CI green · unstable

⏸️ Suggested Action - Manual Review

Review summary
This is a straightforward two-line fix adding the missing `experimentalConfigToJson`/`fairnessAnalyticsConfigToJson` calls to `focusManifestToNormalizedJson`, mirroring the existing 17 wired blocks' `!== null` pattern exactly. The two new tests correctly verify both the configured-present and unconfigured-absent branches for each new block, matching the pattern used for the prior `federatedIntelligence` fix, and the change closes the linked issue #8867. The fix is correctly traced to the actual omission site in the enumeration function, not a workaround.

Nits — 2 non-blocking
  • The failing 'Contributor trust' check is unrelated to code correctness and, per BASE BRANCH STATUS, this branch is 7 commits behind default — worth a rebase to rule out drift before merge.
  • packages/loopover-engine/src/focus-manifest-validation.ts:107-110 — consider a follow-up to iterate the serializer list programmatically to prevent this same two-sibling-omission bug class from recurring a third time.

Decision drivers

  • ✅ Code review — No blockers (1 reviewer)
  • ✅ Gate result — Passing (No configured blocker found.)
Context & advisory signals — never blocks the verdict
Signal Result Evidence
Linked issue ✅ Linked #8867
Related work ✅ No active overlap found No same-issue or scoped active PR overlap found.
Change scope ✅ 20/20 Low review scope from cached public metadata (1 linked issue).
Validation posture ✅ 25/25 PR body includes validation/test evidence.
Contributor workload ✅ 10/10 Author activity: 39 registered-repo PR(s), 23 merged, 0 issue(s).
Contributor context ✅ Confirmed Gittensor contributor shin-core; Gittensor profile; 39 PR(s), 0 issue(s).
Improvement ✅ Minor risk: clean · value: minor · LLM: minor
Linked issue satisfaction

Addressed
The diff adds the two missing serializer calls (experimentalConfigToJson, fairnessAnalyticsConfigToJson) to focusManifestToNormalizedJson following the exact pattern used for the other 17 blocks, and includes regression tests mirroring the federatedIntelligence tests for both new blocks, including presence and absence assertions.

Review context
  • Author: shin-core
  • Role context: outside_contributor
  • Public audience mode: oss maintainer
  • Lane context: Repository is configured for direct PR review.
  • Public profile languages: not available
  • Official Gittensor activity: 39 PR(s), 0 issue(s).
  • PR-specific overlap: none found.
Contributor next steps
  • Start here: Triage stale or unlinked PRs.
Signal definitions
  • Related work = same linked issue, overlapping active PRs, or title/path similarity.
  • Change scope = cached public metadata such as size labels, draft state, and review-burden hints.
  • Validation posture = whether the PR provides enough public validation/test evidence for maintainer review.
  • Contributor workload = public contributor activity and cleanup pressure, not a repo-wide quality failure.
  • Contributor context = public GitHub/Gittensor identity context; non-Gittensor status is not a blocker.
🧪 Chat with LoopOver

Ask LoopOver a question about this PR directly in a comment — grounded only in the same cached, public-safe facts shown above, never a new claim.

  • @loopover ask &lt;question&gt; answers contribution-quality Q&A with source citations and freshness.
  • @loopover chat &lt;question&gt; answers in natural prose from cached decision-pack facts via local inference (maintainer/collaborator; read-only).
  • A plain-language @loopover mention with a real question is routed to the closest matching read-only command automatically — no exact syntax required.

Full command reference: https://loopover.ai/docs/loopover-commands

🧪 Experimental — new and may change.

Decision record
  • action: hold · clause: ai_review_inconclusive
  • config: 03a7f8b529a9 · pack: oss-anti-slop
  • record: c5e9bc2e3c5f (schema v2, head d0ace57)

🟩 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 LoopOver, a quiet PR intelligence layer for OSS maintainers.

  • Re-run LoopOver review

@loopover-orb loopover-orb Bot added the manual-review Gittensor contributor context label Jul 26, 2026
@loopover-orb

loopover-orb Bot commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

Held for manual review: the gate and required CI are green, but GitHub reports this pull request's mergeable state as unstable because a non-required check or status is not passing, so LoopOver will not auto-merge. A maintainer can resolve the failing check or review and merge manually. This is an automated maintenance action.

@JSONbored
JSONbored merged commit d9d6833 into JSONbored:main Jul 26, 2026
7 of 8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

contributor:flagged Contributor flagged for review by trust analysis. gittensor:bug Gittensor-scored bug fix — scores a 0.05x multiplier. manual-review Gittensor contributor context

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(engine): .loopover.yml validation preview silently drops experimental and fairnessAnalytics blocks

2 participants