Commit Graph
14 Commits
Author SHA1 Message Date
bchanot 2fc88304ac feat(gitflow): manual-push mode honoured by the lib, quiet unpushed-guard
`gitflow.autopush false` (human-set git config) now means "nothing is
pushed" end to end, not only in the post-commit/post-merge hooks:

- lib/gitflow.sh: `_gitflow_push_off` is the single reader of
  GITFLOW_NO_PUSH / gitflow.autopush for the lib's push sites; `start`
  and `finish` stop pushing in manual mode. `gitflow_delete` checks out
  the base that contains the branch and drops a lagging upstream before
  `git branch -d` (LRN-161: `-d` judges against the upstream when set).
  Skipped remote deletes say `left in place`; `_gitflow_sync_base`
  replaces the silent `pull --ff-only || true` and warns when a base is
  behind origin and cannot fast-forward.
- hooks/unpushed-guard.sh: manual mode is silent at Stop and gives one
  `ℹ manual push mode:` line at SessionStart counting every local
  branch; an unparseable value is named and treated as auto.
- CLAUDE.global.md: manual-push mode doctrine, "ahead = defect" scoped
  to auto mode.
- Tests: gitflow-test T18m block (T18m0, T18i-T18o, 7 cases),
  unpushed-guard T10-T16.

Follow-ups (TODO.md): run B push-guard hook + settings deny widening +
banner; run C skills that push on their own (/close STEP 5C, …).
Do not enable manual mode on the work machine before B and C land.
2026-10-06 17:49:20 +02:00
bchanot fa67664bac chore(memory): journal — release 2.0.0 cut and tagged 2026-10-06 2026-10-06 16:15:10 +02:00
bchanot 4d81f5a8fc Merge release/2.0.0 into develop 2026-10-06 16:13:13 +02:00
bchanot 9ef66e239b chore(release): 2.0.0 — MIT LICENSE, README License section, Linux note reworded 2026-10-06 16:12:52 +02:00
bchanot b47bba7faf Merge develop into release/2.0.0 2026-10-06 16:07:22 +02:00
bchanot 370f35a5a1 Merge bugfix/macos-portability into develop 2026-10-06 16:06:32 +02:00
bchanot b3f3ae2441 chore(memory): doc-sync deferred items + journal 2026-10-06 2026-10-06 16:00:54 +02:00
bchanot c6fb2e4219 docs: global sync before 2.0.0 — components, slash table, profiles, GSD 3.0.0, migration guide, package-install guard 2026-10-06 16:00:41 +02:00
bchanot a84aaaabbd chore(memory): prune 2026-10-06 — BLK-028 merge, bounded caveman pass on 37 entries 2026-10-06 15:40:26 +02:00
bchanot 6bc7c12bf3 chore(memory): reconcile 2026-10-06 — npm deny items closed, Makefile help re-verified open 2026-10-06 15:24:59 +02:00
bchanot 276fa67c80 chore(memory): BDR-110 + BLK-026/027 + LRN-189/190 + journal — macOS portability bugfix, contract + plan 2026-10-06 15:19:53 +02:00
bchanot e5b6cc5ef4 docs(changelog): macOS portability fix + deferred Linux run under [Unreleased] 2026-10-06 15:19:22 +02:00
bchanot 0efdff0d55 fix(portability): make test green on macOS, GNU-only idioms replaced
The suite and seven libs assumed a GNU userland: `cmd | grep -q` under
pipefail (grep exits at the first match, the producer takes SIGPIPE,
rc 141 → 15 false "merged into" FAILs in gitflow-test), `sed -i` with no
suffix, `wc -l` padding compared as a string, `stat -c`, `touch -d`,
`realpath -m` (gstack-links refusal never fired), bare `timeout` off the
sanitized PATH (design gate READY BUT UNVERIFIED), `grep -oP` (update-all
emptied the plugin list). Thirteen suites were red on this machine.

Portable forms on the native userland of both OS: producer captured out
of the pipeline, `sed -i.bak` in tests and a temp-sibling `sed_profile`
on the user dotfile, `tr -d ' '`, python3 perms, `touch -t`, a
`realpath -m` emulation that refuses `..`, perl `alarm` for the 15 s
bound, `sed -n` token extraction. Regression tests: gstack-links T4b,
doctrine-citers Alphabet/Alpha flip, profile-set-managed T18 (failing CLI
no longer aborts `set`), new portability-census suite over the tracked
shell files. Linux run deferred (see TODO).
2026-10-06 15:10:20 +02:00
bchanot 9d421e4493 chore(release): 2.0.0 — version.txt + CHANGELOG 2026-10-06 12:12:02 +02:00