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:
| Property | Engineering task | Spike |
|---|---|---|
| Ledger estimate accuracy | Approximate (5-10× compression observed) | Wildly over (often 10-50× compression) |
| Compounding effect | Output is the deliverable | Output is substrate that changes downstream scope |
| Defer cost | Linear (work waits) | Compounding (every downstream artefact locked in with stale/aspirational substrate) |
| Set-up vs execution | Setup ~10-30 min; execution scales with scope | Setup ~5 min; execution often ~5 min |
Empirical examples from the 2026-05-19+20 burst:
| Spike that got tasked | Ledger estimate | Actual when done inline | Defer cost |
|---|---|---|---|
| task-64 Mopsa install | ~30 min - 2h | ~5 min via opam install mopsa.1.1 | MQ-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 inline | Where | Yield |
|---|---|---|
| Q-041 substrate-correcting findings (AA v Persons Unknown 2019, Law Commission Digital Assets 2023, Switzerland NO native trust) | During Q-041 lock cycle | Q-041 substrate locked correctly Day-1 |
| Q-042 §B.0 hard-gate substrate-corrections (LinkML equals_string + conditional_required) | During Q-042 §B.0 capture | Caught 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 authoring | Re-scoped χ from ~3-6h projected → ~1.5h actual |
The discipline
When you encounter potential research/install-verify/empirical-substrate work:
- Quick estimate: how long would the spike actually take if run NOW?
- If ≤30 min actual: DO IT NOW inline. Even if it interrupts the flow of the current task — the downstream substrate-correction yield compounds.
- 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).
- 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:
- 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
- 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
- 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
- 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
- Labelling a Claude-MCP-executable spike as “Paul-time” — verify the tool-stack first (Playwright MCP for fedlex, BAILII fetches via Playwright, etc.)
- Bundling spikes into a launch prompt for “later this week” — spikes that fit the session’s tool stack should be done in the session
- 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:
| # | Date | Spike | What inline-execution would have yielded |
|---|---|---|---|
| 1 | 2026-05-19 (BATCH κ partner-outreach) | Recipient identification for 5 emails | DONE inline 2026-05-20 saves Rich ~50 min |
| 2 | 2026-05-19 (task-64 commission) | Mopsa install | Done inline ~5 min; collapsed task-60 step (a) projection |
| 3 | 2026-05-19 (σ.2 fedlex commission) | Playwright MCP feasibility | Done inline ~5 min; closed task-74 |
| 4 | 2026-05-19 (BATCH χ orchestration) | Cedar + Bowtie + Docker presence checks | Done inline ~5 min; re-scoped χ before authoring |
| 5 | 2026-05-19 (BATCH σ′ orchestration) | Verify candidate-task scopes against actual ledger | Done inline ~10 min; caught my 5 task-ID claims as WRONG |
| 6 | 2026-05-20 (this memory) | Verify recipient identifications via WebSearch | Done inline ~15 min; closes 4 of 5 recipient TBDs |
Companion files / related memories
- feedback_do_now_over_task_list_addition — parent rule; this feedback REFINES the spike-vs-engineering distinction
- feedback_batch_compression_lowers_defer_threshold — empirical 5-10× compression evidence (spikes compress hardest)
- feedback_research_artefact_forward_traceability — substrate-corrections that flow from spikes need forward-traceability when authored as durable artefacts
- feedback_actively_use_t_files_in_scorecard_authoring — sibling rule for cascade-Q scorecard authoring
- feedback_check_t_files_first_for_any_inherit_v2_work — read-time companion to spike-inline-default
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.