chore(release): prep v0.4.0 — version, CHANGELOG, CI gates#19
Merged
Conversation
…nce) for -D warnings gate
…ustfmt) CHANGELOG: new [0.4.0] section (code graph, PDG/taint, self-repair loop, graph-affordance, stats+model routing, QC, wiring/drift gates); the stale [Unreleased] backlog is filed under [0.3.0] (2026-07-01, its release date). CI: first non-release workflow — cargo test --locked, clippy --all-targets -D warnings, and a rustfmt check scoped to newly-added .rs files (the tree is not uniformly formatted and mass-reformatting is out of scope).
The signal-forwarding tests slept a fixed 300ms for the child to exec before killing hsp, then asserted the child was alive. On a slow/loaded CI runner that window is too short — 'child sleep never started'. Poll pgrep for the marker (up to 5s, returns as soon as it appears) so the tests are timing-robust; this also makes the SIGINT test wait for the child instead of passing vacuously when it never started.
Addresses CodeQL warnings that GITHUB_TOKEN permissions were unbounded. All CI jobs (test, clippy, fmt) only read repo contents, so a top-level read-only permissions block covers every job with least privilege. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
Release prep: 0.4.0 — version bump, CHANGELOG, and a real CI gate
Gets the tree ready to tag
v0.4.0. No feature code — version, changelog, CI, and the clippy cleanup needed to make the gate green.Version
0.3.0 → 0.4.0across the workspace (workspace.package + the 3 crates with explicit versions + the one internal dep pin).Cargo.lockregenerated;cargo build --lockedpasses.CHANGELOG
## [0.4.0]section covering this cycle: code-graph traversal/analytics, PDG + taint (--pdg), the self-repair loop (frustration sensor + lesson feedback), the graph-affordance nudge,stats report --all+ model routing,/hoangsa:qc, and the wiring/drift gates.## [Unreleased]backlog (native installer, npm removal, thoth→hoangsa rename, global rules) is now filed under## [0.3.0] - 2026-07-01— it was released but never moved out of Unreleased. Fresh empty[Unreleased]on top.CI (
.github/workflows/ci.yml) — the first non-release workflowPreviously the ONLY workflow was
release.yml, so nothing gated test/clippy/fmt on PRs. Adds three jobs on push + PR:cargo test --workspace --lockedcargo clippy --workspace --all-targets --locked -- -D warningsrustfmt --checkscoped to newly-added.rsfilesTo make
clippy -D warningsgreen, 3 pre-existing warnings were cleared (two "items after a test module" — moved the trailing fns before the test module; one manualsplit_once). Verified locally: clippy exits 0, full test suite passes,ci.ymlYAML parses.On the fmt scope (deliberate)
There's a standing decision not to mass-reformat (a blanket
cargo fmtchurns 100+ legacy files). A "changed files" fmt check would force reformatting untouched legacy code inside any edited file, so the gate is scoped to added.rsfiles — new modules/tests stay clean, existing code is left alone. Tighten to the full diff after a dedicated one-time format pass, if desired (happy to do that as its own PR).To cut the release
Merge the two open hardening PRs (#17 wiring guard, #18 drift gates) and this one, then tag
v0.4.0→release.ymlbuilds and publishes the binaries. The 0.4.0 CHANGELOG already credits #17/#18's gates, so they should land before the tag.