|
2 | 2 |
|
3 | 3 | All notable changes to this project will be documented in this file. |
4 | 4 |
|
| 5 | +## Unreleased — 2026-04-29 (build 629, no app changes) |
| 6 | + |
| 7 | +### Round 9: housekeeping — doc-drift, dead artifacts, PR-time anti-pattern gating |
| 8 | + |
| 9 | +No runtime behavior change. All edits are repo housekeeping that the |
| 10 | +prior 8 rounds accumulated. First round in the 552→629 series with no |
| 11 | +`app.conf [install] build` bump — appropriate signal that we're now |
| 12 | +in pure cleanup territory. |
| 13 | + |
| 14 | +#### Fixed (doc drift only) |
| 15 | + |
| 16 | +- **`fim_code_modified` → `fim_file_modified`** in `bin/wl_fim.py` |
| 17 | + comments (2 sites) and prior round-7 + round-6 CHANGELOG prose |
| 18 | + entries. Round 8 verification surfaced the drift: a search for |
| 19 | + `fim_code_modified` returned zero rows because the actual emitted |
| 20 | + action name is `fim_file_modified`. Code unchanged; only prose |
| 21 | + was wrong. The round-8 drift-discovery entry that DOCUMENTS the |
| 22 | + drift is left intact (it correctly reports both names). |
| 23 | + |
| 24 | +#### Cleaned up |
| 25 | + |
| 26 | +- **Stale `dist/` artifacts removed**: `wl_manager-1.0.0.spl` and |
| 27 | + `wl_manager-2.0.0.spl` (+ their `.sha256` sidecars). Both |
| 28 | + predated build 406 (current is 629). They were untracked |
| 29 | + (`dist/` is gitignored) but confused anyone running |
| 30 | + `package.sh` for the first signed release. Empty `dist/` now; |
| 31 | + `package.sh` writes fresh artifacts on next run. |
| 32 | +- **Root-level PNG screenshots gitignored**: 17 untracked PNGs at |
| 33 | + the repo root (e.g. `csv-loaded.png`, `stress-pending-table-build615.png`) |
| 34 | + from past dev/Playwright sessions polluted `git status`. |
| 35 | + `.gitignore` now has `/*.png` (root-only) so session debris |
| 36 | + doesn't accumulate in tracked-file status. Canonical product |
| 37 | + screenshots under `docs/screenshots/` remain tracked. |
| 38 | + |
| 39 | +#### Added |
| 40 | + |
| 41 | +- **PR-time anti-pattern gating via Semgrep**: |
| 42 | + `tests/semgrep/payload-from-flag-bypass-splunk.yaml`. Catches at |
| 43 | + PR-review time what |
| 44 | + `tests/unit/test_ascii_validation.py::TestNoUnderscoreFlagPayloadBypass` |
| 45 | + catches at test-run time. Earlier feedback in the dev loop = lower |
| 46 | + fix cost. Pattern-mode (not taint-mode) because the anti-pattern is |
| 47 | + a structurally-illegitimate code shape, not a tainted dataflow: |
| 48 | + any `payload.get("_from_*")` or `payload["_from_*"]` READ is wrong |
| 49 | + regardless of subsequent sanitization. Writes (LHS of assignment) |
| 50 | + are explicitly excluded via `pattern-not-inside`. Verified: 4/4 |
| 51 | + positive cases fire, 0/3 negative cases fire, 0 findings on |
| 52 | + current `bin/`. Past incidents addressed: |
| 53 | + - Round 1-3: `_from_approval` reads in 4 action wrappers |
| 54 | + - Round 5: `_from_dual_approval` reads in dual-admin paths |
| 55 | + - Round 7 A1: 7 dead writes removed (writes were OK; reads were not) |
| 56 | +- `tests/semgrep/README.md` updated to document the new rule and |
| 57 | + why it's pattern-mode while the other three are taint-mode. |
| 58 | + |
5 | 59 | ## Unreleased — 2026-04-29 (build 629) |
6 | 60 |
|
7 | 61 | ### Round 8: residue + recurring guards + supply-chain hardening |
@@ -144,7 +198,7 @@ All notable changes to this project will be documented in this file. |
144 | 198 | downstream customers. Tampering means a poisoned release ships |
145 | 199 | without ever modifying runtime code in the container — supply-chain |
146 | 200 | surface that was upstream of every other monitored path. FIM now |
147 | | - alerts within ~15 s on any edit (`fim_code_modified` HIGH). |
| 201 | + alerts within ~15 s on any edit (`fim_file_modified` HIGH). |
148 | 202 | - **Per-job `permissions:` blocks** on every CI workflow |
149 | 203 | (`.github/workflows/{ci,release,semgrep,validate-and-package}.yml`). |
150 | 204 | Each job declares its required scope independently of the |
@@ -291,7 +345,7 @@ All notable changes to this project will be documented in this file. |
291 | 345 | and `scripts/pre-commit-doc-drift.sh`. Tampering with these |
292 | 346 | unsigned bash scripts (which perform privileged operations like |
293 | 347 | clearing tamper flags or appending to the recovery log) now |
294 | | - surfaces as a `fim_code_modified` event within ~15s. |
| 348 | + surfaces as a `fim_file_modified` event within ~15s. |
295 | 349 |
|
296 | 350 | #### Splunk version audit (preliminary) |
297 | 351 |
|
|
0 commit comments