Skip to content

Build(deps-dev): Bump @typescript-eslint/parser from 8.29.1 to 8.39.1#103

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

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

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

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

Bumps @typescript-eslint/parser from 8.29.1 to 8.39.1.

Release notes

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

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)

🚀 Features

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

🩹 Fixes

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

❤️ Thank You

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

v8.38.0

8.38.0 (2025-07-21)

🚀 Features

  • typescript-estree: forbid optional chain in TemplateTaggedLiteral (#11391)

🩹 Fixes

  • disallow extra properties in rule options (#11397)
  • eslint-plugin: [consistent-generic-constructors] resolve conflict with isolatedDeclarations if enabled in constructor option (#11351)

... (truncated)

Changelog

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

8.39.1 (2025-08-11)

This was a version bump only for parser 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

  • update to TypeScript 5.9.2 (#11445)

❤️ Thank You

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

8.38.0 (2025-07-21)

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

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

8.37.0 (2025-07-14)

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

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

8.36.0 (2025-07-07)

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

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

8.35.1 (2025-06-30)

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

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

8.35.0 (2025-06-23)

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

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

8.34.1 (2025-06-16)

... (truncated)

Commits
  • b2ee794 chore(release): publish 8.39.1
  • c98d513 chore(release): publish 8.39.0
  • 2112d58 feat: update to TypeScript 5.9.2 (#11445)
  • d11e79e chore(release): publish 8.38.0
  • 816be17 chore(release): publish 8.37.0
  • 84b7a2e chore(release): publish 8.36.0
  • e2ecca6 chore: fix issues introduced by updated nx configuration (#11230)
  • f9bd7d8 chore(release): publish 8.35.1
  • d19c9f3 chore(release): publish 8.35.0
  • ccd0791 chore(release): publish 8.34.1
  • 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/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 8.29.1 to 8.39.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.39.1/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-version: 8.39.1
  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 12, 2025
@dependabot dependabot Bot requested a review from joelteply August 12, 2025 06:22
@dependabot @github
Copy link
Copy Markdown
Contributor Author

dependabot Bot commented on behalf of github Aug 26, 2025

Superseded by #111.

@dependabot dependabot Bot closed this Aug 26, 2025
@dependabot dependabot Bot deleted the dependabot/npm_and_yarn/typescript-eslint/parser-8.39.1 branch August 26, 2025 14:38
joelteply added a commit that referenced this pull request Jun 2, 2026
…CI / replay / sandbox (task #103)

Promotes the in-tree concept of "fake inference" from a #[cfg(test)]
StubAdapter to a first-class production-runnable peer adapter,
registered unconditionally (no API key required, priority 99 so it
never auto-selects over real adapters) in AIProviderModule's
default adapter set.

Joel (2026-05-31): "Even if you were afraid of local LLM you could
run proxy models, like a fake or canned response like heuristic LLM
stand in... I would also make sure the inference command is used.
Always should be. Could have this fake model. As an adapter."

This realizes [[inference-is-an-adapter-always-in-the-loop]]:
- Same adapter trait, same registry, same command surface (`inference/llm/request`)
- Headless CI / sandbox / replay runs end-to-end without GGUFs, without cloud keys
- "Run the whole system end-to-end with or without an actual LLM" is now true

### Determinism contract

Same `(model, system_prompt, messages, temperature, max_tokens)` →
byte-identical response. Implementation: SHA-256 over canonical
inputs → 8-char hex prefix in the response. Required for
[[persona-record-replay-is-a-product-requirement]]: replay against
the same adapter reproduces the same response.

### Response shape

`[heuristic:<hash>] ack: "<last 200 chars of last user message>"`

- The `[heuristic:...]` marker is intentionally unmistakable in
  logs + traces; no risk of being confused with real model output.
- Echoing the last user message proves end-to-end: prompt → adapter
  → response → trace.
- Hash varies with all sampling-relevant inputs so changing
  temperature changes the prefix even if the prompt is identical.

### Tests (13, all green)

- Determinism: same prompt → byte-identical text
- Different prompts → different text
- Echoes the latest user message with heuristic prefix
- No user message → marker response (no panic)
- Always returns FinishReason::Stop
- UsageMetrics populated + nonzero for nonempty prompt
- Provider field matches HEURISTIC_PROVIDER_ID
- AdapterRegistry round-trip
- Health check reports Healthy
- Capabilities admit text+chat but not modality-specific (vision,
  embeddings, etc. — those are peer-adapter territory per
  [[ai-namespace-multimodal-crutches]])
- supports_model accepts any name so callers can pass real IDs
- temperature + max_tokens shift determinism hash
- **routes_through_inference_llm_request_command_surface** — the
  slice-completing integration test: drives the heuristic adapter
  through `InferenceLlmModule::handle_command("inference/llm/request", ...)`
  end-to-end, verifying the canonical command surface routes to
  it. Without this test, "adapter exists" doesn't prove
  "command-funnel doctrine works." With it, the contract is locked.

### Registration

In AIProviderModule::register_adapters: unconditional registration
at priority 99 (lowest — never auto-selects over real). Opt-in via
`provider: "heuristic"` in InferenceRequest or future TS layer.
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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants