[Wave 4 · 4b] workers — package quality#19
Conversation
Supervisor-authored seed for the 4b workers sub-wave (prepared in parallel, forked off umbrella feat/package-quality-wave4-runtimes @ ee9f26b). Pre-research measured @ ee9f26b: plugin-workers-core doc-lint 460 (180 private-type-ref + 280 missing-jsdoc), plugin-workers 143 (83 + 60); both publish --dry-run PASS, 0 slow types. 17-export core surface (F-5/F-16), plugin tests 0 (A5 F-10), F-1 over-cap 501/469, likely 4b-core/4b-plugin split. DO NOT LOCK: pull umbrella forward after 4a merges (settles ./streams), then re-run MEASURE-FIRST. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4a PLAN-EVAL done supervisor-inline (PASS WITH ADJUSTMENTS; user-granted plugin-plan exception) → implementing on PR #18. 4b/4c/4d forked off the umbrella @ ee9f26b with supervisor MEASURE-FIRST pre-research and opened as Draft PRs #19/#20/#21 → umbrella #16, all carrying a DO-NOT-LOCK pull-forward gate. Measured doc-lint (full-export): 4b 603, 4c 519, 4d 349; all 6 units dry-run PASS 0 slow types. Registry status, sub-wave prep subsection, summary table, and 3 Base-Sync Log rows updated. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Base-sync the 4b workers sub-branch onto the umbrella now carrying merged 4a (plugin-streams-core A3, plugin-streams A5, watchers A3; IMPL-EVAL PASS, umbrella 2c24662). Settles workers-core ./streams (re-exports @netscript/plugin-streams-core). 4b MEASURE-FIRST must now re-run on this base before locking the plan. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Plan & Design — READY FOR PLAN-EVALMEASURE-FIRST Results Table
Per-entrypoint attribution: See Archetype Decision + Gate Delta
Split DecisionSPLIT into
Work Items4b-core (14 slices):
4b-plugin (13 slices):
Consumer-Import CheckRetained entrypoints with non-zero external consumers:
Folded: Zero-external-consumer entrypoints retained for alpha: PLAN-EVAL RoutingOption A: One PLAN-EVAL over the combined 4b plan (archetype decisions + split + slice lists), then separate IMPL-EVAL per sub-wave. HARD STOP. No implementation slice begins until PLAN-EVAL returns PASS. Artifacts committed: |
|
@openhands-agent model=openrouter/moonshotai/kimi-k2.6 output=pr-comment use harness proceed to PLAN-EVAL for this PR. Scope:
|
|
Model: PLAN-EVAL Summary — Wave 4 · 4b: workersVerdictPASS Run: Gate Evidence Checked
Spot-Checks Performed
Responses to Review Comments / Issue CommentsN/A — this is a PLAN-EVAL pass; no review comments to respond to. Remaining Risks
Run: https://github.com/rickylabs/netscript/actions/runs/27191329179 |
Slice 1/27 — Declare runtime archetype | @netscript/plugin-workers-core | A3 Runtime/Behavior | Gate(s): F-5, F-16Changed
Gate results
Drift
|
Slice 2/27 — Enumerate core check entrypoints | @netscript/plugin-workers-core | A3 Runtime/Behavior | Gate(s): F-6Changed
Gate results
Drift
|
Slice 3/27 — Fold core contracts export | @netscript/plugin-workers-core + @netscript/plugin-workers | A3/A5 | Gate(s): F-5, F-16, F-6Changed
Gate results
Drift
|
Slice 4/27 — ptr-fix builders/config/contracts | @netscript/plugin-workers-core | A3 Runtime/Behavior | Gate(s): F-7, F-15Changed
Gate results
Drift
|
Slice 5/27 — ptr-fix executor/registry/runtime | @netscript/plugin-workers-core | A3 Runtime/Behavior | Gate(s): F-7, F-15Changed
Gate results
Drift
|
Slice 6/27 — ptr-fix abstracts/testing/workflow | @netscript/plugin-workers-core | A3 Runtime/Behavior | Gate(s): F-7, F-15Changed
Gate results
Drift
|
Slice 21/27 — F-1 concept-split
|
Slice 22/27 — Test layer:
|
Slice 23/27 — Test layer: CLI contribution test | Unit | Archetype | Gate(s) | Changed | Gate results | DriftUnit: Archetype: A5 plugin Gate(s): F-10 test-shape; raw targeted Changed:
Gate results:
Drift: none. Commits: impl |
Slice 24/27 — Test layer: Aspire contribution test | Unit | Archetype | Gate(s) | Changed | Gate results | DriftUnit: Archetype: A5 plugin Gate(s): F-10 test-shape; Runtime/Aspire validation; raw targeted Changed:
Gate results:
Drift: none. Commits: impl |
Slice 25/27 — Test layer: E2E gate test | Unit | Archetype | Gate(s) | Changed | Gate results | DriftUnit: Archetype: A5 plugin Gate(s): F-10 test-shape; E2E gate metadata; raw targeted Changed:
Gate results:
Drift: none. Commits: impl |
Slice 26/27 — README + module docs for all entrypoints | Unit | Archetype | Gate(s) | Changed | Gate results | DriftUnit: Archetype: A5 plugin Gate(s): full-export doc-lint; raw 9-entrypoint Changed:
Gate results:
Drift: none. Commits: impl |
Slice 27/27 — Validate plugin gates and consumer-import | Unit | Archetype | Gate(s) | Changed | Gate results | DriftUnit: Archetype: A5 plugin Gate(s): publish dry-run; full-export doc-lint; raw 9-entrypoint Changed:
Gate results:
Drift: none. Commits: impl |
4b-plugin COMPLETE —
|
| Gate | Result | Evidence |
|---|---|---|
| F-6 task hygiene | PASS | check enumerates all 9 retained entrypoints; publish:dry-run task exists. |
| Private-type refs | PASS | Full-export doc-lint across 9 entrypoints: totalPrivateTypeRef=0. |
| JSDoc | PASS | Full-export doc-lint across 9 entrypoints: totalMissingJSDoc=0. |
| F-1 file cap | PASS | worker/scheduler.ts reduced 480 → 342 lines. |
| F-10 test shape | PASS | Manifest, CLI, Aspire, and E2E gate tests added; deno test --allow-all plugins/workers/tests → 5 passed / 0 failed. |
| Runtime/Aspire validation | PASS | WorkersAspireContribution registration test → 1 passed / 0 failed. |
| Verifier | PASS | deno run --allow-read plugins/workers/verify-plugin.ts → ok: true, findings: []. |
| Publish dry-run | PASS | deno publish --dry-run --allow-dirty exit 0, 0 slow-type warnings; two known unanalyzable-dynamic-import warnings retained. |
| Raw check | PASS | Raw 9-entrypoint deno check --unstable-kv exit 0. |
| Lint | PASS | deno lint plugins/workers checked 73 files. |
| Format | PASS | deno fmt --check plugins/workers checked 81 files. |
| Consumer-import | PASS | Raw checks exited 0 for triggers, sagas, workers, and CLI. |
| Lock hygiene | PASS | deno.lock unchanged. |
Drift: none.
Latest commits: implementation 9839de3; docs baae1ea.
4b IMPLEMENTATION COMPLETE — ready for IMPL-EVALBranch: Head: Scope completed:
Drift: none. Handoff: Implementation is complete. Separate-session IMPL-EVAL may begin. Do not merge from this session. |
|
@openhands-agent model=openrouter/moonshotai/kimi-k2.6 output=pr-comment use harness proceed to IMPL-EVAL for this PR. |
OpenHands Agent — successModel: IMPL-EVAL Summary — Wave 4 · 4b workersVerdictPASS Run: SummaryValidated Changes
|
| Gate | Command | Result |
|---|---|---|
deno check |
deno task check |
✅ Pass |
| Tests | deno task test |
✅ 16 passed, 0 failed |
| Dry-run | deno publish --dry-run --allow-dirty |
✅ Success (no slow-types warnings on the changed schemas) |
| Doc-lint | deno doc --lint mod.ts |
✅ Pass (no missing exports) |
@netscript/plugin-workers (A5)
| Gate | Command | Result |
|---|---|---|
deno check |
deno task check |
✅ Pass |
| Tests | deno task test |
✅ 5 passed, 0 failed |
| Dry-run | deno publish --dry-run --allow-dirty |
✅ Success (2 pre-existing dynamic-import warnings only) |
Remaining slow-types warnings (pre-existing, not introduced by this change)
Both packages carry two expected unanalyzable-dynamic-import warnings that are by design:
plugin-workers-core/src/runtime/job-dispatcher.ts:30— runtime adapter bootstrapplugins/workers/services/src/main.ts:84— plugin service bootstrapplugins/workers/src/cli/workers-cli-backend.ts:107— CLI module loader
These dynamic imports load user-provided modules at runtime and cannot be statically analyzed. They are not slow-types blockers for JSR publishability (the publish dry-run succeeds).
Responses to Review Comments or Issue Comments
None applicable — this is a continuation of the harnessed IMPL-EVAL pass for PR #19.
Remaining Risks
- A5 package directory name vs. naming convention:
@netscript/plugin-workerslives underplugins/workers/rather thanpackages/plugin-workers/. This is consistent with the Tier-2 plugin pattern used elsewhere (plugins/streams/, etc.) and does not block gates, but it can confuse archetype mapping if future harness runs expect all A5-shape packages underpackages/. - Pre-existing dynamic imports: The three
unanalyzable-dynamic-importwarnings are architectural (runtime module loading). They should be tracked as accepted debt rather than re-investigated on every wave. If the JSR publish gate ever hardens to reject any dynamic-import warnings, these will need inline suppression or a refactor to static imports. - No e2e:cli run: The full
deno task e2e:clisuite was not executed per harness guidance (“expensive; run during evaluator/merge-readiness pass or when explicitly requested”). If the merge-readiness gate requires it, it should be run in a separate session.
Run: https://github.com/rickylabs/netscript/actions/runs/27209801721
|
This pull request is abnormally large and would use a significant amount of tokens to review. If you still wish to review it, comment "augment review" and we will review it. |
Wave 4 · sub-wave 4b — workers
Status: PREPARED IN PARALLEL — DO NOT LOCK YET. Supervisor-authored seed + pre-research only. No package code yet.
Forked off umbrella
feat/package-quality-wave4-runtimes@ee9f26b(carries merged Wave 3).Scope — 2 units (long pole #1)
@netscript/plugin-workers-core@netscript/plugin-workersFamily doc-lint = 603 (largest in Wave 4). Fine-tuning, not a slow-type rebuild.
Headline work
./contracts==./contracts/v1duplicate alias → fold candidate).plugin-workers0 tests → A5 F-10 + Runtime/Aspire validation required.workers.contract501,worker/scheduler469 (concept-splits).plugin-workersmissingpublish:dry-run.4b-core/4b-pluginsplit — decide at Plan Gate.⛔ Pull-forward gate
workers-core ./streamsre-exports@netscript/plugin-streams-core. After 4a merges →git merge feat/package-quality-wave4-runtimes→ re-run MEASURE-FIRST before locking the plan.Seed docs:
.llm/tmp/run/feat-package-quality-wave4-runtimes--4b-workers/.🤖 Generated with Claude Code