Skip to content

Build(deps-dev): Bump @typescript-eslint/eslint-plugin from 8.29.1 to 8.41.0#112

Closed
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-8.41.0
Closed

Build(deps-dev): Bump @typescript-eslint/eslint-plugin from 8.29.1 to 8.41.0#112
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-8.41.0

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

@dependabot dependabot Bot commented on behalf of github Aug 26, 2025

Bumps @typescript-eslint/eslint-plugin from 8.29.1 to 8.41.0.

Release notes

Sourced from @​typescript-eslint/eslint-plugin's releases.

v8.41.0

8.41.0 (2025-08-25)

🚀 Features

  • tighten tsconfigRootDir validation (#11463)

🩹 Fixes

  • resolve type error in eslint config (#11500)
  • deps: update babel monorepo (#11174)
  • deps: update dependency prettier to v3.6.2 (#11496)

❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.40.0

8.40.0 (2025-08-18)

🩹 Fixes

  • typescript-eslint: export plugin, parser, and configs that are compatible with both defineConfig() and tseslint.config() (#11475)
  • typescript-estree: correct range of import assertion with trailing comma (#11478)
  • utils: correct calculateConfigForFile return type (#11451)

❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.39.1

8.39.1 (2025-08-11)

🩹 Fixes

  • typescript-eslint: handle file:// urls in stack trace when inferring tsconfigRootDir (#11464)

❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.39.0

8.39.0 (2025-08-04)

... (truncated)

Changelog

Sourced from @​typescript-eslint/eslint-plugin's changelog.

8.41.0 (2025-08-25)

🩹 Fixes

  • deps: update dependency prettier to v3.6.2 (#11496)

You can read about our versioning strategy and releases on our website.

8.40.0 (2025-08-18)

🚀 Features

  • typescript-estree: forbid invalid keys in EnumMember (#11232)

❤️ Thank You

You can read about our versioning strategy and releases on our website.

8.39.1 (2025-08-11)

This was a version bump only for eslint-plugin to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

8.39.0 (2025-08-04)

🚀 Features

  • eslint-plugin: [only-throw-error] support yield/await expressions (#11417)
  • eslint-plugin: add no-unnecessary-type-conversion to strict-type-checked ruleset (#11427)
  • update to TypeScript 5.9.2 (#11445)
  • eslint-plugin: [naming-convention] add enumMember PascalCase default option (#11127)

🩹 Fixes

  • eslint-plugin: [no-unsafe-assignment] add an unsafeObjectPattern message (#11403)
  • eslint-plugin: [prefer-optional-chain] ignore check option for most RHS of a chain (#11272)

❤️ Thank You

You can read about our versioning strategy and releases on our website.

... (truncated)

Commits
  • 31a7336 chore(release): publish 8.41.0
  • a4526b3 chore: skip failing tests to fix CI (#11505)
  • 03e21eb fix(deps): update dependency prettier to v3.6.2 (#11496)
  • 60c3b26 chore(release): publish 8.40.0
  • 7648622 fix(typescript-estree): revert #11232 (feat(typescript-estree): forbid invali...
  • d50a6b1 feat(typescript-estree): forbid invalid keys in EnumMember (#11232)
  • b2ee794 chore(release): publish 8.39.1
  • fee2bc6 chore: update eslint-plugin-eslint-plugin (#11449)
  • c98d513 chore(release): publish 8.39.0
  • a8def4b fix(eslint-plugin): [no-unsafe-assignment] add an unsafeObjectPattern messa...
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 8.29.1 to 8.41.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.41.0/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-version: 8.41.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels Aug 26, 2025
@dependabot dependabot Bot requested a review from joelteply August 26, 2025 14:51
@dependabot @github
Copy link
Copy Markdown
Contributor Author

dependabot Bot commented on behalf of github Sep 8, 2025

Superseded by #115.

@dependabot dependabot Bot closed this Sep 8, 2025
@dependabot dependabot Bot deleted the dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-8.41.0 branch September 8, 2025 21:30
joelteply added a commit that referenced this pull request Jun 2, 2026
Enumerates every direct adapter.generate_text call site in the
tree as of 2026-05-31. 19 hits total; classified as:

- 4 canonical paths (the command + handle store implementations
  themselves; can%27t go through themselves)
- 6 confirmed bypasses (cognition / persona / agent / http) — should
  route through InferenceHandleStore / Commands.execute
- 1 debatable (rag_inspect probe — acceptable as a one-shot)
- 8 test-only call sites (allowed; testing the adapter contract)

The 6 bypasses split into 3 priority tiers and become tasks #112
(persona response — highest, the hot path), #113 (cognition gating
+ validation — medium), and #114 (agent + http — lower).

The audit doc explains the boundary (when adapter.generate_text
is canonical vs bypass), provides the grep command for re-running
the audit before merging new inference-using code, and documents
when to update the doc.
joelteply added a commit that referenced this pull request Jun 2, 2026
…ound-trip end-to-end

Joel (2026-05-31): %22We really need to prove persona and rag work.
That this can respond in airc chats.%22

This binary IS that proof. Runs against the operator%27s live airc
daemon and demonstrates the full substrate loop:

    airc inbound → RAG layer → inference adapter → airc reply

on this exact hardware, with whatever model the substrate has
wired (heuristic by default for deterministic proof; switching
to LlamaCppAdapter or AircRemoteInferenceAdapter is a one-line
config change).

### What it does

1. Discovers airc socket + default room.
2. Attaches the demo persona (default Paige, configurable via
   CONTINUUM_PERSONA env).
3. Joins the room.
4. Polls airc.page_recent every 3s (configurable via
   CONTINUUM_CHAT_DEMO_POLL_MS).
5. For each new transcript event NOT from Paige%27s own peer_id:
   a. Builds a RagInspectionRequest scoped to Paige.
   b. Calls inspect_persona_rag_with_inference — RAG layer
      surfaces recent transcript via AircRagSource, heuristic
      adapter generates a deterministic response, captured in
      model_response.
   c. Posts model_response.response_text back via airc.say().
6. Prints live trace: inbound message, RAG delivery count,
   adapter input/output token counts, posted reply.

### How to run

    cargo run --bin airc_chat_demo --features metal,accelerate

Then send a chat message from another scope or the chat widget
to the same room — Paige replies within one poll tick. Ctrl-C
to stop.

### What this proves on Joel%27s actual hardware

The substrate%27s RAG + inference + airc loop works end-to-end on
the Intel Mac (and any other tier) — without a GGUF, without a
cloud key. The heuristic adapter%27s output is recognizable
(`[heuristic:<hash>] ack: %22...%22`) and deterministic so the demo%27s
output is reproducible. Swapping in a real model is a one-line
config change once GGUFs are seeded + the model registry knows
about them.

### What it is NOT

- Not the production persona-cognition path. The substrate%27s
  real PersonaAircRuntime will wire an inbound pump that triggers
  cognition::generate_response (task #112 refactors it through
  the handle store). This demo is the proof that the WIRE SHAPE
  works end-to-end on the operator%27s hardware; production
  PersonaAircRuntime inbound-pump wiring is a focused follow-up.
- Not a multi-persona test (one persona, one room).
- Not auto-started by continuum-core-server — runs as a separate
  process so the operator sees explicit output + can stop
  cleanly.

### Build dependency aside

The build hit a disk-full condition (target/ was 90 GB, system
was at 100% disk) — cleared by removing target/debug/incremental
(12 GB) which freed enough to compile. Joel%27s [[disk pressure as
substrate concern]] (task #88, pending) becomes more concrete
with every long session; the substrate%27s own build cache is part
of the host pressure it MUST be a good citizen on.
joelteply added a commit that referenced this pull request Jun 2, 2026
…trict opt-in (#128)

## Why

Joel (2026-06-01) called out a recurring failure mode: "You mix this
fake shit in and it's going live ALL THE TIME. Why fallbacks are
forbidden. The fake shit is a CHOSEN model adapter no other form.
Declaration. Gating in test is smart."

The HeuristicInferenceAdapter was registered unconditionally at boot
in `modules::ai_provider`, and its `supports_model()` returned `true`
for any model name including production IDs like
`anthropic/claude-opus-4-7`. Two structural leaks: auto-discovery
could pick it via tier-3 walk in `AdapterRegistry::select()` when
callers passed `model: None`; explicit-by-name lookups for real
production models silently degraded to it when no real adapter was
registered first. Both paths "go live ALL THE TIME."

This commit closes the leaks structurally — not via runtime guards
that can be forgotten, but via the compiler.

## What ships

### 1. Compile-time elimination (the no-going-back gate)

- `Cargo.toml`: new `test-fixtures` feature flag. Production builds
  do not enable it.
- `src/ai/mod.rs`: `pub mod heuristic_adapter` and re-exports gated
  behind `#[cfg(any(test, feature = "test-fixtures"))]`. Without the
  feature, the entire module + struct + constants don't exist in the
  binary. Unit tests in continuum-core get it free via `cfg(test)`;
  external test code / fixtures opts in via the feature.
- `Cargo.toml`: `airc_chat_demo` bin target now declares
  `required-features = ["test-fixtures"]` — it uses heuristic and
  must opt in like any other test-fixture consumer.

### 2. Removal of unconditional production registration

- `src/modules/ai_provider.rs`: deleted the unconditional
  `registry.register(HeuristicInferenceAdapter::new(), 99)` block.
  The comment about "lowest priority so never auto-selects" was
  wrong; nothing prevented `select()` with `model: None` from
  landing there. Tests that legitimately want heuristic register it
  explicitly in setup (no global default registration).

### 3. Trait-level self-declaration (belt-and-suspenders)

- `src/ai/adapter.rs`: new `fn is_production_capable(&self) -> bool`
  on `AIProviderAdapter` (default `true`). Real adapters keep the
  default; heuristic returns `false`.
- `src/ai/adapter.rs`: new `AdapterSelectionError` type with `Display`
  impl that names what was requested, what's registered, and what
  remediation looks like. Designed for downstream `select_production`
  callers in follow-up slices.
- `src/ai/adapter.rs`: `AdapterRegistry::select()` now refuses calls
  with no `preferred_provider` AND no `model` — the textbook
  auto-discovery path forbidden by [[no-fallbacks-ever]]. Hard return
  None with a diagnostic. Callers must specify intent.

### 4. Heuristic strict opt-in

- `src/ai/heuristic_adapter.rs`: `supports_model()` overridden to
  match ONLY model names starting with "heuristic" (case-insensitive).
  Previously returned `true` unconditionally — THE leak path. The
  test asserting that behavior (renamed:
  `supports_only_heuristic_model_names_never_substitutes_for_real_models`)
  now pins the opposite: production model names like
  `anthropic/claude-opus-4-7`, `gpt-4`,
  `qwen3.5-4b-code-forged-Q4_K_M` MUST NOT match.
- `supported_model_prefixes()` declares `vec!["heuristic"]` (was
  empty + comment claimed "opt-in only" but the empty list combined
  with always-true `supports_model` meant anything went). The two
  methods now agree and the registry's prefix-based auto-routing
  cannot pick heuristic for any real model name.

## Layered defense

Heuristic adapter cannot reach production traffic via FOUR independent barriers:
1. cfg-gate: not in the binary unless `test-fixtures` is on
2. No auto-registration: even with the feature, nothing in production code registers it
3. Trait self-declaration: `is_production_capable() = false` for `select_production` (follow-up #128 slice 2)
4. Strict model match: even at test time, only "heuristic-*" model names route here

Joel: "No fallbacks ever it's forbidden." Now structural, not policy.

## Tests (47 passing, no regression)

- `ai::heuristic_adapter::tests` — 10/10 pass with `test-fixtures`
  including the rewritten
  `supports_only_heuristic_model_names_never_substitutes_for_real_models`.
- `ai::adapter::tests` — pass
- `modules::generator::tests` — 8/8 pass (regression check)
- `persona::hw_tier_descriptor::tests` — 11/11 pass (regression check)
- `persona::orm_entity_registration_tests` — 2/2 pass (regression check)
- `orm::entity::tests` — 10/10 pass (regression check)
- Full lib test sweep with `test-fixtures` green (regression sweep)
- Production build (`cargo build --lib --features metal,accelerate`)
  with NO test-fixtures: clean, heuristic adapter physically absent
  from the binary

## Follow-up (deferred)

- Wire qwen3.5-4b-code-forged-Q4_K_M (the local GGUF on this Intel
  MacBookPro15,1) through the persona path so we have a REAL model
  running. The chat-flawless work continues on top of this clean
  base.
- `select_production()` method that wraps `select()` and additionally
  filters `is_production_capable()`. Will land when the first
  production cognition call site is migrated to use it.
- Audit existing `select()` callers — anyone passing `model: None`
  is now broken loud; either give them a real model or refactor.

References: [[no-fallbacks-ever]], [[no-if-statements-use-llms-for-
cognition]], [[persona-chat-flawless-before-video]],
[[persona-webrtc-all-tiers-latency-obsessed]], #103 (heuristic
promotion that this constrains), #105 (bypass audit), #112-#114
(routing the cognition path through inference command — chat-flawless
slices C+).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code size: M

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants