Skip to content

train b42 integration gate (do not merge) - #434

Closed
roodboi wants to merge 5 commits into
nextfrom
train/b42
Closed

roodboi wants to merge 5 commits into
nextfrom
train/b42

Conversation

@roodboi

@roodboi roodboi commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Integration gate for merge batch b42: origin/next + #427 (HACK-1371) + #426 (HACK-1372). Tree d86d2c17. Closed after the batch squashes.

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

roodboi and others added 5 commits October 22, 2026 15:55
…-size follow-ups

- Interactive `hack init` that overwrites an existing scaffold now prints the
  fixed read-only warning (as doctor and env writes do) instead of silently
  leaving an outdated 0444 `.hack/.gitignore`.
- A `.hack/.gitignore` with no write permission bit is read-only for every
  user, root included; access(2) decides only when a write bit is set. An
  injectable write probe models root in tests.
- Document that the doctor git probe asks the project root, so a non-git
  root whose .hack links into another repository is skipped (writes still
  refused); pin it with a test.
- Test the legacy hack.env.json E_ENV_TOO_LARGE preflight and adoption of a
  generation saved with per-service Compose env references.
- Document precisely that the shared/own reference guard compares values and
  can disclose that a service's value differs from global, and pin that it
  never fires for one resolution.

Refs HACK-1372

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t commands

Follow-ups to #394 (HACK-1371).

- branch, config get/set, env, host, project owner and tui now raise the
  shared MissingProjectContextError (E_PROJECT_NOT_FOUND) for a path without a
  project. branch, config and project owner printed a stack trace (and
  project owner reported E_UNEXPECTED under --json); env and host reported
  E_USAGE.
- docs/cli.md lists the commands and the exceptions, and
  tests/missing-project-error-code.test.ts pins every command that declares
  --path.
- Native run: the empty --env/--profile check now runs before authored
  dispatch, so an authored project refuses it with E_USAGE, not
  E_NATIVE_PROJECT_UNSUPPORTED.
- Pin that a profile list with a real entry ("web,") is compared, not refused
  as empty, which kills the .every -> .some mutant.
- Document that a short spelling only another command declares is refused as
  an unknown option, and record that difference from the old parser with the
  #370 notes.

Refs HACK-1371

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…red project

The previous commit moved the empty --env/--profile check ahead of authored
dispatch, so `run --profile ""` on an authored native project is refused with
E_USAGE before dispatch. The source CLI run table in
tests/native-authored-project-oneoff.test.ts still expected
E_NATIVE_PROJECT_UNSUPPORTED for that row, and its failure set the file's
uncertainty latch, which failed four later tests in hosted CI.

Give each row its expected refusal: the empty profile row expects the
E_USAGE empty-selection line, and the --profile dev and --env base rows keep
E_NATIVE_PROJECT_UNSUPPORTED. No row starts the runtime.

Refs HACK-1371

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@roodboi roodboi closed this Oct 23, 2026
@roodboi
roodboi deleted the train/b42 branch October 23, 2026 01:24
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