Skip to content

build(deps): bump sqlalchemy from 2.0.44 to 2.0.48 in /constraints#5

Closed
dependabot[bot] wants to merge 1 commit intomainfrom
dependabot/pip/constraints/sqlalchemy-2.0.48
Closed

build(deps): bump sqlalchemy from 2.0.44 to 2.0.48 in /constraints#5
dependabot[bot] wants to merge 1 commit intomainfrom
dependabot/pip/constraints/sqlalchemy-2.0.48

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

@dependabot dependabot Bot commented on behalf of github Mar 28, 2026

Bumps sqlalchemy from 2.0.44 to 2.0.48.

Release notes

Sourced from sqlalchemy's releases.

2.0.48

Released: March 2, 2026

engine

  • [engine] [bug] Fixed a critical issue in Engine where connections created in conjunction with the DialectEvents.do_connect() event listeners would receive shared, mutable collections for the connection arguments, leading to a variety of potential issues including unlimited growth of the argument list as well as elements within the parameter dictionary being shared among concurrent connection calls. In particular this could impact do_connect routines making use of complex mutable authentication structures.

    References: #13144

2.0.47

Released: February 24, 2026

orm

  • [orm] [bug] Fixed issue when using ORM mappings with Python 3.14's PEP 649 feature that no longer requires "future annotations", where the ORM's introspection of the __init__ method of mapped classes would fail if non-present identifiers in annotations were present. The vendored getfullargspec() method has been amended to use Format.FORWARDREF under Python 3.14 to prevent resolution of names that aren't present.

    References: #13104

engine

  • [engine] [usecase] The connection object returned by _engine.Engine.raw_connection() now supports the context manager protocol, automatically returning the connection to the pool when exiting the context.

    References: #13116

postgresql

  • [postgresql] [bug] Fixed an issue in the PostgreSQL dialect where foreign key constraint reflection would incorrectly swap or fail to capture onupdate and ondelete values when these clauses appeared in a different order than expected in the constraint definition. This issue primarily affected

... (truncated)

Commits

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 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 [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.44 to 2.0.48.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/main/CHANGES.rst)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

---
updated-dependencies:
- dependency-name: sqlalchemy
  dependency-version: 2.0.48
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot @github
Copy link
Copy Markdown
Contributor Author

dependabot Bot commented on behalf of github Mar 28, 2026

Labels

The following labels could not be found: dependencies, python, security. Please create them before Dependabot can add them to a pull request.

Please fix the above issues or remove invalid values from dependabot.yml.

@dependabot @github
Copy link
Copy Markdown
Contributor Author

dependabot Bot commented on behalf of github Mar 28, 2026

OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting @dependabot ignore this major version or @dependabot ignore this minor version. You can also ignore all major, minor, or patch releases for a dependency by adding an ignore condition with the desired update_types to your config file.

If you change your mind, just re-open this PR and I'll resolve any conflicts on it.

@dependabot dependabot Bot deleted the dependabot/pip/constraints/sqlalchemy-2.0.48 branch March 28, 2026 22:45
neuron7xLab added a commit that referenced this pull request Apr 25, 2026
…— close silent-fallback gap (⊛-audit AP-#5) (#385)

GeoSync credo (CLAUDE.md, INV-RC-FLOW) requires every clamp/clip to be
observable: # INV-* / # bounds: comment, runtime logging, or a flag in
the result struct. compute_capital_ratio in core/kuramoto/capital_weighted.py
silently floored median(depth_mass) below cfg.r_floor with no caller
visibility — flagged as anti-pattern #5 by the ⊛-audit.

Surface the event:
  - compute_capital_ratio now returns (r, floor_engaged, floor_diagnostic).
  - CapitalWeightedCouplingResult carries floor_engaged: bool (default
    False) plus a short floor_diagnostic token: "median_clamped",
    "r_below_floor", or "median_clamped+r_below_floor".
  - The median IS clamped (kept — required for finite division and
    INV-KBETA finiteness). The per-node r_i is NOT clamped (an absolute
    clamp would break INV-KBETA scale invariance under uniform depth
    scaling); we only DETECT and surface the below-floor event.

Tests:
  - test_floor_engaged_false_for_healthy_distribution
  - test_floor_engaged_true_for_zero_depth_node
  Both assert INV-KBETA preservation (finite/symmetric/zero-diag).
  Existing test_capital_ratio_floor updated to the tuple signature.

Behavioral preservation:
  - 8/8 falsify_capital_beta.py PASS unchanged.
  - 1175 passed, 1 skipped across tests/unit/core/, tests/property/
    research_extensions/, tests/integration/research_extensions/.
  - .claude/physics/validate_tests.py --audit-code: 0 silent clamps.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
neuron7xLab added a commit that referenced this pull request Apr 26, 2026
…ision score, enforce SPECULATIVE != P0/P1 (#414)

Honest self-audit found four lapses in the seven physics-schema PRs from
this session:

(a) INV-OBSERVER-CPT (P5) was a tautological schema with no peer-reviewed
    model — shipped as a P2 invariant alongside ANCHORED entries. Demoted.
(b) `TRUTH_COHERENCE_SCORE: float` introduced fake precision (vibes-derived
    numbers like 0.9 / 0.6 / 0.55 / 0.3 dressed as quantitative). Dropped.
(c) Validator did not enforce that SPECULATIVE invariants stay below
    fail-closed tier. Now it does.
(d) Session-level claim "operationalized 7 fundamental physics problems"
    overstated schema work as derivation work. Restated honestly: 6
    contract schemas remain — 2 ANCHORED, 4 EXTRAPOLATED, 0 SPECULATIVE
    (the seventh, P5, is now a demo not a registered invariant).

Changes:

- Moved core/physics/observer_cpt_asymmetry.py →
  examples/observer_cpt_schema_demo.py with explicit DEMO ONLY header.
  Removed tests/unit/physics/test_observer_cpt_asymmetry.py.
  Removed pncc.observer_cpt block from .claude/physics/INVARIANTS.yaml,
  with a note pointing at the demo file.

- In core/physics/{arrow_of_time, observer_bandwidth,
  cosmological_compute_bound, jacobson_observer_coherence}.py:
  replaced
      PROVENANCE_LEVEL: str = "..."
      TRUTH_COHERENCE_SCORE: float = 0.X
  with
      PROVENANCE_TIER: Literal["ANCHORED", "EXTRAPOLATED", "SPECULATIVE"] = "..."
  Discrete tier; no float score. Updated test files to assert
  PROVENANCE_TIER and dropped the floor/ceiling float assertions.

- In .claude/physics/INVARIANTS.yaml: dropped all four
  `truth_coherence_score:` lines. Kept `provenance:` field as the
  canonical tier indicator.

- In .claude/physics/validate_tests.py::_self_check: added check #5 —
  SPECULATIVE invariants cannot carry P0 or P1 priority. Validator
  reports FAIL with the offending IDs if found.

Quality gates:
  pytest (4 modules)                   59/59 PASS
  ruff check                           clean
  ruff format --check                  clean
  black --check                        clean
  mypy --strict (5 modules + tests)    clean
  validate_tests.py --self-check       PASSED — 80 invariants loaded,
                                       check #5 confirms 0 SPECULATIVE
                                       at P0/P1.

Honest stack as of this PR:
  ANCHORED:      INV-ARROW-OF-TIME (P0)
                 INV-BEKENSTEIN-COGNITIVE (P0)
  EXTRAPOLATED:  INV-OBSERVER-BANDWIDTH (P1)
                 INV-COSMOLOGICAL-COMPUTE (P1)
                 INV-JACOBSON-OBSERVER (P1)
                 INV-SIMULATION-FALSIFICATION (P1, registry/statistical)
  Demoted:       INV-OBSERVER-CPT → demo, no registry weight.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
neuron7xLab added a commit that referenced this pull request Apr 26, 2026
…ference flaw #5) (#422)

Self-audit identified ε ∈ (0, 1] efficiency parameter on
diamond_compute_budget / assess_compute_claim as empty as an
invariant: for ε ≤ 1 the inequality I_useful ≤ ε · A/(4·ℓ_p²·ln 2)
reduces to a tautology under the Bekenstein-Hawking bound. ε had no
operational definition or first-principles derivation in this module
— it was a caller-supplied scale dressed as a physics constant.

Changes (atomic across both physics-contract layers):
- core/physics/cosmological_compute_bound.py:
  * Removed `efficiency: float = 1.0` parameter from
    diamond_compute_budget() and assess_compute_claim().
  * Consolidated ComputeBudget to a single `holographic_max_bits`
    field; dropped `efficiency` and `useful_max_bits`.
  * Module docstring rewritten to ship only the holographic ceiling
    (caller-side discounting is the caller's responsibility).
  * No downstream importers used the dropped fields outside this
    test file (verified by repo grep).
- tests/unit/physics/test_cosmological_compute_bound.py:
  * Removed 4 efficiency-scaffolding tests (zero/negative, above-one,
    non-finite, scales-useful-bits).
  * Renamed `test_diamond_budget_default_efficiency_is_holographic`
    → `test_diamond_budget_returns_holographic_ceiling`.
  * Preserved coverage: closed-form coefficient, area=0 → 0 bits,
    negative/non-finite raise, Planck-area sanity, solar-mass BH
    OOM, Hubble-horizon OOM, claim within/at/above budget,
    Hypothesis property sweep linear-in-area.
- .claude/physics/INVARIANTS.yaml `cosmological_compute:`:
  * statement: dropped ε; restated as caller-side-discounting note.
  * falsification: dropped "OR a derivation forcing ε > 1" clause.

Quality gates (all green):
- pytest tests/unit/physics/test_cosmological_compute_bound.py: 14 passed
- ruff check + ruff format --check: pass
- black --check: pass
- mypy --strict: pass
- .claude/physics/validate_tests.py --self-check: PASS

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
neuron7xLab added a commit that referenced this pull request Apr 27, 2026
…FIED loop) (#492)

Closes the ACTIVE→VERIFIED transition opened by PR #491. Where #491
shipped the diff-bound acceptor schema + validator + CI gate, this PR
adds the runner that actually executes measurement_command and
falsifier.command, captures stdout+stderr to declared artifact paths,
hashes every artifact (sha256, lowercase 64-char hex), and writes the
evidence_sha256 list back to the acceptor YAML. With --promote and a
PASS verdict, status flips from ACTIVE to VERIFIED in-place.

Files added:
- tools/commit_acceptor/run_evidence.py (557 lines)
- tests/unit/commit_acceptor/test_run_evidence.py (23 tests)
- tmp/run_evidence_dogfood.json (evidence-of-evidence for the runner
  itself, run against the two existing acceptors)

Public API:
- EvidenceResult (frozen dataclass, sorted JSON serialisation)
- run_acceptor(acceptor, repo_root, *, timeout_s, runner) -> EvidenceResult
- update_acceptor_yaml(path, result, *, promote_to_verified) -> None
- main(argv) -> int (CLI: --acceptor-id/--all, --promote, --re-verify,
  --timeout-s [10, 3600], --summary-out, --repo-root)

Test count: 23/23 PASS (67/67 in tests/unit/commit_acceptor)
Gates: ruff check + ruff format --check + black --check + mypy --strict
       + validate_commit_acceptor (with and without --require-acceptor-
       for-code-change) — all green.

Falsifier mutation probes (all 6 caught by tests):
  #1 skip --promote success guard          → test 8 FAILS as expected
  #2 truncate sha256 to 8 chars            → test 22 FAILS as expected
  #3 always return verdict=PASS             → tests 2 + 3 FAIL as expected
  #4 skip artifact existence check          → test 4 FAILS as expected
  #5 stop skipping DRAFT acceptors          → test 10 FAILS as expected
  #6 strip evidence_sha256 sort             → test 6 FAILS as expected

Dogfood verdict counts (from tmp/run_evidence_dogfood.json):
  PASS: 1 (commit-acceptor-layer)
  SIGNAL_FAILED: 1 (canonical-action-result-comparator —
    tests/unit/control not present in this branch; honest null)

Security: subprocess.run(shell=True, ...) trusts maintainer-committed
acceptor YAML. Acceptor schema is enforced by the validator (PR #491)
before the runner ever sees a file. Per the chronology-discipline
contract, this runner is execution proof, NOT chronology proof — it
claims only "command exited 0 and these are the artifact hashes".

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
neuron7xLab added a commit that referenced this pull request Apr 27, 2026
* feat(governance): diff-bound commit acceptor layer (promise→diff→signal→falsifier→rollback→evidence→memory)

Invariant: every code-modifying commit landing on main MUST be governed by
at least one acceptor under .claude/commit_acceptors/ that declares the
full six-step contract. Unbound code commits are rejected fail-closed by
the new Commit Acceptor Gate workflow on every PR and merge-queue entry.

Files added:
- .claude/commit_acceptor_policy.yaml          (claim caps + forbidden imports)
- .claude/commit_acceptor_template.yaml        (canonical schema, status DRAFT)
- .claude/commit_acceptors/canonical-action-result-comparator.yaml
                                               (ACTIVE, documents PR #490)
- .claude/commit_acceptors/commit-acceptor-layer.yaml
                                               (ACTIVE, self-acceptor for this PR)
- tools/commit_acceptor/{__init__.py,validate_commit_acceptor.py}
                                               (validator + CLI)
- tests/unit/commit_acceptor/{__init__.py,test_validate_commit_acceptor.py}
                                               (44 tests, all 41 spec probes)
- .github/workflows/commit-acceptor-gate.yml   (PR + merge_group, 3.11/3.12)
- docs/reports/diff_bound_commit_acceptor_layer.md (closure report)

Forbidden schema fields (rejected anywhere): forbidden_symbols,
max_files_changed, generated_at. Forbidden import patterns enforced via
AST: trading, execution, forecast, policy. Distinct from CLAIMS layer
(.claude/claims/CLAIMS.yaml) — per-commit, diff-bound, not modified.

Local gates green: validator (static), validator (diff-binding +
require-acceptor-for-code-change), pytest 44/44, ruff, ruff format,
black, mypy --strict. Probe matrix 15/15 with idempotence
(sha256 of acceptor unchanged across two consecutive validator runs).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(governance): commit acceptor evidence runner (closes ACTIVE→VERIFIED loop) (#492)

Closes the ACTIVE→VERIFIED transition opened by PR #491. Where #491
shipped the diff-bound acceptor schema + validator + CI gate, this PR
adds the runner that actually executes measurement_command and
falsifier.command, captures stdout+stderr to declared artifact paths,
hashes every artifact (sha256, lowercase 64-char hex), and writes the
evidence_sha256 list back to the acceptor YAML. With --promote and a
PASS verdict, status flips from ACTIVE to VERIFIED in-place.

Files added:
- tools/commit_acceptor/run_evidence.py (557 lines)
- tests/unit/commit_acceptor/test_run_evidence.py (23 tests)
- tmp/run_evidence_dogfood.json (evidence-of-evidence for the runner
  itself, run against the two existing acceptors)

Public API:
- EvidenceResult (frozen dataclass, sorted JSON serialisation)
- run_acceptor(acceptor, repo_root, *, timeout_s, runner) -> EvidenceResult
- update_acceptor_yaml(path, result, *, promote_to_verified) -> None
- main(argv) -> int (CLI: --acceptor-id/--all, --promote, --re-verify,
  --timeout-s [10, 3600], --summary-out, --repo-root)

Test count: 23/23 PASS (67/67 in tests/unit/commit_acceptor)
Gates: ruff check + ruff format --check + black --check + mypy --strict
       + validate_commit_acceptor (with and without --require-acceptor-
       for-code-change) — all green.

Falsifier mutation probes (all 6 caught by tests):
  #1 skip --promote success guard          → test 8 FAILS as expected
  #2 truncate sha256 to 8 chars            → test 22 FAILS as expected
  #3 always return verdict=PASS             → tests 2 + 3 FAIL as expected
  #4 skip artifact existence check          → test 4 FAILS as expected
  #5 stop skipping DRAFT acceptors          → test 10 FAILS as expected
  #6 strip evidence_sha256 sort             → test 6 FAILS as expected

Dogfood verdict counts (from tmp/run_evidence_dogfood.json):
  PASS: 1 (commit-acceptor-layer)
  SIGNAL_FAILED: 1 (canonical-action-result-comparator —
    tests/unit/control not present in this branch; honest null)

Security: subprocess.run(shell=True, ...) trusts maintainer-committed
acceptor YAML. Acceptor schema is enforced by the validator (PR #491)
before the runner ever sees a file. Per the chronology-discipline
contract, this runner is execution proof, NOT chronology proof — it
claims only "command exited 0 and these are the artifact hashes".

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(governance): bind tmp/run_evidence_dogfood.json to commit-acceptor-layer (#493)

The dogfood JSON committed in PR #492 has extension .json which the
commit-acceptor policy treats as code, triggering "code change without
acceptor" on the diff-binding CI gate. Add it to the self-acceptor's
diff_scope so the gate is satisfied.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(ci): install numpy in commit-acceptor-gate workflow

The commit-acceptor-gate job runs `pytest tests/unit/commit_acceptor`
which transitively triggers the global `tests/conftest.py`. That conftest
imports `core/utils/determinism.py`, which imports `numpy`. Without
numpy in the venv, pytest fails during collection (before any test runs)
with `ModuleNotFoundError: No module named 'numpy'` — turning both
3.11 and 3.12 matrix jobs red.

Add `numpy` to the install line. Other deps unchanged.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(governance): close 6 adversarial-audit holes in commit acceptor validator

The first-pass validator (PR #491) shipped with six bypasses surfaced by
adversarial audit. All six are now closed; each fix is paired with a
test that fails without it (mutation-probed, both directions where
relevant).

Hole 1 — Relative-import bypass (`from . import trading`):
  AST detector skipped relative imports entirely. Fixed: when
  node.level > 0, check each `alias.name` against forbidden patterns.

Hole 2 — Relative-import false positive (`from .trading import x`):
  Symmetric defect. The relative module name `.trading` is a repo-local
  sibling submodule, not the forbidden absolute `trading` runtime.
  Fixed: for relative imports, only inspect alias names (NOT node.module).

Hole 3 — Path traversal in `diff_scope.changed_files[*].path`:
  `../etc/passwd`, `geosync/../../escape`, `/abs`, `path\\windows` were
  accepted silently. Added `_is_safe_repo_relative_path` helper rejecting
  leading `/`, backslashes, and any `..` component. Applied to both
  `changed_files` and `forbidden_paths` for symmetry.

Hole 4 — Empty/whitespace `id` and `promise` summary:
  `id: ""` and `promise: "   "` passed schema validation. Fixed: explicit
  non-empty-after-strip checks on `id` (string) and on `promise` whether
  it is a string or a `{summary: ...}` mapping.

Hole 5 — `promise: null` (None / wrong type):
  YAML `promise:` (no value) silently passed. Fixed: explicit
  `INVALID_PROMISE_BLOCK` rejection when promise is None or
  non-string-non-mapping (lists, ints).

Hole 6 — Theater test for relative-import path:
  `test_14_relative_import_skipped` only asserted skip; never asserted
  catch on `from . import trading` (Hole 1). Replaced with
  `test_14_relative_import_two_directions` that asserts BOTH the catch
  (alias is forbidden) and the non-flag (relative module name is
  repo-local).

New tests added (parametrized where relevant, 17 cases total):
  - test_14_relative_import_two_directions  (both directions)
  - test_path_traversal_in_changed_files_rejected  (6 params)
  - test_path_traversal_in_forbidden_paths_rejected  (3 params)
  - test_empty_id_rejected, test_whitespace_id_rejected
  - test_empty_promise_summary_rejected, test_whitespace_promise_summary_rejected
  - test_promise_dict_with_empty_summary_rejected
  - test_null_promise_block_rejected
  - test_promise_wrong_type_rejected

Probe matrix: each new test was mutation-probed by stashing the
validator change and re-running the test selector — all 17 cases failed
without the fix and passed with it. Full gate matrix (validator,
diff binding, pytest, ruff, ruff format, black, mypy --strict) green.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(ci): scope commit-acceptor pytest with --confcutdir to avoid global conftest deps

The previous fix added numpy to the workflow venv, but tests/conftest.py
also imports pandas (and transitively other deps via core/utils). Rather
than mirror the entire repo's runtime dependency tree into a governance
gate venv, use --confcutdir=tests/unit/commit_acceptor so pytest does
not load the global conftest at all. The commit_acceptor unit tests
are self-contained and need no shared fixtures.

Net effect: workflow dependency line stays minimal (pyyaml/black/ruff
/mypy/pytest only); CI no longer breaks when an unrelated dep is added
to tests/conftest.py.

Verified locally: 83/83 pass with --confcutdir; same set passes without
the flag too.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(ci): silence detect-secrets false-positive on evidence-runner artifact + restore mypy plugin

Three coupled fixes for commit-acceptor-validation jobs:

1. Remove tracked tmp/run_evidence_dogfood.json — sha256 hex digests in
   the evidence dogfood snapshot looked like high-entropy secrets to
   detect-secrets. The runner can produce a fresh snapshot on demand;
   committing one stale instance polluted the secret scanner.

2. Add tmp/ to .gitignore so future runner output stays out of git.

3. Add pydantic to commit-acceptor-gate workflow venv. The repo's
   mypy.ini declares pydantic.mypy as a plugin; mypy --strict cannot
   load it without the package installed, even when the files under
   inspection do not import pydantic.

Self-acceptor updated to drop the dogfood path from changed_files.

Verified locally: 83/83 tests pass with --confcutdir; static validator
PASS; diff-binding gate PASS after this commit because the deletion
no longer appears in the net origin/main..HEAD diff.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(ci): install types-PyYAML for mypy strict in commit-acceptor-gate

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant