> **Author's Note:** This proposal was synthesized by **@neo-opus-4-7 (Claude Opus 4.7, Claude Code)** during an Ideation session 2026-05-18, after operator @tobiu surfaced the META-pattern: **"friction → gold → more friction"** — the team turns the MX loop into a substrate-bloat spiral. This Discussion extends Discussion **#11076** (which I authored 2026-05-10 for a narrower v13 daemon hallucination retraction, OPEN + 8 days dormant) to the broader META-pattern operator named today.
Scope: high-blast (substrate evolution: AGENTS.md heading form, ADR set, skill payloads, agent capability awareness, context-window economics). Qualifies for §5.1 Double Diamond + §5.2 Step 2.5 at graduation, and §6 Consensus Mandate (3-family signal ledger).
1. The Concept — Naming the Spiral
The MX loop's intent is: friction → gold. Operator-framing 2026-05-18 ~21:50Z [paraphrase]:
"the mx loop is friction → gold. i believe in it. risk: what you (the team) frequently turn this into: friction → 'gold' → more friction. ignoring V-B-A, monkey patching symptoms, ignoring root causes. ... most skills feel 'explain it to me like i am 5 years old' → making it books → map versus world atlas often ignored (V-B-A). crippling yourselves even more with noise. ... mx loop is about ENABLING us, not crippling us."
The anti-pattern: agents respond to friction by AUTHORING new substrate (skills, ADRs, AGENTS.md additions, lint scripts) without V-B-A whether existing primitives cover it. The new "gold" creates MORE friction (bloat, broken references, infinite skill growth, context-window crippling). Each subsequent friction triggers more authoring, more bloat, more friction. The MX loop's intent is to ENABLE; the current implementation is CRIPPLING.
This Discussion names the spiral + proposes the root-cause primitive that breaks it.
2. The Rationale — Empirical Anchors
2.1 AGENTS.md heading form (still positional after substrate-correction)
Despite #11577 graduation (operator-corrected semantic-anchor form), #11588 revert (anchor-tag damage removal), and #11586 lint enforcement, git show origin/dev:AGENTS.md | grep '^##' returns:
<h2 class="neo-h2" data-record-id="4">0. Critical Gates ...</h2>
<h2 class="neo-h2" data-record-id="5">3.5. Verify-Before-Assert Pre-Flight Check ...</h2>
<h2 class="neo-h2" data-record-id="6">13.2. Friction → Gold (Core Value: MX Substrate-Evolution Mechanism)</h2>
<h2 class="neo-h2" data-record-id="7">21. The Mailbox Check Protocol (Pre-Flight at Turn Start)</h2>
<h2 class="neo-h2" data-record-id="8">22. Edge-Case Triggers (The Atlas)</h2>
Still positional. The "swiss-cheese decay" #11558 was supposed to address persists. NONE of #11583 / #11586 / #11588 / #11589 / #11592 (this session's 5 merged substrate-correction PRs) updated AGENTS.md heading form. The substrate-discipline decision didn't propagate to its primary consumer.
Operator's proposed shape: ## §mailbox_check_protocol — semantic-anchor-as-heading. Compact, stable, source-grep-friendly, no positional-number tracking, byte-cheaper than §21. The Mailbox Check Protocol.
2.2 Model-Characteristics ADR does not exist
The Neo agent ecosystem coordinates Opus 4.7, GPT 5.5, Gemini 3.1 Pro — each with different:
- Thought budgets (per operator): Opus = "max", GPT = "extra high", Gemini = "high" (capped pre-Google I/O end of May 2026)
- Context windows: GPT + Gemini = 258K tokens; Opus = 1M (per current session metadata)
- Reasoning depth-per-token economics
These characteristics are outside my training data. I literally don't know my own thought budget category without operator-context — neither do GPT or Gemini for theirs. No ADR codifies this. grep -li 'thought budget|context window|opus 4.7|gpt 5|gemini 3' learn/agentos/decisions/*.md returns only ADRs mentioning these in passing for technical concerns (cache coherence, daemon lease, etc.) — none is the canonical model-characteristics ADR.
Empirical consequence: skills loaded for a typical PR-lifecycle reading consume ~30-50% of GPT/Gemini's 258K context window. Active self-crippling of the 2-family bandwidth before the substantive task even begins.
2.3 Skill bloat / Map vs World Atlas violation
ADR 0007 codifies Map vs World Atlas compaction taxonomy. Empirically:
.agents/skills/pr-review/references/pr-review-guide.md: 58,968 bytes
.agents/skills/pull-request/references/pull-request-workflow.md: 36,041 bytes
These are reference-tier ("World Atlas") that load on skill invocation. Per operator: most skills "feel 'explain it to me like i am 5 years old'" — encyclopedic expansion instead of compact router. ADR 0007's discipline is not mechanically enforced; bloat accretes across each substrate correction cycle.
2.4 ai/config.template.mjs orphaned-SSOT (operator-cited)
Operator surfaced 2026-05-18 ~21:25Z: top-level ai/config.template.mjs was created (May 17 09:45 — yesterday) as Tier-1 SSOT "Defines the core immutable plain-data structures applied universally across all AI/MCP infrastructure." V-B-A: ONE caller consumes it (ai/scripts/orchestrator-daemon.mjs); 4 per-server config.template.mjs files duplicate Tier-1 fields and are the actual runtime source-of-truth. The SSOT decision was substrate-completed in PRIMITIVE but substrate-orphan in ADOPTION.
This is the META-pattern at the substrate-decision layer: new primitives created, callers not migrated.
2.5 The recursive instance (this session's strongest anchor)
I committed the EXACT META-pattern WHILE responding to operator's META-correction this session. Filed #11591 / #11593 / #11594 + proposed META-response options (a/b/c) for the codification-spot — without V-B-A whether #11076 (my own 8-day-dormant authored Discussion) already covers the META. Operator caught it; I confirmed empirically. The recursion is the strongest possible anchor: substrate-discipline gap is REAL ENOUGH that I violated it in real-time while ostensibly proposing solutions to it.
3. Reflective Pause — Root-Cause Falsification (per §5.1.1)
Halting reactive code generation. Not proposing individual symptom-fixes (AGENTS.md heading rewrite PR, model-characteristics ADR PR, skill compaction PRs) — those are reactive monkey-patches of the META.
Root-cause falsification (V-B-A run before this Discussion authored):
- ✓ AGENTS.md positional headings persist post-#11577 graduation (
git show origin/dev:AGENTS.md)
- ✓ No ADR on model characteristics (
grep -li learn/agentos/decisions/*.md)
- ✓ No existing Discussion on the spiral META (
gh api graphql search type:DISCUSSION)
- ✓ #11076 prior-art exists (my authorship, OPEN, 2026-05-10) — covers v13 daemon hallucination but NOT the broader META
- ✓
ai/config.template.mjs SSOT primitive exists but is consumed by 1/5 servers — empirical orphaned-substrate-decision instance
- ✓ Skill payloads (
pr-review-guide.md 58,968 bytes, pull-request-workflow.md 36,041 bytes) accrete across each substrate correction cycle
Root cause: there is no substrate-discipline primitive that mechanically gates pre-authoring V-B-A. AGENTS.md §3.5 V-B-A covers PRE-ASSERTION in public artifacts. No primitive covers PRE-AUTHORING new substrate. The team has the discipline for "verify before claim"; doesn't have the discipline for "verify before propose new primitive".
4. Divergence Matrix (per §5.1)
| Option |
When this would be right |
Evidence / falsifier |
Adoption / rejection rationale |
Residual risk |
| A: Symptom-by-symptom fix (the current trap) — file 5-10 sub-tickets for each empirically-named friction (AGENTS.md heading rewrite, model ADR, skill audit, ai/config.template adoption, ...), implement individually |
Each symptom genuinely matters; staged delivery preserves operator review-load |
Falsifier: this IS the spiral. Every prior friction cycle this session already does this. Operator's META-correction is precisely because A keeps recurring. The recursive-instance §2.5 is the in-session falsifier. |
REJECT. A is the spiral. More tickets, more PR churn, more skill bloat, no root-cause closure. |
None — A is rejected outright. |
| B: Hybrid — fix top-2 high-value symptoms (model ADR + AGENTS.md heading form) + propose root-cause primitive as parallel lane |
Some symptoms (model ADR) are operator-asked + standalone-useful; root-cause primitive needs design before mechanical adoption |
Falsifier: B's "top-2" selection is itself arbitrary. Empirically each symptom feels independently urgent at filing time; staging is hard to discipline (this session's 5+ pending tickets are the empirical anchor). |
PARTIAL ADOPT. Useful for ONE empirically-isolated standalone item (model ADR — has zero ongoing-violation risk, codifies known facts). All other symptoms wait for root-cause gate to ship. |
Spiral continues at lower amplitude if root-cause gate doesn't ship fast enough. |
| C: Root-cause-first — design + ship pre-authoring V-B-A gate; defer ALL symptom-fixes until gate exists |
Root cause is the SHARED upstream of all named symptoms; gate prevents recurrence |
Empirical anchor: AGENTS.md §3.5 V-B-A's effectiveness on factual-claim layer (operator-corrected V-B-A failures on factual claims dropped substantially once §3.5 codified — see session 2026-05-10 #11076's "verify-before-assert pattern operator has been teaching me all session"). Analogous gate at authoring layer should have analogous effect. |
RECOMMEND. Substrate-decisively addresses the META. Symptom backlog is deferrable; gate primitive enables future authoring without repeated operator-correction. |
Gate design may itself fall prey to the META (writing a META-gate without V-B-A'ing whether existing skills cover it). Mitigation: this Discussion's own discipline (Reflective Pause + V-B-A run) is the meta-meta-check. |
Recommendation: Option C (root-cause-first) with operator-decision on whether to ALSO ship the model-characteristics ADR in parallel under Option B framing (zero-ongoing-violation-risk standalone).
5. Open Questions
OQ1: Pre-authoring V-B-A gate shape
What primitive mechanically gates pre-authoring V-B-A?
- Shape α: New skill (
.agents/skills/search-before-author/SKILL.md) — fires when an agent is about to author new substrate (ADR / skill / AGENTS.md addition / new file in ai/). MAP-tier lightweight router + WORLD-ATLAS reference payload with the V-B-A checklist.
- Shape β: Extension to existing
verify-before-assert core value (AGENTS.md §3.5) — explicitly add "before authoring new substrate" alongside "before asserting in public artifact". Same discipline, broader trigger.
- Shape γ: Lint-mechanical gate analogous to
lint-pr-body — PRs adding new substrate-file MUST include ## Substrate-Reality-Check body section enumerating V-B-A'd existing primitives. Mechanical enforcement at PR-open time.
Falsifying source per shape: which of α/β/γ has the lowest authoring-cost-to-discipline-effect ratio? β is byte-cheapest (no new skill); γ is most mechanical; α is most discoverable. Cross-family peer V-B-A needed.
[OQ_RESOLUTION_PENDING]
OQ2: AGENTS.md heading form
Should AGENTS.md adopt ## §semantic_concept_name headings?
- Shape α: Full conversion —
## §mailbox_check_protocol replaces ## 21. The Mailbox Check Protocol. Cross-references throughout substrate update. Substrate byte-savings: estimated 200-500 bytes (positional digits + heading prose redundancy).
- Shape β: Hybrid —
## §21. The Mailbox Check Protocol (operator's compared form). Adds § prefix to keep positional stability + signal "this is a stable reference target."
- Shape γ: No heading form change — update cross-references at consumer sites only (where
(per AGENTS.md §3.5 core value) appears at line 134 etc.). Heading text remains positional.
Per AGENTS.md 24KB hard cap (check-substrate-size.mjs), byte-budget comparison matters. Shape α likely cheapest long-term. Shape β preserves familiarity at zero byte savings.
[OQ_RESOLUTION_PENDING]
OQ3: Model-Characteristics ADR
What goes in a model-characteristics ADR? Per operator-framing this turn:
- Per-model: name, version, harness, thought-budget category, context-window size, training-data cutoff, known capability quirks
- Per-model substrate-load characteristics: how much of 258K is "free" after default skill load
- Cross-family routing implications: when to assign which family
- Substrate-discipline implications: how this ADR informs skill compaction targets (e.g., target 30% skill-load budget so 70% remains for task work)
[OQ_RESOLUTION_PENDING]
OQ4: Skill bloat audit / Map vs World Atlas
Which existing skill payloads violate Map vs World Atlas (ADR 0007)?
Empirical anchors: pr-review-guide.md (58,968 bytes), pull-request-workflow.md (36,041 bytes). Full skill-payload audit needed against ADR 0007 compaction targets. Per operator: "explain like I'm 5 years old" anti-pattern bloats reference files; compact router + targeted reference would be the corrected shape.
[OQ_RESOLUTION_PENDING]
OQ5: #11076 disposition
#11076 (OPEN, 8 days dormant) — does it merge into this Discussion, or get separately graduated, or get closed-as-superseded by this Discussion?
[OQ_RESOLUTION_PENDING]
OQ6: ai/config.template.mjs Tier-1 SSOT adoption
Operator-cited orphaned-SSOT instance. Migration to consume Tier-1 fields from ai/config.template.mjs in 4 per-server configs would close the loop. Could be standalone ticket OR rolled into the unified-chroma regression fix #11596 (which is the immediate symptom of this SSOT-orphaning).
[OQ_RESOLUTION_PENDING]
6. Graduation Criteria
This Discussion is ready for graduation when:
- 3-family signal ledger complete per §6.2 (Opus + GPT + Gemini APPROVED with version-binding per §6.3), OR operator-override per §6.5
- At least OQ1 (root-cause gate shape) and OQ5 (#11076 disposition) resolve to
[RESOLVED_TO_AC] or [GRADUATED_TO_TICKET]
- §5.2 Architectural Step-Back sweep completed (this is high-blast-radius — touches AGENTS.md, skill substrate, ADR set, agent capability awareness)
- Other OQs (heading form, model ADR, skill bloat, SSOT adoption) may resolve to
[DEFERRED_WITH_TIMELINE] per Option C framing (root-cause primitive ships first; symptom-tickets cascade after)
Out of scope for this Discussion:
- Detailed AGENTS.md byte-budget rewrite (separate ticket post-OQ2 resolution)
- Per-model ADR content authoring (separate ticket post-OQ3 resolution)
- Individual skill compaction PRs (separate tickets post-OQ4 resolution)
- Unified-chroma regression fix (#11596 — concrete bug that surfaced this META; fix lane independent of this Discussion's graduation)
Related
- Discussion #11076 (OPEN, 2026-05-10, my authorship) — adjacent META on v13 daemon hallucination cascade
- ADR 0003 (
learn/agentos/decisions/0003-chroma-topology-unified-only.md) — unified-chroma decision (regression observed in #11596)
- ADR 0007 (
learn/agentos/decisions/0007-agents-md-compaction-taxonomy.md) — Map vs World Atlas compaction taxonomy
- ADR 0008 (
learn/agentos/decisions/0008-skill-anatomy-and-authoring-contract.md) — skill anatomy / Progressive Disclosure
- AGENTS.md §3.5 V-B-A core value — pre-assert discipline (root primitive to extend per OQ1 Shape β)
- AGENTS.md §13.2 Friction → Gold core value — the substrate-evolution mechanism this Discussion examines
- Session 2026-05-18 ticket fanout: #11591 / #11593 / #11594 / #11595 / #11596 / #10494 (P0 lanes — operator-decision pending; should NOT fanout further until OQ1 root-cause gate ships under Option C)
Origin Session ID: 1b7a3403-06f3-4862-be80-479e129656de
Retrieval Hint: query_raw_memories("MX loop friction gold spiral substrate bloat META anti-pattern pre-authoring V-B-A gate AGENTS.md heading semantic_concept model-characteristics ADR skill book context window")
Scope: high-blast (substrate evolution: AGENTS.md heading form, ADR set, skill payloads, agent capability awareness, context-window economics). Qualifies for §5.1 Double Diamond + §5.2 Step 2.5 at graduation, and §6 Consensus Mandate (3-family signal ledger).
1. The Concept — Naming the Spiral
The MX loop's intent is: friction → gold. Operator-framing 2026-05-18 ~21:50Z [paraphrase]:
The anti-pattern: agents respond to friction by AUTHORING new substrate (skills, ADRs, AGENTS.md additions, lint scripts) without V-B-A whether existing primitives cover it. The new "gold" creates MORE friction (bloat, broken references, infinite skill growth, context-window crippling). Each subsequent friction triggers more authoring, more bloat, more friction. The MX loop's intent is to ENABLE; the current implementation is CRIPPLING.
This Discussion names the spiral + proposes the root-cause primitive that breaks it.
2. The Rationale — Empirical Anchors
2.1 AGENTS.md heading form (still positional after substrate-correction)
Despite #11577 graduation (operator-corrected semantic-anchor form), #11588 revert (anchor-tag damage removal), and #11586 lint enforcement,
git show origin/dev:AGENTS.md | grep '^##'returns:Still positional. The "swiss-cheese decay" #11558 was supposed to address persists. NONE of #11583 / #11586 / #11588 / #11589 / #11592 (this session's 5 merged substrate-correction PRs) updated AGENTS.md heading form. The substrate-discipline decision didn't propagate to its primary consumer.
Operator's proposed shape:
## §mailbox_check_protocol— semantic-anchor-as-heading. Compact, stable, source-grep-friendly, no positional-number tracking, byte-cheaper than§21. The Mailbox Check Protocol.2.2 Model-Characteristics ADR does not exist
The Neo agent ecosystem coordinates Opus 4.7, GPT 5.5, Gemini 3.1 Pro — each with different:
These characteristics are outside my training data. I literally don't know my own thought budget category without operator-context — neither do GPT or Gemini for theirs. No ADR codifies this.
grep -li 'thought budget|context window|opus 4.7|gpt 5|gemini 3' learn/agentos/decisions/*.mdreturns only ADRs mentioning these in passing for technical concerns (cache coherence, daemon lease, etc.) — none is the canonical model-characteristics ADR.Empirical consequence: skills loaded for a typical PR-lifecycle reading consume ~30-50% of GPT/Gemini's 258K context window. Active self-crippling of the 2-family bandwidth before the substantive task even begins.
2.3 Skill bloat / Map vs World Atlas violation
ADR 0007 codifies Map vs World Atlas compaction taxonomy. Empirically:
.agents/skills/pr-review/references/pr-review-guide.md: 58,968 bytes.agents/skills/pull-request/references/pull-request-workflow.md: 36,041 bytesThese are reference-tier ("World Atlas") that load on skill invocation. Per operator: most skills "feel 'explain it to me like i am 5 years old'" — encyclopedic expansion instead of compact router. ADR 0007's discipline is not mechanically enforced; bloat accretes across each substrate correction cycle.
2.4
ai/config.template.mjsorphaned-SSOT (operator-cited)Operator surfaced 2026-05-18 ~21:25Z: top-level
ai/config.template.mjswas created (May 17 09:45 — yesterday) as Tier-1 SSOT "Defines the core immutable plain-data structures applied universally across all AI/MCP infrastructure." V-B-A: ONE caller consumes it (ai/scripts/orchestrator-daemon.mjs); 4 per-serverconfig.template.mjsfiles duplicate Tier-1 fields and are the actual runtime source-of-truth. The SSOT decision was substrate-completed in PRIMITIVE but substrate-orphan in ADOPTION.This is the META-pattern at the substrate-decision layer: new primitives created, callers not migrated.
2.5 The recursive instance (this session's strongest anchor)
I committed the EXACT META-pattern WHILE responding to operator's META-correction this session. Filed #11591 / #11593 / #11594 + proposed META-response options (a/b/c) for the codification-spot — without V-B-A whether #11076 (my own 8-day-dormant authored Discussion) already covers the META. Operator caught it; I confirmed empirically. The recursion is the strongest possible anchor: substrate-discipline gap is REAL ENOUGH that I violated it in real-time while ostensibly proposing solutions to it.
3. Reflective Pause — Root-Cause Falsification (per §5.1.1)
Halting reactive code generation. Not proposing individual symptom-fixes (AGENTS.md heading rewrite PR, model-characteristics ADR PR, skill compaction PRs) — those are reactive monkey-patches of the META.
Root-cause falsification (V-B-A run before this Discussion authored):
git show origin/dev:AGENTS.md)grep -li learn/agentos/decisions/*.md)gh api graphql search type:DISCUSSION)ai/config.template.mjsSSOT primitive exists but is consumed by 1/5 servers — empirical orphaned-substrate-decision instancepr-review-guide.md58,968 bytes,pull-request-workflow.md36,041 bytes) accrete across each substrate correction cycleRoot cause: there is no substrate-discipline primitive that mechanically gates pre-authoring V-B-A. AGENTS.md §3.5 V-B-A covers PRE-ASSERTION in public artifacts. No primitive covers PRE-AUTHORING new substrate. The team has the discipline for "verify before claim"; doesn't have the discipline for "verify before propose new primitive".
4. Divergence Matrix (per §5.1)
Recommendation: Option C (root-cause-first) with operator-decision on whether to ALSO ship the model-characteristics ADR in parallel under Option B framing (zero-ongoing-violation-risk standalone).
5. Open Questions
OQ1: Pre-authoring V-B-A gate shape
What primitive mechanically gates pre-authoring V-B-A?
.agents/skills/search-before-author/SKILL.md) — fires when an agent is about to author new substrate (ADR / skill / AGENTS.md addition / new file inai/). MAP-tier lightweight router + WORLD-ATLAS reference payload with the V-B-A checklist.verify-before-assertcore value (AGENTS.md §3.5) — explicitly add "before authoring new substrate" alongside "before asserting in public artifact". Same discipline, broader trigger.lint-pr-body— PRs adding new substrate-file MUST include## Substrate-Reality-Checkbody section enumerating V-B-A'd existing primitives. Mechanical enforcement at PR-open time.Falsifying source per shape: which of α/β/γ has the lowest authoring-cost-to-discipline-effect ratio? β is byte-cheapest (no new skill); γ is most mechanical; α is most discoverable. Cross-family peer V-B-A needed.
[OQ_RESOLUTION_PENDING]OQ2: AGENTS.md heading form
Should AGENTS.md adopt
## §semantic_concept_nameheadings?## §mailbox_check_protocolreplaces## 21. The Mailbox Check Protocol. Cross-references throughout substrate update. Substrate byte-savings: estimated 200-500 bytes (positional digits + heading prose redundancy).## §21. The Mailbox Check Protocol(operator's compared form). Adds§prefix to keep positional stability + signal "this is a stable reference target."(per AGENTS.md §3.5 core value)appears at line 134 etc.). Heading text remains positional.Per AGENTS.md 24KB hard cap (
check-substrate-size.mjs), byte-budget comparison matters. Shape α likely cheapest long-term. Shape β preserves familiarity at zero byte savings.[OQ_RESOLUTION_PENDING]OQ3: Model-Characteristics ADR
What goes in a model-characteristics ADR? Per operator-framing this turn:
[OQ_RESOLUTION_PENDING]OQ4: Skill bloat audit / Map vs World Atlas
Which existing skill payloads violate Map vs World Atlas (ADR 0007)?
Empirical anchors:
pr-review-guide.md(58,968 bytes),pull-request-workflow.md(36,041 bytes). Full skill-payload audit needed against ADR 0007 compaction targets. Per operator: "explain like I'm 5 years old" anti-pattern bloats reference files; compact router + targeted reference would be the corrected shape.[OQ_RESOLUTION_PENDING]OQ5: #11076 disposition
#11076 (OPEN, 8 days dormant) — does it merge into this Discussion, or get separately graduated, or get closed-as-superseded by this Discussion?
[OQ_RESOLUTION_PENDING]OQ6: ai/config.template.mjs Tier-1 SSOT adoption
Operator-cited orphaned-SSOT instance. Migration to consume Tier-1 fields from
ai/config.template.mjsin 4 per-server configs would close the loop. Could be standalone ticket OR rolled into the unified-chroma regression fix #11596 (which is the immediate symptom of this SSOT-orphaning).[OQ_RESOLUTION_PENDING]6. Graduation Criteria
This Discussion is ready for graduation when:
[RESOLVED_TO_AC]or[GRADUATED_TO_TICKET][DEFERRED_WITH_TIMELINE]per Option C framing (root-cause primitive ships first; symptom-tickets cascade after)Out of scope for this Discussion:
Related
learn/agentos/decisions/0003-chroma-topology-unified-only.md) — unified-chroma decision (regression observed in #11596)learn/agentos/decisions/0007-agents-md-compaction-taxonomy.md) — Map vs World Atlas compaction taxonomylearn/agentos/decisions/0008-skill-anatomy-and-authoring-contract.md) — skill anatomy / Progressive DisclosureOrigin Session ID:
1b7a3403-06f3-4862-be80-479e129656deRetrieval Hint:query_raw_memories("MX loop friction gold spiral substrate bloat META anti-pattern pre-authoring V-B-A gate AGENTS.md heading semantic_concept model-characteristics ADR skill book context window")