Commit Graph
144 Commits
Author SHA1 Message Date
Bastien Chanot 1947a21237 fix(model-routing): wave-4 review fixes — forward DEPLOY_HINTS + SKIP_SEO in PACKAGE, realign §7/§8 annex numbering (I1/I2/I3) 2026-07-16 12:12:53 +02:00
Bastien Chanot fe1d60fccb chore(model-routing): wave-4 census + docs + BDR-066 (client-handover doc-gen → sonnet) 2026-07-16 11:56:54 +02:00
Bastien Chanot bed695a6c6 chore(model-routing): wave-3 census + docs + BDR-066 update (bugfix/code-clean split) 2026-07-16 10:34:12 +02:00
Bastien Chanot bc8eede090 chore(model-routing): wave-2 census + docs + BDR-066 update 2026-07-15 21:49:34 +02:00
Bastien Chanot 2ad712cfd4 chore(memory): BDR-066 model routing + journal + TODO follow-ups 2026-07-15 12:01:14 +02:00
Bastien Chanot 8d70fcb15c chore(memory): BDR-065 + LRN-124 — post-merge capitalize (transient artifacts, scan-report leak-map) 2026-07-14 18:46:43 +02:00
Bastien Chanot 30d6b031b4 chore(memory): BDR-064 + LRN-122 + LRN-123 — ship-feature claude-global-md-rename 2026-07-14 17:06:29 +02:00
Bastien Chanot 0cedbc7b3a chore(memory): LRN-121 shell allowlist validation (grep -Eq fragile → whole-string POSIX case) + seo-account-mgmt journal + contract 2026-07-10 12:48:54 +02:00
Bastien Chanot 504f6f2242 chore(memory): BDR-063 + LRN-119/120 — GSC+CrUX data layer (OAuth token store, fail-open engine contract, SDD merge-base gotcha) 2026-07-10 03:04:17 +02:00
Bastien Chanot 8397354caa chore(memory): backmerge — LRN-117 fork orphans code + consolidated B journal + backlog 2026-07-08 17:22:52 +02:00
Bastien Chanot cc4f161df7 chore(memory): capitalize review remediation — LRN-113/114/115/116, EVAL-021/022, journal
LRN-113 partial-fix+guard (structural fil rouge), LRN-114 hook-generator drift,
LRN-115 analyzer report-grants not dead (FP1, don't re-flag), LRN-116 release fix
missing from develop. EVAL-021 the review, EVAL-022 M5 pins trace. Journal
2026-07-08 remediation line. (BDR-062 committed with A6.)
2026-07-08 16:05:49 +02:00
Bastien Chanot aa73793b90 chore(memory): job9 — commit-changer trailer fix + J4-16 cross-check follow-up 2026-07-08 13:10:10 +02:00
Bastien Chanot f667780156 chore(memory): job9 — BDR-060 version floor, BDR-061 path-b, LRN-112 nesting, journal + TODO 2026-07-08 12:43:39 +02:00
Bastien Chanot 5822869056 chore(memory): job8 capitalize — journal + TODO follow-ups
Session log for job8 (A/B/C/D execution, 3 Bash permission denials
worked around mid-C, smoke gate confirmed by user). TODO tracks the
2 open residuals: C/D single-pass re-audit next cycle, MAGIC_API_KEY
rotation still pending (job7 residual, unrelated to job8's own scope).
2026-07-07 23:58:50 +02:00
Bastien Chanot eade4e603e job7 capitalize: BDR-057, BDR-026 update, LRN-108, journal
BDR-057: secrets by reference not by value; redact at capture, not just at
rest. Documents the two-part job7 posture (MCP ${VAR} expansion + rtk-rewrite
env-dump redaction) and flags the unreconciled contradiction with job6's
same-day (wrong) finding that ${VAR} expansion was unsupported at user scope.

BDR-026 updated: the backup-vector incident (2026-07-02) is closed at the
source rather than by repeated scrubbing — every native auto-backup taken
while the live file held the plaintext value was a fresh leak, so scrubbing
existing backups alone would have recurred forever.

LRN-108: `claude mcp add --env KEY=value` writes the value literally —
double- vs single-quoting around `${VAR}` is the entire difference between
a reference and a plaintext-forever config. The natural way to type the
flag (bash-expand it first) is exactly the trap.

Also refreshed .audit/scan-secrets-claude-home.json to the post-purge state
(15 residual hits, down from 18 pre-D).
2026-07-07 12:58:51 +02:00
Bastien Chanot 563fbd5422 job6: capitalize — BDR-056, LRN-107, EVAL-020, journal
BDR-056: deps policy reversal — latest gated by integration, not
KEEP-PINNED by default (job6-batch-3 override, gstack #1911 case).
LRN-107: read-only subagent mandates must ban copying secret VALUES,
not just mutations (job6's own MAGIC_API_KEY scratch-copy incident).
EVAL-020: job6 execution quality — 2 real STOP gates hit and resolved
live (graphifyy hook rewrite declined, gsd-pi format break patched).
2026-07-07 04:07:07 +02:00
Bastien Chanot bb5fb0cf5c job4: capitalize execution — EVAL-019 + LRN-106 + journal
EVAL-019: job4 test-gap audit + execution summary (11 specs, 5 fixes/
seams, every mutation red-green verified, zero residual, /tmp-exhaustion
incident + recovery, SPEC-06 checkpoint honesty, J4-22 caller-census
flag).

LRN-106: fixing B1 in one file != closing the B1 pattern. job3-B1
froze a fixture + repointed run-reconcile.sh's T2 off the live
registry, declared unblocked, 20/20 green — job4's very next audit
pass found T3/T5 in the SAME FILE still reading the live registry,
same fragility, untouched siblings. Now actually closed (SPEC-10).

journal: 2026-07-06 (cont. 2) entry.
2026-07-06 21:59:58 +02:00
Bastien Chanot 64f2e59a36 job3: capitalize B1 resolution — journal follow-up (sentinel authorized, suite 20/20) 2026-07-06 17:36:33 +02:00
Bastien Chanot 2028023359 job3: capitalize execution — EVAL-018 + LRN-105 + journal close
EVAL-018: job3 shipped, 46/46 findings verified, 20/23 fixes applied
(B1 blocked on sentinel scope, D2-D5+B6 skipped by decision), zero
residual on final re-sweep. LRN-105: explorer subagents need an
explicit ban on executing the subject-under-test's own CLI, not just
"read-only" framing (caught mid-run: a subagent ran `graphify .`).
2026-07-06 17:19:53 +02:00
Bastien Chanot e737f41355 job2 tail: capitalize BDR-053 (ctx7 single surface) + journal close 2026-07-06 12:40:46 +02:00
Bastien Chanot 2ea21c25ba job2: capitalize execution — LRN-104 (oracle contract + no-runner) + journal 2026-07-06 12:34:03 +02:00
Bastien Chanot 0e7f171405 job2: capitalize — journal 2026-07-06 + EVAL-017 (audit shipped, verify-pass anomalies) 2026-07-06 12:09:30 +02:00
Bastien Chanot adf64dfd9d chore(memory): LRN-102 — deliverable text before a tool call may never render + journal 2026-07-05 20:19:13 +02:00
Bastien Chanot 7d566da776 chore(memory): EVAL-016 /deploy first real run + journal — tour→prod closed, skill UX patch 2026-07-05 15:32:16 +02:00
Bastien Chanot 16037acefd chore(memory): BDR-052 branch-as-gate + LRN-099/100 + EVAL-014 + journal — /tour TDD capitalized 2026-07-05 12:53:08 +02:00
Bastien ChanotandClaude Opus 4.8 599d7ddadb chore(memory): LRN-097 blog-pattern-vs-real-feature + journal 2026-07-04
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XpphkdTosUzokBDNG7PToS
2026-07-04 13:48:46 +02:00
Bastien ChanotandClaude Opus 4.8 b99ace29c0 chore(memory): BDR-051 enrich-at-gate + LRN-096 flip-test-guards + journal lot 5 (chantier complete)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XpphkdTosUzokBDNG7PToS
2026-07-04 04:52:55 +02:00
Bastien ChanotandClaude Opus 4.8 65edf8c1ba chore(memory): BDR-050 universal pipeline + LRN-095 orthogonal gates + journal lot 4
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XpphkdTosUzokBDNG7PToS
2026-07-04 04:38:45 +02:00
Bastien Chanot 5aa4216409 Merge branch 'feature/security-auditor' into feature/verify-loops
# Conflicts:
#	.claude/memory/journal.md
2026-07-03 20:35:07 +02:00
Bastien Chanot 324bb7b4b1 Merge branch 'feature/contract-verifier' into feature/verify-loops
# Conflicts:
#	.claude/memory/decisions.md
#	.claude/memory/journal.md
#	.claude/memory/learnings.md
2026-07-03 20:34:00 +02:00
Bastien ChanotandClaude Opus 4.8 938a908857 chore(memory): journal lot 3 — security-auditor shipped; LRN-094/BDR-048-addendum deferred to integration
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XpphkdTosUzokBDNG7PToS
2026-07-03 19:52:47 +02:00
Bastien ChanotandClaude Opus 4.8 d682705f34 chore(memory): BDR-049 verifier doctrine + LRN-093 vacuous grep lock + journal 2026-07-03
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XpphkdTosUzokBDNG7PToS
2026-07-03 18:53:54 +02:00
Bastien ChanotandClaude Opus 4.8 c6a7c1f7d9 chore(memory): BDR-048 pinned-gate doctrine + LRN-092 SAST smoke-test + journal 2026-07-03
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XpphkdTosUzokBDNG7PToS
2026-07-03 18:40:07 +02:00
Bastien ChanotandClaude Opus 4.8 dfb79e7a88 chore(memory): LRN-091 banner-blindness (corrob LRN-047) + journal 2026-07-03
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XpphkdTosUzokBDNG7PToS
2026-07-03 15:52:37 +02:00
Bastien ChanotandClaude Opus 4.8 415cde5f56 chore(memory): BDR-047 corrob (Opus 4.8 re-audit) + LRN-090 + journal 2026-07-03
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XpphkdTosUzokBDNG7PToS
2026-07-03 15:29:20 +02:00
Bastien ChanotandClaude Opus 4.8 4e7f6b0951 chore(memory): BLK-015 + LRN-089 + LRN-047 corrob + journal 2026-07-03
gitflow_finish arg-guard bugfix + 3 doctor false-warns. BLK-015 (finish
ignored args → merged current branch), LRN-089 (pass-through wrapper
deriving target from ambient state = silent contract violation), LRN-047
corroborated (doctor false-warns), TODO items closed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XpphkdTosUzokBDNG7PToS
2026-07-03 14:03:12 +02:00
Bastien ChanotandClaude Fable 5 85a5f4b53d chore(memory): LRN-087 + LRN-088 + LRN-077 corrob + BDR-026 incident + journal 2026-07-02
Audit session capitalization: presence-flag ≠ capability (rtk),
token verbosity-beats-cardinality, T6c transient-state green,
copies-of-secrets incident (magic key rotated).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016zA3Qh2Q1QpcGXzXxKeDHR
2026-07-02 14:38:57 +02:00
Bastien ChanotandClaude Opus 4.8 90dc7d854d chore(memory): capitalize reconcile session + (a) npm-guard fix
Session capture for the /reconcile pass + the BLK-013 fix-forward build:

- journal 2026-07-01: reconcile real-state (1 actionable / 3 upstream /
  3 deferred / release live), (c) TODO drift, (a) npm guard built.
- BLK-013: append Update — fix-forward now BUILT (1f2c1cc); was
  "script hardening NOT built". Now fully resolved (env + script).
- BLK-014 + BDR-046: append Update — MERGED 2393ca5, supersedes the
  stale "pending merge". Records that BDR-046 already settled the
  "canal d'install" question (native installer, no `elif npm` branch).

Append-only (Update blocks, last-block-wins) — no past entry rewritten;
verified reconcile_blk_open now returns only the true upstream trio.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VeBXkDr74N9whdiJyjzyVN
2026-07-01 21:18:16 +02:00
Bastien ChanotandClaude 020737de57 chore(memory): BDR-046 — Claude Code via official native installer, drop npm
Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-01 20:14:56 +02:00
Bastien ChanotandClaude 01f9ebb57b chore(memory): BLK-014 + LRN-085 — install.sh idempotent claude install/update
Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-01 16:10:59 +02:00
Bastien ChanotandClaude Opus 4.8 8f001ec868 chore(memory): BDR-045 + LRN-084 + LRN-034 corrob — capitalize gitflow aiguillage-standalone
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RNaYKPEkjH1jbgoX1TwKMX
2026-07-01 14:04:15 +02:00
Bastien ChanotandClaude Opus 4.8 53bd7beee8 chore(memory): BDR-044 + LRN-083 + auto-skill-dispatch won't-build — capitalize
BDR-044: auto-skill-dispatch chantier retired won't-build — 3rd measured moot
of the session (after --help, darwin re-baseline). Cartography showed L1
(superpowers "1%->MUST invoke") already over-determines routing -> reframed
from "does it route" (yes) to DISCERNMENT; risk inverted under->over. Measured
in real fresh sessions (8 prompts/3 classes): clear->route, ambiguous->ask,
trivial->abstain — model discriminates, no over-routing. Adding L2 prose =
phantom value + degradation risk. LRN-083: subagents are an invalid instrument
for measuring main-loop spontaneous routing (SUBAGENT-STOP + delegated framing
pin to the no-route floor) — retired the 0/6 subagent RED. LRN-080 corroborated
(3-in-a-row). TODO -> won't-build. Claude composed all -> trailers (4th
application of LRN-081).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017KWG7sXg94LXX1gddCGBvM
2026-06-30 20:04:30 +02:00
Bastien ChanotandClaude Opus 4.8 c09f2b2630 chore(memory): LRN-082 + TODO(b) moot — capitalize
LRN-082: a trigger-cleared on a multi-motif exclusion lifts only the named
motif. BDR-043 cleared BDR-015's broken-symlink ground (a) but not its
external-ownership ground (b) → the darwin re-baseline is phantom value
(would edit the gstack submodule, LRN-070; results.tsv gone anyway). TODO (b)
resolved-MOOT (not done, not open). Trailers present: Claude composed LRN-082
+ the moot note — LRN-081's own rule, 2nd application.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017KWG7sXg94LXX1gddCGBvM
2026-06-30 18:38:50 +02:00
Bastien ChanotandClaude Opus 4.8 5d348a711f chore(memory): LRN-081 + TODO reconcile — close ritual
LRN-081: Claude commit trailers only on Claude-COMPOSED content; a commit merely staging user-authored text gets none (staging != authorship). TODO reconcile: checked L26 'Cleanup machine courante' DONE (make plugin EXIT=0 this session ran Step 8.5, fs-verified strays absent); added (a) harden install-plugins.sh Step 1 npm-via-corepack (BLK-013 fix-forward) + (b) darwin re-baseline of the 5 ex-broken skills (BDR-043). Trailers present here because Claude composed the LRN + TODO formulations (LRN-081's own rule) — unlike e591510 which staged raw user text.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C6bUdvHnajCNzgVQefZowj
2026-06-30 18:08:12 +02:00
Bastien ChanotandClaude Opus 4.8 5b03ac28a2 chore(memory): BLK-013 + BDR-043 — capitalize (make-plugin npm blocker + BDR-015 darwin re-baseline requalif)
Capitalized from 2 code vérifs (subagents, no-memory) + the make plugin fix:
- BLK-013: make plugin Error 127 — apt `nodejs` ships node WITHOUT npm; Step 1
  checks node>=22 but never npm. Fixed via corepack (npm 11.18.0 → ~/.local/bin,
  prefix ~/.local), EXIT=0, Step 4 ✓, Step 8.5 stray-dir residual cleanup
  (BDR-030/LRN-042) finally ran. Fix-forward: Step 1 should guarantee npm via
  corepack on apt-nodejs hosts.
- BDR-043: BDR-015 trigger cleared — its 5 broken gstack symlinks repaired
  (0 broken / 83 today, gstack now ships those skills); darwin re-baseline
  UNBLOCKED, NOT run. Kept distinct from BLK-007/f928a53 (iOS episode).
- ③ doc-commit branch-guard requalif DROPPED (already graved BDR-040/TODO:292);
  only the new whitelist-replication nuance logged in journal.

TODO.md planning note left uncommitted (user's WIP, separate scope).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C6bUdvHnajCNzgVQefZowj
2026-06-30 17:08:06 +02:00
Bastien ChanotandClaude Opus 4.8 d1ddb6afdd chore(memory): capitalize /release-candidate — BDR-042 + LRN-078/079 + EVAL-012
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C6bUdvHnajCNzgVQefZowj
2026-06-30 14:41:12 +02:00
Bastien ChanotandClaude Opus 4.8 6b512be9af chore(memory): capitalize /reconcile — BDR-041 + LRN-075/076/077 + EVAL-011
TODO write-back (chantier /reconcile subtasks ticked, S3 split honestly)
+ registry entries (body + Index rows) for the shipped skill.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C6bUdvHnajCNzgVQefZowj
2026-06-30 13:42:24 +02:00
Bastien ChanotandClaude Opus 4.8 bdfa9bcbed chore(memory): reconcile TODO + queue /reconcile skill
Reconcile TODO.md against real git/fs state (not conversation memory):
- tick FINISH+PUSH prune-memory (merge 73e12be, develop==origin/develop)
- tick 3x stale [ ] Commit (working tree clean -> shipped)
- tick .gitmodules follow-up (a) (be1dcef); split (b) zenquality (other repo)
- tick doc-sync twin (BDR-036); requalify v2 Stop-hook deferred->REJECTED (BDR-037)
- keep line 26 cleanup-machine deferred (fs-verified: darwin-skill still present)
- flag --help chantier BLOCKED: contradicts BDR-001 (accepted, per-SKILL.md rejected)
Queue /reconcile skill: declared-vs-real reconciler, 4-category output, gated.
journal 2026-06-29 (cont. 4).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C6bUdvHnajCNzgVQefZowj
2026-06-29 19:59:41 +02:00
Bastien ChanotandClaude Opus 4.8 d7f76fcb45 chore(memory): LRN-073/074 + EVAL-010 — prune-memory chantier close
- LRN-073 — a skill's worked-example must use FICTIONAL ids, never live registry
  ids (they prime real-data behavior). The RED-7 root-cause lesson.
- LRN-074 — system grep/awk may be ugrep/mawk: don't assume flag-parsing, use
  /usr/bin/grep, watch the RED go red. 4th command-assumption miss this session →
  engraved as a recurring pattern-family (alongside fail-silent LRN-066/071).
- EVAL-010 — prune-memory hardening: RED-7 deterministic fix + RED-8 accept +
  34-row backfill; anomalies incl the real-time false-green catch and the near-
  collision with the existing EVAL-009 (caught by reading first).
- journal 2026-06-29 (cont. 3) + TODO chantier section; BLK-011 finish/push marked.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C6bUdvHnajCNzgVQefZowj
2026-06-29 19:29:15 +02:00
Bastien ChanotandClaude Opus 4.8 52d4a66daa chore(memory): BLK-011 resolved + LRN-072 — fix-by-removal
- BLK-011 → resolved by REMOVAL (not by committing the orphan), with the TRUE
  reason engraved: speculatively auto-bootstrapping an unused multi-session engine
  at project creation is bad on its own terms. The initial "redundant with TODO"
  framing is explicitly marked WRONG (gsd >> roadmap; TODO != gsd ROADMAP) — a
  false reason that won't mislead a future reader. Reasoning trace kept: both
  premises refuted on read, conclusion held for the stronger reason.
- LRN-072 — a stranded-artifact bug can be fixed by NOT creating the artifact
  (negative diff), not by plumbing its commit; before building machinery, ask if
  the PRODUCING step is wanted. Speculative-at-creation -> remove; deliberate-on-
  demand -> keep. Family: BLK-010, BLK-011, BDR-036.
- journal 2026-06-29 (cont. 2) + TODO: BLK-011 line flipped, chantier section,
  MINOR-gate FINISH marked merged. Index rows updated (blockers + learnings).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C6bUdvHnajCNzgVQefZowj
2026-06-29 18:27:34 +02:00