Spikes inline, not tasked

When orchestrating cascade-Q lock work, MQ commission, or batch authoring, research/install-verify/empirical-substrate-check work should be done INLINE in the current session, not added to the Phase-1.5+ ledger as a deferred task.

The current feedback_do_now_over_task_list_addition rule (locked 2026-05-19) codified DO-NOW-DEFAULT for INFORMATION-DENSITY work but carved out an exception for “≥2h sustained engineering.” That exception was correct for CODE-AUTHORING engineering tasks. It was incorrectly applied to spikes — and the empirical evidence post-codification shows the exception got mis-applied.

Why this matters

Spikes have different cost-shape from engineering tasks:

PropertyEngineering taskSpike
Ledger estimate accuracyApproximate (5-10× compression observed)Wildly over (often 10-50× compression)
Compounding effectOutput is the deliverableOutput is substrate that changes downstream scope
Defer costLinear (work waits)Compounding (every downstream artefact locked in with stale/aspirational substrate)
Set-up vs executionSetup ~10-30 min; execution scales with scopeSetup ~5 min; execution often ~5 min

Empirical examples from the 2026-05-19+20 burst:

Spike that got taskedLedger estimateActual when done inlineDefer cost
task-64 Mopsa install~30 min - 2h~5 min via opam install mopsa.1.1MQ-014 + MQ-015 substrate stayed aspirational for ~16h
task-74 fedlex Playwright fetch~1-2h “Paul-time” (mislabel)~5 min via Playwright MCP (Claude-executable)task classification stayed wrong for ~6h until σ.2 caught it
task-67 pgvector PRIMARY uplift~2-3h~30 min (column + GIN + flag composition)Re-scoping required at orchestration time
task-80 Bowtie smoke~1-3h~30 min total (5 min after Docker WSL toggle)Required separate re-fire session

Empirical examples of spikes done inline (no defer):

Spike done inlineWhereYield
Q-041 substrate-correcting findings (AA v Persons Unknown 2019, Law Commission Digital Assets 2023, Switzerland NO native trust)During Q-041 lock cycleQ-041 substrate locked correctly Day-1
Q-042 §B.0 hard-gate substrate-corrections (LinkML equals_string + conditional_required)During Q-042 §B.0 captureCaught at-execution; cascade-Q file accurate Day-1
BATCH χ orchestration-time substrate-corrections (Cedar already installed, Bowtie already installed, no cedar-for-agents bundle, Docker WSL blocked)At χ launch-prompt authoringRe-scoped χ from ~3-6h projected → ~1.5h actual

The discipline

When you encounter potential research/install-verify/empirical-substrate work:

  1. Quick estimate: how long would the spike actually take if run NOW?
  2. If ≤30 min actual: DO IT NOW inline. Even if it interrupts the flow of the current task — the downstream substrate-correction yield compounds.
  3. If 30 min - 2h actual: STRONGLY consider doing it inline. Only defer if there’s a hard constraint (e.g., session context budget tight; or the spike requires a different tool stack not loaded in current session).
  4. If ≥2h actual: legitimate task-list addition under feedback_do_now_over_task_list_addition. But: ask “is there a thinner-MVP version that closes the named gap in ≤1h?” before tasking the full version.

When this rule fires

This rule fires at three moments:

  1. At launch-prompt authoring (orchestration time): when verifying substrate per CLAUDE.md §13, treat substrate-checks as inline spikes — run them DURING orchestration, not as Phase-1.5+ task-list items
  2. At cascade-Q lock formulation: when a question of “what does the literature say about X” or “does Y empirically work” surfaces, spike it inline before scorecard authoring
  3. At MQ commission: when a discipline-overlay-candidate surfaces, spike the empirical evidence (does it actually fire? does it have downstream impact?) before locking the MQ

Anti-patterns

  1. Adding a spike as a Phase-1.5+ task because “we’ll get to it later” — by the time we get to it, the downstream work has already locked in stale/aspirational substrate
  2. Labelling a Claude-MCP-executable spike as “Paul-time” — verify the tool-stack first (Playwright MCP for fedlex, BAILII fetches via Playwright, etc.)
  3. Bundling spikes into a launch prompt for “later this week” — spikes that fit the session’s tool stack should be done in the session
  4. Pre-tasking spikes during launch-prompt authoring — orchestration-time spikes happen at AUTHORING, not at downstream execution

Substrate-correction precedent ledger

Each precedent strengthens the case for inline-spike-default:

#DateSpikeWhat inline-execution would have yielded
12026-05-19 (BATCH κ partner-outreach)Recipient identification for 5 emailsDONE inline 2026-05-20 saves Rich ~50 min
22026-05-19 (task-64 commission)Mopsa installDone inline ~5 min; collapsed task-60 step (a) projection
32026-05-19 (σ.2 fedlex commission)Playwright MCP feasibilityDone inline ~5 min; closed task-74
42026-05-19 (BATCH χ orchestration)Cedar + Bowtie + Docker presence checksDone inline ~5 min; re-scoped χ before authoring
52026-05-19 (BATCH σ′ orchestration)Verify candidate-task scopes against actual ledgerDone inline ~10 min; caught my 5 task-ID claims as WRONG
62026-05-20 (this memory)Verify recipient identifications via WebSearchDone inline ~15 min; closes 4 of 5 recipient TBDs

When the rule does NOT apply

Genuine engineering tasks where:

  • Sustained ≥2h CODE-AUTHORING is required (e.g., authoring a new generator script + tests; building an entire pipeline)
  • The session’s tool stack doesn’t include what’s needed AND loading it would itself take ≥30 min
  • The work is partner-engagement-blocked (Rich-action required upstream) or trigger-gated

In those cases, task-list-addition remains legitimate per feedback_do_now_over_task_list_addition.

Why this is locked now

The 11/11 → 12/12 verify-before-author precedent stability + the 5-10× compression empirically observed + the BATCH κ recipient-identification example (where deferring 50-65 min of Rich-time for 1 week cost is empirically much higher than 15 min of Claude WebSearch right now) all point at the same conclusion: the default should be inline; the exception is defer.

Rich-locked 2026-05-20 after observing the pattern across the 2026-05-19+20 burst.