Repository navigation
[infra] - Keep Dependabot out of locks/ and split pip majors into their own PR - #1726
Merged
Merged
Conversation
…ir own PR Dependabot's pip-all PRs (#1717, #1724) rewrote every hashed lock without the locks/*-inputs.json records, so the lock contract failed them by construction and each one conflicted with any other lock change. pip now: - excludes locks/** (exclude-paths); pins move only in constraints.txt, pyproject.toml and requirements*.txt, and the operator re-locks on the Mac - runs monthly instead of weekly, since every PR costs a re-lock - groups minor+patch together and majors separately, so a major such as huggingface-hub 1->2 is reviewed on its own (grouped, not ignored, because ignore rules also suppress security updates) Also corrects the header comment that said constraints.txt is never fetched. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FZ8JTF2v1eQd1L5CKQR8j
This was referenced Oct 20, 2026
Comment-only; the parsed config is byte-identical before and after. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FZ8JTF2v1eQd1L5CKQR8j
cgfixit
marked this pull request as ready for review
October 20, 2026 14:05
This was referenced Oct 20, 2026
Open
cgfixit
pushed a commit
that referenced
this pull request
Oct 20, 2026
…c removal and extras drop Doc pass against main @ cdcef76 with the two open PRs (#1726, #1727) treated as merged; the deterministic checkers (doc-sync, dep-guard, env drift, lock contract, invariant-guard) were already green, so every change is prose. - README: the agentic loop no longer appears in the ship-off list, the security-model row or "Current development"; the docs map stops crediting setup-guide.md with Docker/conda and gains locks/README.md. - setup-guide.md: the self-install line is `pip install -e . -c constraints.txt` on Linux/Windows and `pip install -e . --no-deps` on macOS (the old `/tmp/constraints-macos.txt` no longer exists, and the install goes through the hashed locks, not requirements.txt); the lock contract covers 19 locks, not 25; "step 4b" is step 4; the stranded lock-freshness section sits above the footer; reconciled date 2026-10-20. - locks/README.md: records that constraints.txt and requirements*.txt are hashed byte-for-byte into the lock records, and what a Dependabot pip PR is under the #1726 config. - docs/DOCKER.md, macos/README.md, powershell/README.md, AGENTS.md, CLAUDE.md section 8: stale agentic-registry/agentic-writes wording, the verify-deps name, and the macOS note on the editable install. - docs/audits/2026-10-20-dependency-currency-sweep.md: PyPI currency and advisory sweep over all 42 pins. No pin changed: the hashed locks regenerate only on arm64 macOS and the contract hashes the manifests, so bump candidates are listed for the owner. 0 new advisories. Checks run directly: doc_sync.py, check_deps.py, check_env_drift.py, check_lock_contract.py, check_invariants.py (all 0 failures); `pip install --dry-run --no-deps -e .` in a 3.12 venv. CI only: everything else. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0196C68GFwq9cXGmpqDMDGJe
cgfixit
added a commit
that referenced
this pull request
Oct 20, 2026
…c removal and extras drop (#1731) ## Proposed changes Documentation and dependency resync against `main` @ `b0683515` (after #1726 and #1727 merged). The five deterministic checkers (doc-sync D1-D13, dep-guard D1-D11, env drift E1-E7, `check_lock_contract.py`, invariant-guard) were already green, so every change here is prose plus one dated audit. **No pin, lock, manifest, or code line changes.** - `README.md`: the removed agentic coding loop no longer appears in the ship-off list, the security-model "Optional surfaces" row, or "Current development"; the docs map stops crediting `setup-guide.md` with Docker/conda and gains a `locks/README.md` row. - `setup-guide.md`: the editable self-install is `pip install -e . -c constraints.txt` on Linux/Windows and `pip install -e . --no-deps` on macOS. The old text pointed at `/tmp/constraints-macos.txt` (exists nowhere in the repo) and said the install went through `requirements.txt` (it goes through the hashed locks). Lock count 25 -> 19 (six locks left with #1700). "step 4b" -> step 4 (no 4b exists). The lock-freshness section was stranded after the footer and now sits above it. Reconciled date 2026-10-20. Option C step 5 notes `GH_TOKEN` is optional and unread by the runtime. - `locks/README.md`: records that `constraints.txt`, `requirements*.txt` and `scripts/ci-lock-inputs/` are hashed byte-for-byte into the lock records (a comment edit alone fails the contract), and a Dependabot section matching #1726. - `docs/DOCKER.md`, `macos/README.md`, `powershell/README.md`: "agentic registry" / "agentic writes" / "Agentic / registry" wording replaced with what exists (model caches, fsconnect writes, connectors). - `AGENTS.md`: `verify-dep` -> `verify-deps`. `CLAUDE.md` §8: one trailing comment on the macOS editable install. Both files steer agent sessions; the diff is those two lines, nothing copied from any external source. - `docs/audits/2026-10-20-dependency-currency-sweep.md` (new) and a `docs/changelog.txt` row: PyPI currency + per-release advisory sweep over all 42 pins. 0 new advisories (chromadb and nltk remain the two accepted in `SECURITY.md`). Bump candidates are grouped for the owner; the stale `constraints.txt` pydantic comment is flagged but left alone because fixing it would re-hash the file. **Invariant / Governance Impact:** none. No core file, graph edge, config value, sanitizer pattern, auth path, or manifest changed. `check_invariants.py`: 46 passed, 0 failed on the pushed head. --- ## Types of changes - [ ] Bugfix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) - [ ] Security (auth, privacy, injection, egress, redaction, or secrets) - [ ] Invariant / Governance refinement (use this for changes that strengthen or evolve the 6 invariants, I6 isolation, or harness phases) - [ ] Dependencies (added, removed, or bumped) - [ ] CI / infrastructure (workflows, hooks, templates, or checkers) - [ ] Refactor or tests (behavior-preserving, no new capability) - [x] Documentation update - [ ] Other (none of the boxes above fit) Scope note: Docs + audits. --- ## Benefits / why - An operator following `setup-guide.md` on macOS was told to pass a constraints file that does not exist; the new line (`--no-deps`) was run and resolves. - README, Docker and installer docs stop describing a subsystem removed two days ago (#1699/#1700), so a reader cannot go looking for the agentic loop, registry, or `/ops/agentic`. - `locks/README.md` now states the one rule that bites a would-be contributor: the manifests are hashed, so a pin or comment edit needs the Mac re-lock. Dependabot's role (#1726) is documented where the locks live. - The currency sweep gives the owner a reviewed bump list without landing a red lock contract. --- ## Risks to monitor - Prose only; the only executable claim is the macOS `pip install -e . --no-deps` line. Signal if wrong: `cyclaw-*` shims missing after that command on a Mac. Verified on Linux 3.12 only (dry-run, "Would install cyclaw-1.9.0"); not run on macOS. - `doc_sync.py` D9/D10 would catch a broken link or anchor from the moved section; it reports 0 drift on the head. - The sweep is a point-in-time PyPI read (2026-10-20); it is not a pin change and goes stale like every dated audit. --- ## Checklist - [x] I have read `docs/THREAT_MODEL.md`, `INVARIANTS.md` and `SECURITY.md` (and any relevant Phase docs) - [x] This change preserves all 6 security invariants and I6 module isolation (explicit evidence or invariant matrix included for core changes) - [ ] Full sandbox validation has been run (docs-only; per CLAUDE.md §5 the suites are CI's to run) - [x] No new external network dependencies or mandatory online LLM assumptions were introduced without explicit justification + offline fallback path - [ ] For any agentic/fsconnect change: n/a - [x] Relevant architecture docs or threat model notes have been updated if core behavior or topology changed - [x] Commit messages follow the title prefix convention above - [ ] For large or complex changes: n/a --- ## Further comments Checks run directly on the pushed head: `doc_sync.py` (0 drift), `check_deps.py` (0/0), `check_env_drift.py` (0/0), `check_lock_contract.py` (passed), `check_invariants.py` (46/0), a lock-vs-constraints agreement pass over 148 shared entries, and `pip install --dry-run --no-deps -e .` in a Python 3.12 venv. CI only: ruff, the four test legs, coverage, pr-template-check. --- ## Suggested merge order of open PRs _Trial merges verified against main @ b068351 on 2026-10-20: this branch is rebased directly onto that SHA (fast-forward, nothing to merge)._ **#1728** · Blocked Impact: Dependabot Docker base 3.12 -> 3.15; `requires-python <3.13`, so this cannot merge as proposed. Action: Close or re-pin; independent of this PR. **#1729** · Blocked Impact: Dependabot pip minor+patch, 16 packages; red on the lock contract until the Mac re-lock (see `locks/README.md` Dependabot section in this PR). Action: Owner re-locks on arm64 macOS, then merge; does not touch this PR's files. **this PR** · Safe Impact: Docs and one audit only; no shared file with #1728/#1729. Action: Merge any time; squash. ## ELI5 The code moved on (the agentic coding loop and its extras were deleted last week, the lock set shrank, Dependabot got new rules) and the instruction manuals did not. This PR is the manual catching up; it changes no behavior. - **What was broken or missing:** like a museum map still showing a wing that was demolished. `README.md`, `docs/DOCKER.md` and the macOS/PowerShell READMEs still named the agentic loop, its registry and its writes. `setup-guide.md` told Mac users to pass `-c /tmp/constraints-macos.txt` (a file nothing creates), said the install went through `requirements.txt` (it goes through `locks/`), counted 25 locks (there are 19), referenced a "step 4b" that does not exist, and had its lock-freshness section sitting after the signature line. - **What changed:** those sentences now say what the tree does. The macOS self-install is `pip install -e . --no-deps`, because `constraints.txt` pins `torch==2.13.0+cpu` and no such wheel exists for macOS. `locks/README.md` gains two facts: the manifests are hashed into the lock records byte-for-byte, and a Dependabot pip PR is a shopping list until someone re-locks on the Mac. A new dated audit lists every pin against PyPI today with advisories checked per pinned release; two advisories exist (chromadb, nltk) and both were already accepted in `SECURITY.md`. Deliberately not done: no pin bumped, no `constraints.txt` comment fixed, because either one turns `check_lock_contract.py` red until the arm64 re-lock. - **What could still go wrong:** the only runnable claim is the macOS `--no-deps` line. It was dry-run on Linux 3.12 and resolved; it was not run on a Mac. If it is wrong, `cyclaw-user` and friends stay "command not found" after it. Everything else is words; `doc_sync.py` D9/D10 guard the links and anchors and report 0 drift. Last updated: 2026-10-20 10:12 ET --- _Generated by [Claude Code](https://claude.ai/code/session_0196C68GFwq9cXGmpqDMDGJe)_
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Proposed changes
Dependabot's pip PRs have been red by construction. #1717 and #1724 (a 54/55-package
pip-allbatch) each rewrote every hashed lock inlocks/but never thelocks/runtime-inputs.json/locks/ci-inputs.jsonrecords.scripts/check_lock_contract.pytherefore failed them, and every one conflicted with any other lock change. The locks can only be regenerated byscripts/refresh-runtime-lock.sh/refresh-ci-locks.shon arm64 macOS, which Dependabot cannot run.This PR changes only
.github/dependabot.yml, and only its pip block:exclude-pathslocks/**constraints.txt/pyproject.toml/requirements*.txt; the operator re-locks on the Macschedulegroupspip-allpip-minor-patch+pip-majorMajors are grouped, not ignored. GitHub's options reference marks
ignoreas also affecting security updates, so ignoring majors could silence a security fix that only ships as a major.The header comment is corrected too. It claimed
constraints.txtis never fetched, and #1717/#1724 both edited it. Why Dependabot reads it now is marked unverified. The header also states what a pip PR now is, a shopping list rather than a merge candidate, and points at the dailypip-auditcron on main as the backstop for indirect dependencies that have noconstraints.txtpin.Docker and github-actions are unchanged.
Invariant / Governance Impact: none. Config for a GitHub bot; no code path changes.
Types of changes
Scope: Infrastructure / CI only.
Benefits / why
Risks to monitor
runtime-inputs.jsonhashesconstraints.txt. That is intended. The workflow is inlocks/README.mdunder "Changing a pin".constraints.txtpin get no Dependabot PR. Before [security] - Pin aiohttp to 3.14.4 for three pip-audit advisories #1715, aiohttp was only visible in the locks, and that is how Bump aiohttp from 3.14.3 to 3.14.4 in /locks in the pip group across 1 directory #1718 happened. The dailypip-auditcron on main catches those.scana required check.pip-audit.ymlonly runs on PRs that touch dependency paths, so a requiredscanwould never report on other PRs and would block them.exclude-pathsis documented for version updates only. A Dependabot security update could still touchlocks/. If one does, treat it like Bump the pip-all group across 1 directory with 55 updates #1724.dependabot.ymlon push to the default branch and reports errors in the repo's Dependabot view. The syntax follows the current options reference (exclude-paths,groups.*.update-typeswithminor/patch/major,interval: monthly). The file parses as YAML locally.Checklist
docs/THREAT_MODEL.md,INVARIANTS.mdandSECURITY.md(and any relevant Phase docs)Further comments
Run directly:
.github/dependabot.yml.python3 .claude/skills/dep-guard/check_deps.py: 0 failures, 0 warnings.Only GitHub can check: Dependabot's own schema validation, after merge.
Companion: #1724 is closed in favour of this PR. Dependabot should open a fresh, lock-free PR on its next monthly run after this merges.
Suggested merge order of open PRs
Trial merges verified (
git merge --no-commit --no-ff+ abort, each on its own) against main @ cdcef76 on 2026-10-20.This PR · Blocked (draft)
Impact: Dependabot pip config only.
Action: Merge when CI is green. Clean; touches no file the other PR does.
Installer test timeout PR · Blocked (draft)
Impact:
tests/test_installer_python_contract.pytimeout and diagnostics.Action: Independent; either order. Clean.
ELI5
Dependabot is a helper that checks for newer versions of the packages CyClaw uses and opens PRs to bump them. It has been rewriting the sealed, hash-checked package lists in
locks/too. Those lists can only be regenerated by a script on the Mac, and the helper's edits never updated the seal records next to them, so every one of its PRs failed CI and fought with real lock changes.Now
.github/dependabot.ymltells it to keep out oflocks/entirely. Its PRs only change the human pin files, which makes them a shopping list: you check one out on the Mac, re-lock, and push. It also runs monthly instead of weekly, and big version jumps come in their own PR, so they don't hide inside a 55-package batch.pip-auditrun becomes the only alarm.I checked that the file parses and that dep-guard is clean. GitHub's acceptance of the new keys shows only after merge.
🤖 Generated with Claude Code
https://claude.ai/code/session_014FZ8JTF2v1eQd1L5CKQR8j
Last updated: 2026-10-20 09:55 ET
Generated by Claude Code