Tier C of wiki-core v2 (concept wiki-core-relations): when the main session context is already long/rotted,
DO NOT load more details into the main session — open ONE room (subagent), load fully, then return
a compressed conclusion. The main session keeps the map (Tier A); details live in a use-and-discard room.
WHAT
Purpose and context
- Purpose: answer questions needing deep details from many wiki pages WITHOUT bloating the main session context — details are read in a use-and-discard room (subagent); the main session receives only a compressed conclusion with sources.
- Trigger (when to use):
- The main session is already long (many rounds of summarizing) and deep details from many wiki pages are needed.
- The question requires reading >3 full wiki pages + their relation neighbors.
- User says "mở room", "context rot", "nạp thêm chi tiết wiki", "đào sâu wiki",
/wiki-room.
- Non-goals:
- DO NOT use when only 1-2 specific pages are needed — reading directly is cheaper than a room (speed criterion).
- Not long-term memory — retained knowledge must be distilled into the wiki via
/ingestor page updates. - Do not modify the wiki; the room only reads and synthesizes.
Mental model
câu hỏi → brief Tier A (list id + trang stale + episode mồi) → budget B → MỘT room (subagent, depth 1) đọc Tier B + hàng xóm 1 bước → kết luận nén ≤500 từ có nguồn → phiên chính hành động.
Input and output contract
| Field | Required? | Meaning | |
|---|---|---|---|
| In | question | yes | what needs to be explored deeply in the wiki |
| In | budget B | no (default 12) | cap on the number of Tier B pages, including 1-step relation neighbors |
| In | list of page ids | self-assembled at W01 | from the question + wiki/index.md + wiki/stale.json + episode retrieval |
| Out | compressed conclusion | yes | ≤500 words, every claim accompanied by its source page; stale pages flagged; budget reached → write "budget reached, not yet read: "; missing data → "missing: <what>" |
"Done" = the main session receives the compressed conclusion and acts on it, without pasting full page text.
Rules and capabilities
Three hard rules (copy VERBATIM into the room prompt):
- RULE-01 (MUST): Depth cap = 1 (G3): the room MUST NOT open a child room/subagent for any reason. Missing data → write "missing: <what>" in the conclusion, and let the main session decide.
- RULE-02 (MUST): Hard budget: read up to B pages. Hit the ceiling → STOP reading, synthesize from what is available (circuit breaker — return a truncated result with the note "budget reached, not yet read: ").
- RULE-03 (MUST): Sourced compressed conclusion: every claim accompanied by its source page (
concepts/x.md); a source page that is stale (per the brief) must be annotated with the flag "(stale — re-verify before trusting)".
Anti-patterns (auxiliary rules for the main session):
-
RULE-04 (MUST NOT): Open multiple rooms in parallel for one question (loses control of the total budget) — one question, one room.
-
RULE-05 (MUST NOT): Use a room as long-term memory — a room is use-once-discard; knowledge that persists must be distilled into the wiki via
/ingestor a page update, not left in the room transcript. -
RULE-06 (SHOULD NOT): Call a room when the main session is still short — reading directly is always faster.
-
Capabilities: read the wiki (index, stale list, frontmatter
relations:); episodic semantic retrieval; spawn exactly one read-only subagent. No wiki writes.
Failure boundaries
- Question needs only 1-2 pages → do not open a room, read directly (valid refusal).
- Room hits budget B → partial: truncated conclusion + list of unread pages.
- Room lacks data → write "missing: <what>", the main session decides (do not open a child room).
- Source page stale → still use it but flag for re-verification.
HOW
Main workflow
| Step | Type | Inputs | Action | Outputs/exit | Failure/next |
|---|---|---|---|---|---|
| W01 | judgment | question, wiki/index.md, wiki/stale.json, mem-rank.py |
Draft the Tier A brief (main session, cheap) | list of page ids + stale flags + seed episodes | ≤2 pages → read directly, stop |
| W02 | deterministic | list of ids, frontmatter relations: |
Fix budget B BEFORE opening (default 12, including 1-step neighbors) | B + list within the ceiling | — |
| W03 | effect | brief, B, 3 hard rules | Open EXACTLY ONE room (Explore/general-purpose subagent) | room running | — |
| W04 | judgment | room conclusion | Receive the compressed conclusion (≤500 words + sources), next action | main session decision | budget hit/missing → B01 |
Details of each step (source of truth for W01–W04):
- Draft the Tier A brief (main session, cheap): extract the list of page ids to dig into — from the question +
wiki/index.mdwiki/stale.json(related stale pages must be explicitly stated in the brief as "possibly outdated"). Seed further with episodic SEMANTIC retrieval:python3 harness/scripts/mem-rank.py retrieve "<câu hỏi>" --kind-filter episode— catch "what the previous session did" without needing[[wikilink]]; bring the surfaced files/episodes into the brief for the room.
- Set the budget BEFORE opening: at most B Tier B pages (default 12) + 1-step relationship neighbors
(read
relations:frontmatter of the pages in the list — also counts toward B). - Open EXACTLY ONE room: spawn 1 Explore/general-purpose subagent with a prompt containing: the question, the id list, budget B, and the 3 hard rules in the Rules section (copy them verbatim into the prompt).
- Receive a compressed conclusion (≤500 words + source citations), the main session acts on that — DO NOT paste the full text of the pages the room read into the main session.
Branches
| ID | Kind | Guard | Behavior | Skip / failure | Rejoin |
|---|---|---|---|---|---|
| B01 | recovery | room hits budget B or reports "missing: <what>" | main session decides: use a truncated conclusion, or read directly the few missing pages | do not open a child room, do not open a second room in parallel | W04 |
Validation and stopping
The room stops when it has read the full list or hits B (deterministic circuit breaker by page count). Check by review: conclusion ≤500 words, every claim has a source page, stale pages are flagged. One question = at most one room.
Examples
- Positive: long session, ask "how does wiki-core v2 handle stale across tiers?" → brief of 6 pages + 3 neighbors (B=12) → one room → 400-word conclusion citing
concepts/wiki-core-relations.md, one page tagged "(stale — re-verify before trusting)". - Boundary/failure: the question needs 20 pages, B=12 → the room stops at page 12, returns a conclusion with "hit budget, not yet read: <8 pages>"; do not open a child room.
- Boundary: only need
concepts/solid-what-how.md→ do not open a room, read directly.
Origin
- Source: concept
wiki-core-relations§2.4 Tier C + council 020726 guardrail G3/G6 - Date: 2026-07-02