Skip to content

chore: land the pending REPL commit, backfill the changelog, repair stale doc links - #253

Merged
mrdushidush merged 3 commits into
mainfrom
chore/repo-health-2026-09-05
Sep 5, 2026
Merged

mrdushidush merged 3 commits into
mainfrom
chore/repo-health-2026-09-05

Conversation

@mrdushidush

Copy link
Copy Markdown
Owner

Repo-health pass, prompted by the repo starting to pick up outside traffic. Three commits, in the order they need reading.

1. feat(repl): let piped input carry a multi-line prompt as one turn

This commit is @mrdushidush's, unpushed on local main since 2026-08-08. It is carried here unchanged because branch protection makes a PR the only way it can land. Nothing about it was reviewed or altered.

2. style(repl): rustfmt line_editor.rs

That commit was never formatted, so cargo fmt --all --check fails on it — and rustfmt is a required check, so it could not have merged as it stood. Formatting only.

3. docs: backfill the changelog since v0.17.0 and repair stale doc links

Changelog. 38 of the 39 commits since v0.17.0 never reached CHANGELOG.md. [Unreleased] listed one entry while main had, among others:

  • the --offline proxy leak (is_allowed_host vetted the URL host, but reqwest's auto_sys_proxy still sent the socket to $HTTP_PROXY),
  • three apply_diff bugs that corrupted files while reporting ok: true,
  • write_file overwriting an existing file with no prompt and no preview,
  • /undo silently doing nothing after apply_diff / apply_patch / edit_file,
  • a post-edit check that read a 10s timeout as a pass,
  • the empty-turn cluster.

Backfilled under Security / Added / Fixed / Docs, written from the commit bodies so each entry says what broke, not just what the subject line said.

Links. 16 relative links across tracked markdown pointed at files that had moved, and 404 on github.com today:

file was now
.github/CONTRIBUTING.md docs/*.md (×3) ../docs/*.md
crates/claudette/examples/*.md ../README.md, ../docs/* (×6) ../../../…
CHANGELOG.md history CONTRIBUTING.md, SECURITY.md, CODE_OF_CONDUCT.md, examples/, docs/life_agent.md .github/…, crates/claudette/examples/, docs/archive/…

.github/CONTRIBUTING.md is the one that matters most — it is what a would-be contributor opens first, and all three of its doc links were dead.

Gate

Run locally on 1.98.1, matching CI's dtolnay/rust-toolchain@stable (the local default toolchain had drifted to 1.95 and was quietly a weaker gate than CI):

  • cargo fmt --all --check — pass
  • cargo clippy --all-targets --no-deps -- -D warnings — pass
  • cargo clippy --all-targets --all-features --no-deps -- -D warnings — pass
  • cargo test -p claudette --lib1155 passed, 0 failed, 6 ignored
  • broken-link scan over all 65 tracked markdown files, code fences excluded — 0 broken

No source behaviour changes: commit 1 is @mrdushidush's, commit 2 is whitespace, commit 3 is markdown.

🤖 Generated with Claude Code

https://claude.ai/code/session_01WBTQNHWbko1wpeBrcmL3de

mrdushidush and others added 3 commits September 5, 2026 10:16
Piped input was one line per turn, so a prompt containing newlines
silently became several turns — and worse, a blank line inside it was
skipped by the REPL loop and a line reading `exit` ended the session.
There was no other way in: `Event::Paste` strips newlines out of the
buffer and only fires under raw mode, one-shot carries newlines on argv
but passes `None` for its prompter so it can never show a permission
gate, and no slash command reads a file into a turn.

A piped line reading exactly `<<<CLAUDETTE-PROMPT` now opens a block that
runs as ONE turn when a line reading exactly `CLAUDETTE-PROMPT>>>` closes
it. Line endings inside a block are normalised to `\n`, blank lines are
kept, and an unterminated block is an error rather than a partial prompt:
half a prompt still produces a fluent answer, so it has to be loud.

Interactive input is untouched — raw mode reads key events, not lines, so
it never sees a sentinel. Blocks are kept out of `repl_history`, which is
one entry per line and recalled into a single-line buffer.

The sentinels are hyphenated rather than underscored so `main.rs`'s
doc-drift guard does not read them as an undocumented env var; they are
not one.

Confirmed by running it against qwen3.6-35b-a3b-mtp@iq3_s, not by reading
it: a 6-line body containing a bare `exit` ran as one turn and the model
answered in a format dictated only by the final line, while the same body
without sentinels ran as two turns and then ended the session at `exit`.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The piped-multiline commit landed unformatted, so `cargo fmt --all --check`
failed on it — the rustfmt job is a required check, so the commit could not
have merged as it stood. Formatting only; no behaviour change.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WBTQNHWbko1wpeBrcmL3de
Two pieces of rot that only show up to someone arriving from outside.

CHANGELOG: 38 of the 39 commits since v0.17.0 never reached it. The
`[Unreleased]` section listed one entry (`--research` scope control) while
main had, among others, a proxy-leak fix that defeated `--offline`, three
`apply_diff` bugs that corrupted files while reporting `ok: true`, an
ungated `write_file` overwrite path, `/undo` silently doing nothing after
the three editors, a post-edit check that read a timeout as a pass, and the
empty-turn cluster. Backfilled under Security / Added / Fixed / Docs,
written from the commit bodies so each entry says what broke and what
changed rather than restating the subject line.

Links: 16 relative links across tracked markdown pointed at files that had
moved and now 404 on github.com.

- `.github/CONTRIBUTING.md` kept root-relative `docs/*.md` links after the
  move into `.github/`, so all three resolved to `.github/docs/`. This is
  the file a would-be contributor opens first.
- `crates/claudette/examples/*.md` reached for the repo root as `../`,
  which is `crates/claudette/`. Three levels up, and `docs/life_agent.md`
  is now `docs/archive/life_agent.md`.
- Historical CHANGELOG entries pointing at `CONTRIBUTING.md`, `SECURITY.md`
  and `CODE_OF_CONDUCT.md` (now under `.github/`), `examples/` (now under
  `crates/claudette/`) and `docs/life_agent.md` (now archived).

A scan of all 65 tracked markdown files, code fences excluded, now reports
zero broken relative links.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WBTQNHWbko1wpeBrcmL3de
@mrdushidush
mrdushidush force-pushed the chore/repo-health-2026-09-05 branch from c9c4d2f to c207c20 Compare September 5, 2026 07:16
@mrdushidush
mrdushidush merged commit a9ae6d9 into main Sep 5, 2026
11 checks passed
@mrdushidush
mrdushidush deleted the chore/repo-health-2026-09-05 branch September 5, 2026 07:18
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