singularity-forge/.sf/wiki/WORKFLOWS.md
Mikael Hugo eacbbaac82
Some checks are pending
CI / detect-changes (push) Waiting to run
CI / docs-check (push) Blocked by required conditions
CI / lint (push) Blocked by required conditions
CI / build (push) Blocked by required conditions
CI / integration-tests (push) Blocked by required conditions
CI / windows-portability (push) Blocked by required conditions
CI / rtk-portability (linux, blacksmith-4vcpu-ubuntu-2404) (push) Blocked by required conditions
CI / rtk-portability (macos, macos-15) (push) Blocked by required conditions
CI / rtk-portability (windows, blacksmith-4vcpu-windows-2025) (push) Blocked by required conditions
TODO: simplify md-tracking — drop snapshot blob, accept mid-edit corner
Final settled design: sha + git ref only, no DB content snapshots at
all. The mid-edit case (file observed dirty) loses the ability to
reconstruct the intermediate working-tree state, but the change-
detection signal is preserved and the operator can commit first if
intermediate fidelity matters.

Trades a corner-case fidelity loss for a much simpler schema and
no DB-vs-disk content duplication. Git remains the only version
store; the DB row is a pure "where I left off" pointer.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 19:49:25 +02:00

2.3 KiB

Workflows

Generated: 2026-05-11 | Source: package.json, CONTRIBUTING.md, AGENTS.md

Build

npm run build          # full (packages + tsc + resources + web)
npm run build:core     # packages + tsc + resources only (no web)
npm run copy-resources # rebuild dist/resources/ ONLY (extension JS + prompts, ~60-90s)

Critical: editing .ts files in src/resources/extensions/sf/ has no effect until copy-resources runs. The loader resolves from dist/resources/extensions/sf/ (compiled JS).

Test

npm test                              # unit + integration
npm run test:unit                     # vitest unit tests
npm run test:integration              # integration tests
npm run test:coverage                 # coverage (thresholds: 40/40/20/20)
npm run test:smoke                    # smoke tests
npx vitest run <file> --config vitest.config.ts   # single file
npx vitest run --changed --config vitest.config.ts # affected only

Test files: *.test.ts and *.test.mjs under packages/*/src/, src/tests/, src/resources/extensions/*/tests/.

Lint

npm run lint           # Biome over src/
npm run lint:fix       # autofix
npm --prefix web run lint  # ESLint over web/
npx biome check --write <paths>  # format specific files
npm run typecheck:extensions     # tsc --noEmit for extensions

Release

npm run release:changelog   # generate CHANGELOG entry
npm run release:bump        # bump version

SF Autonomous Flow

sf              → TUI (interactive)
sf headless ... → machine surface (JSON I/O)

Autonomous mode commands (headless):

node dist/loader.js headless next      # dispatch next ready unit
node dist/loader.js headless autonomous # run full autonomous loop
node dist/loader.js headless status    # show current state
node dist/loader.js headless query     # query DB state

Note: use node dist/loader.js not npx sf in this repo to avoid npm download hangs.

Dev workflow

npm run dev            # hot reload (tsc watch + copy-resources watch)

After editing prompts or extension JS, run copy-resources then test with headless.

Git conventions

  • Branch: <type>/<short-desc> (feat/, fix/, chore/, refactor/, etc.)
  • Commits: Conventional Commits format
  • No merge commits — rebase onto main
  • PRs must link an issue; one concern per PR