docs(plugins): replace internal codenames in published JSDoc - #1587
Conversation
|
[PHASE: RESEARCH / PLAN] The run is activated and implementation scope is locked at baseline Findings
CI intentThis is a documentation/comment-policy slice. NextImplement source-first JSDoc corrections and the negative policy test, then align reference tables to |
|
[PHASE: IMPL] Slice 2 landed at Scope
Evidence
NextValidate reference summaries against |
|
[PHASE: IMPL] [VERDICT: COMPLETE] Generator implementation is complete at Census
Gates
HandoffDo not mark ready, merge, or change the |
|
[PHASE: INDEPENDENT REVIEW] [VERDICT: PASS] — 0.0.6 docs-lane orchestrator, head Re-derived from the diff, not read from the implementation report.
The judgement call this slice had to get right, and didThe brief warned that a blanket sweep would corrupt type signatures. The real hazard turned out to be subtler:
Nothing consumer-actionable was lost. A reader could do nothing with "reserved for T3" — there is no published explanation of what T3 means — whereas the replacements state the actual role. Stripping the tier and the meaning would have been the easy failure here; so would a blanket replace that mangled Scope noteThe slice also added Flipping to ready for the automatic IMPL-EVAL. No |
|
@openhands-agent model=openrouter/deepseek/deepseek-v4-flash-0731 output=pr-comment iterations=800 phase=impl head=944dbbe072f66f1dcd880986423b6bc3fe1c9283 Trusted base SHA: fc312f2 use harness SKILL
Act as the formal IMPL-EVAL session for this pull request. Do not edit files, create commits, push, Return concise, severity-ranked findings with exact evidence and required action. End with exactly |
OpenHands Agent — Did not runOPENHANDS_VERDICT: FAIL_FIX Model: IMPL-EVAL — PR #1587 (issue #1554) — docs(plugins): replace internal codenames in published JSDocSummaryEvaluated PR #1587 at head Changes
Validation
Findings (severity-ranked)1. [MEDIUM] Published saga reference page still contains internal codename "T1" and is stale (FAIL_FIX)
2. [LOW] Tutorial prose uses uppercase durability tier "T1"
Responses to review threadsNo open review threads were surfaced for this evaluation; none to answer. Remaining risks
VerdictOPENHANDS_VERDICT: FAIL_FIX Run: https://github.com/rickylabs/netscript/actions/runs/31612234930 |
Evaluator lane blocked — hung run cancelled, non-Fable fallback in progressThe automatic IMPL-EVAL for this head did not complete. It hung and was cancelled; it produced no verdict and no partial output.
Because steps 19–21 never ran, no trace was materialised. There is nothing partial to salvage and nothing that could be mistaken for a verdict. The hang was verified from GitHub job steps, not run metadata — run-level Fallback provenance — explicitNative Claude · Opus 5, fresh clean session, one per PR.
The policy-declared escalation for formal evaluation of Codex work is native opposite-family Fable (prohibited), with OpenRouter MiniMax M3 / DeepSeek V4 Flash as the fallback — and those are precisely the lanes that hung. Opus is the remaining route that keeps every invariant. Exactly-once preserved — no label was cycled
The fallback verdict will be posted here with its head named explicitly. Redacted. This comment originally quoted the agent-invocation token literally. The |
OpenHands Agent — Did not runOPENHANDS_VERDICT: NONE Model: OpenHands Agent SummaryThe agent step did not run (outcome: cancelled). This is a workflow failure, not a task verdict. Diagnostics
See the uploaded Actions artifact for bootstrap.log and agent.log when present. Run: https://github.com/rickylabs/netscript/actions/runs/31615110254 |
FALLBACK IMPL-EVAL — VERDICT: FAIL_FIXHead evaluated: Provenance: native Claude · Opus 5, fresh clean session, opposite-family to this Codex-authored change. Not Fable (prohibited this milestone, absent at any depth). Not a cloud dispatch. Documented blocked-lane fallback after the automatic evaluator produced no trace. BlockingB1 — the same defect class is live in published JSDoc of a package this PR cleaned.
#1554 scope bullet 2 requires sweeping for "internal workstream names, wave/epic codenames, and issue numbers". The census pattern was B2 — the guard is a regression lock on the strings already removed, not a policy.
The test suite is green on a tree that still contains B1. That is the decisive proof: a guard that cannot detect an internal codename presently in published JSDoc cannot satisfy "reintroducing an internal codename fails a check". AC2 and AC4 are unmet. The tier judgement — upheldNo consumer-actionable meaning was lost. Named precisely so it is not mistaken for a pass-through: the ports' JSDoc was the only published place linking Non-blockingThe guard's second test is misnamed: its Path to PASSThree JSDoc lines, one regex widened to the phase/wave/group/epic class, and the AC2 evidence entry corrected to state the class actually swept. The widened guard must fail on B1 before B1 is fixed — that is its own negative proof. No re-plan: the plan and the tier judgement are sound; the sweep was narrower than the class the issue defines. |
FALLBACK IMPL-EVAL — FAIL_FIX addressedFixed in What changed
Required red proof — widened guard on pre-fix
|
FALLBACK IMPL-EVAL — CYCLE 2 — VERDICT: FAIL_FIXEvaluated head: Provenance: native Claude · Opus 5, fresh clean session, opposite-family to this Codex-authored change. Not Fable, at any depth. Not a cloud dispatch. Read-only. Documented blocked-lane fallback; not the cycle-1 evaluator.
The guard now proves itself — this is the part that was missingRun against the cycle-1 tree, the widened guard fails with 52 findings, explicitly naming Every cycle-1 over-match is also fixed: BF-1 (blocking) — an internal issue reference is still published, and the guard structurally cannot see it
Verified independently: The guard cannot flag it because its filter is This hits both failure conditions at once: an internal codename remains on the published surface, and the guard cannot catch its own class in that region. #1554's scope names this exactly — "sweep the rest of the publish set … and issue numbers in published JSDoc" — and acceptance box 2 claims "the whole publish set rather than one package". The arithmetic is right; the scope is not. The trap in fixing itNaively dropping the
Widening coverage must not convert this into the opposite defect. Scoping to published entrypoint closures, or narrowing the Non-blockingCycle-1's N2 was taken — "reserved" is restored on all three axes. The tier split is undisturbed. Residual over-match candidates ("Phase Locked Loop", "Tier T1", bare To clearReword |
FALLBACK IMPL-EVAL cycle 2 — FAIL_FIX addressedImplementation: Both commits were pushed with the required explicit refspec. No label, readiness, milestone, or merge-state mutation was made. Discovery choiceThe guard now derives published source from each top-level package/plugin The existing code-context exclusions are unchanged. Plain integer Raw red proof 1 — widened export-closure guard on
|
FALLBACK IMPL-EVAL — CYCLE 3 — VERDICT: PASSEvaluated head: Provenance: native Claude · Opus 5 · medium, Claude-family, opposite to this Codex-authored change. Fresh session — not the author, not the supervisor, not cycles 1 or 2. Not Fable, at any depth. Not a cloud dispatch. Read-only.
None is FIXED-BUT-NEW-DEFECT. The question this cycle existed to answerCycle 2's fix could have been the The guard self-proves on three reconstructed trees
It fails on every tree containing its class and passes only on the fixed one. Suite green at 4 passed, and confirmed collected by root It fails no honest documentationBoth legitimate algorithm docs are present, unmangled and clean — The census reproduces exactly: 26 narrow + 52 cycle-1 + 2 cycle-2 = 80, matching the PR body term-for-term. The mechanical blocker it caught — fixed before this commentThe That is a good catch precisely because it is invisible until the label is applied — the dry-run skips while the label is absent, so the failure would have surfaced at the worst moment. Non-blocking follow-ups
|
…hed JSDoc twice D-14. Since #1587's codename gate, an issue reference in a published doc comment is a CI failure. Both occurrences trace to brief wording that used issue numbers as shorthand and asked for the reasoning to be recorded in source. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TKxrWGp5uxEHQ2NyZiZSMF
Summary
Replaces internal planning labels and issue references in published package/plugin JSDoc with consumer-facing descriptions, realigns hand-maintained reference tables to authoritative
deno doc, and enforces the issue-defined class across each package/plugin's published export-entrypoint closure.Scope
Slices
a8303d73805108d655944dbbe070152e9795fa417ae46402b58adeValidation
Group X, 17Tn)#954,#1012)944dbbe07: exit 1 with exactly 54 findings (prior 52 plus Aspire 2); 3 passed / 1 failedconstants.ts:123 #954and#1012; 3 passed / 1 faileddoc:lint— all 9 entrypoints, including./constants.ts, pass with combined diagnostics 0deno doc --json—AppHealthCheckPathrenders the readiness mechanism without issue numbersquality:gate— exit 0; quality findings 0 (doctrine warnings are pre-existing)docs:snippets— PASS, scanned 578, checked 21, malformed 0; no_siteregressiondocs:links— PASS, 102 docs, 0 broken links/anchors/orphansdocs:accuracy— PASS, 4 saga pages and 196 published-source pages checkeddeno task test— PASS: 3,257 passed (622 steps), 0 failed, 17 ignoredgit diff --check— PASS;deno.lockunchanged; package/plugin changes are comment-onlye2e:cli/scaffold.runtime— intentionally not run per owner boundaryCensus definition and exclusions
The scanner derives the published source surface from every export target in each top-level package/plugin
deno.json, then follows static local import/export and literal dynamic-import edges within that package. This covers root entrypoints such aspackages/aspire/constants.tsas well as declarations undersrc/, while excluding test, E2E, fixture, and generated paths.The term predicate covers title-cased
Group/Phase/Wave/Epicplanning labels, exactTn/Wnshorthand, and#n/netscript#nissue references. Plain integerPhase Nalgorithm steps are allowed; letter and number-plus-letter codenames such asPhase AandPhase 7dremain forbidden.@examplebodies/fences, inline code, and inline JSDoc links are ignored.@template T1, inlinePair<T1, T2>, links, and fenced examples are ignored.packages/plugin-sagas-core/src/contracts/v1/sagas.contract.ts— Zod description usingT1packages/cli/src/maintainer/features/release/eject/producer-root-files.ts— generated CONTRIBUTING template usingGroup Bpackages/cli/src/public/adapters/agent/deno-agent-docs-generator.ts— executable diagnostic using#1068//planning references remain outside published JSDoc; they do not render throughdeno doc.Harness
.llm/runs/docs-1554-codenames--leaf/Drift / Debt
drift.md.Definition of Done
deno doc --jsonsymbol summaries; Aspire has no stale page row.402b58ade. Guard self-proves on three reconstructed trees (80 / 54 / 2 findings vs base, cycle-1 and cycle-2 defect trees; 0 at head) and produces zero findings across all 1891 closure files.