Keep schema design branch aligned with current Home main
.gitignore+2 −0AGENTS.md+3 −2Makefile+19 −1cmd/home/main.go+4 −3cmd/oficina/main_linux.go+17 −0connect/README.md+89 −0connect/api.go+73 −0connect/bridge.go+285 −0connect/bridge_test.go+487 −0connect/config.go+106 −0connect/config_test.go+191 −0connect/go.mod+23 −0connect/go.sum+59 −0connect/link_handlers.go+114 −0connect/linkstore/flows.go+326 −0connect/linkstore/migrations/0001_links.sql+19 −0connect/linkstore/migrations/0002_person_binding.sql+1 −0connect/linkstore/store.go+236 −0connect/linkstore/store_test.go+647 −0connect/navigation.go+164 −0connect/navigation_negative_test.go+126 −0connect/navigation_return.go+79 −0connect/navigation_return_test.go+82 −0connect/navigation_test.go+132 −0connect/oauth.go+92 −0connect/oauth_test.go+48 −0connect/routes.go+163 −0connect/routes_test.go+102 −0connect/view.go+55 −0docs/superpowers/specs/2026-08-30-home-design.md+45 −7docs/superpowers/specs/2026-09-07-credential-return.md+13 −0go.mod+12 −3go.sum+36 −4handoff/fresh_test.go+289 −0handoff/go.mod+21 −0handoff/go.sum+55 −0handoff/http.go+233 −0handoff/http_test.go+186 −0handoff/migrations/0001_exchange.sql+26 −0handoff/seal/seal.go+75 −0handoff/seal/seal_test.go+123 −0handoff/store.go+401 −0handoff/store_test.go+325 −0implementation/compatibility-checker/audit.json+461 −0implementation/compatibility-checker/probe/closed-checkpoint-proof.json+29 −0implementation/compatibility-checker/probe/closed_checkpoint_probe_test.go.txt+171 −0implementation/compatibility-checker/probe/observation.json+28 −0implementation/compatibility-checker/probe/readonly_probe_test.go.txt+54 −0implementation/compatibility-checker/probe/reproduction.json+18 −0implementation/compatibility-checker/proposal.json+426 −0implementation/compatibility-checker/review-revision.json+37 −0implementation/compatibility-checker/source-validation.json+6 −0implementation/directory-runtime.md+43 −0implementation/directory-store.md+13 −0implementation/docs-chooser-continuation-design.md+49 −0implementation/docs-team-chooser.md+19 −0implementation/fresh-assertion.md+20 −0implementation/home-operator-open.md+59 −0implementation/home-operator-seed.md+290 −0implementation/home-provisioner.md+338 −0implementation/link-consumer-binding.md+21 −0implementation/roster-contract.md+79 −0implementation/roster-http-signing.md+219 −0implementation/roster-producer-storage.md+76 −0implementation/shared-purpose-seal.md+7 −0implementation/team-entry.md+58 −0internal/guardstest/logsinks_test.go+29 −1internal/home/app.go+105 −67internal/home/app_chooser_test.go+88 −0internal/home/app_test.go+2 −0internal/home/assertion_fresh_test.go+168 −0internal/home/assertion_intent.go+38 −0internal/home/brand.go+34 −0internal/home/brand_test.go+73 −0internal/home/compatibility_linux.go+362 −0internal/home/compatibility_linux_test.go+262 −0internal/home/compatibility_profiles/credential.json+158 −0internal/home/compatibility_profiles/directory.json+350 −0internal/home/continuation.go+11 −0internal/home/directory.go+106 −0internal/home/directory_catalog.go+65 −0internal/home/directory_catalog_test.go+152 −0internal/home/directory_runtime.go+121 −0internal/home/directory_runtime_test.go+204 −0internal/home/directorydata/migrations/0001_directory.sql+23 −0internal/home/directorydata/operator_migrations/migrations/0001_operator_bindings.sql+34 −0internal/home/directorydata/operator_schema.go+21 −0internal/home/directorydata/roster.go+197 −0internal/home/directorydata/roster_migrations/migrations/0001_roster.sql+43 −0internal/home/directorydata/roster_pending.go+29 −0internal/home/directorydata/roster_pending_test.go+197 −0internal/home/directorydata/roster_test.go+388 −0internal/home/directorydata/store.go+258 −0internal/home/directorydata/store_test.go+255 −0internal/home/docs_chooser.go+172 −0internal/home/docs_chooser_test.go+261 −0internal/home/docs_continue_test.go+149 −0internal/home/exchange.go+111 −0internal/home/exchange_test.go+290 −0internal/home/handoff_failure.go+77 −0internal/home/handoff_failure_test.go+90 −0internal/home/keymail_continue_test.go+38 −0internal/home/keymail_test.go+1 −1internal/home/keymailstub_test.go+6 −3internal/home/links.go+12 −2internal/home/logs_test.go+8 −0internal/home/markup_test.go+33 −0internal/home/noscript_test.go+32 −16internal/home/operator_person.go+40 −0internal/home/operator_person_test.go+308 −0internal/home/origins.go+110 −0internal/home/origins_config_test.go+139 −0internal/home/origins_test.go+104 −0internal/home/page.go+4 −0internal/home/passkey.go+3 −15internal/home/passkey_test.go+18 −33internal/home/roster_http.go+162 −0internal/home/roster_http_test.go+174 −0internal/home/roster_integration_test.go+553 −0internal/home/roster_pending_integration_test.go+62 −0internal/home/roster_runtime.go+105 −0internal/home/roster_runtime_test.go+128 −0internal/home/rpid_test.go+2 −2internal/home/runtime.go+208 −0internal/home/runtime_test.go+131 −0internal/home/seal/seal.go+6 −100internal/home/seal/vectors_test.go+43 −45internal/home/security.go+24 −0internal/home/security_test.go+38 −0internal/home/signin.go+12 −8internal/home/signin_return.go+68 −0internal/home/signin_return_factor_test.go+98 −0internal/home/signin_return_test.go+161 −0internal/home/signin_test.go+14 −2internal/home/static/assertion.js+2 −0internal/home/static/brand/LICENSE.lucide+43 −0internal/home/static/brand/apple-touch-icon.pngbinaryinternal/home/static/brand/brand.css+19 −0internal/home/static/brand/calendar.svg+10 −0internal/home/static/brand/docs.svg+5 −0internal/home/static/brand/icon-32.pngbinaryinternal/home/static/brand/icon.svg+3 −0internal/home/static/brand/meet.svg+2 −0internal/home/static/brand/memoria.svg+4 −0internal/home/static/brand/sheets.svg+4 −0internal/home/static/brand/slides.svg+3 −0internal/home/static/theme.css+0 −174internal/home/static/tokens.css+126 −12internal/home/templates/assertion.html+10 −0internal/home/templates/directory.html+20 −0internal/home/templates/directory_signed_out.html+5 −0internal/home/templates/docs_chooser.html+11 −0internal/home/templates/docs_continue.html+6 −0internal/home/templates/docs_empty.html+6 −0internal/home/templates/docs_unavailable.html+6 −0internal/home/templates/handoff_failed.html+6 −0internal/home/templates/layout.html+6 −1internal/home/templates/passkey_confirm.html+7 −3internal/home/templates/passkey_enrol.html+1 −1internal/home/templates/recovery_codes.html+2 −2internal/home/templates/signin.html+7 −3internal/home/templates/signin_confirm.html+3 −1internal/home/testapp_test.go+6 −1internal/operator/credential.go+74 −0internal/operator/directory.go+339 −0internal/operator/directory_test.go+259 −0internal/operator/engine.go+200 −0internal/operator/engine_test.go+219 −0internal/operator/inspect.go+132 −0internal/operator/inspect_test.go+79 −0internal/operator/migrations/credential/migrations/0001_operator.sql+19 −0internal/operator/migrations/credential/migrations/0002_operator_key_identity.sql+2 −0internal/operator/migrations/directory/migrations/0001_operator.sql+19 −0internal/operator/migrations/directory/migrations/0002_owner_receipts.sql+7 −0internal/operator/migrations/directory/migrations/0003_operator_key_identity.sql+2 −0internal/operator/open_linux.go+481 −0internal/operator/open_linux_test.go+403 −0internal/operator/owner.go+109 −0internal/operator/owner_test.go+71 −0internal/operator/protocol.go+259 −0internal/operator/protocol_test.go+148 −0internal/operator/readonly_linux.go+430 −0internal/operator/readonly_linux_test.go+161 −0internal/operator/verification.go+223 −0internal/operator/verification_test.go+199 −0internal/provisioner/backup_linux.go+261 −0internal/provisioner/backup_linux_test.go+119 −0internal/provisioner/cli_linux.go+133 −0internal/provisioner/cli_linux_test.go+74 −0internal/provisioner/floor_linux.go+264 −0internal/provisioner/floor_linux_test.go+213 −0internal/provisioner/init_linux.go+164 −0internal/provisioner/init_linux_test.go+116 −0internal/provisioner/installations_linux.go+440 −0internal/provisioner/installations_linux_test.go+481 −0internal/provisioner/journal_linux.go+389 −0internal/provisioner/journal_linux_test.go+219 −0internal/provisioner/keys_linux.go+98 −0internal/provisioner/keys_linux_test.go+38 −0internal/provisioner/prepare_linux.go+195 −0internal/provisioner/prepare_linux_test.go+488 −0internal/provisioner/storage_linux.go+137 −0internal/provisioner/storage_linux_test.go+141 −0roster/cache.go+501 −0roster/cache_test.go+475 −0roster/go.mod+22 −0roster/go.sum+57 −0roster/lease_test.go+207 −0roster/protocol.go+291 −0roster/protocol_test.go+295 −0
CI passed — run details
.gitignoreLoading diff…
AGENTS.mdLoading diff…
MakefileLoading diff…
cmd/home/main.goLoading diff…
cmd/oficina/main_linux.goLoading diff…
connect/README.mdLoading diff…
connect/api.goLoading diff…
connect/bridge.goLoading diff…
connect/bridge_test.goLoading diff…
connect/config.goLoading diff…
connect/config_test.goLoading diff…
connect/go.modLoading diff…
connect/go.sumLoading diff…
connect/link_handlers.goLoading diff…
connect/linkstore/flows.goLoading diff…
connect/linkstore/migrations/0001_links.sqlLoading diff…
connect/linkstore/migrations/0002_person_binding.sqlLoading diff…
connect/linkstore/store.goLoading diff…
connect/linkstore/store_test.goLoading diff…
connect/navigation.goLoading diff…
connect/navigation_negative_test.goLoading diff…
connect/navigation_return.goLoading diff…
connect/navigation_return_test.goLoading diff…
connect/navigation_test.goLoading diff…
connect/oauth.goLoading diff…
connect/oauth_test.goLoading diff…
connect/routes.goLoading diff…
connect/routes_test.goLoading diff…
connect/view.goLoading diff…
docs/superpowers/specs/2026-08-30-home-design.mdLoading diff…
docs/superpowers/specs/2026-09-07-credential-return.mdLoading diff…
go.modLoading diff…
go.sumLoading diff…
handoff/fresh_test.goLoading diff…
handoff/go.modLoading diff…
handoff/go.sumLoading diff…
handoff/http.goLoading diff…
handoff/http_test.goLoading diff…
handoff/migrations/0001_exchange.sqlLoading diff…
handoff/seal/seal.goLoading diff…
handoff/seal/seal_test.goLoading diff…
handoff/store.goLoading diff…
handoff/store_test.goLoading diff…
implementation/compatibility-checker/audit.jsonLoading diff…
implementation/compatibility-checker/probe/closed-checkpoint-proof.jsonLoading diff…
implementation/compatibility-checker/probe/closed_checkpoint_probe_test.go.txtLoading diff…
implementation/compatibility-checker/probe/observation.jsonLoading diff…
implementation/compatibility-checker/probe/readonly_probe_test.go.txtLoading diff…
implementation/compatibility-checker/probe/reproduction.jsonLoading diff…
implementation/compatibility-checker/proposal.jsonLoading diff…
implementation/compatibility-checker/review-revision.jsonLoading diff…
implementation/compatibility-checker/source-validation.jsonLoading diff…
implementation/directory-runtime.mdLoading diff…
implementation/directory-store.mdLoading diff…
implementation/docs-chooser-continuation-design.mdLoading diff…
implementation/docs-team-chooser.mdLoading diff…
implementation/fresh-assertion.mdLoading diff…
implementation/home-operator-open.mdLoading diff…
implementation/home-operator-seed.mdLoading diff…
implementation/home-provisioner.mdLoading diff…
implementation/link-consumer-binding.mdLoading diff…
implementation/roster-contract.mdLoading diff…
implementation/roster-http-signing.mdLoading diff…
implementation/roster-producer-storage.mdLoading diff…
implementation/shared-purpose-seal.mdLoading diff…
implementation/team-entry.mdLoading diff…
internal/guardstest/logsinks_test.goLoading diff…
internal/home/app.goLoading diff…
internal/home/app_chooser_test.goLoading diff…
internal/home/app_test.goLoading diff…
internal/home/assertion_fresh_test.goLoading diff…
internal/home/assertion_intent.goLoading diff…
internal/home/brand.goLoading diff…
internal/home/brand_test.goLoading diff…
internal/home/compatibility_linux.goLoading diff…
internal/home/compatibility_linux_test.goLoading diff…
internal/home/compatibility_profiles/credential.jsonLoading diff…
internal/home/compatibility_profiles/directory.jsonLoading diff…
internal/home/continuation.goLoading diff…
internal/home/directory.goLoading diff…
internal/home/directory_catalog.goLoading diff…
internal/home/directory_catalog_test.goLoading diff…
internal/home/directory_runtime.goLoading diff…
internal/home/directory_runtime_test.goLoading diff…
internal/home/directorydata/migrations/0001_directory.sqlLoading diff…
internal/home/directorydata/operator_migrations/migrations/0001_operator_bindings.sqlLoading diff…
internal/home/directorydata/operator_schema.goLoading diff…
internal/home/directorydata/roster.goLoading diff…
internal/home/directorydata/roster_migrations/migrations/0001_roster.sqlLoading diff…
internal/home/directorydata/roster_pending.goLoading diff…
internal/home/directorydata/roster_pending_test.goLoading diff…
internal/home/directorydata/roster_test.goLoading diff…
internal/home/directorydata/store.goLoading diff…
internal/home/directorydata/store_test.goLoading diff…
internal/home/docs_chooser.goLoading diff…
internal/home/docs_chooser_test.goLoading diff…
internal/home/docs_continue_test.goLoading diff…
internal/home/exchange.goLoading diff…
internal/home/exchange_test.goLoading diff…
internal/home/handoff_failure.goLoading diff…
internal/home/handoff_failure_test.goLoading diff…
internal/home/keymail_continue_test.goLoading diff…
internal/home/keymail_test.goLoading diff…
internal/home/keymailstub_test.goLoading diff…
internal/home/links.goLoading diff…
internal/home/logs_test.goLoading diff…
internal/home/markup_test.goLoading diff…
internal/home/noscript_test.goLoading diff…
internal/home/operator_person.goLoading diff…
internal/home/operator_person_test.goLoading diff…
internal/home/origins.goLoading diff…
internal/home/origins_config_test.goLoading diff…
internal/home/origins_test.goLoading diff…
internal/home/page.goLoading diff…
internal/home/passkey.goLoading diff…
internal/home/passkey_test.goLoading diff…
internal/home/roster_http.goLoading diff…
internal/home/roster_http_test.goLoading diff…
internal/home/roster_integration_test.goLoading diff…
internal/home/roster_pending_integration_test.goLoading diff…
internal/home/roster_runtime.goLoading diff…
internal/home/roster_runtime_test.goLoading diff…
internal/home/rpid_test.goLoading diff…
internal/home/runtime.goLoading diff…
internal/home/runtime_test.goLoading diff…
internal/home/seal/seal.goLoading diff…
internal/home/seal/vectors_test.goLoading diff…
internal/home/security.goLoading diff…
internal/home/security_test.goLoading diff…
internal/home/signin.goLoading diff…
internal/home/signin_return.goLoading diff…
internal/home/signin_return_factor_test.goLoading diff…
internal/home/signin_return_test.goLoading diff…
internal/home/signin_test.goLoading diff…
internal/home/static/assertion.jsLoading diff…
internal/home/static/brand/LICENSE.lucideLoading diff…
internal/home/static/brand/apple-touch-icon.pngLoading diff…
internal/home/static/brand/brand.cssLoading diff…
internal/home/static/brand/calendar.svgLoading diff…
internal/home/static/brand/docs.svgLoading diff…
internal/home/static/brand/icon-32.pngLoading diff…
internal/home/static/brand/icon.svgLoading diff…
internal/home/static/brand/meet.svgLoading diff…
internal/home/static/brand/memoria.svgLoading diff…
internal/home/static/brand/sheets.svgLoading diff…
internal/home/static/brand/slides.svgLoading diff…
internal/home/static/theme.cssLoading diff…
internal/home/static/tokens.cssLoading diff…
internal/home/templates/assertion.htmlLoading diff…
internal/home/templates/directory.htmlLoading diff…
internal/home/templates/directory_signed_out.htmlLoading diff…
internal/home/templates/docs_chooser.htmlLoading diff…
internal/home/templates/docs_continue.htmlLoading diff…
internal/home/templates/docs_empty.htmlLoading diff…
internal/home/templates/docs_unavailable.htmlLoading diff…
internal/home/templates/handoff_failed.htmlLoading diff…
internal/home/templates/layout.htmlLoading diff…
internal/home/templates/passkey_confirm.htmlLoading diff…
internal/home/templates/passkey_enrol.htmlLoading diff…
internal/home/templates/recovery_codes.htmlLoading diff…
internal/home/templates/signin.htmlLoading diff…
internal/home/templates/signin_confirm.htmlLoading diff…
internal/home/testapp_test.goLoading diff…
internal/operator/credential.goLoading diff…
internal/operator/directory.goLoading diff…
internal/operator/directory_test.goLoading diff…
internal/operator/engine.goLoading diff…
internal/operator/engine_test.goLoading diff…
internal/operator/inspect.goLoading diff…
internal/operator/inspect_test.goLoading diff…
internal/operator/migrations/credential/migrations/0001_operator.sqlLoading diff…
internal/operator/migrations/credential/migrations/0002_operator_key_identity.sqlLoading diff…
internal/operator/migrations/directory/migrations/0001_operator.sqlLoading diff…
internal/operator/migrations/directory/migrations/0002_owner_receipts.sqlLoading diff…
internal/operator/migrations/directory/migrations/0003_operator_key_identity.sqlLoading diff…
internal/operator/open_linux.goLoading diff…
internal/operator/open_linux_test.goLoading diff…
internal/operator/owner.goLoading diff…
internal/operator/owner_test.goLoading diff…
internal/operator/protocol.goLoading diff…
internal/operator/protocol_test.goLoading diff…
internal/operator/readonly_linux.goLoading diff…
internal/operator/readonly_linux_test.goLoading diff…
internal/operator/verification.goLoading diff…
internal/operator/verification_test.goLoading diff…
internal/provisioner/backup_linux.goLoading diff…
internal/provisioner/backup_linux_test.goLoading diff…
internal/provisioner/cli_linux.goLoading diff…
internal/provisioner/cli_linux_test.goLoading diff…
internal/provisioner/floor_linux.goLoading diff…
internal/provisioner/floor_linux_test.goLoading diff…
internal/provisioner/init_linux.goLoading diff…
internal/provisioner/init_linux_test.goLoading diff…
internal/provisioner/installations_linux.goLoading diff…
internal/provisioner/installations_linux_test.goLoading diff…
internal/provisioner/journal_linux.goLoading diff…
internal/provisioner/journal_linux_test.goLoading diff…
internal/provisioner/keys_linux.goLoading diff…
internal/provisioner/keys_linux_test.goLoading diff…
internal/provisioner/prepare_linux.goLoading diff…
internal/provisioner/prepare_linux_test.goLoading diff…
internal/provisioner/storage_linux.goLoading diff…
internal/provisioner/storage_linux_test.goLoading diff…
roster/cache.goLoading diff…
roster/cache_test.goLoading diff…
roster/go.modLoading diff…
roster/go.sumLoading diff…
roster/lease_test.goLoading diff…
roster/protocol.goLoading diff…
roster/protocol_test.goLoading diff…