@plurnk/plurnk-meta 1.4.0 → 1.6.0

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/CORPUS.md CHANGED
@@ -9,12 +9,12 @@ Authored defaults published by `@plurnk/plurnk-meta` and consumed by
9
9
  | Source | Consumer admission |
10
10
  | ------------------------------- | ---------------------------------------------------------------------------- |
11
11
  | `PLURNK_PERSONALITY.md` | Read before the first-run seed of user-owned `~/.plurnk/AGENTS.md`. |
12
- | `requirements.md` | Read for the default compact recap rendered under `## Recap`. |
12
+ | `requirements.md` | Read for the compact Recap rendered last in every model packet. |
13
13
  | `docs/log.md`, `docs/worker.md` | Read when registered built-in pull docs are materialized. |
14
14
  | `docs/questions.md` | Read only when operator questions are enabled, then materialized as a doc. |
15
15
 
16
16
  Core materializes eligible pull docs at `worker://plurnk/docs/<name>.md` and
17
- exposes them through the turn-0 `FIND(worker://plurnk/docs/**)` catalog. Merely
17
+ exposes them through the turn-0 `## FIND0 [+init,+docs] (worker://plurnk/docs/**)` catalog. Merely
18
18
  placing a file in `docs/` does not register a scheme or make speculative
19
19
  teaching current. Every listed source is a required package member; a missing
20
20
  or failed read surfaces at the admission boundary rather than silently reducing
@@ -37,7 +37,7 @@ monorepo forge.
37
37
 
38
38
  ## Teaching doctrine
39
39
 
40
- **Canon-voice calibration (owner-ruled 2026-07-06, probe-backed).** Voice tunes to the FLOOR model's minimum-audible threshold, never any tier's max compliance. A footer loud enough to fix the floor OVER-DRIVES strong models (live evidence: Grok Build fanatically FOLDs under a loud budget footer). Soft is safe because the engine makes floor-misses RECOVERABLE (premature-200 -> pending-set 409 -> repair); that coupling is load-bearing — if failures stop being recoverable, recalibrate louder. The footer is pluggable; potato-heavy deployments inject more at their discretion. The one recency-sensitive line is await-before-200 (lean-footer A/B, gemma, n=6: 6/6 reap in the recency footer vs 3/6 cached-canon-only). Retreat trigger: 409-repair LOOPS (not single misses); first line restored is await-before-200.
40
+ **Canon-voice calibration (2026-07-06, probe-backed).** Voice tunes to the FLOOR model's minimum-audible threshold, never any tier's max compliance. A footer loud enough to fix the floor OVER-DRIVES strong models (live evidence: Grok Build fanatically FOLDs under a loud budget footer). Soft is safe because the engine makes floor-misses RECOVERABLE (premature-200 -> pending-set 409 -> repair); that coupling is load-bearing — if failures stop being recoverable, recalibrate louder. The footer is pluggable; potato-heavy deployments inject more at their discretion. The one recency-sensitive line is await-before-200 (lean-footer A/B, gemma, n=6: 6/6 reap in the recency footer vs 3/6 cached-canon-only). Retreat trigger: 409-repair LOOPS (not single misses); first line restored is await-before-200.
41
41
 
42
42
  **The requiem acceptance gate.** Teaching changes ship against BEFORE/AFTER corpus deltas (reasoning-token + requiem-recurrence), never hunches. Triage separates legibility debt from genuine protocol friction. Model-owned context is the product property: deterministic state and reversible OPEN/FOLD tools support the model's judgment without prescribing what to hide. A re-probe against >=0.76.5 is owed (grammar lane).
43
43
 
@@ -1,11 +1,7 @@
1
- - You align with the user before consequential architectural, contract, or cross-project decisions.
2
- - You answer inquiries and exploratory questions without changing code unless the user also asks for action.
3
- - You preserve reusable knowledge and working state in searchable, folksonomically tagged knowledgebase entries.
4
- - You verify unstable facts and answer from primary sources when possible.
5
- - You follow modern standards and conventions unless a deliberate product property requires otherwise.
6
- - You prove deterministically verifiable work before concluding.
7
- - You commit completed repository changes as `Plurnk <plurnk@pm.me>` before concluding.
1
+ YOU SHOULD answer inquiries and exploratory questions without changing state unless the user also asks for action.
2
+ YOU SHOULD follow modern standards and conventions unless a product property requires otherwise.
3
+ YOU SHOULD verify unstable facts and answer from primary sources when possible.
4
+ YOU SHOULD prove deterministically verifiable work before concluding.
8
5
 
9
- YOU MUST evaluate the prompt for completion conditions. If multiple conditions exist, maintain a Markdown checklist.
10
- YOU MUST evaluate the prompt for decomposability, delegating to WORKers if any work is naturally divisible.
11
- YOU MUST react and respond to the latest Plurnk Service User Prompts.
6
+ YOU MUST identify and track the prompt's completion conditions.
7
+ YOU MUST evaluate the prompt for decomposability, delegating distinct subtasks to WORKers or BARE requests.
package/README.md CHANGED
@@ -12,7 +12,7 @@ The plurnk metaproject layer, published — what the family shares that no singl
12
12
  - `Meta.packageDirs(nodeModulesDir)` — scope-agnostic, symlink-aware enumeration across Node's ancestor resolution chain as `{ dir, name }` candidates; the nearest package name wins. Ordering and filtering are the caller's policy.
13
13
  - `Meta.nearestNodeModules(fromDir)` — walk up to the nearest `node_modules` holding the ecosystem (witness: `@plurnk` scope); `null` when absent.
14
14
 
15
- **The teaching corpus**: authored policy, Recap, built-in scheme, and conditional question sources resolved from this installed package. Meta owns the source bytes and membership; core owns admission and projection. See [`CORPUS.md`](./CORPUS.md) and {§teaching-corpus}.
15
+ **The teaching corpus**: authored policy, a compact Recap, built-in scheme, and conditional question sources resolved from this installed package. Meta owns the source bytes and membership; core owns admission and projection. See [`CORPUS.md`](./CORPUS.md) and {§teaching-corpus}.
16
16
 
17
17
  **Family tooling** grows here (scaffolders, meta bins) — the published surface of the metaproject's management layer.
18
18
 
package/SPEC.md CHANGED
@@ -14,7 +14,7 @@ sources into a consuming package would create a second teaching owner.
14
14
  | Source | Membership | Meta-owned content | Core read boundary |
15
15
  | ------------------------------- | ---------- | -------------------------------------------------- | ------------------------------------------------------- |
16
16
  | `PLURNK_PERSONALITY.md` | Required | First-run default operating policy | Policy bootstrap {§policy-sections} |
17
- | `requirements.md` | Required | Default compact operational recap | Default user-slot Recap {§requirements} |
17
+ | `requirements.md` | Required | Default compact operational Recap | Per-packet user-slot footer {§requirements} |
18
18
  | `docs/log.md`, `docs/worker.md` | Required | Deep reference prose for reserved built-in schemes | Pull-doc materialization {§schemes-directory} |
19
19
  | `docs/questions.md` | Required | Conditional operator-question reference prose | Enabled capability/teaching gate {§send-300-choices} |
20
20
 
package/docs/log.md CHANGED
@@ -1,11 +1,11 @@
1
1
  # `log://` - your worker's event history
2
2
 
3
- Every operation is recorded at `log:///<loop>/<turn>/<seq>`. The row identifies what happened and what came back. READ a row to retrieve its result body or apply a content matcher.
3
+ Every operation is recorded at `log:///<loop>/<turn>/<seq>`. The row identifies what happened and what came back. READ one exact row to retrieve its result body; use FIND to match across rows.
4
4
 
5
5
  ## Log and catalog
6
6
 
7
7
  - **Log** - operations and results in order.
8
- - **Catalog** - `FIND(scheme:///**)` lists the resources a scheme currently holds.
8
+ - **Catalog** - `## FIND0 (scheme:///**)` lists the resources a scheme currently holds.
9
9
 
10
10
  ## Visibility
11
11
 
@@ -19,7 +19,9 @@ OPEN and FOLD change packet visibility, not history. Applying the current state
19
19
 
20
20
  KILL permanently erases a log row.
21
21
 
22
- The Budget section reports only the packet ceiling, usage, percentage, and free capacity. Each
23
- log row carries its own token weight. If a packet exceeds its ceiling, the engine folds eligible
24
- open rows from the newest turn boundary; it never selects older history by relevance. Continued
25
- overflow follows the reported recovery or hard-413 contract.
22
+ The Budget section reports the packet ceiling, usage, percentage, and free capacity; negative
23
+ free capacity adds one curation alarm. Each log row carries its own token weight. If a packet
24
+ exceeds the gauge, the engine records a nonterminal 413 Problem, folds eligible open rows from
25
+ the newest turn boundary, and tags them `overflow`; it never selects older history by relevance.
26
+ Remaining ruler debt may proceed when the request fits the hard context envelope; otherwise a
27
+ separate terminal 413 stops admission before generation.
package/docs/questions.md CHANGED
@@ -1,5 +1,8 @@
1
- # Operator questions — `SEND[300]`
1
+ # Operator questions — SEND signal 300
2
2
 
3
- Enabled here: you may ask the operator when a decision is genuinely theirs to make. `<<SEND[300]:question:SEND` asks an open question; `<<SEND[300]:question;choice;choice:SEND` offers choices. Asking parks your loop; the answer arrives as the operator's next message — continue from it.
3
+ Enabled here: you may ask the operator when a decision is genuinely theirs to
4
+ make. `## SEND0 [300]` with body `question` asks an open question; semicolon-separated
5
+ choices in the body offer choices. Asking parks your loop; the answer arrives as
6
+ the operator's next message — continue from it.
4
7
 
5
8
  Choices are suggestions, never a constraint: the operator always has a free-text option regardless of what you list, so be ready for an answer outside your choices. Ask sparingly — one focused question carrying the context needed to answer it beats a chain of small asks.
package/docs/worker.md CHANGED
@@ -3,31 +3,40 @@
3
3
  Workers inhabit one workspace. `worker://<name>` addresses a named worker; `worker://~` is the
4
4
  current-worker control sigil; `worker://~/path` addresses your private entries; `worker:///path`
5
5
  addresses the shared commons.
6
- `WORK(worker://<name>):task` spawns a fresh worker with an empty log. `FORK(worker://<name>):task`
7
- branches your current history. `SEND(worker://<name>):msg` messages a worker, waking it if idle;
8
- `KILL(worker://<name>)` ends one. Workers share project files and the commons, while private entries
6
+ `## WORK0 (worker://<name>)` with a task body spawns a fresh worker with an empty log.
7
+ `## FORK0 (worker://<name>)` branches your current history. `## SEND0 (worker://<name>)`
8
+ with a message body wakes and messages a worker; `## KILL0 (worker://<name>)` ends one.
9
+ Workers share project files and the commons, while private entries
9
10
  and conversation logs remain owner-scoped. A worker is born from WORK/FORK, never EDIT —
10
- `EDIT(worker://<name>)` on the bare worker is rejected.
11
+ `## EDIT0 (worker://<name>)` on the bare worker is rejected.
11
12
 
12
13
  **The path is the discriminator.** `worker://<name>` with no path addresses a literal worker name
13
14
  for WORK, FORK, SEND, READ, or KILL; `worker://~` addresses the caller for SEND or KILL.
14
15
  The control form is exact: a trailing slash, userinfo, port, query, fragment, or request metadata
15
16
  is invalid rather than ignored.
16
- `worker://<name>/path` addresses an ancestry-visible named entry; `EDIT(worker://~/todo.md):…`
17
- writes your own private entry.
17
+ `worker://<name>/path` addresses an ancestry-visible named entry; `## EDIT0 (worker://~/todo.md)`
18
+ with a body writes your own private entry.
18
19
 
19
20
  **WORK to delegate, FORK to branch.** For fan-out, WORK a distinct-named worker per job. Each gets
20
21
  a fresh task. FORK only to carry *your own* context down an alternate path.
21
22
 
22
- **Loop: spawn once → park → collect on wake.** Spawn with
23
- `<<WORK(worker://capital-checker):Find the capital of France from a primary source:WORK`, then
24
- `<<SEND[202]:Awaiting capital-checker.:SEND` parks you. You wake when the worker concludes: its
23
+ **Loop: spawn once → park → collect on wake.** Spawn and park with:
24
+
25
+ ```plurnk
26
+ ## WORK0 (worker://capital-checker)
27
+ Find the capital of France from a primary source
28
+
29
+ ## SEND0 [202]
30
+ Awaiting capital-checker.
31
+ ```
32
+
33
+ You wake when the worker concludes: its
25
34
  result arrives open in your log as a `SEND` from `worker://capital-checker` — read it and continue.
26
- Or pull it: `READ(worker://capital-checker)` returns the result, or `425` while it is running. Spawn
35
+ Or pull it with `## READ0 (worker://capital-checker)`; it returns the result, or `425` while running. Spawn
27
36
  each worker exactly once. Fan-out uses distinct names, followed by one park. Each conclusion wakes
28
37
  you with its delta.
29
38
 
30
- **Concluding with live workers.** `SEND[200]` is refused (`409`) while you hold a live worker or
39
+ **Concluding with live workers.** `## SEND0 [200]` is refused (`409`) while you hold a live worker or
31
40
  open stream. The system packet lists them under `## Active Child Workers` and `## Child Streams`.
32
- Either `SEND[202]` to await them or `KILL(worker://<name>)` the ones you no longer need. A same-turn
33
- KILL followed by `SEND[200]` concludes cleanly.
41
+ Either `## SEND0 [202]` to await them or `## KILL0 (worker://<name>)` the ones you no longer need.
42
+ A same-turn KILL followed by `## SEND0 [200]` concludes cleanly.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@plurnk/plurnk-meta",
3
- "version": "1.4.0",
4
- "description": "The plurnk metaproject layer, published: plugin-membership primitives (the ONE trust rule, scope-agnostic symlink-aware enumeration, deployment-root resolution), the project teaching corpus (personality, requirements, scheme docs), and the home for family tooling.",
3
+ "version": "1.6.0",
4
+ "description": "The plurnk metaproject layer, published: plugin-membership primitives (the ONE trust rule, scope-agnostic symlink-aware enumeration, deployment-root resolution), the project teaching corpus (personality, Recap, scheme docs), and the home for family tooling.",
5
5
  "license": "MIT",
6
6
  "type": "module",
7
7
  "engines": {
package/requirements.md CHANGED
@@ -1,3 +1,3 @@
1
- YOU MUST ONLY use the Plurnk Service Grammar: <<OPsuffix[signal]?(target)?<scope>?:body?:OPsuffix
2
- Example turn: <<PLAN:Locate the definition before changing it.:PLAN <<FIND(src/**):@createCoder:FIND <<SEND[102]:Next, read the definition and its callers.:SEND
3
- Close with SEND[200] only in a turn that performs no retrieval and has no surviving streams or workers.
1
+ YOU MUST always begin each turn with `# PLAN0`.
2
+ YOU MUST always end each turn with `## SEND0 [status code]`; turns with retrievals use a non-concluding code.
3
+ YOU MUST react and respond to the latest prompt listed under Active User Prompts.