Inventory Bubble surface and sketch migration mapping (CSOC-WP-0001)
Record public meta, Research/vw_pages routes, integrations, and content hypothesis. Provisional Postgres+Forgejo mapping awaits Bubble export.
This commit is contained in:
parent
db0443fd61
commit
3a74d004f0
7 changed files with 320 additions and 15 deletions
3
SCOPE.md
3
SCOPE.md
|
|
@ -73,7 +73,8 @@ coulomb.social connects people around shared projects and complementary capabili
|
|||
- Content ADR: `docs/adr/ADR-0002-space-content-forgejo-markdown.md`
|
||||
- Operator: `docs/deploy.md` runbook; residuals `docs/intakes/csoc-residuals.md`
|
||||
- Finished resource evidence: **`CSOC-WP-0005`** → `docs/resource-evidence/`
|
||||
- Open: bulk Bubble migration (`CSOC-WP-0001`); public registration residuals (`CSOC-IN-0001`/`0002`, NK-WP-0025)
|
||||
- Bubble exit: **`CSOC-WP-0001`** — surface inventory done; export/mapping needs Bubble editor; feature cut is human gate
|
||||
- Open residuals: public registration (`CSOC-IN-0001`/`0002`, NK-WP-0025)
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -13,10 +13,10 @@
|
|||
| workplan | CSOC-WP-0003 | finished | — | workplans/CSOC-WP-0003-self-registration-and-assurance.md |
|
||||
| workplan | CSOC-WP-0004 | finished | — | workplans/CSOC-WP-0004-app-shell-and-space-content.md |
|
||||
| workplan | CSOC-WP-0005 | finished | — | workplans/CSOC-WP-0005-resource-demand-and-cost-evidence.md |
|
||||
| task | CSOC-WP-0001-T01 | todo | — | workplans/CSOC-WP-0001-bubble-io-exit-assessment.md |
|
||||
| task | CSOC-WP-0001-T02 | todo | — | workplans/CSOC-WP-0001-bubble-io-exit-assessment.md |
|
||||
| task | CSOC-WP-0001-T01 | done | — | workplans/CSOC-WP-0001-bubble-io-exit-assessment.md |
|
||||
| task | CSOC-WP-0001-T02 | progress | — | workplans/CSOC-WP-0001-bubble-io-exit-assessment.md |
|
||||
| task | CSOC-WP-0001-T03 | wait | — | workplans/CSOC-WP-0001-bubble-io-exit-assessment.md |
|
||||
| task | CSOC-WP-0001-T04 | todo | — | workplans/CSOC-WP-0001-bubble-io-exit-assessment.md |
|
||||
| task | CSOC-WP-0001-T04 | wait | — | workplans/CSOC-WP-0001-bubble-io-exit-assessment.md |
|
||||
| task | CSOC-WP-0002-T01 | done | — | workplans/CSOC-WP-0002-netkingdom-user-management-reestablish.md |
|
||||
| task | CSOC-WP-0002-T02 | done | — | workplans/CSOC-WP-0002-netkingdom-user-management-reestablish.md |
|
||||
| task | CSOC-WP-0002-T03 | done | — | workplans/CSOC-WP-0002-netkingdom-user-management-reestablish.md |
|
||||
|
|
|
|||
182
docs/bubble-inventory/2026-08-12-surface-inventory.md
Normal file
182
docs/bubble-inventory/2026-08-12-surface-inventory.md
Normal file
|
|
@ -0,0 +1,182 @@
|
|||
# Bubble surface inventory — 2026-08-12
|
||||
|
||||
| Field | Value |
|
||||
|-------|--------|
|
||||
| Workplan | CSOC-WP-0001-T01 |
|
||||
| Live product host | `https://coulomb.social` (Bubble) |
|
||||
| Rebuild host | `https://app.coulomb.social` (Railiance) |
|
||||
| Sources | Public HTTP, Bubble `/api/1.1/meta`, design extract 2026-08-09, INTENT/SEO copy |
|
||||
| Not available this pass | Bubble editor access, Data API types (empty public meta), production DB export |
|
||||
|
||||
## 1. Platform identity
|
||||
|
||||
| Item | Value | Provenance |
|
||||
|------|--------|------------|
|
||||
| Bubble appname | `coulomb` | `GET /api/1.1/meta` → `app_data.appname` |
|
||||
| Domain | `coulomb.social` | meta + DNS |
|
||||
| App version (live) | `live` | meta `app_data.app_version` |
|
||||
| CDN / file host | `13a55be71f3a6a4c9ea356833df823c4.cdn.bubble.io` | HTML + SEO image URLs |
|
||||
| Development path | `/version-test/` (robots Disallow) | `robots.txt`, HTTP 200 |
|
||||
| Public Data API types | **empty** (`types: {}`, no get/post) | meta 2026-08-12 — API not exposed for inventory |
|
||||
|
||||
```json
|
||||
{
|
||||
"appname": "coulomb",
|
||||
"app_version": "live",
|
||||
"domain": "coulomb.social",
|
||||
"types": {},
|
||||
"get": [],
|
||||
"post": []
|
||||
}
|
||||
```
|
||||
|
||||
**Implication:** lossless data inventory requires Bubble **editor export** or an
|
||||
authenticated admin path — not the public Data API.
|
||||
|
||||
## 2. Product intent (marketing surface)
|
||||
|
||||
From Open Graph / SEO extract (`docs/design-extract/coulomb-social-seo.json`):
|
||||
|
||||
> A tool to brainstorm, discuss, refine implement and promote ideas.
|
||||
> A social network for building stuff and influencing how stuff is built.
|
||||
> A marketplace for challenges, methods and solutions.
|
||||
> A platform to monetize curiosity.
|
||||
|
||||
Brand title variants seen: **Research \| Coulomb**, **Index \| Coulomb**,
|
||||
**An Ideas Come To Life Community!**, **Coulomb Social**.
|
||||
|
||||
## 3. Public / semi-public pages (HTTP probe 2026-08-12)
|
||||
|
||||
| Path | HTTP | Title / notes |
|
||||
|------|------|----------------|
|
||||
| `/` | 200 | Index \| Coulomb — main entry (Bubble SPA shell ~17 KB HTML) |
|
||||
| `/vw_pages` | 200 | Research \| Coulomb — primary authenticated content surface (design extract probe) |
|
||||
| `/version-test` | 200 | Index \| Coulomb — Bubble development version |
|
||||
| `/reset_pw` | 200 | Reset password \| Coulomb — Bubble built-in auth recovery |
|
||||
| `/login`, `/signup`, `/spaces`, … | 404 | No conventional REST-style routes; Bubble uses app pages / params |
|
||||
| `/api/1.1/meta` | 200 | App identity only; no types |
|
||||
| `/robots.txt` | 200 | Disallows `/version-test/` |
|
||||
|
||||
Bubble routes content via internal page names and `pg_chunk/<id>` URLs rather
|
||||
than clean public paths. Design extract crawled **7 routes** (index + 6
|
||||
`pg_chunk/*` pages) under an authenticated Playwright session
|
||||
(`docs/design-extract/PROVENANCE.md`).
|
||||
|
||||
### Design-extract routes (authenticated crawl)
|
||||
|
||||
| Route | Role (inferred) |
|
||||
|-------|-----------------|
|
||||
| `/` | Landing / index shell |
|
||||
| `/pg_chunk/1767965374100x901547861536145400` | In-app content chunk (Research family) |
|
||||
| `/pg_chunk/1784305925912x322414739506593800` | content chunk |
|
||||
| `/pg_chunk/1784904857383x503270614975381500` | content chunk |
|
||||
| `/pg_chunk/1785501127011x363256181345746940` | content chunk |
|
||||
| `/pg_chunk/1785501151364x921456713843343400` | content chunk |
|
||||
| `/pg_chunk/1786106348475x662489469743530000` | content chunk (+ spacing token delta) |
|
||||
|
||||
Session probe documented as **`/vw_pages`** titled **Research \| Coulomb**.
|
||||
|
||||
**Gap:** human-readable Bubble **page names** (editor “Pages” list) and full
|
||||
navigation graph are not in the extract artefacts — only token diffs per
|
||||
chunk URL. Next inventory pass should export page list from Bubble editor.
|
||||
|
||||
## 4. UI surfaces and components (from design extract)
|
||||
|
||||
| Signal | Observation | Rebuild mapping |
|
||||
|--------|-------------|-----------------|
|
||||
| Primary surface | Research / pages workspace | Space detail + markdown pages (ADR-0002) |
|
||||
| CTA verbs | content, favorite, format, filter, add, note | Feature candidates for cut (T03) |
|
||||
| Material icons | content_copy, favorite_border, filter_list, add_circle_outline, note_alt, … | App chrome icons |
|
||||
| Forms | 10 textareas, 6 inputs in crawl sample | Authoring / filters |
|
||||
| Stack signal | Bubble (+ webflow heuristic noise) | Rebuild is Django, not Bubble |
|
||||
| Client libs in page | `marked`, `highlight.js`, `clipboard.min.js` | Markdown-oriented UX already present in Bubble |
|
||||
|
||||
Visual system is fully captured under `docs/design-extract/` (tokens, DESIGN.md,
|
||||
preview). **Do not re-extract for inventory** unless pages change materially.
|
||||
|
||||
## 5. Content model hypothesis (spaces / pages → rebuild)
|
||||
|
||||
Prefer **spaces / pages / markdown-shaped content** for migration (workplan
|
||||
guidance + ADR-0002).
|
||||
|
||||
| Bubble concept (hypothesized) | Evidence | Rebuild target |
|
||||
|-------------------------------|----------|----------------|
|
||||
| Research / `vw_pages` workspace | Title, extract probe | `Space` + `pages/*.md` in Forgejo |
|
||||
| Page / chunk (`pg_chunk` ids) | 6 chunk URLs in extract | One markdown file per page slug under `content_root` |
|
||||
| Rich text / markdown rendering | `marked` + highlight.js on live HTML | CommonMark + sanitized HTML in app |
|
||||
| Favorites / likes | CTA verb counts | Later social feature; not required for content MVP |
|
||||
| Filters / lists | filter CTA | Space list filters later |
|
||||
| Binary assets | Bubble CDN file URLs | `assets/` in Forgejo repo or object store later |
|
||||
| Users / members | Bubble account system + reset_pw | NetKingdom OIDC Members (done path) |
|
||||
| Tenancy | Single Coulomb community today | `tenant:coulomb` instance |
|
||||
|
||||
**Confidence:** medium for “Research pages ≈ space content”; **low** for full
|
||||
data-type graph until editor export.
|
||||
|
||||
## 6. Workflows (partial)
|
||||
|
||||
| Workflow area | Status | Notes |
|
||||
|---------------|--------|--------|
|
||||
| Member signup / login | Live on Bubble | Rebuild uses NetKingdom; Case B residual CSOC-IN-0001 |
|
||||
| Password reset | `/reset_pw` | Platform-owned on rebuild |
|
||||
| Page view / research | `/vw_pages` | Core product path |
|
||||
| Content create/edit | Inferred from textareas + content CTAs | Rebuild: edit in Forgejo (T05 path) |
|
||||
| Marketplace matching | Marketing claim only | **Feature-cut candidate** (T03) |
|
||||
| Monetization | Marketing claim only | Out of v1 unless T03 expands |
|
||||
|
||||
Backend workflows (API workflows, backend triggers) are **not** inventoriable
|
||||
without Bubble editor or API workflow listing.
|
||||
|
||||
## 7. Integrations and external services
|
||||
|
||||
| Service | Role | Rebuild ownership |
|
||||
|---------|------|-------------------|
|
||||
| Bubble.io hosting | App runtime, DB, CDN | Exit target |
|
||||
| `cdn.bubble.io` | Images / static files | Migrate assets off CDN at cutover |
|
||||
| Cloudflare (on Bubble CDN path) | Image resize (`cdn-cgi/image`) | Not required on rebuild |
|
||||
| highlight.js (cdnjs) | Code block styling | Optional in app CSS |
|
||||
| marked (jsDelivr) | Client markdown | Server-side markdown in Django instead |
|
||||
| clipboard.js (Bubble CDN file) | Copy UX | Optional |
|
||||
| (unknown) email provider | Bubble account mail | NetKingdom mail path for registration |
|
||||
| (unknown) payment | Monetization claim | Not observed publicly |
|
||||
|
||||
## 8. Data types (blocked)
|
||||
|
||||
Public meta returned **no** `types`. Expected classes (to confirm on export):
|
||||
|
||||
- User / User profile
|
||||
- Space / Project / Group (name TBD)
|
||||
- Page / Chunk / Document
|
||||
- Favorite / Follow / Membership
|
||||
- Challenge / Method / Solution (marketplace — optional)
|
||||
- Message / Comment (if present)
|
||||
- File / Image references
|
||||
|
||||
**T02** owns dump + mapping once export is available.
|
||||
|
||||
## 9. Inventory completeness
|
||||
|
||||
| Area | Completeness | Next action |
|
||||
|------|--------------|-------------|
|
||||
| Public hosts & meta | high | refresh if domain changes |
|
||||
| Visual design system | high | already in `docs/design-extract/` |
|
||||
| Named Bubble pages list | low | editor screenshot/export |
|
||||
| Workflows | low | editor Backend workflows list |
|
||||
| Data types & fields | none public | Bubble CSV/JSON export or API key |
|
||||
| Content corpus size | unknown | export pages → markdown rehearsal |
|
||||
| Member count / PII volume | unknown | export under privacy rules |
|
||||
|
||||
## 10. Priority order for migration (recommended)
|
||||
|
||||
1. **Spaces + page bodies** → Forgejo markdown (ADR-0002) — highest product value
|
||||
2. **Members** → already re-platformed via NetKingdom JIT (no Bubble password import)
|
||||
3. **Memberships / favorites** → after schema exists
|
||||
4. **Marketplace / monetization** → human feature cut (T03)
|
||||
5. **Historical workflow automation** → rewrite in code only if still needed
|
||||
|
||||
## Related
|
||||
|
||||
- Parallel hosts: `docs/deploy.md`
|
||||
- Content model: `docs/adr/ADR-0002-space-content-forgejo-markdown.md`
|
||||
- Auth extract: `docs/design-extract-auth.md`
|
||||
- Workplan: `workplans/CSOC-WP-0001-bubble-io-exit-assessment.md`
|
||||
11
docs/bubble-inventory/README.md
Normal file
11
docs/bubble-inventory/README.md
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# Bubble.io inventory (coulomb.social)
|
||||
|
||||
Home for **CSOC-WP-0001** inventory findings. Apex product remains on Bubble
|
||||
until explicit cutover; rebuild runs in parallel on `app.coulomb.social`.
|
||||
|
||||
| Doc | Purpose |
|
||||
|-----|---------|
|
||||
| `2026-08-12-surface-inventory.md` | Pages, integrations, content surfaces, gaps (T01) |
|
||||
| *(later)* editor/type dump | Full data types & workflows after Bubble admin export (feeds T02) |
|
||||
|
||||
Design tokens already extracted (visual only): `docs/design-extract/`.
|
||||
11
docs/migration/README.md
Normal file
11
docs/migration/README.md
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# Migration docs
|
||||
|
||||
CSOC-WP-0001-T02/T04 home for Bubble → rebuild mapping and rehearsal notes.
|
||||
|
||||
| Doc | Status |
|
||||
|-----|--------|
|
||||
| `schema-mapping-sketch-2026-08-12.md` | Provisional mapping from inventory + ADR-0002 (no dump yet) |
|
||||
| *(later)* export manifest | Bubble dump paths, checksums, PII handling |
|
||||
| *(later)* rehearsal log | Import of one space to app host |
|
||||
|
||||
Export credentials and raw dumps **never** go in git.
|
||||
89
docs/migration/schema-mapping-sketch-2026-08-12.md
Normal file
89
docs/migration/schema-mapping-sketch-2026-08-12.md
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
# Schema mapping sketch — Bubble → coulomb-social (provisional)
|
||||
|
||||
| Field | Value |
|
||||
|-------|--------|
|
||||
| Workplan | CSOC-WP-0001-T02 (partial — no dump yet) |
|
||||
| Date | 2026-08-12 |
|
||||
| Depends on | CSOC-WP-0004 content model (done), inventory T01 |
|
||||
|
||||
This is a **mapping sketch** so T02 has a target once Bubble export exists.
|
||||
It is not an executed import.
|
||||
|
||||
## Layers
|
||||
|
||||
| Layer | System of record (rebuild) | Bubble source (hypothesized) |
|
||||
|-------|----------------------------|------------------------------|
|
||||
| Identity | NetKingdom OIDC → `Member(issuer, subject)` | Bubble User — **do not migrate passwords** |
|
||||
| Space metadata | Postgres `spaces_space` | Space / project type |
|
||||
| Membership | `spaces_spacemembership` | Collaborator / role |
|
||||
| Page bodies | Forgejo `pages/*.md` | Page / chunk rich text |
|
||||
| Assets | Forgejo `assets/` or later object store | Bubble CDN files |
|
||||
| Social graph | later tables | favorites, follows |
|
||||
| Marketplace | later or cut | challenges, methods, solutions |
|
||||
|
||||
## Identity mapping
|
||||
|
||||
| Bubble | Rebuild | Rule |
|
||||
|--------|---------|------|
|
||||
| User email | Member.email (profile) | Mutable; **not** account key |
|
||||
| User _id | optional `bubble_user_id` on Member later | For reconciliation only |
|
||||
| Password hash | **drop** | NetKingdom owns credentials |
|
||||
| Login | OIDC | Case A proven; Case B residual |
|
||||
|
||||
Linking: prefer verified email **match as suggestion** only after NK registration;
|
||||
never silent takeover (ADR-0001 / NK-WP-0025).
|
||||
|
||||
## Space metadata mapping
|
||||
|
||||
| Bubble field (TBD names) | `Space` column |
|
||||
|--------------------------|----------------|
|
||||
| name / title | `title` |
|
||||
| slug or derived | `slug` |
|
||||
| description | `description` |
|
||||
| owner user | `created_by` → Member |
|
||||
| (none) | `tenant_id` = `tenant:coulomb` |
|
||||
| (none) | `forgejo_owner` / `forgejo_repo` set at import |
|
||||
| (none) | `content_root` default `pages` |
|
||||
|
||||
## Content mapping (pages → markdown)
|
||||
|
||||
| Bubble | Forgejo path | App read |
|
||||
|--------|--------------|----------|
|
||||
| Home / index page of space | `pages/index.md` | default space detail |
|
||||
| Named page / chunk | `pages/<slug>.md` | `?page=<slug>` |
|
||||
| Embedded images | `assets/<file>` + relative links | rendered HTML |
|
||||
| Bubble-only layout widgets | lose or rebuild as markdown structure | residual list at rehearsal |
|
||||
|
||||
Conversion notes:
|
||||
|
||||
- Prefer **markdown** export if Bubble plugin/API allows; else HTML → markdown
|
||||
with lossy table/embed handling.
|
||||
- Preserve original Bubble page id in markdown frontmatter:
|
||||
`bubble_page_id: …` for re-import idempotency.
|
||||
- Do not store full page HTML in Postgres.
|
||||
|
||||
## Export requirements (for real T02)
|
||||
|
||||
Operator needs (not in this repo):
|
||||
|
||||
1. Bubble editor access (or Data API with Privacy rules allowing export).
|
||||
2. Full type list with fields (Users, Spaces, Pages, …).
|
||||
3. CSV/JSON dumps or app connector export — **PII-minimized** copies for rehearsal.
|
||||
4. File inventory from CDN / Bubble file manager.
|
||||
|
||||
Store dumps outside git (operator disk / encrypted volume). Record **paths and
|
||||
checksums only** here when available.
|
||||
|
||||
## Rehearsal plan (T04 — not started)
|
||||
|
||||
1. Pick **one** space with 2–5 pages.
|
||||
2. Convert to `pages/*.md` + assets.
|
||||
3. Create Forgejo repo under `coulomb-spaces` (or coulomb org).
|
||||
4. `Space` row bind + membership for tegwick.
|
||||
5. Open on `app.coulomb.social` — record lossiness.
|
||||
|
||||
## Related
|
||||
|
||||
- Inventory: `docs/bubble-inventory/2026-08-12-surface-inventory.md`
|
||||
- ADR-0002: `docs/adr/ADR-0002-space-content-forgejo-markdown.md`
|
||||
- Spaces models: `coulomb_social/apps/spaces/models.py`
|
||||
|
|
@ -8,7 +8,7 @@ status: active
|
|||
owner: bernd
|
||||
topic_slug: coulomb-social
|
||||
created: "2026-08-09"
|
||||
updated: "2026-08-10"
|
||||
updated: "2026-08-12"
|
||||
origin: residual
|
||||
origin_ref: the-custodian/docs/coulomb-social-rebuild-seed.md
|
||||
state_hub_workstream_id: "ecefaeef-908a-4072-ae34-6406862d4cad"
|
||||
|
|
@ -31,15 +31,14 @@ spaces/data from Bubble. Do **not** repoint apex DNS until product + content
|
|||
persistence + self-registration are ready and a migration rehearsal has passed.
|
||||
|
||||
Identity shell is done (`CSOC-WP-0002`). Product/content foundation is
|
||||
`CSOC-WP-0004`. This workplan stays the home for **inventory, mapping, feature
|
||||
cut, and migration rehearsal** — executed when the target schema/content model
|
||||
exists, not as the immediate next build step.
|
||||
**finished** (`CSOC-WP-0004`). This workplan is the home for **inventory,
|
||||
mapping, feature cut, and migration rehearsal**.
|
||||
|
||||
## Inventory bubble.io app
|
||||
|
||||
```task
|
||||
id: CSOC-WP-0001-T01
|
||||
status: todo
|
||||
status: done
|
||||
priority: medium
|
||||
state_hub_task_id: "240a97c5-1f57-4da6-a75b-d7b3416afdd1"
|
||||
```
|
||||
|
|
@ -50,11 +49,17 @@ or deliberately dropped. Record findings under `docs/bubble-inventory/` (create
|
|||
as needed). Prefer **spaces / pages / markdown-shaped content** first so
|
||||
`CSOC-WP-0004` Forgejo persistence can map cleanly.
|
||||
|
||||
2026-08-12: Surface inventory committed —
|
||||
`docs/bubble-inventory/2026-08-12-surface-inventory.md`. Public meta, hosts,
|
||||
Research/`vw_pages`/pg_chunk routes, integrations, content hypothesis, gaps.
|
||||
**Data types empty** on public API — full type/workflow graph waits on Bubble
|
||||
editor export (T02).
|
||||
|
||||
## Data export and schema mapping
|
||||
|
||||
```task
|
||||
id: CSOC-WP-0001-T02
|
||||
status: todo
|
||||
status: progress
|
||||
priority: medium
|
||||
state_hub_task_id: "0bc6eea3-030d-4987-b203-15ccd4f94fcb"
|
||||
```
|
||||
|
|
@ -68,6 +73,10 @@ Produce a full data dump from bubble.io and map it to:
|
|||
Document mapping and export under `docs/migration/`. Depends on CSOC-WP-0004
|
||||
content layout decisions for lossless mapping of pages/artefacts.
|
||||
|
||||
2026-08-12: Provisional mapping sketch without dump —
|
||||
`docs/migration/schema-mapping-sketch-2026-08-12.md`. **Blocked on** Bubble
|
||||
editor/export access for actual type fields and content corpus.
|
||||
|
||||
## Feature cut decision (human gate)
|
||||
|
||||
```task
|
||||
|
|
@ -85,15 +94,15 @@ rebuild work on `app.coulomb.social`.
|
|||
|
||||
```task
|
||||
id: CSOC-WP-0001-T04
|
||||
status: todo
|
||||
status: wait
|
||||
priority: low
|
||||
state_hub_task_id: "2e5be321-3d76-4d7a-86b1-cbe4eb554bd7"
|
||||
```
|
||||
|
||||
Import one or more Bubble spaces into the v1 model on a non-production path
|
||||
(app host or staging). Record lossiness and residuals. **Blocked until**
|
||||
CSOC-WP-0004 persistence exists and T02 mapping is written. Explicitly **not**
|
||||
a prerequisite for building product UX on the empty/new content store.
|
||||
(app host or staging). Record lossiness and residuals. **Blocked until** T02
|
||||
has a real export (CSOC-WP-0004 persistence is ready). Explicitly **not** a
|
||||
prerequisite for building product UX on the empty/new content store.
|
||||
|
||||
## Acceptance
|
||||
|
||||
|
|
@ -105,5 +114,7 @@ a prerequisite for building product UX on the empty/new content store.
|
|||
## Notes
|
||||
|
||||
- Parallel hosts: `docs/deploy.md`
|
||||
- Next product build: `workplans/CSOC-WP-0004-app-shell-and-space-content.md`
|
||||
- Product foundation: `CSOC-WP-0004` finished; spaces runbook `docs/deploy.md`
|
||||
- Inventory: `docs/bubble-inventory/`
|
||||
- Mapping sketch: `docs/migration/`
|
||||
- Service contract: `the-custodian/canon/standards/business-app-service-contract_v0.1.md`
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue