.Net: fix: prevent duplicate "null" in JSON Schema type arrays for nullable parameters
Use value equality to avoid duplicate null entries in strict JSON Schema type arrays, with three regression tests.
The clearest proof that we read agent frameworks closely is the fixes we have landed in them. 4 merged pull requests below fix concrete AI/framework defects. Each links to the public PR. The full record also includes maintenance, typing, documentation, and workflow integrations.
Upstream contributionsVerified 2026-10-06 UTC4 AI/framework fixes105 published external pull requests merged in 2026, including 52 code, workflow, typing or maintenance contributions across open-source infrastructure.
Anthropic’s API rejects forced tool_choice when extended thinking is enabled. LangChain’s bind_tools() could forward a forced tool choice while thinking was enabled, producing a 400 response. Ported the guard the structured-output path already had.
The truncation reducer was calling extract_range, a summarization helper that filters out system and developer messages. System prompts were being dropped with no warning. Ported Microsoft’s own .NET fix to the Python SDK.
Use value equality to avoid duplicate null entries in strict JSON Schema type arrays, with three regression tests.
Reject an empty Evaluate devset with a descriptive ValueError before metric-summary division, with a regression test.
105 published external pull requests merged in 2026, including 52 code, workflow, typing or maintenance contributions across open-source infrastructure. Beyond the 4 fixes above, 57 more across PyTorch Ignite, Optuna, React Router (56k ★), Nuxt (60k ★), MobX (28k ★), Cloudflare Workers SDK (4.4k ★), Sentry, ngrx, TSDoc, and others (maintenance and typing modernization). See the canonical ledger below for exact totals, classifications, search coverage and retrieval date. Browse merged pull requests by roli-lpci on GitHub.
26 merged technical, integration or documentation contributions are in AI-agent upstreams. The 4 framework fixes are a subset of this work.
Roli Bosch reported that vector queries could return entries from another namespace sharing a hyphenated prefix. A Griptape maintainer fixed the matching logic and added a regression test, explicitly citing the report. The maintainer's fix merged on 13 July 2026. Hermes contributed the report; the maintainer authored the merged fix.
How these fixes get made: the case studies explain the defect, regression evidence, attribution and exact upstream outcome.
One row per merged pull request, verified against the upstream repository's merge commit and changed files. Only merged pull requests are published. Roli Bosch contributes under roli-lpci; the Hermes Labs attribution identifies our founder and credits earlier reporters and maintainers where relevant. Own-account and Hermes organization PRs are excluded.
Download the canonical structured ledger (JSON). Its scoped reviewed set contains 61 merged engineering/documentation PRs: 52 code, workflow, typing or maintenance changes and 9 documentation-only changes. They include the 4 framework fixes; these subsets must not be added again.
| Class | Merged |
|---|---|
| AI/framework fixes | 4 |
| Other bug fixes | 11 |
| Maintenance and compatibility | 31 |
| Typing | 2 |
| Documentation | 9 |
| External integrations | 1 |
| Documentation/ecosystem listings | 43 |
| Research/index submissions | 1 |
| Features | 3 |
The earlier 33 and 35 totals were dated engineering/documentation subtotals; the 61 entries above derive from the scoped ledger. The public projection includes 105 merged external PRs, including 43 community listings and 1 research-index entry. Neither listings nor research-index entries count as merged code. Dates below are merge dates.
Preserve the first system/developer message during Python chat-history truncation and handle the target_count=1 boundary.
Drop forced tool_choice with a warning when Anthropic extended thinking is enabled; preserve auto and unaffected requests.
Use value equality to avoid duplicate null entries in strict JSON Schema type arrays, with three regression tests.
Reject an empty Evaluate devset with a descriptive ValueError before metric-summary division, with a regression test.
Normalize symbolic target notation in math scoring so equivalent plain-text and LaTeX targets receive consistent verdicts.
Use completed async-response conversion when logging to SQLite, retaining the precompletion await-required error.
Require Cake's Bash LLM judge to parse the complete response as strict JSON, allowing only one optional plain or json Markdown fence, so trailing or malformed content fails closed while tool-argument repair remains separate.
Report invocation wall time separately from cumulative, potentially overlapping tool work and scheduled retry delays; remove unsupported exclusive-remainder and wall-share columns while retaining measurable activity from incomplete invocations.
Reject lossy tool-argument JSON repair that could discard extra objects, doubled braces, or provider markup after a valid prefix, while preserving complete valid JSON and raw-control-character escaping.
Add explicit per-call PERSON exclusions in Python and TypeScript so known organization names can bypass only the optional PERSON heuristic while other enabled detectors continue to run.
Restore retry and backoff options when recursively removing files after the earlier rimraf-to-fs.rm migration, preserving force behavior and error propagation.
Show path and network remediation guidance only when supervised diagnostics contain corresponding path or network-denial evidence, without changing sandbox enforcement.
Make all reported findings return exit code 1 across four previously inconsistent security-skill engines, with a shared minimum-severity filter governing both reports and exit decisions.
Honors read_only on unified-memory update and recall access-time paths, with regression tests in the memory test suite.
Aligned the bundled Vercel deploy skill directory with its public name and changed its four commands to the actual /mnt/skills/public/vercel-deploy/scripts/deploy.sh mount. Added coverage that loads the skill through DeerFlow’s runtime loader and checks the resolved mounted path; the PR reports 26 focused skill tests passed, while a clean full backend suite was unavailable.
fix: use context.filename for ESLint 10 compatibility
fix(eslint-plugin-mobx): replace deprecated context.getSourceCode() for ESLint 10 compat
fix(eslint-plugin-tsdoc): replace deprecated ESLint APIs for v10 compatibility
fix: replace deprecated ESLint context methods for v10 compatibility
fix: replace deprecated context.getSourceCode() for ESLint 10 compatibility
feat(eslint-plugin): add ESLint v10 compatibility
fix: add ESLint 10 compatibility
Replace mkdirp with native fs.mkdirSync({ recursive: true })
chore(deps): replace chalk with native util.styleText
fix: replace deprecated url.parse() with WHATWG URL API
chore: replace rimraf with native fs.rm()
infra: replace flake8 with ruff for linting (closes #466)
chore: replace flake8, black and isort with ruff
chore: replace micromatch with picomatch
chore(remix): Replace glob with native recursive fs walk
ref(sveltekit): Replace recast + @babel/parser with acorn
chore: replace number-allocator with inline Set-based implementation
chore(deps): replace chalk with native util.styleText
chore(create-cloudflare): remove unused chalk dependency
fix(eslint-plugin): replace deprecated context.getSourceCode() with context.sourceCode
refactor: replace p-limit with inline concurrency limiter
chore: replace chalk with picocolors
chore: replace glob with tinyglobby
chore: replace fs-extra with native Node.js fs
chore: replace fs-extra with native Node.js fs APIs
chore(deps): replace fast-glob with tinyglobby
Run the existing offline evaluation-harness and session-metrics fixture suites in CI and the full local fixture aggregate for code-affecting changes.
Replaces the prebuild rimraf command with native Node filesystem cleanup and removes the direct rimraf dependency.
Replaced the rimraf-based dist cleanup command with Node fs.rmSync and removed the direct rimraf dependency and its exclusive pnpm lockfile entries. The upstream comparison and validation were reported on macOS; Windows locked-file behavior was not validated.
Replaced rimraf in the root clean command with a small Node fs.rmSync script, preserving recursive, forced removal and bounded retries, and removed rimraf and its exclusive pnpm lockfile dependency closure. Upstream cleanup comparison covered nested, hidden, read-only and missing content plus symlink preservation; Windows locked-file behavior was not validated.
Updates the existing lint:instructions command from LintLang 0.8.1 to 0.8.2.
replace typing hints in ignite/handlers/tqdm_logger.py
Simplify Union type alias in optuna/samplers/_cmaes.py
docs: fix trailing comma in zh html/template code example
docs: add shared/ directory to Nuxt 4 upgrade guide
Document a copyable Sphinx-Needs configuration for rendering nested portin and portout needs inside a parent needflow block.
Document that an explicit same-named deepagents `subagents` entry with `tools: []` stops inheritance of the parent's custom tools, while framework middleware tools (e.g. deepagents filesystem tools) remain and need separate confinement.
Require Nono provenance evidence - output naming Nono, or a successful `nono why --self` result with status DENIED - before pack guidance recommends sandbox permission remediation, route unconfirmed permission errors to a non-sandbox diagnosis, and stop inferring active profiles, across twelve harness packs.
Adds a when-to-use trigger to the interpreting-culture-index skill description and aligns the plugin metadata version references.
Removes two tests/performance paths from the CLAUDE.md verification table after that directory was deleted, so the per-file test guidance names only existing tests.
Corrects the RTVI source path in AGENTS.md from the removed rtvi.py module to the current rtvi/ package, so agent instructions point at code that exists.
Corrected the connector interface path in CLAUDE.md from src/interfaces/connector.ts to src/connectors/interface.ts.
Repair the Little Canary adapter to use SecurityPipeline, preserve advisory behavior, and distinguish completed, degraded, unavailable, and failed screening.
Add hermes-rubric to Observability section
docs: add quick-gate-python to Tools
Add little-canary to LLM Red-Teaming & Guardrails
Refresh LintLang listing
Add project: lintlang
List Fidelis Memory in Knowledge & Memory with its repository, Glama badge, PyPI installation, initialization, and MCP-client registration paths.
Added LintLang (AI_LINTLANG) to the MegaLinter External Plugins Catalog, with links to its plugin documentation and descriptor.
External plugin catalog listing; excluded from merged code and documentation totals.
List the released Hermes Rubric Inspect scorer in the Inspect AI extensions gallery with a link to its installation and usage documentation.
Add Little Canary to tools catalogue
Adds Little Canary to the Open-Source Guardrails section of the awesome-ai-agent-incidents README as a one-line table entry linking the repository.
新增 Fidelis Memory 到 🧠 知识、记忆与 RAG
Add Hermes Blind plugin
Adds LintLang to the Commands & Extensions section of the awesome-gemini-cli README as a one-line entry describing its static-linter and Gemini CLI extension roles.
Add Fidelis Memory to Development
Add lintlang to Development
Add little-canary to Development
Adds LintLang as one LLMOps README table entry.
Add fidelis MCP server
Add zer0dex to Advanced Components
Add fidelis MCP server to Knowledge
Add langstate to Memory & Compression
Add te-drift-detector to open source tools
Add hermes-labs-ai/fidelis to Knowledge & Memory
Add LintLang
Add Hermes Jailbench to Gemini CLI tools
Add skill: hermes-labs-ai/lintlang
Add Hermes Jailbench to Security Testing
Add hermes-jailbench to Security and Governance
Add SuperSearch to Gemini CLI extensions
Add taxonomy of epistemic failure modes
Catalog Little Canary native prompt screening plugin
Add Fidelis Memory to Product & Project list
catalog: bump Little Canary to 0.3.10
feat: add LintLang audit skill for agent instructions
Add Hermeneutic response review extension
Add hermes-jailbench to Prompt Injection, after JailbreakBench
Add Fidelis Memory to Memory
Updates the existing Little Canary plugin-catalog entry to version 0.4.0, its source revision and documentation URL.
Add intent-verify to Specification Tools
Updates the Little Canary skill snapshot metadata from 0.3.8 to 0.4.0.
Lists LintLang in the AI-agent security-scanner catalog and its generated README. This receipt establishes placement, not the accuracy of every upstream description.
Adds LintLang and Little Canary as two Security & Governance rows in one accepted README placement.
Adds the LintLang 0.8.2 skill snapshot metadata: tag, version, content hash and skill path.
Adds the null-result asymmetry working paper to the calibration bibliography; indexing is not peer review.
Add cake debug skills to report selected skill-catalog XML size, approximate token count, and description lengths with advisory thresholds, without changing prompt rendering or skill filtering.
Adds task-local retain suspension to the Hindsight Python client with dedicated regression tests.
Adds MCP008 known-pattern metadata scanning and optional deterministic Little Canary structural filtering, with bounded inspection and documented limitations.
Code, documentation, and workflow contributions, ordered by their public merge date.
sinonjs/sinon
yunaremaia/mcp-guard
armelhbobdad/bmad-module-skill-forge
bytebase/dbhub
pipecat-ai/pipecat
bethington/ghidra-mcp
Back to the open-source catalog.