coulomb-social/SCOPE.md
tegwick 1272c699b0
Some checks failed
Use-case regression gate / usecase-regressions (push) Failing after 3m48s
Record deployed personal app and remaining Authelia credential rejection
Assistant: codex
Assistant-Model: gpt-6.1-sol
Assistant-Session: 01a10e2d-a5ef-7e92-b03d-b1694e915680
2026-10-06 17:02:16 +02:00

105 lines
7.3 KiB
Markdown

# SCOPE — implemented capability and boundaries
Reviewed 2026-10-06 against application source, tests and dated repository
records. This describes what the checkout can do; historical live evidence is
identified separately. It is not a current production acceptance certificate.
## What this repository is
A standalone Django co-creation application rebuilding coulomb.social on
Railiance / NetKingdom / HelixForge. Today it implements an authenticated spaces
and markdown-pages product plus local content migration tools. It is not yet
the complete social network or marketplace described by INTENT.md.
The accepted [stage-1 cut](docs/decisions/2026-08-12-feature-cut-stage-1.md)
prioritizes onboarding and productive spaces/pages transfer; marketplace,
favorites, payments and real-time collaboration are later capabilities.
## Implemented in this checkout
| Capability | Actual behavior and evidence |
|---|---|
| Identity | OIDC/PKCE login, logout, JIT local Member linked to user-engine; issuer+subject identity, session diagnostics and assurance handling. Development claims login is restricted to DEBUG with OIDC disabled. `apps/identity/`, identity tests. |
| Registration entry | Configured NetKingdom registration redirect; this app does not issue passwords or send verification mail. CSOC-IN-0001 is closed with 2026-08-14 Case B evidence. |
| Spaces | Tenant-filtered list/detail, member-facing create/update/archive, Title, Abstractor (`description`) and Visual metadata. `apps/spaces/services.py`, `tests/test_space_crud.py`. |
| Pages | Markdown/frontmatter list, render, create/update/delete, independent copy and transfer with source/destination access checks. Index cannot be deleted or transferred. Separate clipboard copy exports rendered HTML/plain text for manual email distribution. `pageops.py`, PageOps tests. |
| Content sources | Local `CONTENT_ROOT/spaces/<slug>/pages` and assets; optional Forgejo read/edit fallback, cache refresh and push webhook. Markdown is sanitized on render. Local writes do not automatically commit/push to Forgejo. |
| Import | `import_content_tree` for one ADR-0004 tree; `import_content_corpus` for a preflighted JSON batch with explicit existing tenant+issuer+subject membership mappings. Dry-run, replacement opt-in, per-space staging/rollback and aggregate counts. Synthetic multi-space regression coverage; one historical private-space rehearsal. |
| Delivery preparation | Docker/Gunicorn packaging, SQLite development / PostgreSQL URL support, migrations, health endpoint and deployment/runbook docs. Actual Helm values and cluster hosting belong to railiance-apps. |
| Evidence and coordination | Bubble surface/capability inventory, authenticated export scripts, design extraction, schema sketch, accepted cut decision, resource-demand/SLO/labor evidence and file-backed State Hub work records. |
Source paths above are under `coulomb_social/`. Member and Space metadata are
tenant-keyed, but filesystem paths are **slug-keyed**. Deployment is
instance-per-client: do not reuse a content root across tenants. Normal creation
and imports reject existing cross-tenant slug collisions; this is not a full
filesystem tenant namespace or a database-wide concurrency guarantee.
## Practical limits
- Space reads now require explicit membership or a creator grant. Viewer
memberships are read-only across product mutation routes and service writes;
owner/member grants permit writes. Sharing-management UI and exact Bubble
privacy parity remain incomplete. Imported mappings add/update grants;
replacement does not revoke old grants. Review access before a real cohort import.
- Copy/transfer handles relative Visual files, not arbitrary body-linked assets,
incoming page links, graph identity or Bubble parent/chunk semantics. Visual
metadata and copied files do not establish an authenticated asset-serving or
upload pipeline.
- Import requires local prepared trees and existing active identities. It does
not create platform accounts, import passwords, scrape missing Bubble content,
or certify corpus completeness. It runs with writers paused; the batch is
restartable per space, not globally atomic or crash-transactional.
- No app-local member export/delete product, paired DB/content restore drill,
automatic content git versioning, outline/include/projection authoring or
marketplace/social/payment product is implemented here.
- Historical health/auth evidence does not prove current image, persistence,
runtime SLOs, backup success or complete service-contract compliance.
## Recorded deployment state
The host strategy is rebuild on `app.coulomb.social` with Bubble on apex until
an explicit cutover. Historical identity/app-shell evidence is in
[identity smoke](docs/identity/smoke.md). Public registration was evidenced on
2026-08-14. **CSOC-IN-0004 remains open** for PageOps deployment, migration,
live product acceptance. On 2026-10-06, founder-approved Helm revision 10 deployed
the tested app (source ac7bac1852c9, chart 0.2.0, digest pinned) with a retained
2Gi CONTENT_ROOT PVC and one writer/Recreate. OIDC client registration was restored
and KeyCape restarted; authorization now hands off to Authelia. Public health,
clipboard asset delivery, zero pending migrations and content restart durability
passed. Interactive tegwick sign-in remains blocked: Authelia rejects the attempted
credentials although a read-only directory check confirms the account exists.
Real-use-case acceptance remains pending;
[deployment receipt](docs/release/personal-account-deployed-2026-10-06.md) records
exact evidence and gaps. All six original numbered workplans are finished;
their residual intakes remain the source of unfinished work.
## Ownership boundaries
This repo owns product behavior, local identity integration, application models,
content/migration tooling, packaging and acceptance evidence. It does not own
Railiance infrastructure/charts, NetKingdom issuer/mail/secrets services,
HelixForge standards, or fleet improvement loops. Core Hub embedding and Bubble
as the long-term development surface remain out of scope.
## Next work and orientation
Read [INTENT.md](INTENT.md), [the timestamped assessment](history/20261005T223104Z-scope-intent-assessment.md),
[CSOC-WP-0007](workplans/CSOC-WP-0007-safe-transfer-readiness.md), and
[CSOC-WP-0008](workplans/CSOC-WP-0008-production-transfer-acceptance.md).
The local transfer tool closes a preparation gap; persistence/restore, private
cohort migration, access acceptance and founder cutover are live successor work.
Development: `README.md`, `docs/dev.md`, `make test`, `make lint`.
Content architecture: ADR-0003/0004 and `docs/architecture/`.
Migration: `docs/migration/`, including `corpus-import.md`.
Delivery: `docs/deploy.md`; residual records: `docs/intakes/csoc-residuals.md`.
First user-confirmed review case: ReichelAg weekly founder-call protocols
(UC-008), full duplication and manual editing plus clipboard copy for external
email. See docs/usecases/reichelag-weekly-call.md; live transfer is pending.
Established use-case regression protection is in docs/usecases/registry.json
and tests/usecases/, starting with ReichelAg. `make check` runs fast/application
and actual-browser journeys with mandatory test coverage validation and JUnit
reports. Forgejo workflow is configured; remote runner/required-merge-check
acceptance remains CSOC-IN-0005. User transfer acceptance stays separate.