22 lines
2.0 KiB
Markdown
22 lines
2.0 KiB
Markdown
# GLPI NeuroForge Mega v1.5.3
|
|
|
|
v1.5.3 hardens the research-quality gate after a live FortiClient SSLVPN 7200 test exposed two remaining failure modes: generic Docker Hub pages could pass relevance because a single goal anchor or a numeric substring was sufficient, and two identical active goals could create two independent staging drafts because their integration keys correctly differ by goal ID.
|
|
|
|
## Fixes
|
|
|
|
- Goal relevance is token-aware instead of unrestricted substring matching.
|
|
- Numeric anchors such as error code `7200` must occur as exact normalized tokens; values such as `72007bf3` no longer match.
|
|
- A goal containing a numeric/error-code anchor also requires at least one lexical product/topic anchor.
|
|
- Multi-anchor nonnumeric goals require at least two independent title anchors instead of any single generic overlap.
|
|
- `SSLVPN` still matches source wording such as `SSL VPN` through bounded adjacent-token compaction.
|
|
- Identical non-completed goal fingerprints (title + description + target) are rejected atomically by the store; the HTTP API returns `409 Conflict`.
|
|
- The Goal UI disables the create button while the POST is in flight, closing the common double-click path in addition to the backend guard.
|
|
- Staging metadata now distinguishes the evidence actually supplied to the synthesizer from aggregate goal history: `research_evidence` and `research_sources` describe the selected draft inputs, while `research_goal_evidence` / `research_goal_sources` preserve the totals.
|
|
- Regression coverage includes the observed Docker Hub false positives and duplicate-goal creation.
|
|
|
|
## Validation
|
|
|
|
NeuroForge passes its complete test suite after the changes. The full Mega release gate additionally covers test/vet/build for all four Go modules, targeted race checks, static Compose preflight and secret scanning before packaging.
|
|
|
|
Existing bad staging drafts are not deleted automatically. Human-review content remains operator-controlled; delete/reject drafts that were generated by older relevance rules.
|