Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 85 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
name: StillOnTime Clean CI

on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]

env:
NODE_VERSION: '20.x'
PNPM_VERSION: '9'
CI: 'true'

jobs:
build-test:
runs-on: ubuntu-latest
services:
postgres:
image: postgres:15
env:
POSTGRES_PASSWORD: postgres
POSTGRES_DB: stillontime_test
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
redis:
image: redis:7-alpine
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 6379:6379
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- name: Install root dependencies
run: npm ci
- name: Bootstrap workspace
run: ./scripts/bootstrap.sh --profile dev
- name: Build
run: ./scripts/build.sh --profile dev
- name: Lint backend
run: cd backend && npm run lint
- name: Lint frontend
run: cd frontend && npm run lint
- name: Backend tests
run: cd backend && npm test -- --runInBand
env:
DATABASE_URL: postgresql://postgres:postgres@localhost:5432/stillontime_test
REDIS_URL: redis://localhost:6379
GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
TWILIO_AUTH_TOKEN: ${{ secrets.TWILIO_AUTH_TOKEN }}
TWILIO_ACCOUNT_SID: ${{ secrets.TWILIO_ACCOUNT_SID }}
- name: Frontend tests
run: cd frontend && npm test -- --run
- name: Smoke test
run: ./scripts/smoke-test.sh --profile dev
- name: Upload smoke logs
uses: actions/upload-artifact@v4
if: always()
with:
name: smoke-logs
path: |
logs/
analysis/dynamic-smoke-summary.json
lint-governance:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Verify documentation locations
run: |
test -d dokumentacja
test -f dokumentacja/boot-matrix.md
- name: Validate plan presence
run: test -f PLAN_WYKONANIA.md
36 changes: 16 additions & 20 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,21 @@ node_modules/
.env
.env.local
.env.*.local
config/*.secrets
config/*.override

# Build outputs
dist/
build/
*/dist/
*/build/
coverage/
*/coverage/
.nyc_output/

# Logs
logs/
!logs/.gitkeep
*.log
npm-debug.log*
yarn-debug.log*
Expand All @@ -31,11 +37,6 @@ yarn-error.log*
.DS_Store
Thumbs.db

# Test coverage
coverage/
*/coverage/
.nyc_output/

# Prisma
*.db
*.db-journal
Expand All @@ -45,6 +46,10 @@ test-results/
playwright-report/
playwright/.cache/

# Docker runtime
*.pid
.docker/

# Qdrant storage (local development)
qdrant_storage/

Expand All @@ -54,8 +59,6 @@ backend/data/codenet/javascript/**/*.js
backend/data/codenet/typescript/**/*.ts
backend/data/codenet/python/**/*.py
backend/data/codenet/preprocessed/**/*.json

# Keep directory structure
!backend/data/codenet/.gitkeep
!backend/data/codenet/*/.gitkeep

Expand All @@ -64,24 +67,17 @@ backend/data/codenet/preprocessed/**/*.json
*.temp
.cache/

# Backups artefacts
BACKUP/*.zip
BACKUP/*.tar.gz
BACKUP/*.sha256

# Memory bank session states (swarm coordination)
coordination/memory_bank/sessions/*.json
coordination/subtasks/*.md
dokumentacja/coordination/memory_bank/sessions/*.json

# Plan files (auto-generated)
*.plan.md
.codersinflow
.vscode
node_modules
.venv
.codex
out
dist
*.vsix
.claude
CLAUDE.md
.git
__pycache__
*.pyc
.next
.github
9 changes: 9 additions & 0 deletions BACKUP/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Artefakty kopii zapasowych

- `stillontime-pre-cleanup-<timestamp>.zip`
- `stillontime-pre-cleanup-<timestamp>.tar.gz`
- `checksums.txt` / `checksums.json`
- `restore-instructions.md`
- `legacy-tools/` – poprzednie narzędzia i Dockerfile (historyczne)

Wygeneruj pliki przy pomocy `scripts/backup_and_branch.sh` lub `scripts/backup_and_branch.ps1`. Archiwa są wykluczane z kontroli wersji przez `.gitignore`.
File renamed without changes.
File renamed without changes.
30 changes: 30 additions & 0 deletions BACKUP/restore-instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Instrukcja odtworzenia kopii zapasowej

1. Zweryfikuj sumy kontrolne:
```bash
cd <ABSOLUTE_REPO_PATH>/BACKUP
sha256sum -c checksums.txt
```
2. Rozpakuj archiwum:
```bash
unzip stillontime-pre-cleanup-<timestamp>.zip
# lub
tar -xzf stillontime-pre-cleanup-<timestamp>.tar.gz
```
3. Przywróć katalog `.git` i pliki robocze:
```bash
rsync -a stillontime-pre-cleanup-<timestamp>/ <ABSOLUTE_REPO_PATH>/
Copy link

@cubic-dev-ai cubic-dev-ai bot Oct 18, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Include --delete in the rsync command so the restore actually matches the backup contents by removing files that aren’t in the archive.

Prompt for AI agents
Address the following comment on BACKUP/restore-instructions.md at line 16:

<comment>Include `--delete` in the rsync command so the restore actually matches the backup contents by removing files that aren’t in the archive.</comment>

<file context>
@@ -0,0 +1,30 @@
+   ```
+3. Przywróć katalog `.git` i pliki robocze:
+   ```bash
+   rsync -a stillontime-pre-cleanup-&lt;timestamp&gt;/ &lt;ABSOLUTE_REPO_PATH&gt;/
+   ```
+4. Reset do tagu bezpieczeństwa:
</file context>
Fix with Cubic

```
4. Reset do tagu bezpieczeństwa:
```bash
cd <ABSOLUTE_REPO_PATH>
git checkout pre-cleanup-<timestamp>
```

## Kryteria sukcesu
- Sumy SHA256 zgadzają się z `checksums.txt`.
- Po checkout repozytorium przechodzi `scripts/smoke-test.sh --dry-run`.

## Znane ryzyka
- **Nadpisanie lokalnych zmian** – wykonaj własny backup przed przywróceniem.
- **Brak archiwum** – weryfikuj log `logs/backup.log` wygenerowany przez skrypt.
58 changes: 58 additions & 0 deletions PLAN_WYKONANIA.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# Plan wykonania operacji "backup → analiza i porządki" dla StillOnTime

## Faza 0. Przygotowanie
1. **Inwentaryzacja repozytorium** – identyfikacja ekosystemów (Node.js/TypeScript, Python, Go, mobilny React Native) na podstawie plików konfiguracyjnych (`package.json`, `requirements.txt`, `go.mod`, `android/ios`).
- *Uzasadnienie*: poprawne skrypty muszą wiedzieć, które narzędzia uruchomić.
2. **Utworzenie katalogów docelowych** (`BACKUP/`, `analysis/`, `architecture/`, `dokumentacja/`, `scripts/`, `config/`, `logs/`).
- *Uzasadnienie*: standaryzacja struktury i miejsce na artefakty procesu.

## Faza 1. Backup i gałąź robocza
1. **Tag bezpieczeństwa** `pre-cleanup-<YYYYMMDD-HHMM>` oraz gałąź `chore/repo-cleanup-and-boot`.
- *Uzasadnienie*: łatwy rollback i izolacja zmian porządkowych.
2. **Archiwizacja repozytorium** do ZIP/TAR wraz z sumami SHA256.
- *Uzasadnienie*: kopia zapasowa przed refaktoryzacją.
3. **Weryfikacja integralności** – zapis checksum do `BACKUP/checksums.txt` + instrukcja przywracania.
- *Uzasadnienie*: możliwość potwierdzenia poprawności kopii.

## Faza 2. Analiza
1. **Analiza statyczna** – zliczenie LOC, wykrycie języków (cloc), wyciągnięcie zależności (`npm ls --json`, `pip list`, `go list`).
- *Uzasadnienie*: baza do redukcji długu technicznego.
2. **Graf zależności** – wygenerowanie `analysis/dependency-graph.json` i raportu `.md` z kandydatami do usunięcia.
- *Kryteria*: brak importów w kodzie, nieużywane w lockfile, zastępowalne narzędzia.
3. **Dynamiczna inspekcja** – uruchomienie smoke testu (backend + frontend) z logowaniem modułów i porównanie z analizą statyczną.
- *Uzasadnienie*: weryfikacja realnego użycia zależności.
4. **Architektura de-facto** – opis komponentów + diagram Mermaid oraz decyzja ADR.
- *Uzasadnienie*: dokumentacja powstałych ustaleń.

## Faza 3. Porządki
1. **Migracja dokumentacji** – przeniesienie materiałów do `dokumentacja/` i aktualizacja odnośników w README/CI.
- *Uzasadnienie*: centralizacja wiedzy, łatwe wersjonowanie.
2. **Porządkowanie katalogu głównego** – aktualizacja `.gitignore`, przeniesienie skryptów do `scripts/`, konfiguracji do `config/` i `.github/`.
- *Uzasadnienie*: klarowna struktura repo.
3. **Skrypt `scripts/purge_unused.sh`** – dry-run czyszczenia artefaktów + raport CSV/MD z uzasadnieniem.
- *Uzasadnienie*: kontrolowana eliminacja nieużywanych plików/dependencji.
4. **Aktualizacja ścieżek w kodzie** – idempotentne skrypty migracyjne (sed/ts-node) aktualizujące importy po reorganizacji.
- *Uzasadnienie*: zapewnienie kompatybilności po przenosinach.

## Faza 4. Bootability i automatyzacja
1. **Matryca komend** – `dokumentacja/boot-matrix.md` z tabelą `install/build/run/test` dla każdego modułu.
2. **Skrypty bootstrap/build/start/smoke-test** w `scripts/` z obsługą trybów dev/prod i logów w `logs/`.
3. **Docker** – multi-stage Dockerfile + `docker-compose.yml` z profilami `dev`/`prod` (jeśli wcześniej istniały, aktualizacja).
4. **CI/CD** – workflow GitHub Actions `ci.yaml` z sekwencją `build → test → lint → smoke-test → artifact`.

## Faza 5. Walidacja i rollback
1. **Sanity check struktury** – skrypt potwierdzający istnienie wymaganych katalogów i plików.
2. **Smoke test** – uruchomienie `scripts/smoke-test.sh` w trybie dev i prod.
3. **Instrukcja rollbacku** – procedura powrotu do tagu `pre-cleanup-*`.

## Kryteria sukcesu
- Wszystkie skrypty idempotentne, wspierają `--dry-run`, logują do `logs/`.
- Repo można uruchomić wg matrycy (dev + prod/Docker).
- Dokumentacja scentralizowana i zaktualizowana.
- Analiza zależności udokumentowana wraz z ryzykami i mitigacjami.

## Znane ryzyka i mitigacje
- **Brak części zależności offline** – dodano TODO w bootstrapie dot. manualnego cache.
- **Rozbieżności importów po przenosinach** – skrypty migracyjne + smoke test wykrywają brakujące moduły.
- **Złożoność środowisk (mobile, backend, frontend)** – matryca komand + dedykowane sekcje w skryptach.

Loading
Loading