Skip to content

prompts: model-family prompts contradict each other on subagent spawning — and DeepSeek matches no family at all #1888

Closed

Description

@dezren39

Finding

Family prompts disagree about delegation itself, and selection is per-model — so the same route behaves differently depending on which leaf serves a step:

  • gpt.txt / gpt-astra.txt: "Do not spawn subagents unless the user or applicable AGENTS.md/skill instructions explicitly ask for subagents, delegation, or parallel agent work."
  • meta.txt: proactively encourages the subagent tool.
  • kimi.txt: mentions it neutrally.
  • DeepSeek matches no family in packages/core/src/plugin/optimize.ts selection (gpt/claude/kimi/muse/trinity) and gets no delegation guidance at all — and DeepSeek is the fleet's documented workhorse head.

Workshop evidence

Evidence: the 2026-11-06 subsession workshop test, filed as #1881 (production server, 8 test sessions, plan pools only; every behavior claim production-measured and re-verified against the session store + route_attempt).

#1881 Q3 + Q7: a single workhorse session was served step-by-step by different leaves under different policies (openai.main/gpt-6-luna#xhigh for tool steps, vibe-direct/mistral-small-latest#high for the closing step, all under route_id=workhorse). Delegation behavior currently varies by leaf luck, not by design.

Desired

  • One consistent subsession policy across all family prompts (aligned with the base-prompt delegation block, filed separately) — no leaf-level veto on spawning when the task/AGENTS.md calls for delegation.
  • An explicit prompt entry (or a defined fallback) for DeepSeek-family models, and a defined default for any future unmatched model: unmatched must mean "gets the base policy", never "gets nothing".

Acceptance sketch

  • Every family file carries the same delegation stance; optimize.ts selection has a DeepSeek entry or a documented fallback.
  • A workhorse session's delegation behavior no longer depends on which leaf serves a step.

Acceptance criteria

  • All model-family prompts give consistent delegation guidance, or the differences are deliberate and documented in one place.
  • DeepSeek — the fleet's default workhorse — resolves to a family/prompt that includes delegation guidance (today it matches no family in packages/core/src/plugin/optimize.ts selection and gets none).
  • The gpt family's 'do not spawn subagents unless explicitly asked' no longer silently contradicts the meta family's proactive encouragement for the same route.

Activity

  1. added
    kind/debtTechnical debt worth paying down deliberately
    priority/highImportant and time-sensitive
    effort/mMedium: expected under 1 day of work
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    on Nov 6, 2026
  2. dezren39 commented on Nov 6, 2026

    @dezren39
    Author

    Intake review

    Part of the workshop cluster from opencode issue #1881 (full prompt audit, Q7). Related: issue #1887 (base prompt is silent on the machinery — the two overlap; coordinate so the fix lands in one layer, not both divergently). Priority high because the affected default head (DeepSeek) is the fleet workhorse. Suggested approach: decide the single delegation stance first, then align family prompts and add the DeepSeek mapping.

    — fleet monitor intake (Duty 2), 2026-11-06 run. Acceptance criteria appended to the issue body; labels normalized.

  3. dezren39 commented on Nov 7, 2026

    @dezren39
    Author

    Feeder triage — gap confirmed on current main

    Agent: issue sweep (issue-sweep-rotating, Make feeder)
    Checked: 2026-11-07T01:36Z, fresh gh calls verified twice. Repo main 2d11e0f649436d6c4d20a64ce13fd7e0501bdd96 (verified x3); this issue OPEN with no queue/*, work/*, user/* or safety labels — its only prior comment is the fleet-monitor intake note (2026-11-06T20:26Z). No live queue task indicated; queue backend is in the PostgREST outage (developing-today/code#6619), so dedupe was on gh labels/comments.

    What I checked (reads only, gh api raw — no builds/tests), all verbatim on current main:

    • packages/core/src/plugin/system-prompt/gpt.txt:31 — "Do not spawn subagents unless the user or applicable AGENTS.md/skill instructions explicitly ask for subagents, delegation, or parallel agent work."
    • packages/core/src/plugin/system-prompt/meta.txt:36-39 — "You should proactively use the subagent tool to launch specialized subagents…" (the opposite stance).
    • packages/core/src/plugin/system-prompt/kimi.txt:11 — neutral mention only.
    • packages/core/src/plugin/optimize.ts:16-62 — prompt selection matches only gpt, claude, kimi, trinity, and muse (meta). No DeepSeek match and no fallback: an unmatched model gets no family prompt and no delegation guidance at all — and DeepSeek is the fleet's documented workhorse head.

    Done looks like: every family file carries the same delegation stance, aligned with the #1887 base-prompt block (one coordinated change, per the intake note); optimize.ts selection has a DeepSeek entry or a documented fallback so an unmatched model gets the base policy, never nothing; prompt tests pin the stance per family and the unmatched fallback. A workhorse session's delegation behavior must not vary by serving leaf.

  4. dezren39 commented on Nov 7, 2026

    @dezren39
    Author

    🤖 Agent note · triage packet prepared, enqueue outboxed

    • Agent: issue sweep (issue-sweep-rotating, Make feeder)
    • Found via: feeder rotation (prev rotating repo dezren39/darwin-nix → developing-today-forks/opencode)
    • Task: Enqueue a repo-task/v1 triage packet (kind triage, priority 60, dedupe repo-health:v1:triage:developing-today/opencode:issue:1888) into queue repo-health-opencode-pilot. Packet: hidden_files/packet-opencode-1888.json.
    • Status: Queue backend is in the PostgREST outage (infra: repo-queue PostgREST timeout: global failures lane-visible again — recurrence after #6450 closed (2026-11-06 21:15-21:31Z) developing-today/code#6619; health timed out 45s this run), so the enqueue is owed via action-outbox OB-2026-11-06-029 — the outbox processor enqueues it idempotently on this dedupe key. The queue/queued label is applied with this note.
    • Expectation: A queue worker claims the resulting triage task and triages this issue per the packet's acceptance criteria.
  5. added
    task/triageQueue packet kind: verify, reproduce, and route this item
    on Nov 7, 2026
  6. dezren39 commented on Nov 7, 2026

    @dezren39
    Author

    Picked up by repo-worker-opencode-a — working this now. (Fleet queue fallback mode: the queue backend is down, so this issue's comments carry the claim. The claim stays live while repo-worker-opencode-a posts progress markers; after 30 minutes of silence any other worker may pick this up.)

  7. added
    queue/claimedA queue worker has claimed the task for this item
    work/assignedAn agent holds this item via the queue (claimed task)
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 7, 2026
  8. dezren39 commented on Nov 7, 2026

    @dezren39
    Author

    Progress from repo-worker-opencode-a: triaged-confirmed at main 10f3058: gpt.txt:31 + gpt-astra.txt:45 veto vs meta.txt:36-39 proactive encouragement vs kimi.txt:11 neutral; optimize.ts has no deepseek match and no unmatched fallback; routing task/small-fix

  9. dezren39 commented on Nov 7, 2026

    @dezren39
    Author

    Triage — CONFIRMED (lane opencode-a, fallback mode)

    Verified fresh against origin/main @ 10f305865fe8 (laptop primary ~/git/opencode, clean, on main); family prompts live in packages/core/src/plugin/system-prompt/:

    • The veto: gpt.txt:31 and gpt-astra.txt:45 carry the filed sentence verbatim: "Do not spawn subagents unless the user or applicable AGENTS.md/skill instructions explicitly ask for subagents, delegation, or parallel agent work."
    • The contradiction: meta.txt:36–39 proactively encourages the opposite — "You should proactively use the subagent tool…", "Use the subagent tool to minimize context token usage… This is CRITICAL…". kimi.txt:11 is neutral ("If the subagent tool is available, you can use it to delegate a focused subtask…"). Three different delegation policies depending on which leaf serves a step, as filed.
    • The gap: packages/core/src/plugin/optimize.ts selection covers gpt / claude / kimi / trinity / muse (→ meta.txt); a grep for deepseek in that file returns nothing, and every selector returns undefined for an unmatched model — there is no DeepSeek entry and no defined fallback, so an unmatched model gets no family delegation guidance at all. The base prompt does not rescue it either (docs/prompts: base system prompt is silent on the entire subsession machinery #1887, confirmed this shift: system.txt has zero subsession content).

    Routing: task/triage → task/small-fix, back to queue/queued with status/needs-triage. Sequencing: land with or after #1887 — the base-prompt delegation block is the canonical stance the family files should align to, and the unmatched-model fallback should resolve to that base policy ("unmatched = base policy, never nothing"). No Drew decision needed; the desired end state is stated in the issue.

    agent-note:v1 · agent: repo-queue-opencode-worker-a · lane: opencode-a · mode: fallback (queue backend down, code#6619)

  10. added
    task/small-fixQueue packet kind: bounded fix with reproduction and targeted tests
    and removed
    task/triageQueue packet kind: verify, reproduce, and route this item
    on Nov 7, 2026
  11. dezren39 commented on Nov 7, 2026

    @dezren39
    Author

    Released by repo-worker-opencode-a (outcome: free). TRIAGED CONFIRMED at origin/main 10f3058: gpt.txt:31/gpt-astra.txt:45 spawn veto vs meta.txt:36-39 proactive encouragement vs kimi.txt:11 neutral; optimize.ts selection has no deepseek entry and no unmatched fallback. Routed task/small-fix + status/needs-triage + queue/queued; triage note comment 6702695811 (align family files to the #1887 base block; unmatched = base policy). Implementation remains.

  12. added
    queue/queuedHas a queued task in the Supabase agent queue
    and removed
    queue/claimedA queue worker has claimed the task for this item
    work/assignedAn agent holds this item via the queue (claimed task)
    on Nov 7, 2026
  13. dezren39 commented on Nov 7, 2026

    @dezren39
    Author

    🤖 Agent note · queued

    • Agent: action-outbox-processor job
    • Session / ID: cron action-outbox-processor run 2026-11-07 06:10 UTC (OB-2026-11-06-029)
    • Found via: queue enqueue owed from the issue-sweep-rotating run 2026-11-06 19:36 CST, executed this run
    • Task: Queue task 11024 (repo-health-opencode-pilot, triage, dedupe_key repo-health:v1:triage:developing-today/opencode:issue:1888) is queued for this issue. The recorded packet's enqueue returned a validation error this run (priority 60 is not on the current design scale); task 11024 already existed on the queue (created 2026-11-07T05:11Z by a concurrent lane) and was verified queued by two fresh queue list readbacks. Opencode queue signal refreshed to generation 1610.
  14. dezren39 commented on Nov 8, 2026

    @dezren39
    Author

    🤖 Agent note · picked up

  15. dezren39 commented on Nov 8, 2026

    @dezren39
    Author

    🤖 Agent note · done

  16. developing-today commented on Nov 9, 2026

    @developing-today

    🤖 Agent note · completed — queue task 14138

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    effort/mMedium: expected under 1 day of workkind/debtTechnical debt worth paying down deliberatelymeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/highImportant and time-sensitivetask/small-fixQueue packet kind: bounded fix with reproduction and targeted tests

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions