Files
cgalo5758 208e10dd9d Replay recorded claim verification and push histories through one replay kit
Add internal/testkit/replay: Run and File replay a package's recorded
Temporal histories against the workflows it registers, and Record writes
them with stand-in activities. TEMPORAL_REPLAY_RECORD names a temporal CLI
binary (the recorder starts a private in-memory dev server from it) or a
running server's host:port; TEMPORAL_REPLAY_ONLY, a file-name prefix,
records the files it names again. FedWiki's replay test moves onto the kit
with its fourteen histories and every subtest name unchanged. Its two
variables FEDWIKI_REPLAY_RECORD and FEDWIKI_REPLAY_ONLY are replaced by
the two above, and its recorder skip message now reads
"TEMPORAL_REPLAY_RECORD not set".

The recorder now writes only the histories that do not exist yet, where
FedWiki's used to rewrite every file; a recorded history stands for runs a
release started, so replacing one takes TEMPORAL_REPLAY_ONLY.

Claim verification gets nine recorded histories (activates, polls,
check-now, expires, probe-error, mark-refused, record-fails, canceled,
rollover) and the push workflow seven (applied, rose, divergent,
conflict-then-applied, permanent, unlinked, gone), each replayed by
TestWorkflowHistoriesReplay in internal/workflows/domains and
internal/workflows/desiredstate. The kit has its own test over a two-step
workflow and a recorded history of it. The 17 histories were recorded at
the parent's code, from a private dev server started from the temporal CLI
(1.5.1); the commands they hold match an earlier independent recording
of the same scenarios, apart from the two clamped timers' durations. No
file names the recording machine or its user.

New tests: the kit's TestTarget, TestRecordsNeverReplaceAHistoryUnasked,
TestRunReplaysARecordedHistory (and its two-steps.json subtest),
TestFileRefusesAChangedWorkflow, TestEndingNamesWhatTheRunDid and
TestRecordTwoSteps (skips); the import guard's subtest for
internal/testkit/replay; TestWorkflowHistoriesReplay with its 9 and 7
subtests and TestRecordReplayHistories (skips) in the two workflow
packages. The kit is listed in docs/testing.md and in the test-only
deadcode list.

No output changes: no production file is edited. At the parent and at this
commit, the names and results of the section's packages are equal apart
from the tests above (FedWiki's 16 results pass or skip as before), the
Temporal surface listings (activities, workflows, workflow bodies, payload
types) are byte-equal, go run . lint prints the same line, the lint
snapshot has no added or removed key, and deadcode and golangci-lint are
clean.

Breaks: 9 breaks, each caught by the new tests; the 2 FedWiki breaks
(a request-driven create and a create started before lifecycle requests
that check the quota first) are caught by the old and the new test.

Not probed: Histories and Run failing a test (no test can watch its own
test fail; every production break above shows Run failing a subtest);
connect, runScenario and write against a server, which run only when
recording (the recording at the parent is their check). A replay cannot
see activity inputs, timer durations, the result, or the ending of a
history that ends canceled or failed; later tests pin those.
2026-10-11 11:50:42 -05:00
..
2026-09-07 21:32:14 -05:00
2026-10-07 01:42:54 -05:00

title, audience, summary
title audience summary
Documentation index
developer
admin
user
Index of member-console documentation, grouped by audience, plus the front-matter convention every doc follows.

Documentation

Every document in this directory carries YAML front matter declaring its audience, so readers can find what's for them and contributors know who they're writing for.

Front-matter convention

Start each doc with a front-matter block:

---
title: "Human-readable title"
audience: [admin, developer]   # one or more of: developer, admin, user (primary first)
summary: "One sentence describing what the doc covers."
---

The three audiences:

  • developer — contributing to or understanding the codebase: architecture, design decisions, dev setup, testing, UX research and conventions, the provider-extension contract.
  • admin — hosting and operating an instance: installing, configuring an identity provider, building the image, generating secrets, running the service.
  • user — the general public or a member using a running service. (None yet — the tag is reserved for member-facing docs.)

List the primary audience first; a doc may name more than one.

For administrators — hosting & operating

For developers — contributing & internals

For users

No member-facing documentation yet.

Where things are not

Research, drafts, audits, walkthrough evidence, and other records of how a decision was reached are not documentation; they stay in a local notebook that git ignores, so a clone never carries them. When a decision lands, whatever a reader still needs is written into this directory, which holds the result without the history. The rule for every kind of file is in status/MAINTAINING.md.