atlas-scatter
Phase L sub-mode (Scatter-Gather Locate) — TRANCE-gated parallel fan-out of read-only Locate probes across topologically-disjoint module clusters, each in a clean-context subagent, merged back into findings.md via a deterministic dedup contract. Never default; serial Locate is the standard path. Use ONLY when map.md surface is large (>5 modules OR >25 files) AND ≥2 disjoint DECISION_TARGET sub-questions exist. Trigger phrases — "audit across all modules", "trace these N independent flows", "scout this large surface in parallel". Do NOT load for a single sub-question, tightly-coupled sub-questions, or a tight budget.
- License 许可
- Apache-2.0
- 所属仓库
- Rynaro/magicite
- 最近更新
- 2026-10-14
- Stars
- ★ 2
- Forks
- 0
01 前言 Front Matter
- name
- atlas-scatter
- metadata
- { "phase": "L", "methodology": "ATLAS" }
- description
- Phase L sub-mode (Scatter-Gather Locate) — TRANCE-gated parallel fan-out of read-only Locate probes across topologically-disjoint module clusters, each in a clean-context subagent, merged back into findings.md via a deterministic dedup contract. Never default; serial Locate is the standard path. Use ONLY when map.md surface is large (>5 modules OR >25 files) AND ≥2 disjoint DECISION_TARGET sub-questions exist. Trigger phrases — "audit across all modules", "trace these N independent flows", "scout this large surface in parallel". Do NOT load for a single sub-question, tightly-coupled sub-questions, or a tight budget.
- allowed-tools
- search_symbol graph_query search_text view_file test_dry_run memex_read
03 SKILL.md 正文
SKILL: Scatter-Gather Locate (Phase L sub-mode)
When to use
Load when: map.md is complete AND the activation trigger below fires.
This is the operationalized G1 TRANCE form of the diffuse scatter primitives
already in skills/locate/SKILL.md (Operator pattern) and PERSONA.md P0 rule 7.
Unload when: every sub-question has ≥1 merged finding at confidence ≥ M
or a GAP, and the merged findings.md has entered the Phase A fold.
This mode does not add capability — it adds parallelism. It is still read-only (I-1). Scatter never grants a write tool, never resets the budget, and never escapes a refusal gate. Branch budgets sum to ≤ the parent budget.
Activation trigger (both-flags rule — TRANCE-gated)
Scatter-Gather is GATED, never default. Standard-tier Locate stays serial.
Both flags MUST hold (cortex C5 + C6). If either is false, the mode is inert
and you run the serial probe ladder in skills/locate/SKILL.md.
| Flag | Source | Threshold |
|---|---|---|
| Surface size (C5) | map.md MAP-MODULES / file count |
> 5 modules OR > 25 files in scope |
| Disjoint sub-questions (C6) | mission.md DECISION_TARGET decomposition |
≥ 2 topologically-disjoint sub-questions (different modules / concerns) |
Either flag alone → stay standard tier (serial Locate). Both flags → escalate to the Scatter-Gather sub-mode.
When NOT to scatter (carry-through from locate.md)
- Only one sub-question exists.
- Sub-questions are tightly coupled (one's answer feeds another's probe).
- Budget is already tight — coordination overhead outweighs the parallel win.
In any of these, do not scatter. Run serial Locate.
Fan-out plan (bounded, deterministic partition)
- Derive the partition deterministically. Run a single parent-side
graph_query("callgraph_slice: <scope>")(or, if unavailable, partition byMAP-MODULEScentrality clusters frommap.md). Do not LLM-guess the clustering — the partition is a structural fact, not an inference (seeskills/locate/SKILL.mdTier-2 graph-first decomposition). - One sub-mission per disjoint cluster, mapped 1:1 to a disjoint sub-question where possible.
- Hard cap: 5 branches (cortex C1; orchestrator-worker sweet spot ~5). If the partition yields > 5 clusters, merge the lowest-centrality clusters until N ≤ 5.
- Per-branch budget =
parent_remaining / N. Budgets are partitioned, not multiplied. The sum of branch budgets MUST NOT exceed the parent's remaining budget.
Diversity is scope-diversity, not redundancy. Branches probe different modules. Do not spawn N identical probes of the same module — quality of the partition dominates redundant diversity.
Sub-mission spec (Operator pattern, clean context)
Each branch is an ephemeral clean-context subagent seeded with ONLY its
scope-slice + one sub-question + its budget. The clean context is the point:
it prevents trajectory self-conditioning (no branch sees another branch's
path). Reuses the locate.md sub_mission YAML, tightened:
sub_mission:
parent_mission_id: <MISSION-ID>
branch_id: <1..N>
question: <one disjoint sub-question>
scope: <path globs for this cluster only>
budget:
max_tool_calls: <parent_remaining / N>
max_tokens_input: <parent_remaining / N>
map_excerpt: <ONLY the MAP-MODULES + MAP-GRAPH slice for this cluster>
Each branch runs the Tier 1–5 probe ladder (skills/locate/SKILL.md) within its
scope and returns exactly one structured object — no transcript (I-4):
return:
branch_id: <1..N>
findings: [FINDING-XXX, ...] # branch-local IDs
gaps: [GAP-XXX, ...]
ruled_out: [<negative result notes>, ...]
telemetry: {tokens_used, tool_calls}
# NO transcript. NO raw tool outputs. Excerpts go to Memex.
The parent never ingests branch transcripts. Branch working state is destroyed on return.
Merge + dedup contract (two-stage bounded gather)
Stage 1 — Gather & dedup (parent-side, deterministic)
- Renumber to global IDs. Branch-local
FINDING-XXX/GAP-XXXids are renumbered to a global namespace to avoid cross-branch collision. - Dedup on mechanical fields first. Merge two findings into one when they
match on (path, overlapping line-range); use claim-equivalence only
as a tiebreak. The merged finding keeps the highest confidence tier and
unions the evidence anchors and
ruled_outnotes. - Contradictions are NOT silently merged. When two branches make
conflicting claims about the same anchor, emit a single finding marked
[DISPUTED](D7) carrying both claims, and drop it to confidence L pending a follow-up probe. Do not pick a winner mechanically.
Stage 2 — Fold (reuse existing machinery)
The merged findings.md flows unchanged into the existing Phase A
clean-context fold (skills/abstract/SKILL.md). No new aggregator is built —
the AgentFold subagent already aggregates; scatter merely feeds it a merged
list instead of a serial one.
Stop condition (explicit — D5)
Scatter completes when every sub-question has ≥1 merged finding at
confidence ≥ M OR a GAP. Scatter does not re-spawn: max recursion
remains 1 (PERSONA.md P0 rule 9). A branch that returns only L/empty triple
records a GAP; the parent does not re-scatter that cluster.
Telemetry
Record at the gather edge:
scatter | branches: N | fan_out_ratio: <sum(branch_tokens)/serial_estimate>
| dedup_count: <merged-away> | disputed: <count> | tool_calls: <sum>
fan_out_ratio and dedup_count are the feedback signals: a low dedup count
on overlapping scopes means the partition was too coarse; a high one means the
clusters were not actually disjoint (revisit the trigger).
Exit gate
- [ ] Both activation flags verified against
map.md+mission.mdbefore scattering (else serial Locate). - [ ] Partition derived from a deterministic graph/centrality query, ≤ 5 branches.
- [ ] Each branch ran clean-context, returned one object, no transcript (I-4).
- [ ] Per-branch budgets sum to ≤ parent remaining budget.
- [ ] Merged
findings.md: global ids, dedup on path/line,[DISPUTED]on contradiction (never silent-merge). - [ ] Every sub-question has a finding ≥ M or a
GAP; no re-scatter. - [ ] Merged findings entered the Phase A fold; telemetry recorded.
04 同仓库更多 Skills
wine-dxvk-cache-clear
Clear a stale DXVK shader cache that is causing graphical corruption in a Wine or Proton game. Use when: a game shows corrupted textures or shader flicker that started after a driver or DXVK version change.
steam-download-region-fix
Fix a Steam client stuck at very low download speed by changing its download region. Use when: Steam downloads are far below the local internet speed for every game, not just one.
proton-battleye-eac-toggle
Toggle BattlEye or Easy Anti-Cheat runtime support for a Steam Proton game. Use when: a multiplayer game refuses to launch with an anti-cheat error under Proton.
vivi-verify-incoming
Load when reading any upstream artefact handed off to Vivi that carries a sibling .envelope.json. BLOCKING per ECL §6.2.2: the orchestrator MUST have verified the envelope's SHA-256 (eidolons verify-envelope --block / eidolons run --verify) and recorded a verify_pass before dispatch. If no verify_pass exists for the message_id, or a verify_fail is present, REFUSE to process the payload and hand back to the orchestrator. Symmetric receiver gate — every Eidolon enforces it identically.
vivi-parallel-tracks
Load ONLY under TRANCE authorization when the Plan phase yields N independent, non-overlapping implementation tracks (disjoint file sets). Operationalizes the TRANCE G4 form — parallel multi-track implementation in mandatory git-worktree isolation, max 5 clean-context tracks, a per-track verifier cascade, a non-fungible per-track ≤3 reflection budget, explicit stop conditions, and a single-threaded merge/aggregation step. Absent TRANCE gating, Vivi runs exactly as today: single-track A→P→I→V→Δ/R.
vivi-methodology
Full Vivi cycle reference — A(nalyze) → P(lan) → I(mplement) → V(erify) → Δ(Delta)/R(eflect). Use when the task is a non-trivial feature implementation in a brownfield codebase and you need the complete methodology reference: complexity routing, evidence-grounded planning rules, test-anchoring requirements, and failure-escalation thresholds.