Skip to content

Commit c199ed3

Browse files
release(v1.0.1): remove check_for_updates=false (Splunkbase rejection)
Packaging patch for v1.0.0. Uploading wl_manager-1.0.0.spl to Splunkbase was rejected at the package-validation gate with: "The check_for_updates field found in app.conf must not be disabled." Root cause: [package].check_for_updates = false in default/app.conf was inherited boilerplate, kept during Phase 1.6 because AppInspect 4.2.0's check_for_updates_disabled rule fires only as a warning, which we triaged as acceptable (see docs/APPINSPECT_FINDINGS.md F12). Splunkbase enforces the same condition as a HARD rejection at upload time -- a different gate from the AppInspect API workflow we shipped in CI. The Phase 1.6 triage assumed the two pipelines were equivalent; they aren't. Lesson recorded in docs/DECISION_LOG.md row 2026-06-01. Fix: remove the check_for_updates = false line entirely. Splunk's default is true, which is what Splunkbase requires. The setting is not load-bearing for any feature of this app -- it controls whether Splunk's launcher polls Splunkbase for new versions of the app, which is the standard customer-facing capability we have no reason to disable. Files in this commit: - default/app.conf: drop check_for_updates line; build 670 -> 671; [launcher].version + [id].version 1.0.0 -> 1.0.1; expanded the in-file comment to document why the value is omitted. - app.manifest: info.id.version 1.0.0 -> 1.0.1; releaseDate updated. - appserver/static/whitelist_manager.js: urlArgs _b=670 -> _b=671 (Splunk's 1-year static-asset cache otherwise serves stale JS). - CHANGELOG.md: new v1.0.1 entry with full why-and-what record. - docs/DECISION_LOG.md: new 2026-06-01 row with the AppInspect-vs-Splunkbase gate divergence + the maintenance rule that prevents re-introduction. - docs/APPINSPECT_FINDINGS.md: F12 post-mortem appended -- the Phase 1.6 triage of "value is fine, only stanza placement matters" was wrong; Splunkbase blocks at upload regardless of AppInspect's verdict. Pre-flight passing on this commit: - §3.5 4-source version pre-flight: app.conf [launcher].version = app.conf [id].version = app.manifest info.id.version = 1.0.1; [package].id = [id].name = wl_manager. - Build/urlArgs alignment: build 671 = whitelist_manager.js _b=671. - doc-drift hook: OK (37 docs / build 671). - check_for_updates regression check: confirmed not present in default/app.conf at value `false`. No app-code or behavior changes. The shipped .spl differs from wl_manager-1.0.0.spl only in default/app.conf (one line removed, build/version bumped) and the version-pinned files listed above. Migration: install wl_manager-1.0.1.spl over the existing app.
1 parent 50bfc1e commit c199ed3

6 files changed

Lines changed: 83 additions & 13 deletions

File tree

CHANGELOG.md

Lines changed: 67 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,72 @@ All notable changes to this project will be documented in this file.
44

55
---
66

7+
## [1.0.1] - 2026-06-01
8+
9+
**Splunkbase upload patch.** Bumps `default/app.conf [launcher].version`
10+
and `app.manifest:info.id.version` to `1.0.1`, build `671`. No app-code
11+
or feature changes — a single packaging fix so v1.0.0's content can
12+
clear the Splunkbase upload gate.
13+
14+
### Why this exists
15+
16+
Uploading `wl_manager-1.0.0.spl` to Splunkbase was rejected at the
17+
package-validation step with:
18+
19+
> The `check_for_updates` field found in `app.conf` must not be disabled.
20+
21+
The setting `[package].check_for_updates = false` in
22+
`default/app.conf` (present since long before public release, value
23+
inherited from boilerplate, not from a recorded product decision) is
24+
treated by AppInspect 4.2.0's `check_for_updates_disabled` rule as a
25+
**warning** — which we triaged as acceptable during Phase 1.6 (see
26+
`docs/APPINSPECT_FINDINGS.md` F12). But Splunkbase's package-validation
27+
step (a different gate, run at upload time, not equivalent to the
28+
AppInspect API workflow we shipped in CI) enforces "must not be
29+
disabled" as a **hard rejection**. The two pipelines disagreed; the
30+
Phase 1.6 triage assumed they were equivalent; they aren't.
31+
32+
### What changed
33+
34+
- **`default/app.conf` `[package]`.** Removed the
35+
`check_for_updates = false` line. Splunk's default is `true`, which
36+
is what Splunkbase requires. The setting is not load-bearing for any
37+
feature of the app — checking for updates is an end-user-facing
38+
capability that customers should be allowed to use.
39+
- **Build/version bumps.** `[install].build` 670 → 671;
40+
`[launcher].version` + `[id].version` 1.0.0 → 1.0.1; `app.manifest`
41+
`info.id.version` matched. `appserver/static/whitelist_manager.js`
42+
`urlArgs: "_b=671"` keeps the AMD cache-bust in sync with the build
43+
number (Splunk's 1-year static-asset cache otherwise serves stale
44+
JS — see `docs/SPLUNK_QUIRKS.md`).
45+
- **`docs/DECISION_LOG.md`.** Added a new row recording the
46+
AppInspect-vs-Splunkbase gate divergence so future contributors
47+
don't re-introduce `check_for_updates = false`.
48+
- **`docs/APPINSPECT_FINDINGS.md`.** F12 post-mortem note: the
49+
Phase 1.6 triage of "false value is acceptable, only the placement
50+
matters" was wrong. Splunkbase blocks at upload regardless of
51+
AppInspect's verdict.
52+
53+
### What did not change
54+
55+
No code paths in `bin/`, no behavior visible to analysts/admins, no
56+
audit-trail schema, no REST API contract. The shipped `.spl` differs
57+
from `wl_manager-1.0.0.spl` only in `default/app.conf` (one line
58+
removed, build/version bumped) and the version-pinned files listed
59+
above.
60+
61+
### Migration notes for existing v1.0.0 installs
62+
63+
None. v1.0.0 installs that were deployed manually (outside Splunkbase)
64+
continue to work — `[package].check_for_updates` did not affect any
65+
runtime behavior of this app. The only effect of removing it is that
66+
Splunk's built-in "check for app updates" UI will now query Splunkbase
67+
for newer versions (which is the standard Splunk behavior all
68+
production apps allow). To upgrade in place, install
69+
`wl_manager-1.0.1.spl` over the existing app.
70+
71+
---
72+
773
## [1.0.0] - 2026-05-24
874

975
**General Availability release.** Bumps `default/app.conf [launcher].version`
@@ -55,7 +121,7 @@ changes affecting customer behavior.
55121
- §3.5 version-tag consistency pre-flight: passes (`app.conf
56122
[launcher].version` = `app.conf [id].version` = `app.manifest
57123
info.id.version` = `1.0.0`; `[package].id` = `[id].name` = `wl_manager`).
58-
- Doc-drift hook: PASS (37 docs / build 670).
124+
- Doc-drift hook: PASS (37 docs / build 670 (historical, v1.0.0 GA cut)).
59125
- QA Second-pass review: PASS, zero gaps.
60126
- `.github/workflows/release.yml` Sigstore keyless signing dry-run
61127
verified 2026-05-13 — the v1.0.0 tag push will trigger production

app.manifest

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"id": {
66
"group": null,
77
"name": "wl_manager",
8-
"version": "1.0.0"
8+
"version": "1.0.1"
99
},
1010
"author": [
1111
{
@@ -14,7 +14,7 @@
1414
"company": null
1515
}
1616
],
17-
"releaseDate": "2026-05-24",
17+
"releaseDate": "2026-06-01",
1818
"description": "Manage detection-rule CSV whitelists with diff-based audit trail. Provides a web-based interface for viewing, editing, adding, and removing whitelist entries with full change tracking, expiration management, and role-based access control.",
1919
"classification": {
2020
"intendedAudience": "Security Operations",

appserver/static/whitelist_manager.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
// disk cache. Splunk serves /static/@<server-hash>/... with Cache-Control:
1212
// public, max-age=31536000; without urlArgs, bumped build numbers don't force
1313
// a re-fetch and clients run stale JS until they hard-refresh.
14-
require.config({ urlArgs: "_b=670" });
14+
require.config({ urlArgs: "_b=671" });
1515
require([
1616
"jquery",
1717
"underscore",

default/app.conf

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,32 +5,34 @@
55

66
[install]
77
is_configured = false
8-
build = 670
8+
build = 671
99

1010
[launcher]
1111
author = Oleh Bezsonov
1212
description = Manage detection-rule CSV whitelists with inline editing, approval workflows, version control, and diff-based audit trail
13-
version = 1.0.0
13+
version = 1.0.1
1414

1515
[ui]
1616
is_visible = true
1717
label = Whitelist Manager
1818

1919
[id]
2020
name = wl_manager
21-
version = 1.0.0
21+
version = 1.0.1
2222

2323
# AppInspect 4.2.0 has both `check_for_valid_package_id` (looks at the
2424
# new [id] stanza) and `check_for_updates_disabled` (looks at the
2525
# legacy [package] stanza). It also enforces that the [package] id
2626
# matches the [id] name — so `[package].id` and `[id].name` must
2727
# coexist with matching values, and they do.
2828
#
29-
# `check_for_updates` lives ONLY in [package] (SLIM rejects it in [id]
30-
# as an unknown setting in that stanza; Phase 1.6 hosted-API run
31-
# 26000914082 surfaced this as the F12 finding — see
32-
# docs/APPINSPECT_FINDINGS.md §5.2). The legacy stanza is the canonical
33-
# home for the setting; defensive duplication in [id] was over-cautious.
29+
# `check_for_updates` is intentionally OMITTED (default is `true`).
30+
# Splunkbase package validation REJECTS the upload at the gate if it
31+
# is set to `false`, with error: "The check_for_updates field found
32+
# in app.conf must not be disabled." AppInspect 4.2.0's
33+
# `check_for_updates_disabled` rule only warns; Splunkbase enforces
34+
# it as a hard gate. The two pipelines disagree — Splunkbase wins,
35+
# because that is the upload destination. See v1.0.1 CHANGELOG +
36+
# DECISION_LOG.md row 2026-06-01 for the full divergence record.
3437
[package]
3538
id = wl_manager
36-
check_for_updates = false

docs/APPINSPECT_FINDINGS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,7 @@ run `26002056326` passing both profiles green. Outcome per F-finding:
389389
| F1 | manifest `Enterprise` version requirement | partial — manifest now `"9.3"` (operationally honest; only Splunk-supported version as of 2026-05-17), but SLIM still rejects it. Suppressed via expect.yaml. | `5757ade` + `628a2b3` |
390390
| F2–F11 | SLIM spec drift on `python.version` / `python.required` | unchanged in source (still required by static AppInspect); suppressed at the dynamic-API layer via expect.yaml. | `628a2b3` |
391391
| F12 | redundant `[id].check_for_updates` | **fixed in source** by removing the redundant line; `[package]` is now the sole home. | `d40e1b9` |
392+
| F12 post-mortem (2026-06-01) | `[package].check_for_updates = false` itself | **value also removed in v1.0.1** — Splunkbase upload-time package validation rejected `wl_manager-1.0.0.spl` with "The check_for_updates field found in app.conf must not be disabled." AppInspect's `check_for_updates_disabled` only warns; Splunkbase enforces it as a hard gate. The Phase 1.6 triage (which kept the value at `false`) was wrong: it focused only on the F12 stanza-placement question, not the value choice. v1.0.1 removes the `check_for_updates` line entirely so Splunk's default (`true`) applies. See `docs/DECISION_LOG.md` 2026-06-01 row for the full divergence record + the maintenance rule that prevents re-introduction. | `<v1.0.1 release commit>` |
392393

393394
Three CI iterations confirmed SLIM rejects every Enterprise version
394395
format we can produce without Splunk-private documentation:

0 commit comments

Comments
 (0)