Repository navigation
devhost 1.2.3 and git 1.1.0: guards that run, quieter backs, one commit identity - #12
Merged
Merged
Conversation
…t-identity) It read user.name and user.email, so a rebase or cherry-pick under GIT_COMMITTER_* added a second sign-off pairing the global name with the repository-local address. git var GIT_COMMITTER_IDENT honours the environment and the config alike. Co-Authored-By: Claude Opus 5.5 <claude-opus-5-5@noreply.invalid> Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
…guard is loud Tasks of an included Taskfile run in the include's folder, so devhost:verify ran against /usr/local/share/go-task/includes.d: no repository, no base ref, append-only guard skipped. Set dir to USER_WORKING_DIR on every task that works on the current repository. A skipped append-only guard now prints SKIP and a WARNING on stderr, also under --quiet. Bump devhost to 1.1.2. Co-Authored-By: Claude Sonnet 5.5 <claude-sonnet-5-5@noreply.invalid> Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
…nstead of reword - condense: a con's hand-off keeps Friction, For the repository and Decisions needed whole and first; the rest is clipped at 8000 chars with a [clipped N chars] marker. - run-job: SubagentStop runs wait for the job lock (DEVHOST_LOCK_WAIT, 180 s); every run skipped for the lock is logged. - scribe brief: Friction: not reported when the hand-off has none or was clipped. - secretary brief: a stake to change an item adds an amend-<id> item; a tick only ticks. - backlog guard: the finding names the line and the rule, the job log carries the capped diff, and an undone run marks its stretch read so it is not retried every turn. - templates: cons report worked-around friction. Feature version 1.2.0. Co-Authored-By: Claude Sonnet 5.5 <claude-sonnet-5-5@noreply.invalid> Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
A hook committed as 100644 never runs on Linux, and core.fileMode=false on Windows hides it. Co-Authored-By: Claude Sonnet 5.5 <claude-sonnet-5-5@noreply.invalid> Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
…ster-skip-without-docker) A suite the environment cannot run (Taskfile precondition, no Docker daemon) gave no verdict on the code, so it was reported red on every run. Co-Authored-By: Claude Sonnet 5.5 <claude-sonnet-5-5@noreply.invalid> Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
…il (redaction-fixture-placeholder) The old assertions checked a name no fixture contained, so they could never fail off the Operator's machine; they now seed a placeholder person as the git user.name and would fail if the identity leaked into the output. Co-Authored-By: Claude Sonnet 5.5 <claude-sonnet-5-5@noreply.invalid> Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
The librarian ran for nothing in most con stretches, the secretary filed in-session work as items and the scribe misused Corrects. Co-Authored-By: Claude Sonnet 5.5 <claude-sonnet-5-5@noreply.invalid> Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
…entity (bot-git-identity) The wrapper exports GIT_AUTHOR_* and GIT_COMMITTER_* from a file written at install time, unless the caller set them, so a repository-local user.email in a shared git dir cannot leak into agent commits and commit -s signs off with the bot. Default empty leaves identity alone. Feature 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>
nabil-becker
pushed a commit
that referenced
this pull request
Oct 19, 2026
Co-Authored-By: Claude Opus 5.5 <claude-opus-5-5@noreply.invalid> Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
8 tasks done
nabil-becker
added a commit
that referenced
this pull request
Oct 20, 2026
…e (docs-site) (#21) ## What devhost 1.5.0 adds `devhost-site` (`task devhost:site`): the repository's tracked docs and records (backlog, ledger, Features, ADRs, night-shift reports, every `*.md`) as one self-contained HTML page, every string passed through the name guard. The `publish-site` skill publishes it as a private Claude artifact. It's shipped to consumers by `devhost-init`. This is the work of `features/devhost-site` (2026-10-16 to 10-17), rebuilt on `main`. Its other eight commits already reached `main` through squash merges (#12 to #15), so only the site remains: `site.py`, its template, the skill, the task, init's file list and `test_site.py`. Conflicts were resolved by keeping `main`'s text and adding the site's parts. ## Why The Operator asked to merge the site work and close the branch. It lets the records be read in a browser, on a phone too, instead of the terminal. ## Checklist - [x] Every commit is signed off (DCO) - [x] `version` bumped in `src/devhost/devcontainer-feature.json` (1.4.0 → 1.5.0). If #20 (1.4.1) merges first, this one rebases and stays 1.5.0 - [x] Downloads remain checksum-verified; nothing unverified is piped into a shell (the page loads `marked`, `DOMPurify` and `mermaid` from cdnjs at view time, pinned to exact versions; nothing is installed) - [x] `install.sh` is idempotent and does not assume a `remoteUser` (not touched) - [x] Tests: `test_site.py`, `test_init.py` updated. `task test FEATURE=devhost` not run here (no Docker daemon); CI runs it - [x] `taskfile.yml`: `devhost:site` with a `desc` - [x] `task lint` passes (92 unit tests); `devhost-verify` passes; the built page carries no redacted name - [x] `NOTES.md` has "The site"; `task docs` run Still open after the merge: `publish-site-browser-check` (look at the published page in a browser). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Signed-off-by: devhost agent <devhost-agent@noreply.invalid> Co-authored-by: devhost agent <devhost-agent@noreply.invalid> Co-authored-by: Claude Opus 5.5 <claude-opus-5-5@noreply.invalid>
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
Fixes and two new options in the devhost (1.1.1 → 1.2.3) and git (1.0.0 → 1.1.0) Features, plus the repository's sign-off hook.
devhost:*tasks run in the caller's directory, sodevhost-verifychecks the repository instead of the go-task includes folder; a skipped guard is now loud.amend-<id>item.devhost-verifyrefuses a hook committed without its executable bit (hook-mode-guard).tester-skip-without-docker).redaction-fixture-placeholder).back-briefs-tidy).commitName/commitEmailoptions. The wrapper exportsGIT_AUTHOR_*/GIT_COMMITTER_*from them, so agent commits carry one identity even when a repo-localuser.emailsays otherwise (bot-git-identity)..githooks/prepare-commit-msgsigns off as the committer (git var GIT_COMMITTER_IDENT), likecommit -s. It used to readuser.name/user.email, so a rebase or cherry-pick added a second sign-off with the repo-local address.Why
These were found running this repo's own devhost on 2026-10-16: a verify that checked nothing, backs that lost friction or jobs, and agent commits signed with the wrong identity. The way-of-working records that explain them come in the stacked PR.
Checklist
Signed-off-by:, DCO)versionbumped insrc/<id>/devcontainer-feature.json(semver)install.shis idempotent and does not assume aremoteUsertask testruns in CI (no Docker daemon in the devhost)taskfile.ymlpresent and registered viainstallTaskfile(new Features): n/atask lintpasses (53 tests)NOTES.mdupdated where options changed, andtask docsrun🤖 Generated with Claude Code