Skip to content

Elon method rarely triggers: gated on Project Direction and tied to artifacts #138

Closed

Description

@lukemaj

Outcome

Agents apply the Elon method Algorithm whenever they recommend or accept a solution, architecture, or process, including in conversation, and every material-design Issue carries an Elon record.

Evidence

Case, 2026-09-27 (transcribe-queue): the conversation moved from research (does summarize support X video) to design (queue in front of Superwhisper). The agent recommended an architecture in chat four times and created lukemaj/transcribe-queue#1 without running the Algorithm. It only removed the queue's ticket files and cleanup after the user asked "did you run elon method on it?"

Transcript count, 139 Claude Code sessions, last 14 days (tool_use inputs only):

Signal Sessions
Invoked operations through the Skill tool 14
Opened elon-method/index.md 6
Opened elon-method/references/algorithm.md 3
Ran gh issue create 11
Ran gh issue create without opening algorithm.md 9

Issue creation is a named trigger in the core, yet 9 of 11 sessions that created Issues never opened the Algorithm. Limits: Claude Code only (not Codex, Grok, or OpenCode), and a session could apply the method from memory without opening the file.

Causes

  1. Gated on Project Direction. The core says "After Project Direction is loaded, select the Elon method", and elon-method/index.md says "Use after complete current Project Direction loads." Design often starts before a repository or triad exists. In the case above the hook reported not_in_repository, then uninitialized, so the precondition was never met.
  2. Triggered by artifacts, not decisions. "Before accepting features, writing specs or creating tickets" does not cover recommending an architecture in chat, which is where the design was actually decided.
  3. Three hops, no mechanism. Core, then the operations Skill (which must be invoked), then elon-method/index.md, then algorithm.md. Project Direction has a hook on every prompt and loads reliably; the Algorithm has prose only.
  4. Self-judged exemption. "A small direct microfix whose requirement and solution are clear stays direct." A confident proposal feels clear to the agent that made it.
  5. Phase changes are gradual. "When the work changes phase" relies on the agent noticing a boundary; research drifted into design with no discrete moment.

Proposed change (after Elon pass, 2026-09-27)

Reword two sentences the core already has, plus one line in the Elon index. Net core growth: about one line.

  • Core, Elon method section: replace "After Project Direction is loaded, select the Elon method ... before accepting features, writing specs or creating tickets" with a trigger on decisions: before recommending or accepting a solution, architecture, process, or automation, in conversation or in an artifact. Project Direction informs the Algorithm when loaded; it is not a precondition.
  • Core, Delivery section: "An Issue needs outcome, acceptance criteria, non-goals, blockers and proof" gains "and, for material design, an Elon record: wanted result, evidence, cuts, smallest surviving solution" (the fields the core already names).
  • elon-method/index.md: replace "Use after complete current Project Direction loads" with "Use with current Project Direction when loaded; otherwise against the request."
  • Contract tests in tests/test_operations_contract.py pin the three sentences.

Elon record

  • Wanted result: the Algorithm runs at the moment a design is recommended or accepted, and its result is visible in the task record.
  • Evidence: the transcript counts above; in the 2026-09-27 case the agent had read algorithm.md in the same session before writing lukemaj/transcribe-queue#1 and still shipped removable parts (ticket files, stale-ticket cleanup). Having the text in context did not produce the behavior. The Issue content list in the core (outcome, acceptance criteria, non-goals, blockers, proof) was followed in full in both Issues that session.
  • Cut: inlining the five steps in the core. The failure was the trigger, not access to the text (see evidence). Inlining costs tokens in every session in every repository and duplicates algorithm.md, which then drifts.
  • Cut: PreToolUse hook on gh issue create. A heading presence check is easy to satisfy ceremonially (lukemaj/transcribe-queue#1 had "smallest surviving solution" and "Cuts" and would have passed), works only on Claude Code while the core serves Codex, Grok, and OpenCode, and adds a script, an opt-out marker, and tests. Adding the record to the Issue content list the agent already follows gets the same floor with no new mechanism.
  • Kept: removing the Project Direction gate (cause 1, observed directly), the decision trigger (cause 2), the Issue content line (the one list agents demonstrably follow), contract tests.
  • Add-back condition: two weeks after release, rerun the transcript count on gh issue create bodies. If material-design Issues still lack an Elon record, add the hook.

Contribution to the Objective

"For ordinary work, the agent ... chooses the smallest suitable workflow" and "Deterministic tests prove contracts". Today the smallest-solution step is skipped in most tracked work.

Non-goals

  • Running the Algorithm for read-only research or clear microfixes.
  • Model-run scenario tests.

Blockers

None.

Activity

  1. lukemaj commented on Sep 27, 2026

    @lukemaj
    ContributorAuthor
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions