@plurnk/plurnk-execs 0.4.43 → 0.4.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.defaults +12 -0
- package/SPEC.md +2 -2
- package/dist/advertise.d.ts +1 -1
- package/dist/advertise.d.ts.map +1 -1
- package/dist/advertise.js +2 -3
- package/dist/advertise.js.map +1 -1
- package/package.json +4 -3
package/.env.defaults
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# --- @plurnk/plurnk-execs : runtime registration policy (SPEC §3.3) ---
|
|
2
|
+
# Purely subtractive: these only ever REMOVE tags from the registered set — there
|
|
3
|
+
# is no force-enable verb. Unset ⇒ every discovered runtime is registered. This
|
|
4
|
+
# package sets no operative default; the comments below ARE the operator docs.
|
|
5
|
+
|
|
6
|
+
# Allowlist: register ONLY these tags (comma-separated); every other tag is off.
|
|
7
|
+
# PLURNK_EXECS_ONLY=sh,jq,search
|
|
8
|
+
|
|
9
|
+
# Per-tag kill-switch (case-insensitive): set any registered tag to 0 to drop it.
|
|
10
|
+
# Absent ⇒ the runtime stays enabled. e.g.:
|
|
11
|
+
# PLURNK_EXECS_PYTHON=0
|
|
12
|
+
# PLURNK_EXECS_BC=0
|
package/SPEC.md
CHANGED
|
@@ -218,11 +218,11 @@ Framework surface: **`Policy.isEnabled(tag, env?)`** (one layer, defaults to `pr
|
|
|
218
218
|
|
|
219
219
|
### §3.4 The empty-set notice (the legible no)
|
|
220
220
|
|
|
221
|
-
When a loop leaves **zero** EXEC runtimes in the §3.2 *Active* bucket, the capability sheet must carry a positive statement — **"No EXEC
|
|
221
|
+
When a loop leaves **zero** EXEC runtimes in the §3.2 *Active* bucket, the capability sheet must carry a positive statement — **"No EXEC operations permitted"** — not silent absence. The grammar still teaches `EXEC` as a valid op (the GBNF permits it); with no availability signal either way, the model reads the bare op mention as *unknown* and confabulates runtimes, burning its strikes on a gate that correctly refuses them (execs#24). The negative line closes that window: a legible *no* where silence invited a guess.
|
|
222
222
|
|
|
223
223
|
**One contributor, both cases.** `Advertise.contribute(registry, isPermitted)` returns the permitted runtimes **and** the notice from the *same* filter — a non-empty result never carries a notice, so the N-runtime sheet and the 0-runtime line cannot drift out of sync.
|
|
224
224
|
|
|
225
|
-
**Cause-agnostic.** `isPermitted` resolves whether a registered tag survives *this* loop's gates: execs supplies the §3.3 policy cascade as the baseline predicate, and the consumer composes stricter gates into it — the effect-typed **host bar** by which a loop mode (ask-mode) bars host-effecting ops. But *why* the set is empty — policy zeroing every tag, or the host bar catching them all — is never execs' business. Execs owns the §2.3 `effect()` classification and the count; the consumer owns the loop-mode decision and reduces it to the effect-typed bar it composes into the predicate. Nothing about the mode reaches execs. The line
|
|
225
|
+
**Cause-agnostic.** `isPermitted` resolves whether a registered tag survives *this* loop's gates: execs supplies the §3.3 policy cascade as the baseline predicate, and the consumer composes stricter gates into it — the effect-typed **host bar** by which a loop mode (ask-mode) bars host-effecting ops. But *why* the set is empty — policy zeroing every tag, or the host bar catching them all — is never execs' business. Execs owns the §2.3 `effect()` classification and the count; the consumer owns the loop-mode decision and reduces it to the effect-typed bar it composes into the predicate. Nothing about the mode reaches execs. The line is short and **EXEC-scoped** — it names the op, so the model reads a bounded "no EXEC here", not a general rule — and cause-agnostic. Exact wording is the consumer's ask-mode probe to validate, not asserted here.
|
|
226
226
|
|
|
227
227
|
Execs owns the notice content and the tally. It does **not** own the mode, the sheet's rendering, or the decision of when a loop bars host effects — only the single line spoken when its own count of surviving runtimes reaches zero.
|
|
228
228
|
|
package/dist/advertise.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ExecInfo, ExecRegistry } from "./types.ts";
|
|
2
2
|
export default class Advertise {
|
|
3
|
-
static readonly NO_EXECS_NOTICE = "No EXEC
|
|
3
|
+
static readonly NO_EXECS_NOTICE = "No EXEC operations permitted";
|
|
4
4
|
static contribute(registry: ExecRegistry, isPermitted: (tag: string) => boolean): {
|
|
5
5
|
permitted: ExecInfo[];
|
|
6
6
|
notice: string | null;
|
package/dist/advertise.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advertise.d.ts","sourceRoot":"","sources":["../src/advertise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGzD,MAAM,CAAC,OAAO,OAAO,SAAS;
|
|
1
|
+
{"version":3,"file":"advertise.d.ts","sourceRoot":"","sources":["../src/advertise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGzD,MAAM,CAAC,OAAO,OAAO,SAAS;IAE1B,MAAM,CAAC,QAAQ,CAAC,eAAe,kCAAkC;IAEjE,MAAM,CAAC,UAAU,CACb,QAAQ,EAAE,YAAY,EACtB,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GACtC;QAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAGlD;CACJ"}
|
package/dist/advertise.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
// The EXEC family's per-loop capability contribution (SPEC §3.4, execs#24).
|
|
2
2
|
export default class Advertise {
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
static NO_EXECS_NOTICE = "No EXEC runtimes are active";
|
|
3
|
+
// Deliberate wording — validated by the consumer probe, not free to edit (SPEC §3.4).
|
|
4
|
+
static NO_EXECS_NOTICE = "No EXEC operations permitted";
|
|
6
5
|
static contribute(registry, isPermitted) {
|
|
7
6
|
const permitted = [...registry.values()].filter(({ runtime }) => isPermitted(runtime));
|
|
8
7
|
return { permitted, notice: permitted.length === 0 ? Advertise.NO_EXECS_NOTICE : null };
|
package/dist/advertise.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advertise.js","sourceRoot":"","sources":["../src/advertise.ts"],"names":[],"mappings":"AAEA,4EAA4E;AAC5E,MAAM,CAAC,OAAO,OAAO,SAAS;IAC1B,
|
|
1
|
+
{"version":3,"file":"advertise.js","sourceRoot":"","sources":["../src/advertise.ts"],"names":[],"mappings":"AAEA,4EAA4E;AAC5E,MAAM,CAAC,OAAO,OAAO,SAAS;IAC1B,sFAAsF;IACtF,MAAM,CAAU,eAAe,GAAG,8BAA8B,CAAC;IAEjE,MAAM,CAAC,UAAU,CACb,QAAsB,EACtB,WAAqC;QAErC,MAAM,SAAS,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;QACvF,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5F,CAAC;CACJ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plurnk/plurnk-execs",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.44",
|
|
4
4
|
"description": "Framework + contract for the @plurnk/plurnk-execs-* runtime executor family.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"plurnk",
|
|
@@ -35,7 +35,8 @@
|
|
|
35
35
|
"files": [
|
|
36
36
|
"dist/**/*",
|
|
37
37
|
"README.md",
|
|
38
|
-
"SPEC.md"
|
|
38
|
+
"SPEC.md",
|
|
39
|
+
".env.defaults"
|
|
39
40
|
],
|
|
40
41
|
"scripts": {
|
|
41
42
|
"test:lint": "tsc --noEmit",
|
|
@@ -46,7 +47,7 @@
|
|
|
46
47
|
"prepare": "npm run build"
|
|
47
48
|
},
|
|
48
49
|
"dependencies": {
|
|
49
|
-
"@plurnk/plurnk-schemes": "0.33.
|
|
50
|
+
"@plurnk/plurnk-schemes": "0.33.21"
|
|
50
51
|
},
|
|
51
52
|
"devDependencies": {
|
|
52
53
|
"@types/node": "^26.0.1",
|