Skip to content

The devhost records of 2026-10-16 (stacked on the Features PR) - #13

Merged
nabil-becker merged 35 commits into
mainfrom
devhost/true-up-records
Oct 19, 2026
Merged

nabil-becker merged 35 commits into
mainfrom
devhost/true-up-records

Conversation

@nabil-becker

Copy link
Copy Markdown
Owner

What

The way-of-working records and docs of 2026-10-16. Stacked on the Features PR: review that one first. After it squash-merges, this branch is rebased onto main and retargeted.

  • The devhost scaffolding for this repo: .claude/ skills and hooks, .devhost/, PROCESS.md, LEXICON.md, TODO.md, the ledger, ADRs 0001–0004.
  • The repo true-up (devcontainer on its own Features by local path, bootstrap moves); the README, CONTRIBUTING, Taskfile and lint parts of the devhost.
  • Backlog items get descriptive slug ids.
  • The first ledger review.
  • The night shift of 2026-10-16: plan, report, reviewed and kept. It produced the proposals (King Arthur theme, accepted as a layer; journalist back, accepted in plain words; personalization, open) and the "Adding a Feature" checklist.
  • The journal's first hand-run piece (a trial; replaced by a plain one when the journalist back is built).

Why

The devhost Features are only useful if the repo runs on them and keeps its records. This lands them, so the briefing, the guards and the ledger review work on main.

Checklist

  • Every commit is signed off (Signed-off-by:, DCO)
  • version bumped: n/a, no Feature code beyond the stacked PR
  • task lint passes; devhost-verify passes

🤖 Generated with Claude Code

Base automatically changed from features/devhost-and-git-fixes to main October 19, 2026 15:20
An error occurred while trying to automatically change base from features/devhost-and-git-fixes to main October 19, 2026 15:20
nabil-becker and others added 28 commits October 19, 2026 15:20
…st tasks fixed

Two consumer repos had to wrap this collection to get what they needed;
this change folds those wrappers back in and sets the ecosystem rules.

Features
- claude-code: augments the official Anthropic Feature when present
  (install: auto/native/none), ships claude-host (resume one session by
  UUID via HOST_SESSION), owns CLAUDE_CONFIG_DIR in a named volume with
  a post-create hook. Fixes a set -u trap bug in the native installer.
- git (new): worktree-aware wrapper that scopes GIT_DIR/GIT_WORK_TREE to
  the checkout (nested worktrees, temp folders, init/clone), post-create
  safe.directory and core.hooksPath, GIT_CONFIG_GLOBAL in a volume.
- gh (new): verified release install when absent, GH_CONFIG_DIR volume,
  git credential helper from gh.
- az (new): augments the official azure-cli Feature, AZURE_CONFIG_DIR
  volume, bicep from PATH.
- common (new): dcf-persist, the shared helper behind every hook;
  vendored into the Features that use it, checked identical by lint.
- coder-cli, argocd: own their login state the same way.
- devcontainer-cli: --docker-path only for subcommands that take it.

Host side (bootstrap)
- devcontainer.yml: the Task 3.45 include env: bug fixed, so .env values
  reach the tasks (no dc:* passthrough needed; dc is an include alias);
  new pwsh, claude and homes tasks; in-container runs branch in the
  template because per-command if: is ignored.
- devcontainer:homes (pwsh + bash twins) creates host folders for repos
  that bind-mount a Feature's state target to the host disk.
- env_mnt removed everywhere: the checkout is the only thing on disk.

Docs: README "How the pieces fit" (the paradigm), CONTRIBUTING
conventions for augmentations, state ownership, vendored helpers and
Taskfile pitfalls. CI matrices and the global scenario cover the new
Features.

Co-Authored-By: Claude Fable 5.1 <claude-fable-5-1@noreply.invalid>
Claude-Session: https://claude.ai/code/session_01FBCVdVNMWSkF3PKnDH1UFN
Signed-off-by: Nabil Becker <nabil.becker@live.com>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
- .devcontainer/devcontainer.json references every src/<id> Feature as
  ./features/<id>; `task features:stage` copies them there (gitignored)
  as initializeCommand, so unreleased changes are what runs here. The
  checkout's git dir (outside OneDrive) is bind-mounted the way the
  consumer repos do it, with the git Feature's wrapper scoping GIT_DIR.
- Host paths in every example use ${localEnv:USERPROFILE} only: on this
  Windows host both USERPROFILE and HOME are set, so concatenating the
  two doubled the path and failed the first start.
- gh-setup makes the global git config folder usable itself (dcf-persist)
  instead of relying on the git hook having run first; installsAfter may
  only name published Features (documented in CONTRIBUTING).
- post-create.sh reports what the Features set up instead of redoing it.

Co-Authored-By: Claude Fable 5.1 <claude-fable-5-1@noreply.invalid>
Claude-Session: https://claude.ai/code/session_01FBCVdVNMWSkF3PKnDH1UFN
Signed-off-by: Nabil Becker <nabil.becker@live.com>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
…trapped with it

The devhost Feature ports the housekeeping of the consumer repos into one
installable piece: devhost-run-job with the scribe, secretary, librarian
and tester backs (hook-driven, quiet notices, stakes, guards that undo a
rewrite), devhost-briefing at session start, devhost-costs and the monthly
cost report, devhost-adr, devhost-verify (ledger append-only and shape,
secrets, forbidden words and redacted names, ADR shape, task descriptions,
skill frontmatter) and devhost-init, which scaffolds a repo with LEXICON,
PROCESS, TODO, the ledger and ADR folders, the four skills, the hook block
and a CLAUDE.md include. Job state lives in the Feature's volume; every
path and model is a DEVHOST_* / <JOB>_MODEL setting; no person is named,
the person is "the Operator". Verified on Debian with a stub claude, and
by 35 stdlib unit tests that now run in `task lint` and CI.

This repository adopts it: devhost in its own devcontainer, the scaffold
run inside it, CLAUDE.md written for the collection, the pre-commit guard,
and a seeded TODO.md with what is next (merge or split PR #10, release,
first sign-in and first back runs, consumers' adoption).

Co-Authored-By: Claude Fable 5.1 <claude-fable-5-1@noreply.invalid>
Claude-Session: https://claude.ai/code/session_01FBCVdVNMWSkF3PKnDH1UFN
Signed-off-by: Nabil Becker <nabil.becker@live.com>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
Co-Authored-By: Claude Fable 5.1 <claude-fable-5-1@noreply.invalid>
Claude-Session: https://claude.ai/code/session_01FBCVdVNMWSkF3PKnDH1UFN
Signed-off-by: Nabil Becker <nabil.becker@live.com>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
.githooks/pre-commit was committed as mode 100644 (core.fileMode=false on
Windows hid it), so git never ran it on Linux.

Co-Authored-By: Claude Sonnet 5.5 <claude-sonnet-5-5@noreply.invalid>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
…files

The engineer handle is DEVHOST_ENGINEER as a slug, else operator; it is no
longer derived from the git user name, since it is committed. .gitignore
gains .env, .env.* and !.env.example, and verify.py refuses tracked .env
files (with a test). devhost 1.0.2.

Co-Authored-By: Claude Sonnet 5.5 <claude-sonnet-5-5@noreply.invalid>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
CONTRIBUTING.md notes that it is refreshed with devcontainer upgrade when a
registry Feature is bumped.

Co-Authored-By: Claude Sonnet 5.5 <claude-sonnet-5-5@noreply.invalid>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
…disk block (workstation-feature-tests, bootstrap-host-disk-docs)

Co-Authored-By: Claude Haiku 4.5 <claude-haiku-4-5@noreply.invalid>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
The secretary picks a two-to-four-word kebab-case slug naming the item, unique in the file, never reused, never renamed, instead of the next TD-nn number. Template, brief, night-shift report shape, NOTES and tests follow; the devhost Feature goes to 1.1.0.

Co-Authored-By: Claude Sonnet 5.5 <claude-sonnet-5-5@noreply.invalid>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
Re-add what the Features split trimmed: the features:stage task, the
bootstrap/host shellcheck glob, the .devcontainer/features and
redact-names ignores, and the README/CONTRIBUTING text on the host-side
tooling, the lock file and the devcontainer.yml rules.

Co-Authored-By: Claude Sonnet 5.5 <claude-sonnet-5-5@noreply.invalid>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
…0003)

The day's ledger with its correcting entries, TODO.md on slug ids
(was TD-nn kept for traceability), lexicon terms backlog id and amend
item, ADRs on the agent git identity, unclaimable co-author addresses and
amend items, CLAUDE.md's agent commit rule, and the devhost instructions
refreshed from the Feature template.

Co-Authored-By: Claude Opus 5.5 <claude-opus-5-5@noreply.invalid>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
The scribe's and secretary's final entries of 2026-10-16, written after
the records commit (the safe-shutdown trial's first finding).

Co-Authored-By: Claude Opus 5.5 <claude-opus-5-5@noreply.invalid>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
21 entries, $27.74 baseline. Eight groups: bot-git-identity moved to
Now; hook-mode-guard, new-feature-checklist, tester-skip-without-docker
and back-briefs-tidy added; the backs pipeline and the guards already
fixed; no model moved. Seven finished items ticked.

Co-Authored-By: Claude Opus 5.5 <claude-opus-5-5@noreply.invalid>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
…etary race

Co-Authored-By: Claude Opus 5.5 <claude-opus-5-5@noreply.invalid>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
Co-Authored-By: Claude Sonnet 5.5 <claude-sonnet-5-5@noreply.invalid>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
Co-Authored-By: Claude Sonnet 5.5 <claude-sonnet-5-5@noreply.invalid>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
Co-Authored-By: Claude Sonnet 5.5 <claude-sonnet-5-5@noreply.invalid>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
Co-Authored-By: Claude Sonnet 5.5 <claude-sonnet-5-5@noreply.invalid>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
8 of 8 items done (5 built, 3 proposals), about $9.5 of the $100 cap;
the Haiku con's ledger entry corrected; the backs' entries and ticks.

Co-Authored-By: Claude Opus 5.5 <claude-opus-5-5@noreply.invalid>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
Ten names as a voice over the plain words (option A, trimmed); the bard
speaks first, as a hand-run trial of the journalist back.

Co-Authored-By: Claude Opus 5.5 <claude-opus-5-5@noreply.invalid>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
Co-Authored-By: Claude Sonnet 5.5 <claude-sonnet-5-5@noreply.invalid>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
Co-Authored-By: Claude Opus 5.5 <claude-opus-5-5@noreply.invalid>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
… the Arthurian voice (journalist-back-adoption)

The Operator: the journal is part of the project's iterations, so it is written plainly. ADR 0004, the lexicon layer, the journal README and the proposal statuses updated; a correcting ledger entry for the rebase unit.

Co-Authored-By: Claude Opus 5.5 <claude-opus-5-5@noreply.invalid>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
Co-Authored-By: Claude Opus 5.5 <claude-opus-5-5@noreply.invalid>

Claude-Session: https://claude.ai/code/session_018RdTPBTYGqBZzNWf3yzR8y
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
Co-Authored-By: Claude Opus 5.5 <claude-opus-5-5@noreply.invalid>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
…tures docs items

Co-Authored-By: Claude Opus 5.5 <claude-opus-5-5@noreply.invalid>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
…on of the Agentic Delivery OS (iterations)

docs/iterations.md states the goal so it is not re-told: each iteration ends in a white paper, in plain words, written by the journalist back when the Operator calls it; the white papers feed a final one. CLAUDE.md points to it.

Co-Authored-By: Claude Opus 5.5 <claude-opus-5-5@noreply.invalid>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
…e-principles, agent-principles, feature-conformance)

Co-Authored-By: Claude Opus 5.5 <claude-opus-5-5@noreply.invalid>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
devhost agent and others added 7 commits October 19, 2026 15:20
…ure-principles, agent-principles)

Drafted by two Sonnet cons from the repository's own rules and the 2026-10-16 records; for the Operator to decide. Also the backs' records: lexicon terms for the Agentic Delivery OS, iteration and white paper.

Co-Authored-By: Claude Sonnet 5.5 <claude-sonnet-5-5@noreply.invalid>

Co-Authored-By: Claude Opus 5.5 <claude-opus-5-5@noreply.invalid>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
…d 0007 (iteration-package, agent-principles, publish-docs-artifacts)

- docs/proposals/iteration-package.md: the seed; papers kept, foundation
  merged, never nested; honest accounts; the life theme; no true-up.
- AP-14 script-agent-ladder in the agent principles.
- ADR-0006 (docs site built by a script, hosting a swappable skill) and
  ADR-0007 (the life theme, a shared layer); lexicon terms and the life layer.
- Backlog: duplicate ledger idea merged with the Operator's caveat; the
  setup export ticked. Ledger: the stretch's entries and a correction.

Co-Authored-By: Claude Opus 5.5 <claude-opus-5-5@noreply.invalid>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
…iteration-package)

The Operator accepted docs/proposals/iteration-package.md on 2026-10-16,
with its proposed location (docs/iterations/package/) and format (Markdown
with front matter). ADR 0008 records the flow and the honest-accounts rules.

Co-Authored-By: Claude Opus 5.5 <claude-opus-5-5@noreply.invalid>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
…(ontology-guard)

Co-Authored-By: Claude Sonnet 5.5 <claude-sonnet-5-5@noreply.invalid>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
The model guard's first catch: the librarian added both terms to LEXICON.md before the model existed on the branch.

Co-Authored-By: Claude Opus 5.5 <claude-opus-5-5@noreply.invalid>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
…rder-backlog-features-center)

The product row first (engineer, consuming repo, devcontainer, Features,
registry), the build row below; the release node declared; the Features
marked as the product.

Co-Authored-By: Claude Opus 5.5 <claude-opus-5-5@noreply.invalid>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
Co-Authored-By: Claude Opus 5.5 <claude-opus-5-5@noreply.invalid>
Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
@nabil-becker
nabil-becker force-pushed the devhost/true-up-records branch from ad83337 to 8a10409 Compare October 19, 2026 15:31
@nabil-becker
nabil-becker merged commit 3ab9382 into main Oct 19, 2026
69 checks passed
@nabil-becker
nabil-becker deleted the devhost/true-up-records branch October 19, 2026 16:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant