Repository navigation
The devhost records of 2026-10-16 (stacked on the Features PR) - #13
Merged
Merged
Conversation
An error occurred while trying to automatically change base from
features/devhost-and-git-fixes
to
main
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>
…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
force-pushed
the
devhost/true-up-records
branch
from
October 19, 2026 15:31
ad83337 to
8a10409
Compare
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.
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
mainand retargeted..claude/skills and hooks,.devhost/, PROCESS.md, LEXICON.md, TODO.md, the ledger, ADRs 0001–0004.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
Signed-off-by:, DCO)versionbumped: n/a, no Feature code beyond the stacked PRtask lintpasses;devhost-verifypasses🤖 Generated with Claude Code