Thalix VaultDocumentation
Browse documentation
Overview
publishedimplementedEdit this page

Documentation inventory for the hierarchical workspace

This is the issue #61 review record for the model deployed by issues #49–#59. It records which current pages were reviewed, what changed, and which pages remain intentionally historical or domain-neutral.

Current product vocabulary

  • Folder is the general entity. A Root Folder has no parent. A subfolder is a folder described relative to its parent.
  • Folder paths are navigation aids. UUIDs are stable identifiers.
  • Every active member has one private, non-archivable default Root Folder, initially named My Files, and may create additional roots.
  • Subfolders have immutable root identity, a maximum depth of 32, sibling-scoped case-insensitive names, cycle prevention, same-root moves, and empty-only archive.
  • Groups are user-owned and organization-local. Roles are owner, manager, and member; membership begins only after invitation acceptance.
  • Folder grants are additive, inherit through descendants, and have no deny rule. Administrators have organization-wide access without implicit ownership or grants; overrides are audited.
  • Metadata means administrator-defined typed fields. Tags are user-managed name=value pairs with separate current-state and append-only revision tables.

Reviewed current pages

PageReview result
docs/README.mdChanged: links this inventory and the current documentation map.
docs/glossary.mdChanged: canonical folder, default, subfolder, group-role, inherited-access, metadata, tag, and audit definitions.
docs/SITE_HANDOFF.mdReviewed; retained as site implementation handoff, not product behavior authority.
docs/AGENTS.mdReviewed; retained as documentation-local agent guidance.
docs/product/overview.mdChanged: current hierarchical workspace and sharing model.
docs/product/mvp-scope.mdChanged: shipped folders, groups, browse/search, metadata, and tags.
docs/product/brand-reference.mdReviewed; unchanged because it contains visual identity, not domain behavior.
docs/users/getting-started.mdReviewed: current sign-in and first-file flow.
docs/users/quickstart.mdReviewed: default root, folder creation, upload, browse, and search examples.
docs/users/files.mdReviewed: upload, lifecycle, versions, browse, subtree search, metadata, tags, and tag filters.
docs/users/access.mdReviewed: inherited user/group grants and live revocation semantics.
docs/users/automation.mdReviewed: current JSON fields, cursors, and stable error codes.
docs/admins/login.mdChanged: glossary linkage; login behavior remains current.
docs/admins/invitations.mdChanged: distinguishes organization invitations from group invitations.
docs/admins/users-and-groups.mdChanged: user-owned groups, invitations, roles, transfer, and explicit admin recovery.
docs/admins/folders-and-metadata.mdChanged: roots/defaults/subfolders/lifecycle/browse/search and metadata-versus-tags.
docs/admins/audit.mdChanged: administrator override and folder/group/tag audit evidence.
docs/architecture/overview.mdReviewed: current service boundaries.
docs/architecture/current-state.mdReviewed: deployed CLI/backend/database state.
docs/architecture/domain-model.mdChanged: folder hierarchy, ownership, defaults, group invitations, metadata, and tag tables.
docs/architecture/security-and-authorization.mdChanged: inheritance, delegation ceilings, anti-enumeration, and unconditional audited admin access.
docs/architecture/audit-and-observability.mdReviewed: append-only audit and correlation model.
docs/architecture/file-lifecycle.mdReviewed: immutable content versions plus independent metadata/tag revisions.
docs/architecture/trust-boundaries.mdReviewed; unchanged where boundaries are domain-neutral.
docs/architecture/distribution-and-updates.mdReviewed; unchanged because distribution is independent of folder semantics.
docs/cli/overview.mdChanged: current command families, self-service groups, inherited grants, tags, and optional admin reason.
docs/cli/command-reference.mdReviewed as executable command/flag/error authority for folders, groups, browse, search, metadata, and tags.
docs/cli/installation.mdReviewed; unchanged because installation is domain-neutral.
docs/cli/git-install-and-update.mdReviewed; unchanged because checkout updates are domain-neutral.
docs/cli/releasing.mdReviewed: current build/release process.
docs/cli/agent-skill.mdReviewed: installed skill behavior and parity expectations.
docs/operators/folders01-migration-rollback.mdIntentionally historical: describes the Project-to-Root-Folder cutover and is labeled as a rollback template.
docs/operators/deactivation.mdReviewed: owner-transfer and group recovery constraints.
docs/operators/restore-from-archive.mdReviewed: current reversible lifecycle.
docs/operators/reconciliation.mdReviewed; upload reconciliation remains applicable.
docs/operators/incident-investigation.mdReviewed: audit-led investigation remains applicable.
docs/operators/release-rollback.mdReviewed: client/application rollback, distinct from irreversible post-migration writes.
docs/operators/ci-cost-control.mdReviewed; unchanged because CI cost policy is domain-neutral.
docs/operations/readiness.mdReviewed: release-readiness gates.
docs/contributing/documentation.mdReviewed: page metadata and generation rules.
docs/decisions/README.mdReviewed: ADR index.
docs/decisions/ADR-0001-cli-first-mvp.mdHistorical decision retained.
docs/decisions/ADR-0002-storage-catalog-separation.mdHistorical decision retained; current folder terminology is linked where needed.
docs/decisions/ADR-0003-immutable-history.mdRetained; still authoritative.
docs/decisions/ADR-0004-signed-standalone-distribution.mdRetained; domain-neutral.
docs/decisions/ADR-0005-private-cli-credential-file.mdRetained; domain-neutral.

Historical files under delivery/ are evidence of the model that existed when they were written. They are not rewritten to pretend Root Folders existed earlier. Current pages must link historical terms back to the current glossary.

Embedded and generated guidance reviewed

  • packages/cli/skill/thalix-vault/SKILL.md
  • packages/cli/skill/thalix-vault/references/*.md
  • packages/cli/src/skill/export-chatgpt.ts
  • packages/cli/src/help.ts
  • src/routes/-docs-content.generated.ts (regenerated from the reviewed Markdown)

The command reference, help output, embedded skill, and ChatGPT export must describe only implemented commands. Parity is enforced by the documentation and skill-command tests.

Old-to-new automation mapping

Removed Project-era surfaceCurrent surface
tv project listtv folder list [folder-id] for one-level browse
tv admin project listtv admin folder list
/api/internal/projects/*/api/internal/folders/*
projectId / project_idfolderId / folder_id
Project-wide flat grantFolder grant inherited through descendants
Admin-created group membershipUser-owned group plus accepted invitation
Typed metadata used for arbitrary labelsTyped metadata plus separate free-form tags

Automation must also account for FolderRecord.parentFolderId, rootFolderId, depth, isDefault, owner projection, browse entries/nextCursor, search withinFolderId/tagFilters, and the removal of old compatibility aliases.

Production migration and publication workflow

Database changes are deployed through the Lovable MCP against project a1c5d3f6-34f7-4839-82f1-a1cad0fba9a5; local Docker is not the production deployment path.

  1. Merge/push the reviewed commit to GitHub main.
  2. Confirm Lovable reports the exact latest_commit_sha; do not publish yet.
  3. Capture hosted IDs, row counts, relationships, audit identities, and any collision preflight required by the migration.
  4. Apply the forward SQL through Lovable MCP query_database as one atomic request.
  5. Read back schema objects, constraints, indexes, RPC signatures, row counts, IDs, relationships, audit timestamps, and append-only triggers.
  6. Exercise the changed behavior through rollback-only hosted transactions. Confirm no verification rows/tokens remain.
  7. Obtain explicit publication approval and invoke Lovable deploy_project.
  8. Smoke the production CLI/API, including ordinary-user anti-enumeration and administrator audit evidence.
  9. Close the issue only after production proof.

Backup and rollback limits

Before a production mutation, confirm the provider backup/PITR position and record the exact pre-migration schema/data inventory. Forward migrations are transactional, but application rollback after new-schema writes may be unsafe. Use the issue-specific rollback runbook/template; never run only selected reverse statements. If a migration request fails, verify whether its transaction rolled back before retrying. After incompatible new writes, prefer a reviewed forward fix unless the rollback inventory proves reversibility.

Post-cutover smoke inventory

The release-assurance run must prove, with two ordinary users and one administrator:

  • exactly one private default root per active member;
  • additional roots and nested subfolders;
  • rename, within-root move, empty-only archive, and explicit restore;
  • user-owned group creation, invitation acceptance, roles, transfer, and removal;
  • inherited folder grants and immediate revocation/member-removal effects;
  • nested file upload, immediate-child browse, subtree search, and keyset cursors;
  • typed metadata and free-form tag set/list/unset on the same file;
  • combined --within, --meta, and repeatable --tag search;
  • administrator organization-wide browse/read/download with adminOverride audit evidence;
  • ordinary-user non-disclosure of hidden folder/file/tag/metadata names, counts, cursors, and bytes.

Review completion checklist

  • [ ] Current Markdown pages match this inventory.
  • [ ] tv help, command reference, Agent Skill, and ChatGPT export are command-parity checked.
  • [ ] Generated in-app documentation is regenerated.
  • [ ] Links, page metadata, terminology, docs, credential-leak, and stale-status checks pass.
  • [ ] Copy-ready examples run against an isolated real stack.
  • [ ] Production migration order/readbacks/rollback limits are included in the issue #60 evidence ledger.