nwave-ai v3.22.0
nWave Framework v3.22.0
Release Date: 2026-08-29
Promoted from: v3.22.0rc1
Full Changelog: v3.21.0...v3.22.0
Installation
uv (recommended):
uv tool install nwave-aipipx (fallback):
pipx install nwave-aiFeatures
- feat(doctor): warn at startup when package upgraded without reinstall (
ef6470173)
Bug Fixes
- fix(release): bind Graphify to the tracked source tree (
d5f08a969) - fix(release): install the Graphify distribution (
1b2ba88f5) - fix(release): preserve exact verified wheel for publication (
ef8ca1141) - fix(release): verify CLI inventory by value (
79b6b9204) - fix(release): constrain public projection surface (
e0d6f8258) - fix(release): seal projection to tracked source (
0098a58f7) - fix(release): make public projection privacy-safe (
98e9fa5e0) - fix(hooks): fall back on undecodable git output (
0d411b9f9) - fix(release): protect projected local state (#90) (
ff8e19377) - fix(des): finalize skipped progress evidence (#99) (
2dd2859cf) - fix(design): route platform delivery architecture (#81) (
094f73593) - fix(security): replace MD5 content fingerprints with SHA-256 (
763a74ff0) - fix(execute): clarify single-step dispatch trigger (
ac977c387) - fix(config): validate expansion prompt modes (
249257e5e) - fix(finalize): preserve feature workspace history (
132adae03) - fix(outcomes): load registry schema from package (#63) (
039e0de9f) - fix(des): align task-id commit trailers (
c70700f9a) - fix(des): anchor relative log paths to worktree root (
6ac6c7365) - fix: classify git verifier process failures (
72fbc0b5d) - fix(docgen): stabilize worktree source links (
9b64916c6) - fix: preserve commit validation compatibility (
3a710643b) - fix: preserve generated commit exemptions (
2cc6ae0d5) - fix(des): ignore skipped commits in progress (
15c0602b7) - fix(release): preserve public repository dotfiles (
2144b9400) - fix(security): remove vulnerable gitlint toolchain (
a2169f646) - fix(distill): address review — WS scaffold isolation, skip-marker caveat, harden #56 guard (
fdc982855) - fix(distill): clarify Mandate 7 hand-off commit is green (FF-only safe) (
89b50ebc7)
Other Changes
- test(ci): refresh authorized content digests (
9f187373e) - style(ci): satisfy release formatting gates (
27bf7a2f4) - docs: refresh generated command references (
d4fc90b16) - style(des): format issue 92 hook oracle (
1ab95c08a) - docs(des): rebind issue 92 contract base (
66a52dbf7) - test(des): retire superseded issue 92 oracle (
4e58f48c1) - docs(architecture): pin issue 92 verification runtime (
782821ea7) - test(des): bind issue 92 marker decode oracle (
4ab969da5) - docs(architecture): bind issue 92 amendment evidence (
476952fb8) - docs(product): correct issue 91 source cardinality (
67ce2d2a7) - test(des): reproduce issue 92 malformed git hook failure (
1d7a39505) - docs(architecture): amend issue 92 decode boundary (
08760cdd2) - docs(product): bind issue 90 candidate examination (
fbdcb40bb) - docs(platform): separate candidate and public projection evidence (
4a0f91da5) - docs(product): rebind aggregate examine recipes (
c90cd8cfe) - test: preserve sealed oracle identities (
af44e5dad) - test: restore portable CI gates (
49f0b2e31) - test(des): remove forbidden reviewer fixture identity (
14df00b66) - docs(contributing): identify generated plugin payload (#97) (
8c565e293) - docs(product): bind public bugfix expectations (
eed09f7dc) - test(des): align issue 92 oracle with public errors (
b8825a525) - test(docgen): narrow issue 91 oracle to public outcome (
8cb38807d) - 11PJ11 review: narrow issue 91 contract (
028c17db7) - 11PJ11: correct issue 92 public observations (
dae3c8ebe) - test(docgen): bind issue 91 acceptance oracle (
32d666b25) - test(des): bind issue 92 acceptance oracle (
3e7686c48) - docs(architecture): correct issue 99 progress boundary (
a20d8cbdc) - docs(architecture): ground maintenance target declarations (
90c967657) - docs(architecture): cover issue 92 failure taxonomy (
f9aaa4c91) - docs(architecture): cover issue 99 completion law (
e60cc3499) - 11PJ11 (
f505656e8) - style: format public dotfile regression test (
448dd4251) - test(security): constrain Dependabot exemption (
3956783a4) - chore(deps-dev): Bump hypothesis from 6.165.9 to 6.165.10 (#168) (
a54ec0c09) - chore(deps-dev): Bump mypy from 2.3.0 to 2.3.1 (#166) (
80546a258) - chore(deps-dev): Bump hypothesis from 6.165.6 to 6.165.9 (#167) (
c2b21bb9f) - chore(deps-dev): Bump hypothesis from 6.165.3 to 6.165.6 (#165) (
231c08230) - chore(deps-dev): Update hatchling requirement from >=1.31.0 to >=1.32.0 (#162) (
4d9b8edd4) - chore(deps): Bump platformdirs from 4.11.2 to 4.11.3 (#161) (
18ec61140) - chore(deps): Bump the polyglot-pilot-kotlin group (#160) (
18c90b775) - chore(deps-dev): Bump hypothesis from 6.165.2 to 6.165.3 (#158) (
44170b500) - chore(deps-dev): Bump pre-commit from 4.6.1 to 4.6.2 (#159) (
c202f51c2) - chore(deps): Bump platformdirs from 4.11.1 to 4.11.2 (#157) (
61aba4984) - chore(deps-dev): Bump fpdf2 from 2.8.7 to 2.8.8 (#155) (
0b873452c) - chore(deps-dev): Bump cosmic-ray from 8.4.6 to 8.7.0 (#156) (
cafbd513e) - chore(deps): Bump platformdirs from 4.11.0 to 4.11.1 (#154) (
665a022db) - chore(deps): Bump pydantic-settings from 2.14.2 to 2.15.0 (#153) (
b2f96183e) - chore(deps-dev): Bump @types/node (#152) (
ca5f3d991) - chore(deps-dev): Bump org.junit.jupiter:junit-jupiter (#150) (
82bdffb7d) - chore(deps): Bump packaging from 26.2 to 26.3 (#148) (
ffdd88302) - chore(deps-dev): Bump hypothesis from 6.165.0 to 6.165.2 (#149) (
173d0a544) - chore(deps): Bump typer from 0.27.0 to 0.27.1 (#147) (
086779424) - chore(deps-dev): Bump hypothesis from 6.164.0 to 6.165.0 (#146) (
cb44d5600) - chore(deps-dev): Bump mutmut from 3.6.0 to 3.7.0 (#145) (
979b1ecd6) - chore(deps-dev): Bump hypothesis from 6.163.0 to 6.164.0 (#143) (
1d8964ab8) - chore(deps-dev): Bump commitizen from 4.16.5 to 4.17.0 (#142) (
6575bec9f) - chore(deps-dev): Bump hypothesis from 6.161.8 to 6.163.0 (#141) (
5ccdb0592) - chore(deps-dev): Bump tqdm from 4.69.1 to 4.70.0 (#140) (
ea9a8ccf0) - chore(deps-dev): Bump hypothesis from 6.161.5 to 6.161.8 (#139) (
22d485c9f) - chore(deps-dev): Bump @types/node (#138) (
24dba56a2) - chore: Bump the polyglot-pilot-csharp group with 1 update (#135) (
ec66c3660) - chore(deps-dev): Bump hypothesis from 6.161.1 to 6.161.5 (#136) (
2f305f75b) - chore(deps-dev): Bump testcontainers from 4.14.2 to 4.15.0 (#134) (
0df1869d4) - chore(deps-dev): Bump tqdm from 4.69.0 to 4.69.1 (#137) (
68255cb57) - chore(deps-dev): Bump hypothesis from 6.160.0 to 6.161.1 (#132) (
e512ec5ef) - chore(deps-dev): Bump hypothesis from 6.158.1 to 6.160.0 (#129) (
78fe9c63b) - chore(deps-dev): Bump pre-commit from 4.6.0 to 4.6.1 (#128) (
92e4242f9) - chore(deps): Bump platformdirs from 4.10.1 to 4.11.0 (#127) (
15340a4cd) - chore(deps-dev): Bump hypothesis from 6.157.2 to 6.158.1 (#126) (
0d4b8dd71) - chore(deps): Bump the polyglot-pilot-kotlin group (#125) (
b583aac01) - chore(deps-dev): Bump hypothesis from 6.157.0 to 6.157.2 (#124) (
a4473e760) - ci(deps): Bump actions/setup-python from 6 to 7 (#123) (
ce658b572) - chore(deps-dev): Bump tqdm from 4.68.4 to 4.69.0 (#120) (
7aed0db15) - chore(deps-dev): Bump hypothesis from 6.156.6 to 6.157.0 (#122) (
33cc615d3) - chore(deps): Bump platformdirs from 4.10.0 to 4.10.1 (#121) (
348b6667e) - chore(deps-dev): Bump ruff from 0.15.21 to 0.15.22 (#119) (
05bb48d33) - chore(deps): Bump typer from 0.26.8 to 0.27.0 (#118) (
8ab97ab08) - chore(deps-dev): Bump commitizen from 4.16.4 to 4.16.5 (#117) (
0cdd87043) - ci(deps): Bump slackapi/slack-github-action from 3.0.5 to 4.0.0 (#116) (
e5661b61d) - chore(deps): Bump jvm (#115) (
d4910beae) - chore: Bump the polyglot-pilot-csharp group with 1 update (#114) (
5db1ab173) - ci(deps): Bump actions/setup-node from 6 to 7 (#113) (
9c3ff9bfd) - chore(deps-dev): Bump mypy from 2.2.0 to 2.3.0 (#112) (
83887b1eb) - chore(deps-dev): Bump hypothesis from 6.156.4 to 6.156.6 (#111) (
77e63e193) - chore(deps-dev): Bump org.junit.jupiter:junit-jupiter (#110) (
81a9f82da) - ci(deps): Bump slackapi/slack-github-action from 3.0.3 to 3.0.5 (#109) (
23b50a075) - chore(deps-dev): Bump ruff from 0.15.20 to 0.15.21 (#107) (
12789d14a) - chore(deps-dev): Bump build from 1.5.0 to 1.5.1 (#108) (
1e6008cab) - chore(deps-dev): Bump docker from 7.1.0 to 7.2.0 (#106) (
bf7f4147f) - chore(deps-dev): Bump the polyglot-pilot-typescript group (#104) (
3b566cf6d) - chore(deps-dev): Bump hypothesis from 6.156.2 to 6.156.4 (#105) (
7ddf1b1b8) - chore(deps-dev): Bump hypothesis from 6.156.1 to 6.156.2 (#103) (
efc426bef) - chore(deps-dev): Bump mypy from 2.1.0 to 2.2.0 (#102) (
8ddf38e8f) - chore(deps-dev): Bump tqdm from 4.68.3 to 4.68.4 (#101) (
7cfb4e77e) - chore(deps-dev): Update hatchling requirement from >=1.30.1 to >=1.31.0 (#100) (
72d88b63a) - chore(deps): Bump the polyglot-pilot-kotlin group (#99) (
1e3ceab3d) - chore(deps-dev): Bump poethepoet from 0.47.1 to 0.48.0 (#96) (
645b4537a) - chore(deps-dev): Bump hypothesis from 6.155.7 to 6.156.1 (#95) (
85e91ecec) - chore(deps): Bump typing-extensions from 4.15.0 to 4.16.0 (#94) (
30d8bf74f) - chore(deps-dev): Bump @types/node (#92) (
3ca1c420b) - chore(deps-dev): Bump poethepoet from 0.47.0 to 0.47.1 (#93) (
08c77485f) - test: fix cross-conftest pytest_bdd_apply_tag pollution + retire stale DES guards (WTBD-165) (#89) (
7a63445be) - ci: source ruff version from pyproject so CI can't drift from the pin (WTBD-166) (
0685c1119) - chore(deps-dev): Bump @types/node (#86) (
6f02e9ca8) - test: retire broken_schema_v0 quarantine apparatus (WTBD-79) (
7e6aede52) - chore(deps): Bump typer from 0.26.7 to 0.26.8 (#88) (
646c935d3) - chore(deps-dev): Bump poethepoet from 0.46.0 to 0.47.0 (#87) (
38590740c) - chore(deps-dev): Bump org.junit.jupiter:junit-jupiter (#85) (
0c4220930)