From 087593f880873d0441fe8589b7d7cebdd9ad0a12 Mon Sep 17 00:00:00 2001 From: Heinrich Date: Thu, 10 Sep 2026 17:17:09 +0000 Subject: [PATCH 1/2] docs(CLAUDE.md): add Working defaults behavioral block Add a tight in-session behavioral block (think-before-coding, minimal necessary change, surgical diffs, goal-driven) adapted from Karpathy's LLM coding guidelines. Complements the existing STOP-GATE / CI / PR gates rather than duplicating them. Co-Authored-By: Claude Opus 4.8 (1M context) --- CLAUDE.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CLAUDE.md b/CLAUDE.md index 895cca3..0adc871 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -49,6 +49,15 @@ All metadata, dependencies, and build config live in `pyproject.toml` (canonical upstream `picasso` package. - Test coverage requirement: 80% +## Working defaults (how to behave in a session) + +In-session habits that complement the gates: the STOP-GATE and PR gates govern *when* and *where* to build; these govern *how*. + +- **Think before coding.** State your assumptions; if the brief is ambiguous or a simpler approach exists, say so and ask — don't pick silently. +- **Minimal, necessary change.** No speculative abstraction, configurability, or error-handling for cases that can't occur. Every changed line should trace to the work order. +- **Surgical diffs.** Match surrounding style; don't refactor or reformat untouched code, and don't delete pre-existing dead code — mention it instead. Remove only the orphans (imports/vars) your own change creates. +- **Goal-driven.** Turn the brief's ACCEPTANCE into a check you can actually run, and verify it before opening the PR (hosted CI lint + unit is the required merge gate). + ## Testing Structure ### Run all tests From a362ab5cb3d941359bca823d2ec12c8a837381d1 Mon Sep 17 00:00:00 2001 From: Heinrich Date: Fri, 11 Sep 2026 09:16:47 +0000 Subject: [PATCH 2/2] docs(CLAUDE.md): make branch section policy/pointer-based (drift-proof) Replace the stale 'feature-FullAutoS0A' current-branch line with the stable branching policy + a pointer to the briefs' Branch map / git, so it can't go stale as work orders come and go. Co-Authored-By: Claude Opus 4.8 (1M context) --- CLAUDE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CLAUDE.md b/CLAUDE.md index 0adc871..440d0a0 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -10,7 +10,7 @@ See `ARCHITECTURE.md` for the package map, `docs/architecture.md` for detail, an ## Repository & workflow -- **Active branch:** `feature-FullAutoS0A` (feature branch; PRs target `master`). This repo is one of several checked out under the `DNA-PAINT-FullAutomation` workspace — see the standing pointers below. +- **Branching:** dev branch `develop`; release path `develop` → `master` (tag on `master`). Work each task on its own feature branch and PR per the **Branch map** in the work-order briefs (see standing pointers). Don't pin the current branch here — check the tracker's branch-state note or `git`; a pinned branch is what goes stale. This repo is one of several checked out under the `DNA-PAINT-FullAutomation` workspace. - **Versioning:** driven by `setuptools-scm` from the latest reachable **git tag** (single source of truth — `pyproject.toml` has `dynamic = ["version"]`, no static number). At build/install time scm writes the resolved value into `PycroFlow/_version.py` (git-ignored, generated); `PycroFlow.__init__` imports it (`from ._version import version`), falling back to `importlib.metadata` then `"0.0.0"` in an uninstalled source tree. `[tool.setuptools_scm]` sets `fallback_version` for checkouts with no reachable tag. To release, create an annotated `vX.Y.Z` git tag — do **not** edit a version string. - **Changelog:** keep `CHANGELOG.md` (Keep a Changelog format, SemVer) current — add an entry under the `[Unreleased]` heading in every PR that changes behaviour, and promote `[Unreleased]` to a dated, version-stamped section when you cut a release tag.