Declaration Smoke Runbook
This runbook covers the current local operator smoke path for:
- auction declaration flow
- tender declaration flow
Resolving locale, route permissions, and workspace projection.
Current scope: Guest
Category: 90_stabilization | Version: v1.0.0
Owner: DOCUMENT_CUSTODIAN | Review cycle: 90 days
Approval authority: Unspecified
Documentation portal is read-only. Editing and mutation endpoints are disabled.
Kvary platform is originally created in Georgian. Where a Georgian version exists, Georgian is authoritative for platform UI, documentation, and legal interpretation.
Translations into other languages are provided for convenience. Some records may originate in other languages and carry their own source or legal locale for a specific flow, but where a Georgian version is available, the Georgian version prevails for platform-level wording and interpretation.
Metadata incomplete: Document ID, Version, Status, Owner Role, Last Review Date, Next Review Date, Change Log
This runbook covers the current local operator smoke path for:
It is written against the current local runtime chain and current declaration semantics.
The expected local dev chain is:
apps/web -> http://localhost:3000services/api -> http://localhost:4001services/svc-auth -> http://localhost:4100services/svc-tenders -> http://localhost:4020postgres -> postgres://kvary:kvary@127.0.0.1:5432/kvaryminio object storage -> http://localhost:9000minio console -> http://localhost:9001Recommended startup path:
npm run dev
Required DB migrations must already be applied.
Evidence upload/download also assumes MinIO is up and healthy.
Relevant declaration/evidence migrations include:
0033_auction_registry_internal_states.sql0034_auction_declaration_evidence.sql0035_output_allocations_v1.sql0036_link_auction_declarations_to_allocations.sql0037_tender_declarations_v1.sql0038_tender_declaration_evidence.sqlUse a live auth user with one of these roles:
AUCTION_DECLARER
MARKET_DECLARER
Current live auth note:
TENDER_DECLARER is not currently mapped in svc-authMARKET_DECLARER is the practical combined role for full smoke coverageAfter changing auth_accounts.role:
svc-auth if code changedOpen:
/en/global/allocationsCreate an allocation with at least:
allocationIdstakeholderIdproductiveAssetIdassetTypeproductNameproductCategoryquantityunitoriginRegionSave the allocation.
Expected:
From allocation workspace/list, launch:
Create Auction DeclarationExpected:
/en/global/auctions/declare?allocationId=<id>auctionId is prefilledauctionId before first saveRequired minimum:
auctionId presentExpected:
DRAFTGo to evidence step.
Expected:
Click:
Check ReadinessExpected:
DRAFTComplete required fields and click:
Mark ReadyExpected:
READY_FOR_ANNOUNCEMENTClick:
Declare AuctionExpected:
ANNOUNCEDInternal auction view:
DRAFTREADY_FOR_ANNOUNCEMENTANNOUNCEDPublic auction view:
DRAFTREADY_FOR_ANNOUNCEMENTANNOUNCEDOpen:
/en/global/tenders/declareCurrent tender registry still expects UUID-compatible tenderId.
Use one of:
Example:
77777777-7777-4777-8777-777777777777
Do not use free-form non-UUID ids in current tender flow.
Expected:
DRAFTGo to tender evidence step.
Expected:
supportingDocumentsspecificationEvidencecomplianceEvidenceClick:
Check ReadinessExpected:
Click:
Mark ReadyExpected:
READY_FOR_ANNOUNCEMENTClick:
Declare TenderExpected:
ANNOUNCEDInternal tender view:
DRAFTREADY_FOR_ANNOUNCEMENTANNOUNCEDPublic tender view:
DRAFTREADY_FOR_ANNOUNCEMENTANNOUNCEDDRAFT -> READY_FOR_ANNOUNCEMENT -> ANNOUNCEDDRAFT -> READY_FOR_ANNOUNCEMENT -> ANNOUNCEDNo direct DRAFT -> ANNOUNCED path is expected in current v1 behavior.
Current local chain assumes:
400140204020If env points to stale or wrong ports, list and declaration behavior can look broken even when DB state is correct.
Current tender declaration path still requires UUID-compatible tenderId because tenders.tender_id remains UUID-backed in the live schema.
This is a known current constraint.
If env changes:
At minimum:
apps/webservices/apiservices/svc-tendersservices/svc-authIf user role changes:
Draft and ready states are internal/operator-only by design.
If an operator says “it saved but I cannot see it publicly”, first verify whether they are looking at: