v4.20.0
- release: 4.20.0 (#547)
- feat(hooks): enforce the --no-deps hashed-install invariant (#536) (#546)
- fix(hooks): close three decision-gate review blockers (#545)
- fix(launcher): make the deps idempotence guard ABI-aware (#540) (#544)
- fix(setup): stop labeling a failed model pre-cache [ok] (#537) (#543)
- fix(setup): install requirements/setup.txt instead of a hand-written package list (#538) (#542)
- feat(hooks): refuse a decision written into code at edit time (#541)
- fix(setup): the installer's dependency step could neither install nor update (#539)
- Merge pull request #535 from cdeust/test/389-provenance-mutation-coverage
- docs: correct the _build_reason unreachability claim (#389)
- docs: log the provenance mutation closure (#389)
- test: close the provenance mutation gap (#389)
- Merge pull request #534 from cdeust/feat/372-decorator-call-edges
- docs: report the formatter file count accurately
- feat(ast): attribute decorator calls to decorated definitions (#372)
- Merge pull request #530 from cdeust/docs/514-validation-results
- docs: reproduce validation from public equivalent commit
- docs: record issue 514 retrieval validation results
- Merge pull request #528 from cdeust/feat/514-migration-13
- Merge pull request #527 from cdeust/feat/514-migration-12
- Merge pull request #526 from cdeust/feat/514-migration-11
- Merge pull request #525 from cdeust/feat/514-migration-10
- Merge pull request #524 from cdeust/feat/514-migration-09
- Merge pull request #523 from cdeust/feat/514-migration-08
- Merge pull request #522 from cdeust/feat/514-migration-07
- Merge pull request #521 from cdeust/feat/514-migration-06
- Merge pull request #520 from cdeust/feat/514-migration-05
- Merge pull request #519 from cdeust/feat/514-migration-04
- Merge pull request #518 from cdeust/feat/514-migration-03
- Merge pull request #517 from cdeust/feat/514-migration-02
- Merge pull request #516 from cdeust/feat/514-migration-01
- Merge pull request #515 from cdeust/feat/514-wiki-foundation
- fix: preserve archival excerpts and finish decision comment cleanup
- docs(wiki): migrate decision evidence batch 13/13
- docs(wiki): migrate decision evidence batch 12/13
- docs(wiki): migrate decision evidence batch 11/13
- docs(wiki): migrate decision evidence batch 10/13
- docs(wiki): migrate decision evidence batch 09/13
- docs(wiki): migrate decision evidence batch 08/13
- docs(wiki): migrate decision evidence batch 07/13
- docs(wiki): migrate decision evidence batch 06/13
- docs(wiki): migrate decision evidence batch 05/13
- docs(wiki): migrate decision evidence batch 04/13
- docs(wiki): migrate decision evidence batch 03/13
- docs(wiki): migrate decision evidence batch 02/13
- docs(wiki): migrate decision evidence batch 01/13
- fix(wiki): validate canonical filenames before registration
- feat(wiki): add canonical decision retrieval and reviewed mirrors
- Merge pull request #502 from cdeust/perf/green-response-context-scope
- Merge pull request #501 from cdeust/perf/green-batch-memory-reads
- Merge pull request #500 from cdeust/perf/green-reranker-ablation
- Merge pull request #499 from cdeust/perf/green-indexed-recall-pools
- Merge pull request #498 from cdeust/perf/green-storage-calibration
- Merge pull request #497 from cdeust/perf/green-batch-embedding-paths
- Merge pull request #496 from cdeust/perf/green-embedding-prefix-audit
- Merge pull request #495 from cdeust/perf/green-reuse-write-embeddings
- Merge pull request #494 from cdeust/perf/green-resident-capture
- Merge pull request #493 from cdeust/feat/green-capture-modes
- Merge pull request #492 from cdeust/perf/green-exact-preflight
- Merge commit '1fbceb1a126a700d63062137e6b7fee8ecf19faa' into HEAD
- Merge commit '1578f683abe6ad992a994092d4e53f6c5f88af15' into HEAD
- Merge commit '75fb7740e2c3e69a3dddaa638ead10b9b476090f' into HEAD
- test(postgres): isolate exact scoring and pair semantics from ANN
- ci: trigger required checks against main
- ci: trigger required checks against main
- ci: trigger required checks against main
- ci: trigger required checks against main
- ci: trigger required checks against main
- ci: trigger required checks against main
- ci: trigger required checks against main
- ci: trigger required checks against main
- ci: trigger required checks against main
- ci: trigger required checks against main
- Merge commit 'f8e57919cd9e8813a284a3eb81f172d97243f2f1' into HEAD
- Merge commit '11b500fa30563b61dc12e67d375bcda085a7cfc4' into HEAD
- fix(benchmarks): provision exact inputs for regression baseline
- Merge commit 'af5b02d5aa22becf5787470c4c0c2aaef0ac850b' into HEAD
- Merge commit 'c910807f5549671817935a7c5f2325d962465e81' into HEAD
- Merge commit '66f879ab26577d993e28fe9f9f7841da193af2b3' into HEAD
- Merge commit '74c4f7f5570e8b8e07eb2c51326d2329a68a4846' into HEAD
- Merge commit '29f74c66d37ce18ca49c0a276fb2ecdaf2f925ac' into HEAD
- Merge commit 'da4a99823395476f7eb915446ef228166c973869' into HEAD
- Merge commit 'ece9a1fa471e04893279dec95d845ffb44a6e7de' into HEAD
- Merge commit '1df4b2f37b02521129c5b9b8317f1dad5a89bf9e' into HEAD
- Merge commit '5dcba407795e457ae2134f0c0d4b8441d39038eb' into HEAD
- Merge commit '257513c0ae6d96e96d8b9e37267cb5b7e0d72b45' into HEAD
- Merge remote-tracking branch 'origin/main' into HEAD
- Merge pull request #491 from cdeust/dependabot/pip/minor-and-patch-fccd2d8474
- docs(claude-md): keep CLAUDE.md short; move its body to docs/agent-guidance.md (#513)
- fix(worktrees): create every worktree inside the repo under .claude/worktrees (#512)
- Merge pull request #511 from cdeust/ci/doc-contract-tests-on-docs
- ci: run the full-suite job on docs-only PRs, where doc guards live
- Merge pull request #510 from cdeust/fix/readme-viz-identity-anchor
- fix(readme): restore the canonical hypermnesia-mcp-viz identity anchor
- Merge pull request #509 from cdeust/docs/readme-conversion
- docs(readme): name the three evolving MCP servers, not a four-piece count
- docs(readme): lead with what Cortex does, in plain words
- Merge pull request #507 from cdeust/feat/banner-fetch-key
- Merge pull request #508 from cdeust/docs/green-software-engineering
- Merge remote-tracking branch 'origin/main' into pr507-update
- docs(readme): document the green software engineering programme
- Merge branch 'main' into perf/green-exact-preflight
- Merge pull request #506 from cdeust/fix/docker-smoke-cache-export
- feat(session_start): keep a fetch key on truncated banner lines
- ci: stop exporting the docker-smoke layer cache on pull requests
- Merge pull request #504 from cdeust/fix/numeric-equivalence-tolerance
- Merge branch 'main' into perf/green-exact-preflight
- Merge branch 'main' into fix/numeric-equivalence-tolerance
- Merge pull request #505 from cdeust/fix/mcp-host-config-timeout
- ci: size the mcp-host-config timeout against its measured tail
- Merge branch 'main' into fix/numeric-equivalence-tolerance
- Merge pull request #503 from cdeust/claude/cortex-floors-regression-ulddt2
- fix: give each PR-sourced constant its own # source: comment
- docs+test: replace exact-identity gate with ULP + rank-stability tolerance
- docs(changelog): note the floor-check/no-regression fix
- fix(benchmarks): make floor check non-blocking, add --no-regression gate
- perf(embeddings): use bounded character searches for prefix eligibility
- fix(types): narrow optional tokenizer before configuring prefix guard
- refactor(embeddings): keep prefix state with model lifecycle
- perf(embeddings): skip BERT suffixes only after exact token guards
- test(reranker): load recall snapshot seam in handler probe
- perf(memory): reuse observed neighbors and recall embeddings
- perf(storage): initialize engram slots in one statement
- Merge commit 'f76b7611d79b9673b362ceca4285ee462614eadf' into perf/green-response-context-scope
- test(invariants): align heat writer pins after batch reader addition
- Merge commit 'e1ab7cae19ab0b0c5e91025e870bd5494769e57d' into perf/green-response-context-scope
- Merge commit '15976e801c400f604e80fdc1df39edfd2513ed4b' into perf/green-reranker-ablation
- Merge commit '0b978d759a4089e646cd51771138f8631d8b5585' into perf/green-indexed-recall-pools
- Merge commit 'ded553694c1a10b73213e5c9ee1d366aadbb74cd' into perf/green-storage-calibration
- Merge commit '02543fa628ea7a4d054c88e31958578966c1f19c' into perf/green-batch-memory-reads
- Merge commit 'e54b318511fcc7a04054c618526d37828467e37c' into perf/green-batch-embedding-paths
- Merge commit '806f66a088514b82a914c42746e8d4814a323abd' into perf/green-reuse-write-embeddings
- Merge commit '5426f4426d25b9b8872817abcc1524a0a06c4d68' into perf/green-embedding-prefix-audit
- fix(capture): serialize socket publication and catch Future deadlines on Python 3.10
- merge(green): carry typed file preparation contract
- merge(green): carry typed file preparation contract
- merge(green): carry typed file preparation contract
- merge(green): carry typed file preparation contract
- merge(green): carry typed file preparation contract
- fix(codebase): distinguish deferred input failures in file jobs
- merge(green): carry verified embedding evidence
- merge(green): carry verified embedding evidence
- merge(green): carry verified embedding evidence
- merge(green): carry verified embedding evidence
- merge(green): carry verified embedding evidence
- docs(embedding): record corrected context and codebase proofs
- merge(green): carry strict embedding context correction
- merge(green): carry strict embedding context correction
- merge(green): carry strict embedding context correction
- merge(green): carry strict embedding context correction
- merge(green): carry strict embedding context correction
- fix(embedding): preserve measured scalar and batch contexts
- Merge commit 'b01dbf8db5cfa40261431035b995cfea73e2a77d' into perf/green-response-context-scope
- Merge commit '27ae9c7018dbabf9c21bc531b5eaa49f33a8f0c5' into perf/green-reranker-ablation
- Merge commit 'e2de92725805bec0f7862749653be6661e770836' into perf/green-batch-memory-reads
- Merge commit '3bf50ecc709646599d9106c8ea085dcaf8cdf8de' into perf/green-indexed-recall-pools
- Merge commit '0454cb4ea7f6cb122e0fd9dde7ac4e806237d9a3' into perf/green-storage-calibration
- docs(embeddings): record restored compression identity proof
- fix(embeddings): preserve exact scalar compression vectors
- fix: align launcher pins and C# fixtures with refreshed dependencies
- Merge commit 'b94ce807b265c9dedb68cc65eb3dc0a83a510dd3' into perf/green-embedding-prefix-audit
- Merge commit '1152a64c94a23bfde365fa9115d8e1ada1770458' into perf/green-response-context-scope
- Merge commit 'b8099e909043afcdc4e0f6444451a32f613d63fe' into perf/green-reranker-ablation
- Merge commit '98eebc60dc20c3946228ad4bce8abbeda7e55043' into perf/green-batch-memory-reads
- Merge commit '2ac9b173850015ee07827df2fafc464c236e7ec1' into perf/green-indexed-recall-pools
- Merge commit '0fe187b73fdc8386527584d99a82d46ebc7935ce' into perf/green-storage-calibration
- Merge commit '1b497a61a57e566f033eb26f9f15bf7fd2f1c1e4' into perf/green-batch-embedding-paths
- docs: record final complete PostgreSQL call counts
- docs: record real neural seed and lesson batch measurements
- docs: record restored scalar neural identity
- Merge commit '68de3e04e8ea35904abd10c2f6ffc1077c6aef60' into perf/green-response-context-scope
- Merge commit '03cbb29c18231858d8683a958d5c579adc6bb66f' into perf/green-batch-memory-reads
- Merge commit '0e2927777790b340fd66dc8cd44d5e6cf5da9b7b' into perf/green-reranker-ablation
- Merge commit 'c3b1b5a7b13611aca96985d71429d89efd2301c1' into perf/green-indexed-recall-pools
- Merge commit '3ec76b597d95f020f34b30cabc8118764d4a7303' into perf/green-storage-calibration
- docs: record final measured outcomes and remaining acceptance gaps
- docs: record final measured outcomes and remaining acceptance gaps
- Merge validated main and resolve compatible dependency locks for PR 491
- Merge commit '8222f4fbd02ef629b284f6ef7ac44e18791e58c7' into perf/green-response-context-scope
- test: preserve read batching coverage with strict scalar scoring
- Merge commit '1144c14bdc06c2cb512edf61ed869686fae51f91' into perf/green-reranker-ablation
- Merge commit 'd5842a446b5d608c42d61c4d2f60f528fb6ca5a8' into perf/green-response-context-scope
- Merge commit '1798fdc97615834d9649229b88585f2ee4ebac9f' into perf/green-batch-memory-reads
- Merge commit '8620c9802520dfc3f0a5ce6864cc61fa03e9bc3d' into perf/green-indexed-recall-pools
- Merge commit '537e23ac9336c83e95b037068fe686b3f0288665' into perf/green-storage-calibration
- Merge commit '2720dbfbec93ab64794886b54a86dc057416988d' into perf/green-batch-embedding-paths
- Merge commit 'fa39ca53f944d293edd4bf2ef4aca5d86b4f1eab' into perf/green-embedding-prefix-audit
- fix: preserve strict scalar scoring after neural batch audit
- Merge commit '648a915c' into perf/green-response-context-scope
- Merge commit '648a915c' into perf/green-batch-memory-reads
- fix(benchmarks): retain paired archive metadata without extraction
- Merge commit 'efb65fd873a7f90ccecab4a3de0346f6a238f684' into perf/green-response-context-scope
- Merge commit '3f83a47dd0697714de4dbba68edcfbd04e621b7a' into perf/green-batch-memory-reads
- Merge commit 'd57b05c902292c0bbcb8bcca321183f20ddf6f1b' into perf/green-reranker-ablation
- test(postgres): bind recall fixture floats to declared real arguments
- deps: bump the minor-and-patch group across 1 directory with 36 updates
- perf(context): filter capture noise and expose scoped memory pagination
- perf(memory): batch neighbor and recall row lookups
- bench(reranker): prepare pinned full-quality ablation cells
- test: separate untied recall witnesses from broad plan workloads
- fix: keep recall plans parameter-specific and parse multiline PG evidence
- perf(recall): expose bounded indexed pools and reproducible PG comparison
- perf(storage): apply vacuum policy and add isolated fillfactor calibration
- perf(memory): size the embedding cache from a measured capture session
- perf(embedding): audit exact raw-prefix truncation feasibility
- perf(memory): batch independent writes and share the embedding LRU
- perf(memory): batch normalized neighbors and reuse unchanged merge vectors
- fix(hooks): exclude disabled captures before launcher bootstrap
- test(hooks): compare worker tools with the shared capture vocabulary
- feat(hooks): add explicit full writes-only and off capture modes
- perf(hooks): reuse a resident Unix-socket capture worker
- perf(memory): reject provably low novelty before embedding
- Merge pull request #467 from cdeust/dependabot/pip/click-8.5.0
- Merge pull request #466 from cdeust/dependabot/pip/coverage-7.16.0
- Merge pull request #465 from cdeust/dependabot/pip/googleapis-common-protos-1.75.2
- Merge pull request #462 from cdeust/dependabot/pip/typer-0.27.2
- Merge pull request #461 from cdeust/dependabot/pip/psycopg-binary-3.3.5
- Merge pull request #489 from cdeust/dependabot/github_actions/minor-and-patch-ca5e8f1fbb
- Merge remote-tracking branch 'origin/main' into fix/pr465-sync-green-ci
- Merge pull request #460 from cdeust/dependabot/docker/dot-devcontainer/python-cad9a2c
- Merge pull request #459 from cdeust/dependabot/docker/docker/python-9ab8d9c
- Merge pull request #487 from cdeust/fix/green-linux-cpu-bootstrap
- Merge pull request #486 from cdeust/fix/green-hook-cooldowns
- Merge pull request #485 from cdeust/fix/green-log-rotation
- Merge pull request #484 from cdeust/fix/green-deps-cleanup
- Merge pull request #483 from cdeust/perf/green-hook-matchers
- Merge pull request #482 from cdeust/fix/green-lazy-hook-imports
- Merge pull request #481 from cdeust/build/green-docker-context
- Merge remote-tracking branch 'origin/main' into fix/pr481-sync-approved-timeouts
- Merge pull request #479 from cdeust/ci/green-timeouts-concurrency
- Merge pull request #478 from cdeust/build/green-sdist-scope
- Merge pull request #477 from cdeust/ci/green-dependency-caches
- Merge pull request #476 from cdeust/ci/green-conditional-docker
- Merge remote-tracking branch 'origin/main' into fix/pr476-refresh-main
- Merge pull request #475 from cdeust/ci/green-single-pytest
- ci: bump the minor-and-patch group with 3 updates
- Merge pull request #471 from cdeust/ci/green-path-filters
- ci: retain the previously measured slow Python 3.13 bound
- ci: recalibrate Python timeouts from completed W2 runs
- Merge branch 'main' into fix/green-linux-cpu-bootstrap
- Merge branch 'main' into fix/green-hook-cooldowns
- Merge branch 'main' into fix/green-log-rotation
- Merge branch 'main' into fix/green-deps-cleanup
- Merge branch 'main' into perf/green-hook-matchers
- Merge branch 'main' into fix/green-lazy-hook-imports
- Merge branch 'main' into build/green-docker-context
- Merge branch 'main' into build/green-sdist-scope
- Merge branch 'main' into ci/green-dependency-caches
- Merge branch 'main' into ci/green-conditional-docker
- Merge branch 'main' into ci/green-single-pytest
- Merge branch 'main' into ci/green-path-filters
- Merge pull request #470 from cdeust/ci/green-no-dist-upload
- Merge pull request #469 from cdeust/fix/green-energy-harness
- Merge branch 'main' into ci/green-timeouts-concurrency
- Merge branch 'main' into ci/green-no-dist-upload
- Merge branch 'main' into fix/green-energy-harness
- Merge pull request #468 from cdeust/fix/green-telemetry
- Merge pull request #488 from cdeust/fix/marketplace-zetetic-2-39-0
- fix(deps): synchronize click 8.5.0 lock and export provenance
- fix(deps): synchronize coverage 7.16.0 in the canonical lock
- fix(deps): synchronize googleapis-common-protos 1.75.2 lock
- fix(deps): synchronize typer 0.27.2 in the canonical lock
- fix(deps): synchronize psycopg lock exports and launcher pin
- fix(marketplace): deliver zetetic-team-subagents v2.39.0
- fix(launcher): resolve Linux Torch from the pinned CPU index
- fix: persist hook cascade cadence and cool down misses
- fix: rotate telemetry and detached worker logs
- feat: audit and explicitly clean orphan plugin dependencies
- perf: route PostToolUse hooks by handled tool names
- perf: avoid store imports for rejected pipeline hook events
- build: exclude local installs and generated Docker context
- ci: derive job timeouts from measured runs and cancel superseded PR checks
- build: exclude generated output and paper bundles from sdist
- ci: cache pinned pip npm and actionlint downloads
- ci: build runtime images on Docker changes and weekly validation
- ci: execute pytest once on the coverage matrix leg
- ci(paths): gate the matrix on relevant changes and successful lint
- ci(artifacts): stop uploading unused distribution builds
- fix(benchmarks): validate float32 energy measurements and carbon units
- fix(telemetry): measure response bytes and retrieval work
- perf(backfill): batch-encode embeddings per file instead of per item
- deps: bump click from 8.4.2 to 8.5.0
- deps: bump coverage from 7.15.2 to 7.16.0
- deps: bump googleapis-common-protos from 1.75.0 to 1.75.2
- deps: bump typer from 0.27.1 to 0.27.2
- deps: bump psycopg-binary from 3.3.4 to 3.3.5
- build: bump python from
ce40764tocad9a2cin /.devcontainer - build: bump python from
416f0dbto9ab8d9cin /docker
What's Changed
- fix(marketplace): deliver zetetic-team-subagents v2.39.0 by @cdeust in #488
- fix(telemetry): measure response bytes and retrieval work (W0-1) by @cdeust in #468
- fix(benchmarks): validate energy harness float32 outputs and carbon units by @cdeust in #469
- ci(artifacts): stop uploading unused distribution builds by @cdeust in #470
- ci(paths): run relevant jobs after lint and verify every skip by @cdeust in #471
- ci: execute pytest once on the coverage leg (W1-3) by @cdeust in #475
- ci: limit runtime image builds to Docker changes and weekly validation (W1-4) by @cdeust in #476
- ci: cache pinned dependency and actionlint downloads (W1-5) by @cdeust in #477
- build: reduce sdist below 5 MB with an identical wheel (W1-6) by @cdeust in #478
- ci: set measured timeouts and cancel superseded PR runs (W1-7) by @cdeust in #479
- build: bound local Docker context (W1-8) by @cdeust in #481
- perf: defer unused pipeline hook imports (W2-1a) by @cdeust in #482
- perf: route PostToolUse hooks by handled tool names (W2-1b) by @cdeust in #483
- feat: audit and explicitly clean orphan plugin dependencies (W2-2) by @cdeust in #484
- fix: rotate telemetry and detached worker logs (W2-3) by @cdeust in #485
- fix: persist hook cascade cadence and cool down misses (W2-4) by @cdeust in #486
- fix(launcher): use pinned CPU-only Torch on Linux by @cdeust in #487
- build: bump python from
416f0dbto9ab8d9cin /docker by @dependabot[bot] in #459 - build: bump python from
ce40764tocad9a2cin /.devcontainer by @dependabot[bot] in #460 - ci: bump the minor-and-patch group with 3 updates by @dependabot[bot] in #489
- deps: bump psycopg and psycopg-binary to 3.3.5 by @dependabot[bot] in #461
- deps: bump typer from 0.27.1 to 0.27.2 by @dependabot[bot] in #462
- deps: bump googleapis-common-protos from 1.75.0 to 1.75.2 by @dependabot[bot] in #465
- deps: bump coverage from 7.15.2 to 7.16.0 by @dependabot[bot] in #466
- deps: bump click from 8.4.2 to 8.5.0 by @dependabot[bot] in #467
- fix(benchmarks): make floor check non-blocking, add --no-regression gate by @cdeust in #503
- ci: size the mcp-host-config timeout against its measured tail by @cdeust in #505
- docs+test: replace exact-identity gate with ULP + rank-stability tolerance by @cdeust in #504
- ci: stop exporting the docker-smoke layer cache on pull requests by @cdeust in #506
- docs(readme): document the green software engineering programme by @cdeust in #508
- feat(session_start): keep a fetch key on truncated banner lines by @cdeust in #507
- docs(readme): lead with what Cortex does, in plain words by @cdeust in #509
- fix(readme): restore the canonical hypermnesia-mcp-viz identity anchor by @cdeust in #510
- ci: run the full-suite job on docs-only PRs, where doc guards live by @cdeust in #511
- fix(worktrees): create every worktree inside the repo under .claude/worktrees by @cdeust in #512
- docs(claude-md): keep CLAUDE.md short; move its body to docs/agent-guidance.md by @cdeust in #513
- deps: refresh compatible dependencies and align plugin launcher pins by @dependabot[bot] in #491
- perf(capture): reject bounded writes before loading embeddings by @cdeust in #492
- feat(capture): expose full, writes-only and off modes by @cdeust in #493
- perf(capture): reuse a resident embedding worker by @cdeust in #494
- perf(remember): reuse embeddings for identical merge text by @cdeust in #495
- perf(embeddings): skip unused BERT suffixes with exact token guards by @cdeust in #496
- perf(embeddings): batch codebase imports and preserve cache contexts by @cdeust in #497
- perf(postgres): calibrate storage policy on dense vector fixtures by @cdeust in #498
- perf(recall): retain indexed PostgreSQL candidate pools by @cdeust in #499
- bench(reranker): compare pinned L2/L12 and candidate multipliers by @cdeust in #500
- perf(memory): remove repeated reads and batch first-write slot allocation by @cdeust in #501
- perf(context): filter capture noise and scope content retrieval by @cdeust in #502
- feat(wiki): canonical decision retrieval and reviewable mirrors by @cdeust in #515
- refactor(wiki): extract code decisions (01/13) by @cdeust in #516
- refactor(wiki): extract code decisions (02/13) by @cdeust in #517
- refactor(wiki): extract code decisions (03/13) by @cdeust in #518
- refactor(wiki): extract code decisions (04/13) by @cdeust in #519
- refactor(wiki): extract code decisions (05/13) by @cdeust in #520
- refactor(wiki): extract code decisions (06/13) by @cdeust in #521
- refactor(wiki): extract code decisions (07/13) by @cdeust in #522
- refactor(wiki): extract code decisions (08/13) by @cdeust in #523
- refactor(wiki): extract code decisions (09/13) by @cdeust in #524
- refactor(wiki): extract code decisions (10/13) by @cdeust in #525
- refactor(wiki): extract code decisions (11/13) by @cdeust in #526
- refactor(wiki): extract code decisions (12/13) by @cdeust in #527
- refactor(wiki): extract code decisions (13/13) by @cdeust in #528
- docs: record issue 514 retrieval validation results by @cdeust in #530
- fix(ast): capture explicit Python decorator calls by @cdeust in #534
- test: close the provenance mutation gap (#389) by @cdeust in #535
- fix(setup): the installer's dependency step could neither install nor update by @cdeust in #539
- feat(hooks): refuse a decision written into code at edit time by @cdeust in #541
- fix(setup): install requirements/setup.txt instead of a hand-written package list (#538) by @cdeust in #542
- fix(setup): stop labeling a failed model pre-cache [ok] (#537) by @cdeust in #543
- fix(launcher): make the deps idempotence guard ABI-aware (#540) by @cdeust in #544
- fix(hooks): close three decision-gate review blockers by @cdeust in #545
- feat(hooks): enforce the --no-deps hashed-install invariant (#536) by @cdeust in #546
- release: 4.20.0 by @cdeust in #547
Full Changelog: v4.19.1...v4.20.0