Skip to content

feat: add inquiry interaction foundation - #22

Merged
david-developer merged 7 commits into
mainfrom
feat/inquiry-conversation
Oct 4, 2026
Merged

david-developer merged 7 commits into
mainfrom
feat/inquiry-conversation

Conversation

@david-developer

@david-developer david-developer commented Oct 1, 2026 •

Copy link
Copy Markdown
Owner

An ACTIVE seeker with a current verified, unreplaced phone can contact an eligible public listing to create or reuse its Interaction and Conversation shell. The server derives provider context, rejects self-contact, checks authoritative public listing visibility and authorizes history to the seeker or current individual provider actor. This slice does not implement messages, a composer, provider inbox or provider responses.

The final migration and command enforce one active listing/seeker/provider context across OPEN and RESTRICTED. Fresh inquiry keys reuse OPEN, deny RESTRICTED with CAPABILITY_RESTRICTED, and may create a new OPEN after CLOSED history when currently eligible. UUID idempotency and request hashes reject same-key/different-request reuse; insert conflict handling and concurrent recovery preserve the same active-state invariant. A genuinely new Interaction emits exactly one interaction_created source event.

History remains readable to authorized actors after listing visibility is lost, with title=null and listing_visible=false. Reads call the authoritative public visibility policy and only project the approved/current revision title; unapproved current revision content, contact details, private addresses and internal verification/authority/outbox/audit values remain excluded. Historical participant rows do not grant arbitrary current access. Production visibility continues to reject synthetic verification; synthetic allowances are isolated to test stores.

This branch was synchronized through an ordinary merge of green main, preserving all inquiry commits without rebase or cherry-pick. The only handoff conflict was resolved additively, retaining discovery, inquiry/correction and both security-maintenance histories while recording the current green-main state. Application code, migrations, regression tests and lockfile are unchanged from the old inquiry head.

Integration identity Exact SHA
Old inquiry head 2439e30a0bd6bbd61a8655b652c03dd017e9e11a
Green main / PR #24 merge 91069faf210fd4e7b39fa1c97ecea936886f7de5
Branch integration merge 0956ee2b958047fb39b4b82d79af8e4eb0517dc4
Final synchronized head, including evidence handoff dfe9f70823e0db0045e2c94bb15ab70f9a73535f

Main was verified separately by exact-main Checks 37240206535 before synchronization. Final-head push Checks 37241338455 and PR Checks 37241342083 both PASSED every gate with no skipped stages: secrets, guarded dependency audit, contracts, clean migrations, full DB/API integration, lint, typecheck, startup/workspace tests, full build/mobile exports and both Chromium suites.

Evidence on both final-head CI runs Result
Fresh PostgreSQL service migrations, including final 0025_interactions_conversations PASS; prior clean-schema blocker resolved
Dedicated Interaction coverage within full DB suite 4/4; includes eight visibility-loss cases
Full database integration 26/26
Focused inquiry HTTP coverage within API suite 1/1
Full API integration 8/8
Contracts 51 routes / 39 schemas
Web Chromium 14/14, including all three inquiry scenarios
Admin Chromium 7/7

Retained regressions cover create, OPEN reuse, idempotent retry and conflicting request, concurrency convergence, RESTRICTED denial, database OPEN/RESTRICTED coexistence prevention, CLOSED reopening, self-contact/phone gating, unrelated-user denial, unapproved-current-revision and authority-stale history suppression, and inquiry visibility loss across publication, freshness, provider eligibility, identity, relationship, authority, media and market discoverability. HTTP tests cover anonymous 401, eligible 201, safe conflicts/denials, RESTRICTED 403, unrelated read 404 and private/internal value exclusion. Browser tests verify anonymous sign-in and phone-verification gates without inquiry mutation, and eligible navigation to a Conversation shell with no composer/contact/private-address leakage. These are synthetic regressions, not real Cognito or end-to-end G2 acceptance.

Local feasible validation also passed: dedicated Interaction 4/4, inquiry HTTP 1/1, DB 26/26, API 8/8, contracts, secrets, configured/unfiltered audits, fresh uncached lint/typecheck/tests/full build and diff checks. Local tests used only localhost:5433/pachi_test; its previously migrated schema was not used as clean-migration acceptance evidence. Clean final 0025 evidence comes from the fresh CI services.

Security policy is inherited from main: PR #23's node-forge GHSA-86w9-cpqp-85rv and PR #24's braces GHSA-vfj7-8cjw-p6xm are the only temporary ignores, in that order, at threshold low. Configured audit PASS; unfiltered audit still reports exactly those two HIGH findings and zero others. Neither vulnerability is fixed. Both remain temporary acceptances, reviewed by 2026-10-16, with the documented patched-release/compatible-dependency-removal triggers. No dependency/lockfile changes or third exception were added during synchronization.

Durable BlockRelationship/CapabilityRestriction sourcing remains absent; organization participant assignment authorization remains deferred; messaging/provider response and analytics consumption remain incomplete. G2 remains NOT RUN. No Cognito, real verification/evidence, development data or environment files changed. Leave this PR OPEN / DRAFT / UNMERGED for review. No deployment or conversation-messaging implementation is authorized by this synchronization.

@david-developer
david-developer marked this pull request as ready for review October 4, 2026 23:30
@david-developer
david-developer merged commit 3dbbc71 into main Oct 4, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant