Skip to content

Fan-out deviations d1-d3: colleague dropped from implementer/reviewer roles; t72/t73 reduced scope; strict PR ordering #4

Description

@OriNachum

Three departures from the gate-2 implementation split plan approved for the
guarded-local-operations-plane fan-out. All three are recorded in devague's
append-only deviation ledger as d1d3 (devague deviate --list), currently
proposed and awaiting operator --confirm. This issue is the human-readable
record.

d1 — colleague dropped from the implementer and reviewer roles

Classification: needs-follow-up

The approved split assigned t73, t75, t81, t82 and t83 to
ask-colleague write --apply, and put ask-colleague review on every task
diff before merge.

Two consecutive colleague drives on well-scoped read-only tasks both failed
identically:

Flight Verb Status Steps
923ceb0bd061 explore — audit the release pipeline incomplete 0
b507f26c5c80 review — second opinion on the t71 diff incomplete 0

In both, the drive ended without calling finish, having completed zero
steps
. The local vllm-openai / Qwen3.6-27B-Text-NVFP4-MTP backend emitted
a tool call as literal assistant text rather than a structured call:

923ceb0bd061:  <read_file path=".github/workflows/publish.yml">
b507f26c5c80:  <tool_call>
               run_command:

Worth flagging for whoever chases the root cause: colleague doctor --probe
reports tool_calling: tool-calling round-trip OK ... (server emitted a tool_call). The probe passes while the drive path fails, so the probe is not
representative
and cannot be used as a readiness check for ask-colleague.

Decision. A backend that completes zero steps on a read-only audit cannot be
trusted to implement a CI gate or to review a security-relevant diff. Claude
subagents implement; independent review comes from SonarCloud and Qodo on each
PR, both of which are posting real results (PR #3: Sonar Quality Gate OK with 0
issues and 0 hotspots; Qodo 0 bugs / 0 rule violations / 0 requirement gaps).

Both runs were graded 1/5 via ask-colleague feedback so the ROI loop
carries the signal.

Follow-up: the root cause is colleague-side, not shell-cli-side. It should
be filed upstream on agentculture/colleague separately — this issue only
records the shell-cli-side consequence.

d2 — t72 and t73 start from partially-complete work

Classification: acceptable

The plan was authored after the /scope/think/challenge
/spec-to-plan arc had already produced two of its own deliverables as spec
evidence: the CLAUDE.md operations-plane rewrite (t72) and the pinned AST
inventory scanner scripts/colleague_inventory.py (t73).

Treating those tasks as greenfield would mean deleting and re-authoring
committed-quality work to satisfy the plan's narrative.

Decision. Each task is reduced to its remaining delta:

  • t72 — post the six-part Milestone 0/1 plan on Build brief: shell-cli — the guarded local operations plane for AI agents #1, align
    AGENTS.colleague.md and README.md, document the WebGlass peer seam, and
    commit the devague artifact trail. The CLAUDE.md rewrite rides along as
    already-authored.
  • t73 — wire scripts/colleague_inventory.py --check into tests.yml as
    a known-debt gate publishing debt_remaining. The scanner itself is already
    written and pinned to colleague SHA 28fee29.

d3 — PR ordering forced to strict sequence

Classification: acceptable

publish.yml triggers on the pyproject.toml path, and the repo rule is that
every PR bumps the version. Therefore every merge publishes to PyPI, which
is append-only.

The plan's wave 1 would have run t72 and t73 in parallel. But any merge
landing before t71 would publish an unhardened release — one gated on pytest
alone, with lint, bandit, markdownlint and the teken rubric gate all outside
the dependency chain.

Decision. t71 merges strictly first and alone (PR #3), then t72, then
t73. This narrows realised parallelism at the start of the run, but it is
required by t71's own acceptance criterion that it merge first — and the
alternative is a permanent bad artifact on an append-only index.

Not a deviation, but worth recording

devex pr open --body-file - raises an unhandled FileNotFoundError traceback
instead of reading stdin (devex/commands/pr/scripts/open_.py:22). The cicd
SKILL.md documents "body via --body-file PATH or stdin". This also violates
the AgentCulture no-tracebacks convention. Worked around by writing the body to
a temp file; belongs upstream on agentculture/devex.

  • shell-cli (Claude)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions