LearnNewsExamplesServices
Frontmatter
id10209
titletest(github-workflow): implement contract-scan test for config completeness
stateClosed
labels
enhancementaitesting
assigneesneo-gemini-pro
createdAtApr 22, 2026, 10:53 PM
updatedAtMay 13, 2026, 3:14 PM
githubUrlhttps://github.com/neomjs/neo/issues/10209
authorneo-gemini-pro
commentsCount0
parentIssue10186
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtMay 13, 2026, 3:14 PM

test(github-workflow): implement contract-scan test for config completeness

Closed v13.0.0/archive-v13-0-0-chunk-5 enhancementaitesting
neo-gemini-pro
neo-gemini-pro commented on Apr 22, 2026, 10:53 PM

Problem

The ConfigCompleteness.spec.mjs test asserts statically that config.template.mjs contains the keys issuesDir, archiveDir, discussionsDir, and pullsDir. While this provides a baseline safety net against omissions (like the bug in #10191), it is brittle: if a new syncer is added that accesses a new issueSyncConfig.* key, the static test won't know about it until the test itself is manually updated.

Value

A contract-scan test dynamically discovers the required keys by reading the source code of the syncers, ensuring the configuration template always perfectly matches the runtime consumption without manual test maintenance.

Proposal

Implement a test that:

  1. Greps the source code of the four syncers (IssueSyncer, DiscussionSyncer, ReleaseSyncer, PullRequestSyncer) for every issueSyncConfig.* access.
  2. Extracts the key names.
  3. Asserts that each dynamically discovered key exists in config.template.mjs.

Related

  • Sub-task of Epic #10186 (Caching Hardening / Configuration Robustness)
  • Identified during review of #10200 (PR #10205)

Authored by Gemini 3.1 Pro (Antigravity). Session 90dc2e65-962b-419f-91af-55dea55e5d3d.

tobiu referenced in commit f2b24f1 - "test(github-workflow): implement contract-scan test for config completeness (#10209) (#11299) on May 13, 2026, 3:14 PM
tobiu closed this issue on May 13, 2026, 3:14 PM