Skip to content

fix: Clarify devforge gates, relay semantics, and agent write access#12

Open
jirispilka wants to merge 5 commits into
mainfrom
claude/deduplicate-sync-task-paths-duv3zq
Open

fix: Clarify devforge gates, relay semantics, and agent write access#12
jirispilka wants to merge 5 commits into
mainfrom
claude/deduplicate-sync-task-paths-duv3zq

Conversation

@jirispilka

@jirispilka jirispilka commented Jul 10, 2026

Copy link
Copy Markdown
Owner

Summary

Refines the devforge skill documentation and agent configurations to clarify gate-handling patterns, artifact relay mechanics when agents lack write access, and explicit instructions for agents to write to .devforge/ paths when dispatched by the orchestrator.

Key changes

  • Gate and interaction flow: Expanded the "gates are chat-first" principle to specify the channel order (plan-mode dialog for design gate when enabled, plain chat otherwise) and clarified that interactive question widgets are only for genuine multiple-choice design questions—never for gate approve/revise decisions. Added guidance to fall back to plain chat after a single widget stream failure.

  • Artifact relay semantics: Documented that when a dispatched agent has no write access, the orchestrator relays the artifact verbatim to the target path unchanged—a mechanical relay, not authorship—and that this does not violate the no-judgment-files rule. Added a note to record the relay in _progress.md.

  • Verify gate constraint handling: Clarified that when the requested mechanism is infeasible (e.g., API/SDK constraint) but the goal is valid, the verify agent must present the constraint and viable options with a recommendation, then wait for the human's decision rather than silently designing around it. The human's pick is recorded verbatim in _design_feedback.md for the architect to treat as settled.

  • Reviewer findings scope: Added two always-on checks, as a standalone paragraph ahead of the stage-dispatch table (not inside the reviewer row, to avoid colliding with feat: Oracle baselines + blindness refined to judgments-not-ground-truth #9's edits to that row): committed code must not reference run-internal artifacts (.devforge/, plan files, session paths), and cruft preserved by a faithful migration is still a finding—"byte-identical" instructions cover assertions/behavior, not carried-over dead code.

  • Agent tool access: Added Write tool to both devforge-code-explorer and devforge-code-architect agents, and added explicit instructions for both to write their artifacts to the exact .devforge/ path named in the prompt when dispatched by devforge.

Origin

Retrospective of a two-run session on apify/apify-mcp-server (#1061 → PR apify/apify-mcp-server#1073, #684 → PR apify/apify-mcp-server#1080). Each change maps to an observed failure: reviewers missing a committed .devforge reference and preserved cruft; three question-widget stream failures (one swallowed a create-PR confirmation); every explorer/architect dispatch ending in an undocumented relay; and the SDK-constraint discovery on #684 being handled in a stop the skill never named.

Merge-order note

Independent of #9/#10/#11 (based on main). Previously overlapped #9 on the reviewer stage-table row (this PR's format-column addition vs. #9's reads-column addition); resolved by moving this PR's addition into its own paragraph ahead of the table, so the two no longer touch the same line and merge order no longer matters.

https://claude.ai/code/session_01LUZNJQKNCn7ntZCbYsFer5

claude added 4 commits July 10, 2026 20:21
Four reviewer dispatches missed a committed .devforge reference and two
pieces of verbatim-carried cruft on apify/apify-mcp-server#1073 — the
design's 'byte-identical, only plumbing moves' framing rewarded fidelity
over judgment. Two always-on checks in the reviewer format close that.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LUZNJQKNCn7ntZCbYsFer5
…questions only

Three interactive-widget stream failures in one session, one swallowing
a create-PR confirmation. Hard rules prevented false approval; this
prevents the wasted round-trips.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LUZNJQKNCn7ntZCbYsFer5
…relay fallback

Every explorer/architect dispatch ended with 'no Write tool — orchestrator
please persist', an undocumented rule-bend. The agents get Write; engines
that still can't write get an explicit verbatim-relay rule.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LUZNJQKNCn7ntZCbYsFer5
…goal

Verify caught that apify/apify-mcp-server#684's literal fix cannot ship
(SDK schema validation) — the highest-value moment of the run, handled in
an improvised stop the skill never named. Without it a future orchestrator
may design around the constraint without asking, shipping a mechanism the
issue author never chose.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LUZNJQKNCn7ntZCbYsFer5
@jirispilka jirispilka marked this pull request as ready for review July 10, 2026 20:26
@jirispilka jirispilka changed the title Clarify devforge gates, relay semantics, and agent write access fix: Clarify devforge gates, relay semantics, and agent write access Jul 10, 2026
@jirispilka jirispilka self-assigned this Jul 10, 2026
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