daily-fix: gcp.py loud marker on boot-disk reuse + size mism
Highlight text on any card (body, plan, or an event) to anchor a comment, or leave a whole-task comment here. Mention @claude to summon a reply.
No comments yet.
Overview / Motivation
Auto-filed by the /daily 2026-07-22 parked-candidate routing pass (Step C) from a recursion-guard-parked FORMAL candidate block on task #1602 (source: plan v3 §9 delegated-judgment assessment).
Goal
Make the GCP dispatch layer record loudly when a GCE create attaches/reuses a pre-existing boot disk (age + realized size on the epm:backend-selected marker extra) and WARN when the realized disk size differs from the requested --boot-disk-gb.
Workflow gap
- Bug observed: a GCE create can silently reuse a surviving boot disk from a prior attempt (issue #779: a 20-day-old 300 GB disk was attached to a fresh create and the dispatch's
--boot-disk-gb 200was silently ignored), leaving no marker-visible record that reuse happened or that the realized disk differs from the requested size. - Why it is a workflow gap: the reuse itself is by-design (the idempotent repo-reuse else-branch exists for it), but the SILENCE is a dispatch-layer observability gap — the #1602 crash class was undiagnosable from markers alone and the size-flag mismatch is invisible until something fills the disk.
- Confidence (emitter): medium
- verified-at-filing:
grep -n 'boot_disk_reused\|boot_disk_size_mismatch\|boot disk' src/explore_persona_space/backends/gcp.py→ 0 hits for the proposed marker fields (boot_disk_reused/boot_disk_size_mismatch), 6 hits for prose mentions of "boot disk" none of which implement reuse detection (lines 408/410/1222/1754/2744/2784 — comments about sizing and DELETE-on-shutdown), 2026-07-23 UTC. Absence-of-feature claim: 0-hit in-target result is the evidence. Landed-fix history check:git log --oneline --since='7 days ago' -- src/explore_persona_space/backends/gcp.py→ 5 commits (493693503f #1605 crash-persist sweep, 4b097d46bc #1602 branch-switch-safe repo-reuse, d7b99c2fbd #1574, 5f3dcde7ee #1547, f0fc4fb4ce #1517) — the landed #1602 fix covered the startup-script branch-switch, NOT this observability piece.
Proposed change (candidate diff sketch — refine in planning)
+ after instance create resolves: describe the boot disk (creationTimestamp, sizeGb)
+ extra["boot_disk_reused"] = true/false; extra["boot_disk_age_days"]; extra["boot_disk_size_gb"]
+ if requested_boot_disk_gb and realized != requested: loud stderr WARN + extra["boot_disk_size_mismatch"] = true
Scope / surfaces
- Primary target:
src/explore_persona_space/backends/gcp.py(in-scope: the unified backend router package is workflow surface per workflow-fix-on-bug.md) - Grep the workflow surface for related marker-extra composition sites before editing; list them in the plan.
Constraints / invariants
- Workflow-surface only — never experiment code,
configs/, ortasks/. tests/test_gcp_backend.pyand the router tests pass; ruff on touched files passes.- This session runs under a
workflow_fix_target:Provenance line — it MUST NOT auto-route any of its own subagents' workflow-fix candidates (recursion guard).
Provenance
- workflow_fix_target: src/explore_persona_space/backends/gcp.py
- fingerprint: daeaa1c91693 (tag-authoritative; supersedes body-carried fingerprint: ccd20cefddf0)
target_file: src/explore_persona_space/backends/gcp.py bug_observed: a GCE create can silently reuse a surviving boot disk from a prior attempt (issue 779: a 20-day-old 300 GB disk was attached to a fresh create and the dispatch's --boot-disk-gb 200 was silently ignored), leaving no marker-visible record that reuse happened or that the realized disk differs from the requested size why_workflow_gap: the reuse itself is by-design (the idempotent repo-reuse else-branch exists for it), but the SILENCE is a dispatch-layer observability gap — the #1602 crash class was undiagnosable from markers alone and the size-flag mismatch is invisible until something fills the disk proposed_change: in the gcp.py launch/create path, detect when a create attaches or reuses a pre-existing boot disk and record it loudly on the epm:backend-selected marker extra (disk age + realized size), plus a stderr WARN when the realized disk size differs from the requested --boot-disk-gb diff_sketch: |
- after instance create resolves: describe the boot disk (creationTimestamp, sizeGb)
- extra["boot_disk_reused"] = true/false; extra["boot_disk_age_days"]; extra["boot_disk_size_gb"]
- if requested_boot_disk_gb and realized != requested: loud stderr WARN + extra["boot_disk_size_mismatch"] = true confidence: medium related_task: #1602