Triggers feature-backing — net-new triggers-core runtime backs 6 deferred routes (PLANNING)#192
Conversation
Net-new @netscript/plugin-triggers-core runtime to back the 6 deferred oRPC routes (fireTrigger, testWebhook, previewSchedule, enable/disable, subscribeEvents) + close 2 backed-route gaps (synthesized enabled, omitted name). 6 dependency-ordered slices, 12 locked decisions. Re-grounded against alpha.16: connector already converged, KV already @netscript/kv (migration dropped). PLAN-EVAL gated; closes TRIGGERS-CONNECTOR-DEFERRED-ROUTES. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014gW4zfhMMQU6txC828ijct
|
@openhands-agent model=openrouter/minimax/minimax-m3 output=pr-comment PLAN-EVAL (harness, separate session). This is a planning-only PR. Do NOT implement anything. Evaluate the plan for PLAN-GATE readiness and emit a verdict. SKILLActivate and apply these repo skills before evaluating:
What to read
Grade specifically
OutputPost a PR comment verdict: |
OpenHands Agent — CompletedModel: openrouter/minimax/minimax-m3 PLAN-EVAL verdict — #181 Triggers Feature-BackingVerdict: Per SummaryThe plan is a well-scoped, layering-correct, debt-disciplined proposal that converts a 6-route deferral pile-up into a 6-slice net-new Six actionable findings are listed below. None are blockers; all are resolvable with minor wording tightening or test-plan elaboration in Grading per the seven axes1. Base-state accuracy — ✅ all three corrections verified, no stale premise remaining
No remaining stale premise detected. 2. Route→slice coverage — ✅ total; soundness lock holds
3. Layering & axioms — ✅ correct layer landing for every net-new file
4. S5 cron engine (L6) — ✅ right call, capability gap real
5. L9 testWebhook semantics — ✅ sound, with one tightening item
6. #184 coordination (L12) — ✅ sequencing acceptable; hard rule mitigates
7. Debt — ✅ correctly scoped and justified
Findings (actionable; non-blocking)These should be reconciled in F1 — L1 vs Slice descriptions contradict on
|
… findings F1-F5 PLAN-EVAL (minimax-M3, PR #192) returned PASS with 6 actionable findings. Apply the planning-quality reconciliations before the IMPL train: - F1: tighten L1 to "main.ts default-port construction only" (no service-assembly restructure) — the honest reading of the slice bodies; new ports constructed in createTriggersServiceContext. - F2: enumerate the L9 testWebhook synthetic-request contract (verifier/secret resolution, x-hub-signature-256 header, await ingress.accept, no direct verify). - F3: commit S5 cron engine to 8 explicit DST/timezone/leap/invalid table cases. - F4: L13 JSR surface budget — export factories as values, ports type-only. - F5: L4 list() returns overrides-only; connector filters stale ids at response time. - F6: informational (soundness lock already in Gates); no edit. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014gW4zfhMMQU6txC828ijct
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014gW4zfhMMQU6txC828ijct
#181 Slice 1 — Domain fields
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014gW4zfhMMQU6txC828ijct
#181 Slice 2 — Enabled-State Port + KV AdapterScope:
Commit:
Gate evidence:
Notes:
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014gW4zfhMMQU6txC828ijct
#181 Slice 3 — Manual-Fire DispatcherScope:
Commit:
Gate evidence:
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014gW4zfhMMQU6txC828ijct
Slice 4 — Webhook Test DeliveryScope:
Commit:
Gate evidence:
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014gW4zfhMMQU6txC828ijct
Slice 5 — Cron Next-Fire PreviewScope:
Commit:
Gate evidence:
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014gW4zfhMMQU6txC828ijct
Slice 6 — Event Subscription / SSEScope:
Commit:
Gate evidence:
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014gW4zfhMMQU6txC828ijct
|
@openhands-agent model=openrouter/qwen/qwen3.7-max output=pr-comment IMPL-EVAL (harness, separate session). This is the final evaluator pass for the #181 Triggers SKILLActivate and apply these repo skills before evaluating:
What to read
Per-slice / per-decision verification (the spec is locked — verify the artifact MATCHES it)
Gate re-confirmation (independently re-run the cheap ones)
OutputPost a PR comment verdict on PR #192: |
OpenHands Agent — CompletedModel: openrouter/qwen/qwen3.7-max IMPL-EVAL Run Summary — PR #192 (Triggers Feature-Backing)SummaryPerformed the final IMPL-EVAL evaluator pass on PR #192 ( Changes
ValidationAll gates independently re-run and confirmed green:
Per-slice verification performed via source code audit:
Debt registry verified: Remaining Risks
Run: https://github.com/rickylabs/netscript/actions/runs/28477534366 |
Triggers feature-backing program (TaskList #181)
Net-new
@netscript/plugin-triggers-coreruntime to feature-back the 6 deferred triggers oRPCroutes and close the 2 backed-route gaps. The connector is already converged on
alpha.16(
createPluginService+rawRoutes); this program is purely additive-coreruntime + thinconnector handler-body wiring.
What it backs
fireTriggertestWebhookpreviewScheduleenableTrigger/disableTriggersubscribeEventslistTriggers/getTriggergapenabled:true, omitsnameSlices (dependency-ordered)
enabled?/name?onTriggerDefinitionBase(+ builders).enable/disable, un-synthesizeenabled.fireTrigger.testWebhook.previewSchedule. (highest risk)subscribeEvents.Re-grounding (vs the original framing)
The original brief assumed pre-convergence triggers. Corrected against
alpha.16: (1) connectoralready converged; (2) KV stores already on
@netscript/kv— migration dropped (no-op); (3)deferral is plain
throw→500. So #181 is a pure-corefeature-backing program.Coordination with #184 (Plugin RE-ARCHITECTURE v2)
#181 lands first, in full; #184 absorbs the relocation. No concurrent open PRs touching the four
hot files (
trigger-definition.ts,ports/mod.ts,contracts/v1/triggers.contract.ts,v1.ts).Gates
arch:check· scopedcheck --unstable-kv/lint/test·publish --dry-run·scaffold.runtime·
e2e-cli-prod(post-publish, hard release gate). Regression lock: triggers-contract soundness(
enabledrequired) stays green. ClosesTRIGGERS-CONNECTOR-DEFERRED-ROUTES.🤖 Generated with Claude Code