docs(lexicons): the fountain, k8s, cedar, github, gitlab, terraform, helm, k3d, k3s and aws docs and skills describe the current run mechanism (#2194) - #2198
Merged
Conversation
…8s, cedar, github, gitlab, terraform, helm, k3d, k3s and aws docs and skills (#2194) Sub-issue 3 of #2191. Lexicon docs pages, skills and comments that still taught the deleted hosting-runtime model. No behaviour changed; the diff is prose, docstrings, one LSP completion table, two skills and the regenerated doc twins. fountain: the second-apply claim is scoped to Teammate, Schedule and Webhook, the three kinds fountainApply reconciles per route. The steward mesh table has seven rows, and composites.mdx says six kinds. k8s: the argo skill teaches Argo owning the sync, an Op owning ordering and gates, and CI running the Op, and attributes waitForArgoSync to this lexicon and the argoSync profile to core. The argo-composites heading is renamed and both inbound anchors follow it. cedar: the replay page and skill teach `schedule` on the Op (#2120). github and gitlab: WorkflowAuditOp and PipelineAuditOp ship from core; the op-pipeline generators describe OpSchedule. terraform: the taskQueue completion and both option-table rows are gone. Seven activity files no longer promise a heartbeat ActivityProfile cannot express. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0148a4dPTErCBpmNy7J7933f
lex00
force-pushed
the
docs/2194-lexicon-docs-skills
branch
from
September 7, 2026 04:39
183a7a2 to
3915170
Compare
The six twins the previous commit touched without editing their sources (aws index.mdx and intrinsics.mdx, cedar/github/gitlab/k8s index.mdx) are restored to main. Their regeneration was not faithful: the generator reads each lexicon's local `dist/manifest.json`, and those manifests are stale relative to source in this checkout. `lexicons/aws/src/intrinsics.ts` defines Fn::Equals, Fn::And, Fn::Or and Fn::Not (#2068), so thirteen intrinsics, while `lexicons/aws/dist/manifest.json` is version 0.56.0 and lists nine; `lexicons/github/dist/manifest.json` is dated Aug 25 at version 0.46.0 and lists one intrinsic where the committed twin says nineteen. CI runs prepack fresh, so what those pages say after a real regeneration cannot be settled from here. Every remaining twin change now pairs with a `docs/pages/` change of the same basename, and every edited source has its twin regenerated: eleven pages each way, no page on one side without the other. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0148a4dPTErCBpmNy7J7933f
This was referenced Sep 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #2194.
Sub-issue 3 of #2191: the lexicon docs pages, skills and user-facing strings that still teach the deleted hosting-runtime model. Skills are loaded by agents on demand, so a stale skill is an instruction rather than a comment. Nothing here changes behaviour; the diff is prose, docstrings, one LSP completion table, two skills, one test assertion and the regenerated doc twins.
fountain
The second-apply claim is now scoped to the three kinds it is true of.
src/op/activities/fountain-apply.ts:120-131says bulk apply reportscreatedorupdatedand nothing else, so an Environment that changed in no way still comes backupdated; the per-route reconcilers below it (:302-310, Teammate, Schedule and Webhook) read live state and compare before they write.docs/pages/steward.mdx:103,docs/pages/composites.mdx:71andsrc/skills/chant-fountain-ops.md:78all say that now instead of "makes no writes".docs/pages/steward.mdx:13said "chant needs six things" over a seven-row table; it says seven.docs/pages/composites.mdx:71saidchant build"emits all four" over a list of six kinds, andsrc/composites/steward.ts:44constructs Environment, Vault, Agent, Teammate, Schedule and Webhook; it says six.src/deep-observe.ts:29justified passing the payload through as "the AWS situation, not temporal's". The comparison had nothing left on the other side, so the sentence states the fact on its own.docs/pages/profiles.mdxandruntime.mdx:40and line 89 of the ops skill are untouched: they belong to #2192.k8s
src/skills/chant-k8s-argo.mdtold the reader to "orchestrate it in Temporal" and to reach forwaitForArgoSync"(temporal lexicon,argoSyncprofile)". Both attributions were wrong:waitForArgoSyncis exported from this lexicon atsrc/op/activities/index.ts:30, andargoSyncis core's, atpackages/core/src/op/activity-profiles.ts:92. The section is rewritten as "Splitting a deploy between Argo and an Op" and teaches the current split: Argo owns the sync, the Op owns the ordering and the gates (packages/core/src/op/local-executor.ts:7-16: a run that reaches an unapproved gate records the pending fact, endsgatedand exits 3, andchant approve <op> <gate>lets the next run through), and CI runs the Op on the cadence itsschedulenames. The example is anactivity("waitForArgoSync", …, "argoSync")step, sinceactivity()takes the profile as its third argument (packages/core/src/op/builders.ts:76-82). The three-layer table at the top of the skill and the skill description insrc/plugin.ts:635follow.docs/pages/argo-composites.mdx:15is now "The three-layer model: Argo, an Op and CI", and its middle row names a chant Op rather than a deleted runtime. Both inbound anchors move with it in this commit:docs/pages/crd-classes.mdx:424now links#the-three-layer-model-argo-an-op-and-ci, anddocs/pages/flux-composites.mdx:94names the split the new way. The new slug follows the same github-slugger rule the existing cross-page anchor#the-accepted-baseline---update-baselinedemonstrates (lowercase, punctuation dropped, spaces to hyphens) against#### The accepted baseline —--update-baseline`` indocs/src/content/docs/concepts/drift-detection.mdx:88.docs/pages/api-client.mdx:21said "workers register activities by name". The registry keys the activity map by export name (packages/core/src/op/activity-registry.ts:26-32,47-64) and an Op step resolves itsfnstring against that map, which is the real reason the export cannot be renamed.:82putnativeApply"in the Temporal lexicon"; it ispackages/core/src/op/activities/apply.ts:480.src/op/activities/wait-for-ready.ts:338andkubectl.ts:6,380promised heartbeat timeouts.ActivityProfile(packages/core/src/op/activity-profiles.ts:18-37) has onlytimeoutandretry, and its header (lines 10-15) saysheartbeatTimeoutdeliberately did not come along. Each now states what its profile actually gives it:k8sWaitmarkingReadinessFailedErrornon-retryable,longInfra's 20m timeout and three attempts backing off from 30s.src/deep-observe-hooks.ts:73citedTEMPORAL_SCHEDULE_DEFAULTS, which exists nowhere; the reason for listingspec.strategywhole is stated directly.:64andsrc/deep-observe.ts:12,124cited "AWS, Azure and Temporal's rows"; they nameAWS_SERVICE_DEFAULTSandAZURE_SERVICE_DEFAULTS, which exist.src/config.ts:6offeredtemporal.profiles.<env>as a live peer example; AWS and Azure are peers enough.src/op/activities/argo.test.ts:8said profiles "live centrally in the temporal lexicon" above an import from@intentius/chant/op/activity-profiles;:69named a test "60s heartbeat" while asserting only the timeout. Both corrected.The worker-loads-it-cheaply justifications in this lexicon's activity files (
src/op/activities/index.ts:16-18,argo.ts:19,wait-for-ready.ts:9,kubectl.test.ts:4, plussrc/export-resources.ts:31andsrc/api/sweep-types.ts:13, which make the same argument) now nameloadActivities, which imports the module by subpath at run time.src/composites/operator-stack.ts:214and its TMP014 citations are left alone: they belong to #2192 and #2195.cedar
src/skills/chant-cedar-dogwood.md:285anddocs/pages/dogwood-replay.mdx:70-73said scheduling was "a project-sideTemporalSchedulepairing". #2131's fix landed insrc/dogwood/replay-op.ts:17-31: the cadence isscheduleon the Op,OpScheduleinpackages/core/src/op/types.ts:49-59, which lands as{ cron, overlap: "skip" }(replay-op.ts:238). Both places now teach that, with the worked declaration on the docs page.src/op/activities/index.ts:13-14,src/dogwood/replay-activity.ts:8-10andsrc/index.ts:118claimed independence from a package that no longer exists; they now say what is true, that the activity imports no runtime of its own and the local executor calls it directly.github and gitlab
lexicons/github/docs/pages/lint-rules.mdx:191andlexicons/gitlab/docs/pages/lint-rules.mdx:169sent readers to "the temporal lexicon" forWorkflowAuditOpandPipelineAuditOp. Both arepackages/core/src/op/composites/workflow-audit-op.tsandpipeline-audit-op.ts, exported throughpackages/core/src/op/index.ts:23.lexicons/github/src/components/generate-op-pipeline.ts:7-10andlexicons/gitlab/src/components/generate-op-pipeline.ts:7-9described themselves as the alternative to aTemporalSchedule. What they read isOpSchedule(packages/core/src/op/types.ts:49), so each names the field and says it is the reader that turns it into a cron.lexicons/gitlab/src/op/activities/index.ts:4andgitlab.ts:19promised heartbeat semantics; corrected againstActivityProfilethe same way as k8s.terraform
src/lsp/option-keys.ts:43offered ataskQueuecompletion for a field that does not exist:TerraformApplyOpConfigandTerraformAdoptOpConfighave no such key, andterraform-apply-op.test.ts:206andterraform-adopt-op.test.ts:168assertnot.toHaveProperty("taskQueue"). The completion is gone, as are bothtaskQueuerows indocs/pages/ops.mdx.src/lsp/completions.test.ts:94asserted the completion existed; it now assertsgateTimeoutis offered andtaskQueueis not.The
namerow said the name was "the default task queue and gate signal suffix". There is no task queue, and what the name actually feeds issignalName, whose default isapprove-<name>. Both docs tables, the LSP detail string and the two composites' own docstrings (terraform-apply-op.ts:99,terraform-adopt-op.ts:92, the source of the other three) say that instead.helm, k3d, k3s, aws
The heartbeat promises in
lexicons/helm/src/op/activities/index.ts:3-4,helm.ts:397,lexicons/k3d/src/op/activities/k3d.ts:141andlexicons/k3s/src/op/activities/k3s.ts:114-115are replaced by whatlongInfrareally is.safeHeartbeatcalls and thesetIntervalloops are untouched; their removal is #2195's.The "a Temporal worker loads them cheaply" and "re-exported from the temporal Op-authoring barrel" justifications in
lexicons/aws/src/agentcore/trace-fetch.ts:9-10,lexicons/k3d/src/op/activities/index.ts:11-13,lexicons/k3s/src/op/activities/index.ts:15-18andlexicons/helm/src/op/activities/index.ts:6-7name@intentius/chant/opfor the builders andloadActivities(packages/core/src/op/activity-registry.ts) for the run-time import.lexicons/aws/src/op/activities/floci.ts:104-105explained its env injection by contrast with "a distributed Temporal worker"; it now says the local executor runs every step of a run in this process, which is what makes the injection work.lexicons/aws/docs/pages/policy-validation.mdx:56said a violation "fails the workflow" nine lines above a mention of the local executor; it fails the run.Doc twins
Only
docs/pages/sources were edited; each edited page's twin was regenerated with its lexicon'snpm run docs(fountain, k8s, cedar, github, gitlab, terraform, aws). Eleven pages were edited and eleven twins changed, one for one: no twin here without a source change of the same basename, and no edited source without its twin regenerated. Per page, the twin's added and removed lines are identical to its source's, verified mechanically.One twin carries more than its source's diff.
lexicons/k8s/docs/src/content/docs/crd-classes.mdxgains the "A kind with no generated class:k8sManifest" section, whichdocs/pages/crd-classes.mdx:473already carried and the twin was missing. That is source-derived, so it comes along with the anchor fix.Regenerating also rewrote six twins whose sources this PR does not touch:
lexicons/aws/docs/src/content/docs/index.mdxandintrinsics.mdx, andindex.mdxunder cedar, github, gitlab and k8s. Those are not in this PR; they were restored to main in the second commit. The regeneration was not faithful, because the generator reads each lexicon's localdist/manifest.jsonand those manifests are stale relative tosrc/in a working checkout:lexicons/aws/src/intrinsics.tsdefinesFn::Equals,Fn::And,Fn::OrandFn::Not(#2068), thirteen intrinsics, whilelexicons/aws/dist/manifest.jsonis version 0.56.0 and lists nine;lexicons/github/dist/manifest.jsonis dated Aug 25 at version 0.46.0 and lists one where the committed twin says nineteen. CI runs prepack fresh, so what those pages should say is not knowable from here, and writing a locally regenerated number would swap one wrong value for another. They need a fresh prepack and their own PR, the way ffb1bd6 handled #1980. Filed as #2199.Acceptance
docs/pages/steward.mdx:103,docs/pages/composites.mdx:71,src/skills/chant-fountain-ops.md:78.crd-classes.mdx:424andflux-composites.mdx:94are in this commit; the new slug follows the same slugifier rule the existing#the-accepted-baseline---update-baselinelink demonstrates.scheduleon the Op, quoting the shapereplay-op.ts:238builds.taskQueuerows and completion are gone and the name row no longer mentions a task queue or signal suffix.rg -n "taskQueue|task queue" lexicons/terraformnow returns only the two tests that assert the field's absence.src/op/activities/wait-for-ready.ts:274,argo.ts:39,116andkubectl.ts:61described the same non-existent protocol in passing and were corrected too. Whatrg -in "heartbeat" lexicons --glob '!**/dist/**' --glob '!**/generated/**'still finds is code rather than a promise: thesafeHeartbeatcall sites and theirsetIntervalloops, including terraform'swithHeartbeatwrapper, all of which sweep: search-attribute and workflow vocabulary, safeHeartbeat and its forty callers, and the other dead code #2116 left #2195 deletes; fountain's SSE keep-alive comments, which are a real fountain protocol; and the cedarread_heartbeat_since_login_30sexample policy name.npm run docs, and each twin's diff mirrors its source's. Six further twins are stale on main; regenerating them here would have written numbers from a stale localdist/manifest.json, so they are left alone and filed as docs: six lexicon doc twins are stale on main; regenerate them from a fresh prepack #2199.Remaining
temporalhitsrg -in "temporal" lexicons --glob '!**/generated/**' --glob '!**/dist/**' --glob '!**/node_modules/**' --glob '!lexicons/cedar/**', with why each stays:lexicons/fountain/docs/pages/profiles.mdx:7,43,76and its twin at:11,47,80. Owned by core+fountain: chant approve drops --approver, approve --on fountain never re-applies, --profile does not exist, and four more behaviour leftovers from #2116 #2192 with the--profileflag itself.lexicons/fountain/src/lint/post-synth/ftn020-schedule-cron-syntax.ts:19, TMP010 provenance for the inlined cron check. Not on this issue's list; the rule-id sweep is sweep: search-attribute and workflow vocabulary, safeHeartbeat and its forty callers, and the other dead code #2116 left #2195's.lexicons/{aws,azure,gcp,k3d,k3s}/src/op/builders.ts:4(andaws:6), the barrel justification. Explicitly sweep: search-attribute and workflow vocabulary, safeHeartbeat and its forty callers, and the other dead code #2116 left #2195's.lexicons/azure/src/deep-observe.ts:342, "AWS's or temporal's readers". azure is outside this issue's lexicon list; same class as the k8s ones, for sweep: search-attribute and workflow vocabulary, safeHeartbeat and its forty callers, and the other dead code #2116 left #2195's sweep.lexicons/{github,gitlab}/src/components/generate-pipeline.test.tsandgenerate-op-pipeline.test.ts,--temporalas the sample run command. Named in the epic as its own item; the bridge flag stays until 0.58.0.lexicons/aws/src/codegen/docs.ts:117andlexicons/aws/src/op/activities/aws-apply.ts:262, provenance notes about where something used to live. Not on this issue's list.lexicons/aws/src/agentcore/trace-fetch.ts:46,196,208,418,trace-fetch.test.ts:70,trace-render.test.ts:235. "Temporal window" and "temporal predicate" in the Cedar sense: domain vocabulary, not the runtime.lexicons/k8s/src/composites/operator-stack.ts:10,33. Line 10 quotes issue chant operator: native durable ticks without Temporal #1485's title verbatim; the file is core+fountain: chant approve drops --approver, approve --on fountain never re-applies, --profile does not exist, and four more behaviour leftovers from #2116 #2192's and sweep: search-attribute and workflow vocabulary, safeHeartbeat and its forty callers, and the other dead code #2116 left #2195's.lexicons/k8s/src/lint/post-synth/wk8301.ts:8andpost-synth.test.ts:942, "a queue/Temporal worker" as an example of a container with no port. A workload example, deliberately kept.Gates
All run from the worktree root.
npx vitest run lexicons/fountain lexicons/k8s lexicons/cedar lexicons/github lexicons/gitlab lexicons/terraform lexicons/helm lexicons/k3d lexicons/k3s lexicons/aws: 572 files passed, 2 skipped; 7447 tests passed, 29 skipped.npx vitest run packages lexicons: 1174 files passed, 3 skipped; 15674 tests passed, 30 skipped. An earlier run of this suite concurrently with the targeted one reported 9 failures, all of them 20s timeouts or SIGTERM inpackages/core/src/cli/{component-,}security-boundary.test.ts,op/discover.test.ts,cli/mcp/server.test.tsandcli/commands/audit.test.ts; every one passes in isolation and in the uncontended full run, so they are load flakes rather than regressions.npx tsc --noEmit: clean.npx tsx scripts/typecheck.ts: 37 known failures, no regressions (37 baselined).npx tsx scripts/check-lexicons.ts: every lexicon 23/23 tier-1 checks passing, no untracked tier-1 failures.node scripts/lint-docs-sentences.mjs: 4111 gated findings, no regressions.node scripts/check-docs-diataxis.mjs: no failures (21 tutorial, 52 how-to, 58 reference, 34 explanation).🤖 Generated with Claude Code
https://claude.ai/code/session_0148a4dPTErCBpmNy7J7933f