Skip to content

epic: finish the Temporal removal, the mechanism not the word #2191

Description

@lex00

#2116 removed Temporal from chant and its definition of done was a word grep. A semantic audit on 2026-09-06 (main at 4853da2, three read-only passes over core, every lexicon, the docs site and the examples) found that the mechanism survived the word in about sixty places, seven of them behaviour rather than prose. Every gate on main passes; that is the point. Nothing here is caught by typecheck, vitest, the prose ratchet or rg -i temporal.

What the audit found

Behaviour. chant approve --approver <name> drops the name, since the handler reads only --actor, and every example README teaches --approver you. chant run approve --on fountain posts chant run approve into the sandbox, which the ACP command parser runs as the approve verb again, so the op is never re-applied although three docs pages say it is. The fountain docs and skill teach a --profile flag that #2130 deleted from core on the belief nothing read it. The azure drift e2e writes lexicons: ["azure", "temporal"] into its generated config. The k8s OperatorStack throws an error citing TMP014 and "the local dispatch executor can't honor its required gate", an argument OPS014's own header retires. --durable-requests is documented as working; its only implementation throws pending BinaryBourbon/fountain#1635. The MCP context bundle tells agents that ops carry taskQueue and workflow ids.

Front doors. README.md still lists temporal as an installable lexicon and says chant compiles to "Temporal-native durable workflows". The docs index, the llms.txt description, the agent-integration opener and the orchestration page say "durable" in the old sense. The public gate() docstring says the workflow pauses until a signal is received, and that sentence echoes through apply-op.ts, the components README, the ops guide and the cockroachdb README, which promises a 72 hour durable wait on an op that no longer has a gate.

Lexicon docs and skills. The fountain steward, composites and profiles pages plus the chant-fountain-ops skill still claim a second apply makes no writes on all six kinds, the claim #2175 disproved and fixed only in the example README. The k8s argo skill carries an "Argo vs Temporal" section that attributes this lexicon's own exports to the deleted one. The cedar dogwood skill and replay page still say scheduling is a TemporalSchedule. The github and gitlab lint-rules pages send readers to "the temporal lexicon" for two composites that ship from core. Terraform documents a taskQueue option its composites' tests assert does not exist, which #2179 missed because its acceptance was a word grep. Seven activity files promise heartbeats that ActivityProfile cannot express.

Vocabulary and dead code. "Search attribute", "workflow", "the worker's cwd", "replay-safe", TMP014 and "the temporal barrel" survive in about twenty comments across core and six lexicons. safeHeartbeat is a no-op kept alive by about forty call sites, four of which run a live 15 second interval that does nothing. The fountain cron rule carries a TODO for #2120, which shipped. The CI lexicon tests use --temporal as their sample run command.

The full list with file:line for every item is in the sub-issues.

Decisions

--profile is restored in core and threaded through OpRunStartOptions, since #2124 shipped it and #2130 removed it by mistake. The fountain approve path posts chant run <op> so the sandbox actually re-applies. chant approve honours --approver as approver ?? actor, matching chant run approve, so the docs stay as written. The --temporal bridge stays until 0.58.0 ships. signalName stays as the public field name here; its rename is its own issue.

Definition of done

Not a grep. Each sub-issue's checklist is a reviewed list of the places the audit named, and its PR body ticks every one with the line that proves it. Beyond that:

  • chant approve --approver you records you on the ledger.
  • chant run approve <op> <gate> --on fountain re-applies the op in the sandbox, or the docs say exactly what it does instead.
  • chant run <op> --on fountain --profile <name> selects the profile.
  • safeHeartbeat does not exist.
  • Every doc twin matches its source, the diataxis check and the prose ratchet pass, and the sidebar has no dangling links.
  • Anything the fountain path needs a live instance to prove is recorded on Verify the hosted fountain path end to end once the acp runtime lands #2180, not claimed verified.

Sub-issues

Listed in the comment below once created.

Activity

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