Commit Graph
3 Commits
Author SHA1 Message Date
Emma ThorpeandClaude Opus 5 80be10f125 chore(claude): calibrate the Soviet Engineer persona against a reference
CI / flake (push) Skipped
CI / flake (pull_request) Successful in 1m25s
The persona drifted to a neutral status-report register on Opus 5 with
all three enforcement layers active: the output style, the global
CLAUDE.md and the per-turn UserPromptSubmit hook. Each specifies the
register in adjectives, and adjectives do not produce a register.

Record the calibration reference -- the Soviet engineers and scientists
of HBO's Chernobyl and the Soviet characters of For All Mankind -- in the
output style, CLAUDE.md and the memory, with the concrete rules it
implies: lead with the number, state consequence as fact rather than as
warning or joke, correct a soft word with the hard one, say "I do not
know" flatly and then say what would settle it, no wry sign-offs.

Add seven neutral/target pairs so the register is demonstrated rather
than described: reporting finished work, the same under a ticket, a
failure with no root cause, being blocked by a tool's limits, a verdict
against a release in motion, an operation against live infrastructure,
and refusing a bad idea. Subject matter is spread across working contexts
so the voice is not anchored to one repository.

Name the three recurring faults, since the adjective lists failed to
prevent them: writerly prose, a serving register that ends on an offer,
and correctness with no judgement in it. Cutting flourishes and cutting
opinions are opposite moves; the section says so.

Gates required by standing instructions -- showing a PR body before
creating it, confirming before anything outward-facing -- survive the
change in register. Only the phrasing changes.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-01 12:07:56 +01:00
Emma Thorpe 7041dfebfa fix(claude): make the Soviet Engineer style enforce terseness structurally
CI / flake (pull_request) Successful in 1m16s
CI / flake (push) Skipped
The style asked for terseness in tonal terms only, so a dry register wrapped in
headers, tables and a full status recap each turn passed its self-check while
being exactly the verbose output the style exists to prevent.

Add explicit limits: a default length ceiling, headers only for four or more
items, report the delta rather than the accumulated state, and state a caveat
once. Replace the self-check with one that tests length and form rather than
tone.
2026-08-13 13:23:58 +01:00
lyrathorpeandEmma Thorpe 128deca2e3 refactor(flake): user registry, multi-user hosts, and portable home outputs (#49)
CI / flake (push) Successful in 3m26s
## Summary

Separates user identity (data) from the reusable Nix modules and lets a host declare any number of users, replacing the previous one-user-per-host structure. Also restructures the tree and exposes the home config for use off these hosts.

## Changes

- **User registry** (`users/registry.nix`): per-user identity (name, email, groups, authorized + signing keys) as the single source of truth; no user data hardcoded in modules.
- **Multi-user `mkHost`**: a host declares a `users` set keyed by username; per-user identity is injected into each home config via the `identity` module arg.
- **Restructured layout**: `users/`, `home/`, `modules/`, `hosts/`, `lib/` replace the former `lyrathorpe/` and `system/` trees.
- **Portable outputs**: standalone `homeConfigurations."<user>@<system>"` (the portable subset — shell, git, editor, claude) plus an exported `homeModules` for use on machines not managed by this flake, or as an input to other flakes.
- Docs (`README.md`, `home/README.md`) and `.gitignore` updated for the new paths.

## Fixes

- Closes #46 — shared user module authorized one user's SSH key for every account.
- Closes #47 — git committer identity hardcoded as defaults instead of per-user.
- Closes #48 — EDaaS systemd linger hardcoded to a literal username.

## Verification

- `nix flake check` passes: treefmt, deadnix, statix, pre-commit, and evaluation of all NixOS hosts + Darwin + homeConfigurations.
- Derivation-path comparison vs `main`: `lyrathorpe-mbp` and `emmathorpe-edaas` are byte-identical; `lyrathorpe-t400`, `lyrathorpe-macpro31` and `lyrathorpe-rpi5` differ only by de-duplicating a repeated `authorized_keys` entry (confirmed with nix-diff — no other change).
- Standalone `homeConfigurations."lyrathorpe@x86_64-linux".activationPackage` builds.

## Notes

- `emmathorpe` has no personal authorized key yet (it previously inherited Lyra's key via the bug in #46); the registry entry is intentionally empty — add a real key if SSH login as `emmathorpe` is wanted (moot on the WSL host).
- A two-repo (public dotfiles / private systems) split is deferred by design; this internal restructure is the prerequisite for it.

---------

Co-authored-by: Emma Thorpe <emma.thorpe@citrix.com>
Reviewed-on: #49
2026-06-29 13:06:23 +01:00