Skip to content

Latest commit

 

History

History
263 lines (223 loc) · 20.7 KB

File metadata and controls

263 lines (223 loc) · 20.7 KB

App platform developer portal

This page is the entry point for app developers, reviewers, operators, and release managers working with the Crypta app ecosystem beta.

Public-beta onboarding for users, operators, developers, former plugin authors, security reporters, reviewers, and release managers starts at public-beta/README.md.

Scope

The app platform beta covers offline app authoring, signed bundle and catalog workflows, local review evidence, first-party reference apps, and release certification. It is not a public production app store and it does not change FNP, FCP, Hyphanet/Freenet compatibility behavior, or retained FProxy browse behavior.

Use this portal first, then follow the detailed source-of-truth pages for the area you are touching:

Area Source of truth
Public beta onboarding front door public-beta/README.md
Copyable beta tutorials app-platform-beta-tutorials.md
Known beta limits and safety boundaries app-platform-beta-known-limitations.md
Beta submission, feedback, and closeout runbook app-platform-beta-program.md
Developer CLI reference app-dev-cli.md
Developer beta toolkit flow developer-beta-toolkit.md
Third-party developer beta program third-party-developer-beta-program.md
Third-party submission checklist third-party-app-submission-checklist.md
Platform API compatibility support window platform-api-compatibility-support-window.md
Third-party Hello Stable SDK example examples/third-party-hello-stable.md
Signed app bundles app-distribution.md
Signed catalogs and catalog sources app-catalogs.md
First-party beta catalog first-party-beta-catalog.md
First-party app beta quality pass first-party-app-beta-quality-pass.md
Production catalog channels production-first-party-catalog-channels.md
Catalog operations and mirrors catalog-operations-and-mirrors.md
Production beta release pipeline production-beta-release-pipeline.md
Multi-node beta soak and upgrade drill multi-node-beta-soak-and-upgrade-drill.md
Platform API contract platform-api-contract.md
Platform API 1.0 stable reference platform-api-1.0-stable-reference.md
Platform API route surface platform-api-surface.md
Browser SDK platform-sdk-js.md
App-service dependencies, bundles, and grants app-service-discovery-and-grants.md
Durable app data app-data-store.md
App-owned UI and isolated origins app-owned-ui.md
App UI design system and lint app-ui-design-system.md
Permissions and audit app-permissions-and-audit.md
AppVault secret and identity material app-secret-and-identity-vault.md
AppHost runtime hardening apphost-runtime-hardening.md
App update lifecycle and rollback app-update-lifecycle.md
User consent and permission upgrade UX user-consent-and-permission-upgrade-ux.md
App upgrade data migrations app-upgrade-data-migrations.md
App-data backup, restore, and portability app-data-backup-restore-portability.md
App review governance app-review-governance.md
Third-party app submission workflow app-store-submission-and-review-workflow.md
Social Inbox RC social-inbox-reference-app.md
Feed Reader reference app feed-reader-reference-app.md
Trust Graph Local RC trust-graph-preview.md
Legacy plugin freeze policy legacy-plugin-freeze-policy.md
Legacy plugin migration guide legacy-plugin-migration-guide.md
Legacy plugin migration cookbook legacy-plugin-migration-cookbook.md
Legacy HTTP boundary legacy-http-boundary.md
Legacy retirement plan legacy-retirement-plan.md
Operator beta dashboard and support bundle operator-beta-dashboard.md
Release certification release-certification.md
Security reporting and data handling SECURITY.md

Platform API versions

Cryptad exposes the current local Platform API transport under /api/v1. That route family is separate from the integer app compatibility contract version used by manifests, catalogs, developer tooling, and release certification.

The current source declares:

PlatformApiContract.CURRENT_API_VERSION = "v1"
PlatformApiContract.CURRENT_CONTRACT_VERSION = 23

In docs, manifests, and catalog descriptors:

  • /api/v1 identifies the transport route family.
  • contractVersion=23 identifies the current Platform API compatibility contract snapshot.
  • api.minimumVersion and api.maximumTestedVersion compare against the integer contract version, not against the URL route prefix or the Cryptad build number.
  • api.targetStability=stable selects the Platform API 1.0 stable baseline for third-party app compatibility. Use api.targetStability=experimental only when the app knowingly uses app-facing experimental capability names and also sets api.experimentalCapabilitiesAccepted=true.

Use platform-api-contract.md for compatibility rules and platform-api-1.0-stable-reference.md for the frozen stable baseline. Use platform-api-surface.md for route families.

The active Platform API 1.0 support-window policy is machine-readable in contract snapshots as compatibilityWindow. It requires previous contract snapshot history in production beta, rejects critical stable-removal waivers, and keeps experimental-to-stable graduation out of baseline 1.0 unless a future stable baseline is documented. Use platform-api-compatibility-support-window.md for the full policy.

Common author commands:

crypta-app api snapshot --output build/platform-api-contract.json
crypta-app api policy --contract build/platform-api-contract.json
crypta-app api diff \
  --previous docs/platform-api/contracts/platform-api-1.0-baseline.json \
  --current build/platform-api-contract.json \
  --output build/platform-api-stable-diff.json
crypta-app compat verify \
  --bundle-dir build/dev-apps/hello-stable \
  --contract build/platform-api-contract.json \
  --target-stability stable \
  --strict

First-party app set

The current first-party app ecosystem beta includes these repo-owned bundles:

App App id Role
Queue Manager queue-manager Queue read/write operator workflow.
Publisher publisher Legacy publisher replacement for content insert workflows.
Site Publisher site-publisher Static-site content publishing reference pattern.
Profile Publisher profile-publisher AppVault identity/profile signing, generated app-document insert, and durable draft state.
Social Inbox RC social-inbox Threaded social inbox reference app using bounded social-message signing, generated outbox inserts, durable subscriptions, local channel/search filters, read state, safe author profile links, and operator-approved Trust Graph Local RC service annotations.
Feed Reader & Publisher feed-reader Durable USK content.subscribe, bounded content.fetch, durable reader state, and generated feed snapshot publication.
Trust Graph Local RC trust-graph Local operator-curated trust service with anchors, imported public signed statements, lifecycle policy, bounded scoring evidence, redacted source metadata, publication, subscription helpers, and UI-local state.

See first-party-beta-catalog.md, production-first-party-catalog-channels.md, social-inbox-reference-app.md, feed-reader-reference-app.md, and trust-graph-preview.md for app-specific notes.

Trust Graph Local RC is advisory local trust only. It does not crawl the network, perform global moderation or blocking, change routing or FProxy browse behavior, propagate trust to other nodes, or promise legacy WebOfTrust, Freetalk, Sone, or Freemail compatibility. Apps that need trust annotations should use the read-only trust.score app-service through an operator-reviewed grant bundle and an active grant; they do not gain authority to import statements, mutate anchors, or change statement lifecycle records through that service.

Social Inbox RC keeps message threading, search, channel filtering, read/unread state, and author-profile links local to the app. It does not provide encrypted mail, Freetalk/Sone/Freemail compatibility, full WoT, moderation policy, a daemon-core social protocol, or background crawling.

Developer path

Start with the offline workflow. The first three commands do not require a live Crypta node, public network access, signing secrets, Docker, Node.js, or npm:

./gradlew :platform-devtools:installDist
export CRYPTA_APP="$PWD/platform-devtools/build/install/crypta-app/bin/crypta-app"
"$CRYPTA_APP" --help

Then follow this path:

Step Command or doc
Scaffold an app from a template `crypta-app init --template hello-stable
Run local UI against mock Platform API fixtures crypta-app dev --bundle-dir <bundle> in developer-beta-toolkit.md
Run offline checks crypta-app test --bundle-dir <bundle> --strict --json <report.json>
Verify stable API compatibility platform-api-compatibility-support-window.md and crypta-app compat verify --bundle-dir <bundle> --strict
Generate local development signing keys crypta-app keys generate
Sign and verify the staged bundle crypta-app sign, then crypta-app verify
Pack a deterministic ZIP artifact crypta-app pack
Create and verify a submission package third-party-app-submission-checklist.md, crypta-app submission create, crypta-app submission verify, and crypta-app submission pre-review
Enter public beta intake crypta-app submission intake import, crypta-app submission intake assign, crypta-app submission intake pre-review, and crypta-app submission intake decide in app-store-submission-and-review-workflow.md
Produce a reviewed beta catalog candidate crypta-app submission intake stage-candidate and crypta-app submission catalog-candidate in app-store-submission-and-review-workflow.md
Create a catalog entry descriptor crypta-app catalog entry
Create, sign, and verify a catalog crypta-app catalog create, crypta-app catalog sign, crypta-app catalog verify
Produce an offline USK publication plan crypta-app publish-usk --dry-run
Publish a signed catalog to a live USK crypta-app publish-usk --live from the release/operator environment
Submit app proposal or beta feedback app-platform-beta-program.md

crypta-app dev is loopback-only by default and serves a mock Platform API. It does not install the app, fetch catalogs, talk to the public Crypta network, or prove live-node permission grants.

Release manager path

Public beta readiness treats these workstreams as one ecosystem beta release story:

Readiness area Evidence and docs
First-party catalog first-party-beta-catalog.md, production-first-party-catalog-channels.md, catalog-operations-and-mirrors.md, app-catalog.first-party-beta, catalog.production-channels, catalog.operations-and-mirrors, catalog.smoke
Developer toolkit developer-beta-toolkit.md, app-platform.devtools-cli, app-platform.developer-beta-toolkit
Third-party developer beta third-party-developer-beta-program.md, third-party-app-submission-checklist.md, platform-api-compatibility-support-window.md, third-party-developer.* evidence
Third-party public beta intake app-store-submission-and-review-workflow.md, /api/v1/operator/app-submissions, Web Shell beta dashboard intake cards, and third-party-intake.queue-schema through third-party-intake.redaction evidence
Reference apps social-inbox-reference-app.md, feed-reader-reference-app.md, trust-graph-preview.md, reference-app.* evidence, app-platform.trust-graph-rc-scope-and-safety
Network-scale budgets and soak network-scale-soak-and-subscription-budget.md, release-certification.md, network-scale.* evidence, network-scale-soak-and-subscription-budget matrix row
Multi-node beta soak and upgrade drill multi-node-beta-soak-and-upgrade-drill.md, multi-node-beta.* evidence, multi-node-beta-soak-and-upgrade-drill matrix row
Review governance app-review-governance.md, review receipt, reviewer key lifecycle, transparency log evidence
Updates, migrations, and rollback app-update-lifecycle.md, app-upgrade-data-migrations.md, app-update.scheduler, app-update.rollback, app-update.data-migration-contract evidence
User consent user-consent-and-permission-upgrade-ux.md, app-platform.user-consent-flow evidence
Public beta hardening app-platform-beta-known-limitations.md, public-beta-security.* evidence
Legacy plugin freeze and migration legacy-plugin-freeze-policy.md, legacy-plugin-migration-guide.md, legacy-plugin-migration-cookbook.md, legacy-plugin.freeze-policy, legacy-plugin.migration-guide, legacy-plugin.social-inbox-spike, legacy-plugin.migration-finalization
Legacy admin status legacy-retirement-plan.md, legacy-admin.removal-wave-1, legacy-admin.removal-wave-2, legacy-admin.removal-wave-3, legacy-admin.removal-wave-4, legacy-admin.removal-wave-5, legacy-admin.final-admin-surface, legacy-admin.browse-retained, legacy-admin.emergency-fallback-retained; legacy admin is maintenance-only, FProxy browse/content rendering and content filter remain retained, and startup, recovery, and support fallbacks remain explicit
Operator recovery and support operator-rc-recovery-and-support-workflow.md, operator-beta-dashboard.md, privacy-preserving-beta-diagnostics.md, app-data-backup-restore-portability.md, operator-rc.* evidence, operator-beta.* evidence, app-platform.privacy-preserving-beta-diagnostics, operator-rc-recovery-and-support-workflow, operator-beta-ux-and-recovery, and privacy-preserving-diagnostics-risk matrix rows
Live-network beta certification release-certification.md, live-network-beta.* evidence, live-network-beta-certification matrix row when explicitly required
Ecosystem matrix release-certification.md, ecosystem certification matrix
Production beta go/no-go dashboard production-beta-go-no-go-dashboard.md, production-beta.go-no-go-* evidence, final go, no-go, or go-with-waivers launch decision
Docs and beta program This portal, app-platform-beta-tutorials.md, app-platform-beta-known-limitations.md, app-platform-beta-program.md

Release candidates should run the normal build/test gates plus release certification:

python3 tools/release-certification/certify.py self-test all
cp tools/release-certification/manifests/release-candidate.example.json \
  build/release-candidate.json
# Replace every placeholder before running the candidate.
python3 tools/release-certification/certify.py release-certification --manifest build/release-candidate.json

The generated release summary, release report, app-platform smoke report, review transparency-log evidence, network-scale soak summary, legacy retirement evidence, optional live-network beta evidence, ecosystem certification matrix, and production beta go/no-go dashboard are the closeout record. Live-network beta mode remains opt-in and should use only a localhost node with disposable fixtures unless the release manager is intentionally publishing the candidate first-party beta catalog.

Security entry points

The beta security model is capability-based and local-node enforced. Browser origin isolation, signed catalogs, signed bundles, review receipts, and AppVault routes are separate layers.

Start here:

Feedback and submissions

Use third-party-developer-beta-program.md for the external developer happy path and app-platform-beta-program.md for proposal requirements, feedback categories, redaction rules, and the maintainer closeout runbook. The submission flow is defined in app-store-submission-and-review-workflow.md. GitHub issue forms are available for app platform beta feedback, app submission proposals, compatibility issues, review appeals, and plugin migration feedback when GitHub issue templates are enabled for the repository.