You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Friction points captured from a full review-mode run of the work-package workflow against midnightntwrk/midnight-node PR #1900 (a review of a third-party PR). Compiled from the transcripts of all 16 dispatched agents plus orchestration-level observations. Items already tracked in #270 are marked [#270].
Biggest signal: the work-package workflow is authored for the build/authoring path — payload sizes, variable seeding, the validate steps, the close-out convention, and the declared outcome array all assume you are creating a PR. Running it in review mode forced repeated reinterpretation and workarounds. That, plus consistently oversized get_activity payloads, accounts for most of the friction below.
A. Workflow-server MCP payload & tool ergonomics
get_activity payload routinely exceeds the tool-result token cap. The most pervasive friction — hit in start-work-package (97,287 chars), design-philosophy (81,287), codebase-comprehension, implementation-analysis, plan-prepare, and strategic-review (113,158). Every heavy activity's mandatory first call overflowed, spilled to a file, and forced chunked offset/limit reads before any step could run.
Oversized-payload compounded with a path typo into a retry loop. implementation-analysis made three failed reads of the spilled file (transposed session-id path segment) before recovering.
get_resource cannot load section-anchored / link-ref resources. lean-coding-audit received Resource not found for review-taxonomy, the-ladder, and ponytail-marker-convention (bare and #section, ~10 failed calls); it worked around this using the already-inlined step_techniques. These ids are inline-link refs, not standalone loadable resources — a documented mechanism that does not work for them.
Deferred-tool ToolSearch bootstrap tax. Each worker spends round-trips loading workflow-server tool schemas before real work begins.
next_activity never returned _meta.trace_token (orchestrator-observed). Trace accumulation stayed empty for the whole run, so the accumulate/resolve trace protocol (get_trace) was inert end to end.
next_activity has no usage field (orchestrator-observed). The dispatch-activity technique says to relay per-subagent token usage via a usage param, but the tool schema rejects it (additionalProperties: false), so usage can never be relayed.
B. Session state & variable consistency
Worker variable-changes do not persist to the server bag. State propagates only through orchestrator-authored prompts; e.g. skip_optional_activities=true set in design-philosophy read back as false in codebase-comprehension.
worktree_created mismatch. Dispatch prompt said true, the authoritative session bag said false, and the worktree physically existed — so remove-worktree was skipped and a real worktree was left un-cleaned; complete/end-workflow had to detect and escalate.
validation_passed disagreement. Client bag persisted false (no local build ran) while the prompt asserted true (analytical pass); end-workflow had to decide which gate governs.
Meta inspect_session returned stale values.is_monorepo=false, target_path="." from the bag vs the true true / midnight-node; the "source of truth" tool had to be overridden by prompt state.
Stale currentTechnique pointer metadata in the meta session (version-control::select-target-component while the activity was end-workflow).
C. Review-mode vs build-mode workflow fit (dominant cross-cutting theme)
validate structurally demands local cargo. Its bound steps (preflight, run-suite, fix-revalidate loop) intrinsically compile; on a machine where that OOMs and is forbidden, the CI-evidence substitute has to be injected by prompt rather than encoded in the workflow.
conduct-retrospective / COMPLETE.md assume an authored, merging PR. "Once the PR merged, update status" and the COMPLETE.md output do not fit reviewing a third-party PR; review mode gates off create-complete-doc, yet the retrospective's declared output is a COMPLETE.md section, so the worker had to manufacture 14-COMPLETE.md.
verify-outcomes has no review-mode outcome set.target_workflow_outcomes is the build-path array (ADR recorded, docs updated, worktree cleaned); the worker could not evaluate it for a review and had to reconstruct its own review-mode outcome list.
workflow_completed fired before complete's own steps ran. Terminal status appeared mid-activity; harmless but had to be caveated.
D. Discovery & environment
Discovery picked the wrong workflow first. discover-session scored midnight-system-review as the top match (catalog tags review / system-review) before reversing to work-package, costing a re-scan. Tag-based scoring mis-points PR-review requests.
Recursive submodule refresh aborted on an inaccessible sibling. start-work-package's whole-monorepo git submodule update --remote failed on shieldedtech/midnight-intents-swaps (no access); it worked around by refreshing only the target submodule and touching the freshness sentinel — a deviation from the "refresh all" instruction forced by an access problem.
Base-drift diff trap. With the branch behind main, a naive git diff main...HEAD folds in unrelated BABE / pallet_session / spec_version work; every analysis activity had to scope to the merge-base three-dot diff to isolate the true authored surface.
GitNexus multi-repo disambiguation. post-impl-review's first context call failed ("Multiple repositories indexed. Specify … repo"); it retried with an explicit repo and succeeded.
WebFetch 404 on GitHub URLs. codebase-comprehension's fetch of polkadot-sdk content returned 404 ("use an authenticated tool e.g. gh"); it re-fetched via gh.
Sandbox guardrail blocked a shell loop. discover-session's for d in …; done batch loop hit a variable-expansion confirmation guardrail and fell back to per-file reads.
E. Orchestration protocol
Workers misreport checkpoint auto-advance capability. For review-findings, a worker claimed defaultOption + autoAdvanceMs existed; present_checkpoint showed neither, so it required interactive resolution. Checkpoint auto-advanceability had to be verified server-side before every resolution.
Background dispatch vs the foreground-always rule. The harness ran every worker in the background despite the technique's CRITICAL foreground requirement; checkpoint delivery survived (via completion), but it is a latent tension between the workflow's assumption and the harness.
Conflicting commit rules.commit-after-activity (MUST commit after every activity) vs explicit-commit (never commit unless the user asks) vs shared-branch-push caution; the orchestrator had to navigate these by deferring commits, which then needed a late explicit decision.
Operator error (recorded for completeness). The orchestrator misapplied a PR-review-reply prose-style convention to the consolidated review summary and wrongly assumed the planning links were inaccessible, which drove items 12/13. The underlying enabler is the dead-link condition in Review-mode: consolidated review links are dead at post time, forcing template abandonment #270; explicit guidance that the template is mandatory and its links are first-class would prevent recurrence.
Filed by an AI agent on behalf of Mike Clay following a live review-mode run (midnightntwrk/midnight-node PR #1900). Companion to #270, which covers the template/links/commit-ordering items in depth.
Friction points captured from a full review-mode run of the
work-packageworkflow against midnightntwrk/midnight-node PR #1900 (a review of a third-party PR). Compiled from the transcripts of all 16 dispatched agents plus orchestration-level observations. Items already tracked in #270 are marked [#270].Biggest signal: the
work-packageworkflow is authored for the build/authoring path — payload sizes, variable seeding, thevalidatesteps, the close-out convention, and the declaredoutcomearray all assume you are creating a PR. Running it in review mode forced repeated reinterpretation and workarounds. That, plus consistently oversizedget_activitypayloads, accounts for most of the friction below.A. Workflow-server MCP payload & tool ergonomics
get_activitypayload routinely exceeds the tool-result token cap. The most pervasive friction — hit in start-work-package (97,287 chars), design-philosophy (81,287), codebase-comprehension, implementation-analysis, plan-prepare, and strategic-review (113,158). Every heavy activity's mandatory first call overflowed, spilled to a file, and forced chunked offset/limit reads before any step could run.get_resourcecannot load section-anchored / link-ref resources. lean-coding-audit receivedResource not foundforreview-taxonomy,the-ladder, andponytail-marker-convention(bare and#section, ~10 failed calls); it worked around this using the already-inlinedstep_techniques. These ids are inline-link refs, not standalone loadable resources — a documented mechanism that does not work for them.ToolSearchbootstrap tax. Each worker spends round-trips loading workflow-server tool schemas before real work begins.next_activitynever returned_meta.trace_token(orchestrator-observed). Trace accumulation stayed empty for the whole run, so the accumulate/resolve trace protocol (get_trace) was inert end to end.next_activityhas nousagefield (orchestrator-observed). The dispatch-activity technique says to relay per-subagent token usage via ausageparam, but the tool schema rejects it (additionalProperties: false), so usage can never be relayed.B. Session state & variable consistency
skip_optional_activities=trueset in design-philosophy read back asfalsein codebase-comprehension.worktree_createdmismatch. Dispatch prompt saidtrue, the authoritative session bag saidfalse, and the worktree physically existed — soremove-worktreewas skipped and a real worktree was left un-cleaned; complete/end-workflow had to detect and escalate.validation_passeddisagreement. Client bag persistedfalse(no local build ran) while the prompt assertedtrue(analytical pass); end-workflow had to decide which gate governs.inspect_sessionreturned stale values.is_monorepo=false,target_path="."from the bag vs the truetrue/midnight-node; the "source of truth" tool had to be overridden by prompt state.currentTechniquepointer metadata in the meta session (version-control::select-target-componentwhile the activity wasend-workflow).C. Review-mode vs build-mode workflow fit (dominant cross-cutting theme)
/blob/main/, artifacts commit to the working branch, and there is no publish-before-post step (commit-after-activityvs commit-before-post).validatestructurally demands localcargo. Its bound steps (preflight,run-suite, fix-revalidate loop) intrinsically compile; on a machine where that OOMs and is forbidden, the CI-evidence substitute has to be injected by prompt rather than encoded in the workflow.conduct-retrospective/COMPLETE.mdassume an authored, merging PR. "Once the PR merged, update status" and the COMPLETE.md output do not fit reviewing a third-party PR; review mode gates offcreate-complete-doc, yet the retrospective's declared output is a COMPLETE.md section, so the worker had to manufacture14-COMPLETE.md.verify-outcomeshas no review-mode outcome set.target_workflow_outcomesis the build-path array (ADR recorded, docs updated, worktree cleaned); the worker could not evaluate it for a review and had to reconstruct its own review-mode outcome list.review-summary-approvalcheckpoint offers no review-type choice.workflow_completedfired beforecomplete's own steps ran. Terminal status appeared mid-activity; harmless but had to be caveated.D. Discovery & environment
midnight-system-reviewas the top match (catalog tagsreview/system-review) before reversing towork-package, costing a re-scan. Tag-based scoring mis-points PR-review requests.git submodule update --remotefailed onshieldedtech/midnight-intents-swaps(no access); it worked around by refreshing only the target submodule and touching the freshness sentinel — a deviation from the "refresh all" instruction forced by an access problem.git diff main...HEADfolds in unrelated BABE /pallet_session/spec_versionwork; every analysis activity had to scope to the merge-base three-dot diff to isolate the true authored surface.contextcall failed ("Multiple repositories indexed. Specify … repo"); it retried with an explicitrepoand succeeded.gh.for d in …; donebatch loop hit a variable-expansion confirmation guardrail and fell back to per-file reads.E. Orchestration protocol
review-findings, a worker claimeddefaultOption+autoAdvanceMsexisted;present_checkpointshowed neither, so it required interactive resolution. Checkpoint auto-advanceability had to be verified server-side before every resolution.foreground-alwaysrule. The harness ran every worker in the background despite the technique's CRITICAL foreground requirement; checkpoint delivery survived (via completion), but it is a latent tension between the workflow's assumption and the harness.commit-after-activity(MUST commit after every activity) vsexplicit-commit(never commit unless the user asks) vs shared-branch-push caution; the orchestrator had to navigate these by deferring commits, which then needed a late explicit decision.Filed by an AI agent on behalf of Mike Clay following a live review-mode run (midnightntwrk/midnight-node PR #1900). Companion to #270, which covers the template/links/commit-ordering items in depth.