Skip to content

chore/prod-readiness — repo cleanup (Group 1 of release/jsr-readiness)#54

Merged
rickylabs merged 24 commits into
release/jsr-readinessfrom
chore/prod-readiness
Jun 18, 2026
Merged

chore/prod-readiness — repo cleanup (Group 1 of release/jsr-readiness)#54
rickylabs merged 24 commits into
release/jsr-readinessfrom
chore/prod-readiness

Conversation

@rickylabs

Copy link
Copy Markdown
Owner

Group 1 sub-PR of the release/jsr-readiness umbrella (#53). Repo-wide production-readiness cleanup.

Scope: dead code, ALL backward-compat shims/aliases (functional workarounds excluded), temp/build cruft, stray root files; AGENTS-handoff.md relocated into the openhands-handoff skill (root file deleted); dead doc files deleted (no doc content rewrites).

Plan & Design (ready for the Plan-Gate):

  • .llm/tmp/run/chore-prod-readiness--cleanup/research.md
  • .llm/tmp/run/chore-prod-readiness--cleanup/plan.md
  • .llm/tmp/run/chore-prod-readiness--cleanup/worklog.md (## Design)

Status: Draft. Awaiting PLAN-EVAL (OpenHands / minimax M3, separate session) before any implementation slice (WSL Codex, daemon-attached). Merges --no-ff into the umbrella on PASS.

🤖 Generated with Claude Code

Group branch off umbrella @ 1f4cafa. Plan/research/Design ready (inherited).
Draft sub-PR -> release/jsr-readiness opens next; PLAN-EVAL (OpenHands/minimax M3,
separate session) follows. Worktree deferred to implementation launch (WSL Codex).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018fq9V7ujx7e1rWXi57qkPG
rickylabs added a commit that referenced this pull request Jun 18, 2026
…launched

Per supervisor.md §2: chore/prod-readiness (#54) and chore/deps-hygiene (#55)
branched off the umbrella with plan/research/Design ready on each; phase-registry
status -> active. GitHub-access blocker resolved (PAT REST path). Worktrees deferred
to implementation launch (WSL Codex ext4). PLAN-EVAL per sub-PR follows.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018fq9V7ujx7e1rWXi57qkPG
@rickylabs

Copy link
Copy Markdown
Owner Author

@openhands-agent model=openrouter/minimax/minimax-m3 output=pr-comment iterations=800 use harness

ROLE: PLAN-EVAL (plan-gate evaluator) for the chore/prod-readiness group of the release/jsr-readiness umbrella. You are a SEPARATE evaluator session — do NOT implement, edit framework code, or rewrite the plan. Judge the plan only.

Read first (authoritative protocol):

  • .llm/harness/evaluator/plan-protocol.md
  • .llm/harness/gates/plan-gate.md
  • .llm/harness/evaluator/verdict-definitions.md

Then read the run (this PR's branch, chore/prod-readiness):

  • .llm/tmp/run/chore-prod-readiness--cleanup/research.md
  • .llm/tmp/run/chore-prod-readiness--cleanup/plan.md
  • .llm/tmp/run/chore-prod-readiness--cleanup/worklog.md (especially the ## Design section)
  • .llm/tmp/run/chore-prod-readiness--cleanup/drift.md
  • the relevant archetype profile + .llm/harness/debt/arch-debt.md

Task (follow plan-protocol.md exactly):

  1. Walk the Plan-Gate checklist box-by-box; mark each pass/fail with concrete evidence.
  2. Open-decision sweep: every open question in research.md must be RESOLVED or explicitly deferred with rationale.
  3. Confirm the slice list is ordered, each slice is small (single concern, < ~30 LOC), and each names its proving gate + the files it touches.
  4. Spot-check load-bearing claims against the actual tree: a back-compat shim is removable ONLY after a zero-live-consumer scan (deno info import-graph + workspace grep incl. packages/cli/src/kernel/templates/). Verify the off-limits guardrail (packages/aspire/src/public/mod.ts, scaffold-versions.ts, version pins, catalog/catalog:) is respected, and that the PUBLIC-surface removals (database S3–S5, recurring-job API S6) are gated behind the e2e:cli run scaffold.runtime smoke.

Verdict: write .llm/tmp/run/chore-prod-readiness--cleanup/plan-eval.md, then commit and push it to the chore/prod-readiness branch. Emit exactly one of PASS or FAIL_PLAN with specifics. Put the verdict + a one-paragraph rationale in OPENHANDS_SUMMARY_PATH; do NOT post your own PR comment (the workflow posts the status). No implementation slice may begin before PASS.

@rickylabs

rickylabs commented Jun 18, 2026

Copy link
Copy Markdown
Owner Author

OpenHands Agent — Completed

Model: openrouter/minimax/minimax-m3
Provider: OPENROUTER
Job status: success
Trace: .llm/tmp/run/openhands/pr-54/run-27754236653-1 (committed to the PR branch)
Artifact: openhands-agent-27754236653-1

Summary

Verdict: FAIL_PLAN

PLAN-EVAL evaluator session for chore-prod-readiness--cleanup (group 1 of the release/jsr-readiness umbrella). I walked the plan-gate checklist box-by-box, performed an open-decision sweep, spot-checked the S1–S8 consumer claims against the actual tree, and verified the off-limits guardrail. The plan's overall shape is sound (off-limits fence, consumer-scan-first, scaffold.runtime E2E on the high-risk slice) but the per-slice touch lists and gate coverage understate the work in three places. Verdict committed and pushed to chore/prod-readiness as 3e305a82.

Changes

  • Wrote .llm/tmp/run/chore-prod-readiness--cleanup/plan-eval.md (102 lines) — full verdict with checklist, open-decision sweep, S1–S8 spot-check table, off-limits guardrail check, per-slice remediation matrix, and seven required fixes.
  • Committed and pushed to chore/prod-readiness (commit 3e305a82). Off-limits deno.lock drift from earlier grep operations reverted before commit.
  • Did not implement any slice (PLAN-EVAL mode forbids).

Key findings

ID Symbol Plan claim Verifier finding
F1 Aspire D-7 _aspire-compat.mts shim off-limits (functional) Confirmed functional at helpers-generator-pipeline.ts:42-55; emitted into generated scaffold. Plan fence correct.
F2 esbuild CJS post-bundle fixup off-limits (functional) Confirmed functional at compile-bundler.ts:30-60,120-145; ~879MB → ~97MB binary fix. Plan fence correct.
F3 Servy ConnectionStrings__${provider}db alias off-limits (inherited verify) Confirmed functional (3 readers in database-connectivity.ts:48,71,94 + 2 writers in env-file-*.ts + 1 in servy-environment.ts:139). Plan must record this resolution and add an arch-debt.md entry to make the fence auditable.
S4 database/extensions/sql-json.extension.ts mysqlJsonExtension "deprecated alias" DRIFT. The export has no @deprecated docstring and no LEGACY COMPATIBILITY header. mssqlJsonExtension in the same file is correctly marked; mysqlJsonExtension is not. Removing it is a silent public-API break.
S5 mssql.adapter.ts:66 options.trustedConnection "deprecated alias, remove" DRIFT. Internal writer at line 416 sets config.options!.trustedConnection = true and the integratedSecurity mapping at line ~414-419 must be rewritten to authentication.type = 'ntlm'. This is a behavioural refactor (~10-15 LOC), not a symbol delete.
S6 JobBuilder.schedule scaffold-template scan DRIFT. Confirmed additional live consumer at plugins/workers/src/scaffolding/job-scaffolders.ts:64-65 which injects .schedule(...) calls into generated worker modules. Scaffolder must be updated before the public surface can be removed.
G1-3 / G1-4 public-surface removals primary gate = publish:dry-run + scoped check DRIFT. Per plan-protocol.md task 4, all public-surface removals should be gated behind e2e:cli run scaffold.runtime as a regression guard. G1-3 and G1-4 currently lack this.
Per-slice LOC + file list not provided DRIFT. Plan uses per-group gates only; plan-protocol.md requires per-slice file list + LOC estimate.
G1-6 "remaining dead code sweep" open list DRIFT. Either enumerate candidates with evidence or defer to a follow-up run.
Off-limits guardrail (aspire public, scaffold-versions, version pins, catalog) respected PASS. None appear in any slice's touch list.
F1, F2, F3 fence off-limits PASS in intent; F3 must be documented (see above).

Required fixes (each in plan.md and research.md; resubmit to PLAN-EVAL)

  1. F3 — record the resolution. Update research.md to mark F3 functional with the 3-reader / 3-writer evidence. Add an arch-debt.md entry database-connectivity-legacy-connstring-alias with a post-release removal target.
  2. S4 — deprecate first, then remove. Split G1-3 into G1-3a (clean S3) + G1-3b (deprecate mysqlJsonExtension to mirror mssqlJsonExtension) + G1-3c (refactor S5 + remove both).
  3. S5 — name the internal rewrite. Plan must explicitly state G1-3c touches mssql.adapter.ts:414-419 (the integratedSecurity/trustedConnection mapping) and that the deprecated field's removal is a refactor, not a symbol delete.
  4. S6 — add the scaffolder consumer. G1-5 touch list must include plugins/workers/src/scaffolding/job-scaffolders.ts:64-65 and the corresponding scaffolder test fixture.
  5. G1-3 and G1-4 — add the scaffold.runtime smoke gate. Per plan-protocol.md task 4.
  6. Per-slice LOC + file list. Each of G1-0…G1-6 must name the files and a LOC estimate.
  7. G1-6 — scope or defer. Enumerate candidates with evidence, or move to a follow-up run with a ## Deferred scope reference.

Validation

  • git status confirmed clean after the deno.lock revert (only plan-eval.md is added).
  • git log -1 and git show 3e305a82 confirmed the commit is on chore/prod-readiness and includes the Co-authored-by trailer.
  • git push output: fc70df26..3e305a82 chore/prod-readiness -> chore/prod-readiness — push succeeded.
  • All S1–S8 / F1–F3 verifications cross-checked against the actual tree (paths cited in the plan-eval.md).

Responses to review comments or issue comments

  • No PR review-thread or issue-comment replies requested (output_mode: pr-comment; the workflow owns the status post). No replies.json was written.

Remaining risks

  • None for this evaluator session. The plan must address the seven required fixes before resubmission. The off-limits guardrail is correctly respected — no drift detected in packages/aspire/src/public/mod.ts, scaffold-versions.ts, version pins, or catalog/catalog: references.
  • The G1-3 / G1-4 gate-coverage gap is the most likely source of a follow-up re-evaluation; the e2e:cli smoke is the cheapest way to confirm that public-surface removals do not regress scaffold-generated users.
  • Recommend adding a .llm/tools/check-deprecation-coverage.ts script to the harness so the S4-style "missing @deprecated marker" gap is caught at the research stage, not at the plan-eval stage.

Run: https://github.com/rickylabs/netscript/actions/runs/27754236653

openhands-agent and others added 4 commits June 18, 2026 11:03
Verifier session for chore-prod-readiness--cleanup group. Verdict: FAIL_PLAN.

Required fixes (each must be made in plan.md and resubmitted to PLAN-EVAL):
1. F3: record the resolution (functional) and add an arch-debt entry.
2. S4 (mysqlJsonExtension): deprecate first, then remove (mirror mssqlJsonExtension).
3. S5 (trustedConnection): name the internal rewrite at mssql.adapter.ts:414-419.
4. S6 (JobBuilder.schedule): add the scaffolder consumer at
   plugins/workers/src/scaffolding/job-scaffolders.ts:64-65 to the touch list.
5. G1-3 and G1-4: add the scaffold.runtime smoke gate as a regression guard.
6. Per-slice LOC and file list per plan-protocol.md.
7. G1-6: scope the open-ended dead-code sweep or defer to a follow-up run.

Co-authored-by: openhands <openhands@all-hands.dev>
Address all 7 required fixes from the minimax-M3 FAIL_PLAN verdict
(plan-eval.md):

- PR-7 deprecate-before-remove: S4' mysqlJsonExtension (un-@deprecated)
  deprecated this run, removal deferred; S5 trustedConnection is a
  behavioural refactor (writer mssql.adapter.ts:415-416 -> authentication
  .type='ntlm'), not a delete.
- F3 ConnectionStrings__{provider}db confirmed FUNCTIONAL (read by
  service/src/diagnostics/database-connectivity.ts:48,71,94); arch-debt
  entry database-connectivity-legacy-connstring-alias added.
- G1-3 split into G1-3a/G1-3b/G1-3c.
- S6: scaffolder consumer plugins/workers/src/scaffolding/job-scaffolders
  .ts:64-65 + fixture added to G1-5 touch list.
- scaffold.runtime smoke gate on every public slice (G1-3a/b/c, G1-4, G1-5).
- G1-6 dead-code sweep bounded to touched surfaces + .llm/tools/.
- Per-slice file list + LOC budget table added.

Re-dispatching PLAN-EVAL cycle 2 (OpenHands minimax M3, separate session).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018fq9V7ujx7e1rWXi57qkPG
@rickylabs

Copy link
Copy Markdown
Owner Author

@openhands-agent model=openrouter/minimax/minimax-m3 output=pr-comment iterations=800 use harness

ROLE: PLAN-EVAL (cycle 2) — plan-gate evaluator for the chore/prod-readiness group of the release/jsr-readiness umbrella. You are a SEPARATE evaluator session — do NOT implement, edit framework code, or rewrite the plan. Judge the plan only.

Context: cycle 1 returned FAIL_PLAN (your prior plan-eval.md, commit 3e305a8) with 7 required fixes. The plan author has applied a remediation (commit 9ed3791). Your job: re-walk the full Plan-Gate AND confirm each of the 7 fixes is genuinely resolved in the tree (not just asserted).

Read first (authoritative protocol):

  • .llm/harness/evaluator/plan-protocol.md
  • .llm/harness/gates/plan-gate.md
  • .llm/harness/evaluator/verdict-definitions.md

Then read the run (this PR's branch, chore/prod-readiness):

  • .llm/tmp/run/chore-prod-readiness--cleanup/plan-eval.md (your cycle-1 verdict — the 7 fixes)
  • .llm/tmp/run/chore-prod-readiness--cleanup/research.md
  • .llm/tmp/run/chore-prod-readiness--cleanup/plan.md
  • .llm/tmp/run/chore-prod-readiness--cleanup/worklog.md (esp. ## Design + the cycle-1 remediation progress rows)
  • .llm/harness/debt/arch-debt.md (new entry database-connectivity-legacy-connstring-alias)

Verify each cycle-1 fix against the tree (spot-check, do not take the plan's word):

  1. F3 — confirm ConnectionStrings__{provider}db (servy-environment.ts:139) is READ by packages/service/src/diagnostics/database-connectivity.ts:48,71,94, so F3 is correctly classified FUNCTIONAL/off-limits, and the arch-debt entry exists.
  2. S4'/PR-7 — confirm mysqlJsonExtension (packages/database/extensions/sql-json.extension.ts:571) is NOT @deprecated on the branch and the plan DEPRECATES it (G1-3b) rather than deleting it; mssqlJsonExtension (@deprecated @554) is the only removal.
  3. S5/PR-7 — confirm trustedConnection is written at mssql.adapter.ts:415-416, so G1-3c is correctly a behavioural refactor (migrate to authentication.type='ntlm') with its own adapter test, not a symbol delete.
  4. S6 — confirm plugins/workers/src/scaffolding/job-scaffolders.ts:64-65 emits .schedule(...) and that it (plus its fixture) is in G1-5's touch list, gated on full scaffold.runtime.
  5. Confirm G1-3a/b/c, G1-4, G1-5 each carry a scaffold.runtime smoke gate.
  6. Confirm every slice (G1-0..G1-6) now names a file list + LOC budget, and each slice is single-concern (<~30 LOC except G1-5, which is flagged for sub-split).
  7. Confirm G1-6 is bounded (touched surfaces + .llm/tools/; new dead surfaces deferred, not removed).

Also re-confirm the off-limits guardrail PASS (no edits to packages/aspire/src/public/mod.ts, scaffold-versions.ts, version pins, or catalog/catalog:).

Verdict: write .llm/tmp/run/chore-prod-readiness--cleanup/plan-eval.md (the workflow commits it back to the branch; overwrite the cycle-1 file). Emit exactly one of PASS or FAIL_PLAN with specifics. Put the verdict + a one-paragraph rationale in OPENHANDS_SUMMARY_PATH; do NOT post your own PR comment (the workflow posts the status). No implementation slice may begin before PASS. This is cycle 2 of 2 before escalation.

@rickylabs

rickylabs commented Jun 18, 2026

Copy link
Copy Markdown
Owner Author

OpenHands Agent — Completed

Model: openrouter/minimax/minimax-m3
Provider: OPENROUTER
Job status: success
Trace: .llm/tmp/run/openhands/pr-54/run-27755852001-1 (committed to the PR branch)
Artifact: openhands-agent-27755852001-1

PLAN-EVAL cycle 2 — chore/prod-readiness

Verdict

PASS

Rationale (one paragraph)

All 7 cycle-1 required fixes are resolved. Each is visible in plan.md, the ## Design section of worklog.md, and the tree at cc3b8731 (off release/jsr-readiness). F3 (ConnectionStrings__{provider}db legacy alias) is recorded as functional with an arch-debt entry that names readers, writers, owner, reason, and target. S4′ (mysqlJsonExtension) is governed by the new PR-7 deprecate-before-remove rule and is correctly classified in G1-3b (deprecate-only this run, removal deferred). S5 (trustedConnection) is correctly classified as a G1-3c behavioural refactor with the internal writer at mssql.adapter.ts:415-416 named, plus an adapter behavioural test gate — not a symbol delete. S6's scaffolder consumer at plugins/workers/src/scaffolding/job-scaffolders.ts:64-65 is now in G1-5's touch list alongside the scaffolder test fixture. Every public-surface slice (G1-3a/b/c, G1-4, G1-5) carries a scaffold.runtime smoke. Per-slice file lists + LOC budgets are present for G1-0..G1-6, and G1-5 is explicitly flagged for sub-split if its migration exceeds ~30 LOC. G1-6 is bounded to G1-0..G1-5 surfaces + .llm/tools/, with newly-discovered dead surfaces recorded + deferred. The off-limits guardrail holds: packages/aspire/src/public/mod.ts, scaffold-versions.ts, version pins, and catalog: references appear only in the plan's Non-Scope exclusion rows, never in a touch list. All 8 plan-gate.md checklist boxes are satisfied; no open decision would force rework if deferred. Implementation may begin.

Summary

I was the cycle-2 PLAN-EVAL evaluator for the chore/prod-readiness cleanup group of the release/jsr-readiness umbrella. Cycle 1 returned FAIL_PLAN with 7 mechanical fixes; the supervisor's remediation (commit 9ed3791) was the input. I re-walked each cycle-1 fix against the actual tree on chore/prod-readiness @ cc3b8731 and re-walked the full plan-gate.md checklist. All 7 fixes verified; all 8 plan-gate boxes checked. Verdict: PASS. Wrote the cycle-2 verdict to .llm/tmp/run/chore-prod-readiness--cleanup/plan-eval.md (overwriting the cycle-1 file as the trigger comment directed). I did not post a PR comment — the workflow owns that.

Cycle-1 fixes — verification status

# Cycle-1 fix Tree verification Plan verification Result
1 F3 record the resolution (functional + arch-debt) writer line numbers (139, 130, 98) and reader line numbers (48, 71, 94) all match; arch-debt entry present with all 7 fields research.md + plan.md all carry the F3 RESOLVED marker with readers cited VERIFIED
2 S4 deprecate-first (PR-7) → G1-3 split mssqlJsonExtension @ :554 deprecated; mysqlJsonExtension @ :571 NOT deprecated — the asymmetric state PR-7 hinges on plan.md G1-3b + PR-7 + Open-Decision Sweep all reflect this VERIFIED
3 S5 name the internal rewrite (G1-3c refactor, not delete) mssql.adapter.ts:65-66 @deprecated Use authentication.type = 'ntlm' instead; writer at L414-415 sets config.options!.trustedConnection plan.md G1-3c + Risk Register + worklog Design all classify this as a refactor, not a delete VERIFIED
4 S6 scaffolder consumer in G1-5 job-scaffolders.ts:64-65 emits .schedule(...) into generated worker modules; no existing scaffolder test fixture in the tree (must be created) plan.md G1-5 + Per-slice file list + Risk Register all name the scaffolder + fixture + scaffolder test VERIFIED
5 scaffold.runtime smoke on every public slice (G1-3a/b/c, G1-4, G1-5) n/a (gate is post-implementation) plan.md Slice table + Fitness Gates + prose all confirm smoke on every public slice VERIFIED
6 Per-slice file list + LOC budget; single-concern; sub-split flag for G1-5 n/a (file lists are pre-implementation) plan.md §"Per-slice file list + LOC budget" present with full table; G1-5 explicitly flagged for sub-split VERIFIED
7 G1-6 bounded n/a (scope is pre-implementation) plan.md PR-6 + G1-6 row + Per-slice file list + worklog Design all bound G1-6 to G1-0..G1-5 surfaces + .llm/tools/; newly-discovered dead surfaces recorded + deferred VERIFIED

Off-limits guardrail (re-confirmed): packages/aspire/src/public/mod.ts, scaffold-versions.ts, version pins, and catalog/catalog: appear only in Non-Scope exclusion rows; never in any touch list. PASS.

Plan-Gate checklist (all 8 boxes checked)

  • Research present and current — PASS
  • Decisions locked — PASS (PR-1..PR-7; PR-7 added in cycle 2)
  • Open-decision sweep — PASS (F3, S4′, S5 all closed; no new open decisions)
  • Commit slices (< 30, gate + files each) — PASS (G1-0..G1-6, G1-3 split, G1-5 sub-split flag, per-slice file list + LOC)
  • Risk register — PASS (8 risks with mitigations)
  • Gate set selected — PASS (publish:dry-run, scoped check, test, lint/fmt, validate-claude-surface, arch:check, scaffold.runtime smoke, full e2e:cli)
  • Deferred scope explicit — PASS (Non-Scope, Hidden Scope, PR-6 bounds G1-6, PR-7 defers S4′)
  • jsr-audit surface scan (pkg/plugin) — PASS (public-surface slices identified; cycle-1 S6 consumer undercount closed by Fix Wave 0b·A — Plan-Gate reinforcement (Plan & Design — READY FOR REVIEW) #4)

Subtle observations (informational, not gate-blocking)

  • The mysqljsonextension-deprecated-removal-deferred arch-debt entry is listed in plan.md §"Arch-Debt Implications" as "add" but is not pre-existing. The implementer adds it in G1-3b alongside the @deprecated marker. Plan is correct.
  • The scaffolder test fixture for G1-5 is a new file the implementer must create. Plan names it correctly.
  • Two minor line-number offsets in the plan: mssql.adapter.ts:415-416 (actual 414-415) and mod.ts:254 (actual 252-256). Substantive content matches; the implementer should grep for the symbol, not the line number.
  • The plan correctly names the scaffolder consumer as a generated-output consumer that must be migrated in the same slice as the public-symbol removal, gated on a full scaffold.runtime E2E.

Changes

  • .llm/tmp/run/chore-prod-readiness--cleanup/plan-eval.md — overwritten (102 lines → 80 lines, denser cycle-2 verdict; previous cycle-1 FAIL_PLAN content replaced by PASS + verification matrix).

No other files were modified. The verdict is in the canonical run-scoped path; the workflow owns the PR comment and branch commit.

Validation

  • Read .llm/harness/evaluator/plan-protocol.md (input protocol).
  • Read .llm/harness/gates/plan-gate.md (8-box checklist).
  • Read .llm/harness/evaluator/verdict-definitions.md (PASS / FAIL_PLAN / FAIL_FIX / FAIL_RESCOPE / FAIL_DEBT definitions).
  • Read cycle-2 inputs: plan.md (189 lines), worklog.md (73 lines), research.md (101 lines), cycle-1 plan-eval.md (102 lines).
  • Spot-checked every cycle-1 fix against the tree:
    • packages/cli/src/kernel/adapters/windows/servy/servy-environment.ts:138-139 (F3 writer)
    • packages/cli/src/kernel/adapters/windows/environment/env-file-values.ts:130 (F3 writer)
    • packages/cli/src/kernel/adapters/windows/environment/env-file-content.ts:98 (F3 writer)
    • packages/service/src/diagnostics/database-connectivity.ts:48,71,94 (F3 readers)
    • packages/database/mod.ts:252-256 (G1-3a buildConnectionString @deprecated)
    • packages/database/extensions/sql-json.extension.ts:547,554,556,571 (G1-3b mssqlJsonExtension vs mysqlJsonExtension)
    • packages/database/adapters/mssql.adapter.ts:65-66, 414-415 (G1-3c trustedConnection + writer)
    • packages/fresh/src/runtime/server/define-fresh-app.ts:48,71 (G1-4 staticFiles/fsRoutes @deprecated)
    • packages/plugin-workers-core/streams/schema.ts:106 (G1-5 schedule? @deprecated)
    • packages/plugin-workers-core/builders/job-builder.ts:48,130 (G1-5 schedule() @deprecated)
    • packages/plugin-workers-core/public/root.ts:179 (G1-5 schedule() @deprecated)
    • plugins/workers/src/scaffolding/job-scaffolders.ts:64-65 (G1-5 scaffolder consumer — emits .schedule(...))
    • .llm/harness/debt/arch-debt.md database-connectivity-legacy-connstring-alias entry (all 7 fields present)
  • Confirmed off-limits guardrail: packages/aspire/src/public/mod.ts, scaffold-versions.ts, version pins, catalog: appear only in plan Non-Scope exclusion rows.

No lints, tests, or builds were run (this is plan evaluation, not implementation; per plan-protocol.md: "Do not evaluate code, run the implementation gate set, or comment on slices that do not yet exist.").

Responses to review comments or issue comments

N/A. I did not post a PR comment — the workflow owns PR comments per the trigger comment. The cycle-1 pr-review-comments.json is empty (3 bytes), confirming no prior thread to reply to.

Remaining risks

For the implementer (not for the plan):

  1. mysqljsonextension-deprecated-removal-deferred arch-debt entry must be created by the implementer in G1-3b, not just referenced.
  2. Scaffolder test fixture for G1-5 is a new file; the implementer creates it. Plan does not promise a pre-existing fixture to update.
  3. Two minor line-number offsets in plan; grep-by-symbol, not by line.

For the plan:
None. All cycle-1 fixes resolved, all plan-gate boxes checked, all open decisions closed.

Files in scope

  • Read (input protocol + run files): plan-protocol.md, plan-gate.md, verdict-definitions.md, research.md, plan.md, worklog.md, cycle-1 plan-eval.md, arch-debt.md, all touched packages/cli/..., packages/service/..., packages/database/..., packages/fresh/..., packages/plugin-workers-core/..., plugins/workers/... files.
  • Written: .llm/tmp/run/chore-prod-readiness--cleanup/plan-eval.md (cycle-2 verdict, overwrites cycle-1).
  • Not written: AGENTS.md, replies.json, no PR comment.

Run: https://github.com/rickylabs/netscript/actions/runs/27755852001

openhands-agent and others added 4 commits June 18, 2026 11:29
Plan-Gate cleared on cycle 2 (run 27755852001, separate OpenHands minimax-M3
session). All 7 cycle-1 fixes verified against tree; all 8 plan-gate boxes PASS;
off-limits guardrail re-confirmed. Implementation gated on user dispatch + G2 PASS.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018fq9V7ujx7e1rWXi57qkPG
rickylabs added a commit that referenced this pull request Jun 18, 2026
…gistry

Group 1 (chore/prod-readiness, PR #54): PASS @ cycle 2 (run 27755852001).
Group 2 (chore/deps-hygiene, PR #55): PASS @ cycle 1 (run 27755191977).
Both Plan-Gates cleared; implementation gated on explicit user dispatch.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018fq9V7ujx7e1rWXi57qkPG
@rickylabs

Copy link
Copy Markdown
Owner Author

Implementation progress — WSL Codex (thread 019edaa8-3b82…, mobile-visible, daemon-managed)

Slices landed (one commit each, gates green):

Slice Commit Summary Gate
G1-0 1c98fa1c Relocate OpenHands handoff protocol — AGENTS-handoff.md → openhands-handoff/SKILL.md (both mirrors), root file removed, 3 refs re-pointed validate-claude-surface.ts PASS (17/17 mirror ok, deno.lock unchanged); dangling-ref scan PASS
G1-1 3f683a05 Remove tracked scratch cruft — 10 unreferenced .llm/temp/.llm/tmp files; real build/ CLI modules left intact cruft + reference scan PASS

Drift D-G1-1 (significant) recorded + resolved: handover named a non-existent agents-handover.md; the real AGENTS-handoff.md was load-bearing → relocated into the skill per maintainer direction.

Supervisor mirrors progress here (Codex has no gh auth in WSL). IMPL-EVAL (OpenHands qwen-3.7-max, separate session) runs after all slices land.

@rickylabs

Copy link
Copy Markdown
Owner Author

Progress — WSL Codex (thread 019edaa8-3b82…)

Slice Commit Summary Gate
G1-2 105245f0 Remove internal compat shims (S1/S2/S7) — zero-consumer re-exports in telemetry/context/job.ts + 7 windows.ts aliases consumer scan PASS; scoped check telemetry 58 / cli 515 files, 0 diagnostics; tests 8/8

Subtractive discipline held: V8_HEAP_MB and updatePluginRegistry were found to have live consumers → deferred (drift D-G1-2), not force-removed. Only proven zero-consumer shims deleted.

@rickylabs

Copy link
Copy Markdown
Owner Author

Progress — WSL Codex (thread 019edaa8-3b82…) — first public-surface slice, full heavy gate set green.

Slice Commit Summary Gates
G1-3a 87317232 Remove database connection-string alias (S3 — buildConnectionString, already @deprecated) consumer scan PASS (no live consumers); scoped check packages/database 19 files 0 diag; db tests 3/3; publish:dry-run PASS (exit 0); scaffold.runtime smoke PASS (41/0)

deno doc --lint packages/database/mod.ts reports 3 pre-existing private-type-ref diagnostics — recorded as drift D-G1-3a and left for the docs group, not fixed here (would widen this subtractive alias-removal slice).

Co-Authored-By: Codex <noreply@openai.com>
@rickylabs

Copy link
Copy Markdown
Owner Author

Progress — WSL Codex (thread 019edaa8-3b82…) — PR-7 deprecate-before-remove honored exactly.

Slice Commit Summary Gates
G1-3b 7420344d Remove MSSQL JSON alias (S4) + deprecate-only MySQL JSON alias (S4′) consumer scan PASS; check database 19/0; db tests 3/3; publish:dry-run PASS; scaffold.runtime 41/0
  • mssqlJsonExtension (already @deprecated) → removed.
  • mysqlJsonExtension → kept + newly @deprecated, removal deferred (no silent break); arch-debt mysqljsonextension-deprecated-removal-deferred added.
  • deno doc --lint failure remains pre-existing (covered by drift D-G1-3a), not introduced here.

rickylabs and others added 2 commits June 18, 2026 14:40
@rickylabs

Copy link
Copy Markdown
Owner Author

Group 1 progress — WSL Codex (thread 019edaa8-3b82…)

Slice Commit Summary Gates
G1-3c 97728434 MSSQL integrated auth: trustedConnection → authentication.type='ntlm' (refactor, not delete — PR-7) + adapter behavioral test check 0 diag · db tests 4/0 · publish:dry-run 0 · scaffold.runtime smoke 41/0
G1-4 51c3b605 Remove Fresh deprecated option aliases (canonical option retained) check 147f/0 diag · consumer scan clean

Consumer scans clean on both; OFF-LIMITS files untouched (scaffold-versions.ts, aspire/src/public/mod.ts, lockfile). Pre-existing deno doc --lint finding on PostgresAdapter remains tracked under debt D-G1-3a (not introduced here).

Remaining: G1-5 (full scaffold.runtime — heaviest) and G1-6.

@rickylabs

Copy link
Copy Markdown
Owner Author

Group 1 — G1-5 (highest-risk public slice) ✅

Slice Commit Summary Gates
G1-5 fcd41053 Remove workers recurring-job .schedule(...) API; migrate builder + scaffolder + template + fixture in the same slice (prevents generated-workspace typecheck break) check 176f/0 diag · tests 22/0 (+new scaffolder test) · deno doc --lint PASS · publish:dry-run PASS · full scaffold.runtime --cleanup 41/0

Consumer/generated-output scan PASS-with-drift: extra stream/docs/template consumers recorded as debt D-G1-5; the surviving .schedule( hit is the functional cron-scheduler plumbing (correctly retained). OFF-LIMITS files untouched.

Remaining: G1-6 (bounded dead-code sweep) — last slice.

rickylabs and others added 2 commits June 18, 2026 14:57
Co-Authored-By: Codex <noreply@openai.com>
Co-Authored-By: Codex <noreply@openai.com>
@rickylabs

Copy link
Copy Markdown
Owner Author

Group 1 implementation COMPLETE — all 7 slices in (G1-0 → G1-6)

Slice Commit Summary Gates
G1-6 f72ea260 Bounded dead-code sweep — deleted nothing: import-graph (deno info) + find-import-patterns + find-symbol-usages proof found no in-scope candidate meeting the zero-reference threshold check 401f/0 diag · tests 35/0 · publish:dry-run PASS

Surviving schedule/buildConnectionString references confirmed as functional scheduler plumbing / unrelated private adapter methods (correctly retained). OFF-LIMITS files untouched across the whole run.

Full G1 ledger: subtractive cleanup with PR-7 deprecate-before-remove on every public surface, zero-consumer proof per slice, full scaffold.runtime green on G1-5. Deferred debt recorded as D-G1-*. A final G1-close bookkeeping commit (handoff notes) follows, then G1 → IMPL-EVAL (OpenHands qwen-3.7-max, separate session).

rickylabs and others added 2 commits June 18, 2026 15:00
Co-Authored-By: Codex <noreply@openai.com>
@rickylabs

Copy link
Copy Markdown
Owner Author

@openhands-agent model=openrouter/qwen/qwen3.7-max output=pr-comment iterations=800 use harness

Run IMPL-EVAL (final post-implementation evaluator pass) for the chore/prod-readiness run (run id chore-prod-readiness--cleanup). You are a SEPARATE evaluator session from the implementer — do NOT implement or fix; evaluate and write the verdict.

Read first: .llm/harness/evaluator/protocol.md and .llm/harness/evaluator/verdict-definitions.md, then .llm/tmp/run/chore-prod-readiness--cleanup/plan.md, worklog.md (incl. ## Design, ## Gate Results, and ## Handoff Notes), context-pack.md, drift.md, commits.md, and the gate docs the plan references.

Evaluate slices G1-0…G1-6 (G1-3 = G1-3a/b/c) against the LOCKED plan. Verdict-critical checks:

  1. PR-7 deprecate-before-remove honored on every PUBLIC surface — G1-3c is a refactor (trustedConnection → authentication.type='ntlm'), NOT a hard delete; G1-4 removed deprecated Fresh option aliases while the canonical option remains; G1-5 removed the workers recurring-job .schedule(...) API AND migrated the scaffolder/template/fixture in the same slice. Confirm no public symbol was deleted without the deprecate step or a recorded debt deferral.
  2. OFF-LIMITS untouched — git diff release/jsr-readiness...chore/prod-readiness must show NO edits to packages/cli/src/kernel/constants/scaffold/scaffold-versions.ts, packages/aspire/src/public/mod.ts, version pins, the catalog block / catalog: refs, or any deno.lock.
  3. F3 functional preservation — the runtime-functional ConnectionStrings__{provider}db env wiring read by packages/database/.../database-connectivity.ts (~lines 48/71/94) must NOT have been removed as "dead config". Verify those reads still resolve.
  4. Subtractive-only with proof — each removal has a zero-consumer scan; G1-6 correctly deleted NOTHING because no bounded candidate met the zero-reference threshold (surviving schedule/buildConnectionString hits are functional plumbing). Confirm no over-deletion.
  5. Heavy gate — deno task e2e:cli run scaffold.runtime --cleanup was green on G1-5 (generated-workspace typecheck after scaffolder migration); publish:dry-run green. Re-run publish:dry-run to confirm no regression.
  6. Debt validity — D-G1-1, D-G1-2, D-G1-3a, D-G1-5 are recorded in arch-debt.md and accurately describe deferred work (not a dodge for in-scope deletions).

Write the verdict to .llm/tmp/run/chore-prod-readiness--cleanup/evaluate.md (PASS / FAIL_FIX / FAIL_RESCOPE / FAIL_DEBT). Write your summary to OPENHANDS_SUMMARY_PATH; do NOT post your own PR comment (the workflow owns the status comment). Do not de-catalog, edit pins, delete lock/cache files, or upgrade dependencies.

@rickylabs

rickylabs commented Jun 18, 2026

Copy link
Copy Markdown
Owner Author

OpenHands Agent — Completed

Model: openrouter/qwen/qwen3.7-max
Provider: OPENROUTER
Job status: success
Summary source: agent-after-retry
Trace: .llm/tmp/run/openhands/pr-54/run-27761272236-1 (committed to the PR branch)
Artifact: openhands-agent-27761272236-1

IMPL-EVAL Run Summary — chore/prod-readiness--cleanup

Run ID: chore-prod-readiness--cleanup
Evaluator session: OpenHands IMPL-EVAL (qwen-3.7-max, separate from implementer)
Branch: chore/prod-readiness
Base: release/jsr-readiness
Cycle: 2 of 2
Verdict: PASS

Summary

Successfully completed the final post-implementation evaluator pass for the chore/prod-readiness run (Group 1 cleanup of release/jsr-readiness). All 6 verdict-critical checks were verified against the LOCKED cycle-2 plan. The implementation is strictly subtractive, PR-7 deprecate-before-remove was honored on every public surface, F3 functional behavior was preserved, OFF-LIMITS files were not modified, heavy gates remain green, and recorded debt accurately describes deferred or resolved work.

Changes

Files Created

  • .llm/tmp/run/chore-prod-readiness--cleanup/evaluate.md — Detailed IMPL-EVAL verdict document (124 lines) containing evaluation against all 6 locked decisions, verdict-critical check evidence, remaining risks, and final PASS verdict.

Files Modified

  • .llm/tmp/run/chore-prod-readiness--cleanup/worklog.md — Updated status header from "PLAN-EVAL PASS" to "IMPL-EVAL PASS"; appended complete IMPL-EVAL Verdict section (lines 126-157) documenting all 6 verdict-critical checks, remaining risks, and next action.

Commit

  • 646218f9 — "chore(harness): IMPL-EVAL PASS for chore/prod-readiness--cleanup"
    Author: openhands openhands@all-hands.dev
    2 files changed, 124 insertions(+), 1 deletion(-)

Validation

All 6 verdict-critical checks verified:

  1. PR-7 deprecate-before-remove honored — Verified every public surface removal (G1-3a/b/c, G1-4, G1-5) had a pre-existing @deprecated marker or was recorded as deferred debt. G1-3c correctly refactored trustedConnection option to authentication.type='ntlm' rather than hard-delete.

  2. OFF-LIMITS untouched — Confirmed via git diff 1c98fa1c..f72ea260 that no implementation commits edited scaffold-versions.ts, aspire/mod.ts, version pins, catalog refs, or deno.lock. Note: deno.lock carries @prisma/client@^7.8.0 from pre-implementation commit a47d7e6 (outside G1-slice range).

  3. F3 functional preservation — Verified ConnectionStrings__{provider}db env wiring still read by database-connectivity.ts at lines 48, 71, 94, and 204 with uriEnv ?? connStringEnv fallback chain intact. Recorded as arch-debt database-connectivity-legacy-connstring-alias.

  4. Subtractive-only with proof — Reviewed per-slice consumer scans in worklog.md Gate Results (lines 66-110). Each removal had zero-consumer evidence. G1-6 correctly deleted nothing — no bounded candidate met zero-reference threshold.

  5. Heavy gate green — Verified deno task e2e:cli run scaffold.runtime --cleanup passed=41 failed=0 on G1-5; re-executed deno task publish:dry-run (exit 0, "Success Dry run complete" for all 27 packages).

  6. Debt validity verified — Reviewed drift.md entries D-G1-1, D-G1-2, D-G1-3a, D-G1-5 and arch-debt entries database-connectivity-legacy-connstring-alias (lines 724-741) and mysqljsonextension-deprecated-removal-deferred (lines 743-755). All accurately describe deferred or resolved work.

Remaining risks (non-blocking)

  • Pre-existing database doc-lint failure (D-G1-3a): 1 private-type-ref diagnostic on PostgresAdapter.getDriverAdapter, not introduced by this run.
  • deno.lock holds @prisma/client@^7.8.0 from pre-implementation commit a47d7e6, outside G1-slice commit range.

Remaining risks

None for this evaluator session. All verification tasks completed. The IMPL-EVAL verdict is finalized and committed.

Next action: User reviews verdict. Cycle 2 complete. Ready to merge to release/jsr-readiness.

Run: https://github.com/rickylabs/netscript/actions/runs/27761272236

Evaluator pass for cycle 2 of 2. All 6 verdict-critical checks verified
against the LOCKED cycle-2 plan. Ready to merge.

Co-authored-by: openhands <openhands@all-hands.dev>
@rickylabs
rickylabs marked this pull request as ready for review June 18, 2026 13:36
@augmentcode

augmentcode Bot commented Jun 18, 2026

Copy link
Copy Markdown
🤖 Augment PR Summary

Summary: Repo-wide production-readiness cleanup (Group 1 of release/jsr-readiness) focused on removing dead/temporary artifacts and eliminating deprecated compatibility shims while keeping functional workarounds intact.

Key Changes:

  • Relocated the OpenHands handoff protocol into the OpenHands skill surface (and updated references), removing the root AGENTS-handoff.md.
  • Deleted tracked scratch/measurement files under .llm/temp/ and .llm/tmp/ that are not part of durable run artifacts.
  • Removed internal deprecated CLI constants and telemetry re-export shims with consumer-scan proof.
  • Database: removed deprecated exports (buildConnectionString, mssqlJsonExtension) and deprecated mysqlJsonExtension (deprecate-before-remove policy).
  • Database: migrated MSSQL integrated auth to authentication.type = 'ntlm' and added a targeted adapter test.
  • Fresh: removed deprecated option aliases (serveStaticFiles, registerFsRoutes) and updated tests/call sites.
  • Workers: removed the deprecated recurring-job .schedule(...) API from builder/public types/stream schema and updated scaffolding + docs (plus a scaffolder regression test).
  • Recorded drift/debt entries and added run artifacts (plan/worklog/evaluator outputs) to support harnessed plan/impl evaluation.

Technical Notes: Public-surface removals are guarded by consumer scans and scaffold/runtime smoke gates; functional env-var contracts (e.g., legacy connection-string aliases) are explicitly preserved and tracked as debt.

🤖 Was this summary useful? React with 👍 or 👎

@augmentcode augmentcode Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review completed. 3 suggestions posted.

Fix All in Augment

Comment augment review to trigger a new review at any time.

config.options!.trustedConnection = true;
config.authentication = {
type: 'ntlm',
options: {},

@augmentcode augmentcode Bot Jun 18, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

buildAdapterConfig() now emits authentication: { type: 'ntlm', options: {} } for integrated security. Can you double-check that an empty options object is sufficient for tedious NTLM (or that the Prisma adapter doesn’t require NTLM credentials here), since this could otherwise break integrated-auth connections at runtime.

Severity: medium

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.


if (options.fsRoutes) {
options.fsRoutes(app, pattern);
options.fsRoutes(app);

@augmentcode augmentcode Bot Jun 18, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

registerFileSystemRoutes() invokes options.fsRoutes(app) with no pattern, but the exported FreshAppFsRoutes type still includes a pattern?: string parameter. Consider aligning the type/docs with the new contract so consumers don’t assume they’ll receive a mount pattern here.

Severity: low

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

if (input.schedule) {
lines.push(` .schedule(${JSON.stringify(input.schedule)})`);
}
if (input.timeoutMs !== undefined) {

@augmentcode augmentcode Bot Jun 18, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After removing the .schedule(...) emission, WorkersScaffoldInput.schedule becomes effectively ignored by JobBuilderScaffolder.generate(). If the workers CLI still accepts/populates schedule, this can silently drop user intent (either reject it or route it to the scheduled-trigger path).

Severity: medium

Other Locations
  • plugins/workers/src/scaffolding/input.ts:22
  • plugins/workers/src/cli/workers-cli-backend.ts:196

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants