synops/scripts/summary.sh
vegard 00bf5d27ce Arkitekturbeslutninger: noder er sentrum, edges definerer alt
Grunnleggende arkitekturbeslutninger tatt og dokumentert:

- Alt er noder (brukere, team, innhold, mediefiler, samlings-noder)
- Edges definerer hva en node er (freeform typer, metadata i JSONB)
- Materialisert tilgangsmatrise (node_access) erstatter workspace-RLS
- Visibility (hidden/discoverable/readable/open) på noder
- Aliaser via usynlige system-edges
- Maskinrommet eier all skriving (SpacetimeDB først, PG asynk)
- SpacetimeDB holder hele grafen, PG er persistent backup
- Node- og edge-skjema spesifisert (docs/primitiver/)

Fjernet workspace-konseptet fra hele dokumentasjonen (~40 filer).
Fem retninger besluttet, én åpen (rom, ikke forum).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 10:29:54 +01:00

81 lines
2.4 KiB
Bash
Executable file

#!/usr/bin/env bash
# Samler all prosjektdokumentasjon til én fil for deling med AI-er etc.
# Bruk: ./scripts/summary.sh → skriver scripts/synops.md
# ./scripts/summary.sh - → skriver til stdout (for piping)
#
# Rekkefølge: overblikk → arkitektur → konsepter → tekniske detaljer → drift
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
OUT="$SCRIPT_DIR/synops.md"
# Prioritert rekkefølge av mapper under docs/
# Fra overblikk og visjon → ned til implementeringsdetaljer
DOC_ORDER=(
retninger # Arkitektoniske teser og vedtatte retninger
primitiver # Spesifikasjoner for kjerneprimitivene
concepts # Brukeropplevelser og produktområder
features # Tekniske byggeklosser
infra # Infrastruktur og drift
setup # Oppsett og driftsprosedyrer
erfaringer # Lærdommer fra implementering
proposals # Idébank (uimplementerte forslag)
)
collect() {
# 1. Prosjektguide (CLAUDE.md) først — gir komplett overblikk
if [[ -f "$ROOT/CLAUDE.md" ]]; then
emit "$ROOT/CLAUDE.md"
fi
# 2. Overordnet arkitektur
if [[ -f "$ROOT/docs/arkitektur.md" ]]; then
emit "$ROOT/docs/arkitektur.md"
fi
# 3. Dokumentmapper i prioritert rekkefølge
for dir in "${DOC_ORDER[@]}"; do
[[ -d "$ROOT/docs/$dir" ]] || continue
for f in "$ROOT/docs/$dir"/*.md; do
[[ -f "$f" ]] || continue
emit "$f"
done
done
# 4. Eventuelle docs/-mapper som ikke er i DOC_ORDER (fang nye mapper automatisk)
for dir in "$ROOT"/docs/*/; do
[[ -d "$dir" ]] || continue
dirname="$(basename "$dir")"
# Hopp over de vi allerede har tatt
skip=false
for known in "${DOC_ORDER[@]}"; do
[[ "$dirname" == "$known" ]] && skip=true && break
done
$skip && continue
for f in "$dir"*.md; do
[[ -f "$f" ]] || continue
emit "$f"
done
done
}
emit() {
local f="$1"
local rel="${f#"$ROOT/"}"
echo "================================================================"
echo "FILE: $rel"
echo "================================================================"
echo ""
cat "$f"
echo ""
echo ""
}
if [[ "${1:-}" == "-" ]]; then
collect
else
collect > "$OUT"
echo "Wrote $OUT ($(wc -l < "$OUT") lines)"
fi