aboutsummaryrefslogtreecommitdiff
path: root/teams/deepsat/claude/rules/publishing.md
Commit message (Collapse)AuthorAgeFilesLines
* docs(deepsat): make Linear state moves manual, add post-merge routingCraig Jennings2026-05-221-4/+17
| | | | | | The Linear/GitHub integration doesn't advance ticket state. Two chores merged today (SE-286, SE-399) sat in Dev Review until I moved them to Done by hand. I made the overlay say that plainly instead of implying the integration keeps tickets in sync. I added the after-merge step the overlay was missing. A bug or feature with PM-reviewable functionality or UI goes to PM Acceptance, and a chore, test, or infra change the PM can't review goes straight to Done. I also dropped the two claims that the integration auto-cross-links, since the reliable cross-link is the PR-URL comment we already post on create.
* feat: split team publishing rules into an installable overlayCraig Jennings2026-05-221-0/+67
The global commits.md carried DeepSat-specific publishing steps — Linear ticket-state moves, the Slack notification protocol with its channel ID and engineer names, the deepsat.ghe.com host, the team merge norm. Those are symlinked into every project on the machine, so they sat as dead weight in personal repos and risked misfiring where there's no Linear ticket to move or Slack mpdm to ping. I split them out. commits.md keeps the universal skeleton (identity, attribution, commit format, the review-and-publish gate, verification) and replaces the team steps with seams: "run the project's publishing overlay here if it defines one," the same pattern startup.org uses for startup-extras. A project with no overlay runs the complete flow, just without ticket and chat integration. The DeepSat specifics move to teams/deepsat/claude/rules/publishing.md. That file is not a global rule — install-team.sh copies it into one project's .claude/rules/ (make install-team TEAM=deepsat PROJECT=...), keyed on the PROJECT argument, so only the named project gets it. Location decides distribution: claude-rules/ is the global-symlink set, teams/ is targeted-copy, so the overlay reaches DeepSat and nowhere else. The startup freshness check (sync-language-bundle.sh) now covers team overlays alongside language bundles: a process_bundle function handles both, with a team syncing only its own rule (no generic rules, hooks, or settings — those belong to a language bundle). A drifted overlay rule auto-fixes from canonical at the project's next startup, the same mechanism language bundles already ride. Tested: 3 new bats cases (team overlay clean / drifted-and-fixed / does-not-pull-generic-rules) on top of the 11 existing; install-team + sync verified end-to-end against a temp project. make test green, shellcheck clean.