Kraite — push

kraite-push commits and publishes the current Kraite project — path packages first (each pushed and composer.lock re-resolved), then the main project. Never tags, never deploys.


Flow

StepAction
1. Profile detectRecurse into kraite-profile to decide whether path-package iteration applies
2. Detect path packagesRead composer.json for "type": "path" repositories
3. Push packagesFor each dirty package: add -A, commit, git push origin <branch>
4. Update lockIf any packages pushed, composer update <vendor/package> ... --no-interaction to capture new SHAs
5. Push main projectCommit everything dirty (incl. updated composer.lock), push

Profile mapping

FolderPath packages?
ingestion.kraite.testyes (kraitebot/core, brunocfalcao/step-dispatcher) — push first
admin.kraite.test / kraite.test / syntax.kraite.testnone — skip Step 2-4

GitHub authentication

All kraitebot/* repos are public. The gh CLI is authenticated as brunocfalcao. No PAT switching needed in the normal path. If a remote uses SSH ([email protected]:), the git global config rewrites to HTTPS automatically.


Hard rules

  • Never tags. That's kraite-tag's job.
  • Never deploys. That's kraite-deploy's job.
  • Pushes every dirty file — packages and main project. Working tree is CLEAN after the command returns.
  • Never force-pushes without Bruno's explicit approval. Push rejected → git pull --rebase origin <branch>, then push again.
  • Co-author trailer mandatory on every commit.

  • Kraite — commit — local-only sibling, no publish
  • Kraite — tag — when ready to ship a versioned release
  • push — generic version (handles gh auth switch between multiple GitHub users + CHANGELOG bumps)