خطای ۴۰۳ وسط Pipeline الزاماً یعنی «ابزار ایران را تحریم کرده» نیست. ممکن است Token Scope، Role، WAF، quota، policy سازمان، billing، URL، method یا حساب تغییر کرده باشد. اگر بدون تشخیص به DNS، Proxy یا ابزار دیگری بروید، هم علت را پنهان میکنید و هم ممکن است Credential و Evidence سازمان را در مسیر تأییدنشده قرار دهید.
این راهنما دو Runbook به هم متصل میکند: Access Incident برای تشخیص مستند اختلال، و Toolchain Continuity/Migration برای حفظ Artifact و جریان تصمیم اگر محدودیت پایدار تأیید شد. هدف «عبور از محدودیت» نیست؛ Restore مجاز، Degraded mode یا مهاجرت قابلبازگشت با هویت و موقعیت واقعی است.
پاسخ کوتاه: با خطای ۴۰۳ ابزار QA چه کنیم؟
- تلاشهای تکراری و تغییرات تصادفی را متوقف کنید.
- Request/Response، زمان، Client، Account و تغییر اخیر را با Redaction ثبت کنید.
- لایهٔ شکست را از DNS تا Vendor policy طبقهبندی کنید.
- فقط Probe کمریسک و مجاز با Control اجرا کنید.
- از Admin/Vendor پاسخ تاریخدار و Case ID بگیرید.
- Restore، Degraded، HOLD یا Migration را با Authority انتخاب کنید.
- اگر مهاجرت لازم شد، Export/Mapping/Reconciliation/Dual-run/Cutover/Rollback را قبل از حذف تمرین کنید.
انتخاب اولیهٔ ابزار و Alternative در راهنمای انتخاب QA Toolchain انجام میشود. مقالهٔ حاضر مالک Incident، Continuity و Migration پس از اختلال دسترسی است؛ فهرست «جایگزین برتر» نمیسازد.
HTTP ۴۰۳ چه میگوید و چه نمیگوید؟
استاندارد HTTP در RFC ۹۱۱۰ و مرجع ۴۰۳ در MDN توضیح میدهند که سرور درخواست را فهمیده اما از انجام آن خودداری کرده است؛ تکرار درخواست بدون تغییر معمولاً همان نتیجه را میدهد. این Status علت سیاست را نام نمیبرد. Region restriction فقط یکی از فرضیههاست و باید با Body/Header، Documentation یا پاسخ Vendor اثبات شود.
| مشاهده | فرضیههای نمونه | نتیجهای که مجاز نیست |
|---|---|---|
| 403 | Permission، WAF، policy، region، quota | «قطعاً تحریم است» |
| 401 | Credential غایب/نامعتبر/منقضی | «سرویس Down است» |
| 404 | Path/version/visibility/resource | «Artifact حذف شده» |
| 407 | Proxy authentication | «Vendor مسدود کرده» |
| 429 | Rate/quota/window | «Account بسته شد» |
| TLS/DNS timeout | resolver، route، certificate، network | «HTTP 403» |
اول لایهٔ شکست را مشخص کنید
- Local process: config، clock، CA، environment variable، Client version؛
- DNS: resolution، split DNS، stale cache و poisoning؛
- Network/Proxy: route، egress policy، ۴۰۷، timeout و TLS interception؛
- CDN/WAF: IP reputation، bot rule، geo rule، rate و challenge؛
- Authentication: Token expiry، audience، issuer، signature و clock skew؛
- Authorization: Role، Scope، resource ownership و org membership؛
- Account/Billing: plan، quota، suspension، renewal و organization state؛
- Vendor/Terms: country/region/identity/export policy؛
- Integration: wrong endpoint/method/schema/version or duplicated event.
یک Browser page و یک CI agent ممکن است مسیرهای متفاوت داشته باشند؛ سبز بودن یکی دیگری را رد نمیکند. Failure boundary را دقیقاً روی Request و Consumer مشخص کنید.
Access Incident Record؛ پیش از هر تغییر
Incident-ID: Detected-at / timezone: Reporter / owner / severity: Workflow and decision affected: Client/runtime/version: Method / canonical URL / endpoint version: Account/org/role (redacted): Request-ID / trace-ID: Status / selected headers / body code: DNS/TLS/proxy observations: Last-known-good / first-known-bad: Recent changes: Sensitive evidence location: Immediate containment: Next probe / authority:
Token، Cookie، API key، email، IP شخصی و Customer data را در Ticket عمومی نگذارید. Headerها را Allowlist کنید، Body را Redact و Raw capture را در مخزن محدود با Retention ثبت کنید. Screenshot بریدهشده بدون Timestamp و Request ID Evidence کافی نیست.
Baseline؛ آخرین وضعیت سالم را بازسازی کنید
Baseline-ID: Last successful event/run: Observed-at: Tool/edition/region: Client/runtime/dependency versions: Account/org/role: Endpoint/method: Source IP/egress class: Plan/quota state: Artifact/config digest: Result/evidence: Known changes since baseline: Confidence/unknowns:
«دیروز کار میکرد» بدون Run ID، Config و Account مشخص قابلمقایسه نیست. Drift ممکن است در Client، Plugin، Role، endpoint، Certificate، Plan یا Vendor رخ داده باشد.
Probe Matrix؛ یک متغیر در هر بار
| Probe | ثابتها | متغیر | Claim محدود |
|---|---|---|---|
| Known-good account | Client/network/request | Account/role | Account-specific signal |
| Known-good endpoint | Account/client/network | Resource | Resource-policy signal |
| Approved alternate egress | Account/request/client | Network path | Path/region hypothesis only |
| Previous pinned client | Account/network/request | Client/version | Client regression signal |
| Official status/support | Incident time/product | Vendor evidence | Service/policy confirmation |
Probe باید از قبل مجاز، کمحجم، بدون دادهٔ واقعی و دارای Stop باشد. چند متغیر همزمان—مثلاً VPN تازه، Account دیگر و نسخهٔ قدیمی—نتیجه را غیرقابلتفسیر میکند.
Response Evidence؛ چه چیزهایی را ثبت کنیم؟
- Status و application error code؛
- Date، request/correlation ID و cache/CDN marker؛
- Content-Type و Retry-After اگر وجود دارد؛
- WWW-Authenticate یا policy identifier با Redaction؛
- resolved host/IP class، TLS issuer/expiry و Proxy status؛
- Client/SDK/CLI version و command shape بدون Secret؛
- Account organization/role/plan/quota state؛
- Vendor status page، Terms/Eligibility version یا Support case؛
- تفاوت با Control و Baseline.
وجود Header خاص بهتنهایی علت را ثابت نمیکند؛ CDN میتواند پاسخ Vendor را Wrap کند. Evidence را با Source و Confidence نگه دارید.
فرضیه را با Evidence رتبهبندی کنید
Hypothesis-ID: Proposed cause: Supporting observations: Contradicting observations: Alternative causes: Discriminating probe: Safety/permission: Expected result by branch: Actual result: Confidence: Next action / owner:
«این Vendor همیشه ایران را میبندد» فرضیهٔ تاریخناپذیر است. Product، feature، edition، account type، region، date و Source را نام ببرید. Policy ممکن است با Runtime availability متفاوت باشد.
Classification؛ Incident فنی یا محدودیت سیاستی؟
Classification-ID: Layer: Scope: user | org | region | feature | endpoint: Cause status: confirmed | probable | unknown: Authority/source: First/last observed: Temporary/permanent/unknown: Workaround permitted?: Data/security impact: Decision impact: Recheck date:
تا وقتی Cause تأیید نشده، برچسب «تحریمشده» را در Inventory ننویسید. برچسب بهتر ممکن است «Cloud recording برای Account/Region X در تاریخ Y unavailable؛ Source Z» باشد.
Stop Rules؛ تشخیص نباید به دورزدن تبدیل شود
- هویت، آدرس، کشور یا Account غیرواقعی نسازید؛
- Account شخص دیگر یا Credential اجارهای استفاده نکنید؛
- Terms/KYC/Export policy را دور نزنید؛
- Proxy/DNS ناشناس را با Secret یا دادهٔ سازمان Probe نکنید؛
- Certificate warning را Ignore و TLS validation را خاموش نکنید؛
- Binary قدیمی/کرکشده را برای «بازگشت دسترسی» نصب نکنید؛
- Rate/WAF را با درخواست بیشتر آزمایش نکنید؛
- بدون Authority، داده را به SaaS جایگزین Upload نکنید.
اگر مسیر رسمی قابلاستفاده نیست، انتخابها HOLD، Degraded mode یا Migration هستند. دسترسی موقتِ غیرمجاز Continuity نیست.
Vendor Confirmation؛ پاسخ تاریخدار بگیرید
VendorCase-ID: Product/edition/feature: True account organization/location: Observed incident IDs/times: Minimal redacted reproduction: Question: eligibility | policy | technical: Documentation/Terms version: Support response: Scope and exceptions: Effective date / expiry: Appeal/escalation: Operational decision:
پاسخ Forum یا Blog شخص ثالث را جای Policy رسمی نگذارید. اگر Vendor پاسخ نمیدهد، UNKNOWN را حفظ و Continuity risk را بر همان اساس تصمیمگیری کنید.
Impact Analysis؛ کدام جریان واقعاً متوقف شده؟
Dependency-ID: Tool capability consumed: Workflow/trigger: Producer/consumer: Critical artifact/data: Decision supported: Frequency/volume: Maximum tolerable outage: Manual/degraded alternative: Backlog growth: Safety/privacy constraints: Owner/escalation:
«Tool down است» Impact نیست. شاید اجرای Local ادامه دارد ولی Cloud dashboard و Parallelization متوقف شده؛ یا Test caseها خواندنیاند ولی edit/export بسته است. Capabilityهای سالم و خراب را جدا کنید.
RTO، RPO و MTD را برای Artifact تعریف کنید
| مفهوم | سؤال عملی | مثال QA |
|---|---|---|
| MTD | حداکثر تحمل اختلال چیست؟ | Release evidence تا دو روز |
| RTO | خدمت چه زمانی باید برگردد؟ | Runner محدود طی چهار ساعت |
| RPO | چه مقدار داده میتوان از دست داد؟ | حداکثر یک Run/یک ساعت |
| WRT | پس از Restore چه زمان برای reconcile لازم است؟ | بازسازی links و rerun |
راهنمای Contingency Planning در NIST بر ارزیابی نیاز/اولویت، برنامه، اقدام فنی و آزمون تداوم تأکید دارد. از آن بهعنوان منبع طراحی استفاده کنید، نه ادعای انطباق سازمان خود.
Degraded Mode؛ ادامهٔ محدود و صادقانه
DegradedMode-ID: Capabilities retained: Capabilities unavailable: Allowed workflows: Prohibited decisions: Manual steps: Evidence location: Queue/backlog: Capacity/SLA: Entry/exit authority: Maximum duration: Reconciliation plan: User communication:
مثلاً Local runner ممکن است Check اجرا کند ولی Trend، Device cloud یا audit history در دسترس نباشد. نتیجهٔ Local را به همان Claim محدود کنید و Release Gate وابسته به Evidence غایب را دور نزنید.
Continuity Contract؛ پیش از بحران بنویسید
Continuity-ID: Tool/capability/owner: Critical workflows: MTD/RTO/RPO/WRT: Detection and escalation: Degraded mode: Backup/export cadence: Restore target: Alternative capacity: Identity/secrets: Exercise schedule: Evidence/last result: Review/change triggers:
خرید License یا Self-hosting، تداوم را تضمین نمیکند. NIST نیز برنامهٔ تداوم را ترکیبی از Plan، Procedure و Technical measure برای Recovery عملیات و داده میداند؛ Exercise دورهای و اصلاح پس از تغییر لازم است.
Backup؛ داشتن فایل مساوی Recovery نیست
- Scope اشیا، Attachment، Comment، History، Link، user و permission؛
- Full/incremental cadence و RPO؛
- Encryption/key ownership و دسترسی Restore؛
- Version/format/schema و checksum؛
- مکان مستقل و failure-domain جدا؛
- Retention/legal hold/deletion؛
- Restore procedure و زمان؛
- Sample/Count/Hash/semantic validation؛
- آخرین Exercise و Finding.
Screenshot و CSV محدود معمولاً Backup کامل Test management نیستند. Export باید با Application/API قابلخواندن و روی محیط Restore جدا آزموده شود.
Export Inventory؛ پیش از انتخاب Alternative
ExportObject: Object type / count: Fields/custom fields: Rich text / attachments: Comments/history/audit: Links/hierarchy: Users/groups/permissions: Workflow/status/resolution: Automation/integration: Raw result/evidence: Export API/format/limit: Retention/ownership: Priority for continuity:
Alternative باید Consumerهای همین اشیا را پشتیبانی یا تبدیل کند. «هر دو Test management هستند» Drop-in equivalence را ثابت نمیکند.
Alternative Capability Map؛ نام برندها را جایگزین نکنید
Capability: Current implementation: Required semantics: Alternative implementation: Exact candidate manifest: Fully supported | adapted | absent: Data/identity changes: Operational owner: PoC evidence: Residual risk: Decision/expiry:
برای API، Local client ممکن است Request collection را جایگزین کند ولی Monitor، collaboration یا Secret governance را نه. برای Browser cloud، Grid محلی ممکن است Browser execution بدهد ولی Device fidelity، geographic network، support و ظرفیت را نه. برای مقایسه Open Source/Commercial و Self-hosted از راهنمای License، TCO و Exit استفاده کنید.
Self-hosting؛ مسئولیت منتقل میشود، حذف نمیشود
- زیرساخت، ظرفیت، patch، hardening و network؛
- database/cache/queue/object storage؛
- backup/restore/DR و key management؛
- SSO/MFA/RBAC/audit؛
- monitoring/alert/on-call/incident؛
- upgrade/plugin compatibility/migration؛
- license/NOTICE/source/SBOM؛
- support، documentation و bus factor؛
- هزینهٔ Compute/Storage/Egress/عملیات؛
- Exit از Self-hosted جدید.
Container image مساوی سرویس عملیاتی نیست. Self-hosting میتواند کنترل و Offline capability بدهد، اما شما Vendor عملیات میشوید. معماری محیط Local/VM/Container/Cloud و Fidelity در راهنمای محیط تست مدرن بررسی شده است.
License و Supply Chain در مهاجرت اضطراری
فشار Incident زمان مناسبی برای Binary کرکشده، image ناشناس یا installer قدیمی نیست. Artifact/edition/version/license/obligation را ثبت کنید؛ راهنمای مجوز ابزار متنباز مرز Artifact تا NOTICE/Source را توضیح میدهد.
SupplyChain-ID: Artifact/version/platform: Canonical source: Mirror/cache: Retrieved-at: Expected/observed digest: Signature/signer/trust: SBOM/dependencies: License/obligation: Vulnerability/advisory snapshot: Scan/approval/promotion: Rollback artifact:
راهنمای رسمی CISA دربارهٔ SBOM، فهرست اجزای نرمافزار را برای شفافیت زنجیرهٔ تأمین مهم میداند. در Candidate Record نیز Source، نسخه، Hash/Signature و SBOM را جدا ثبت کنید؛ وجود هیچکدام بهتنهایی امنبودن Candidate خاص را ثابت نمیکند.
Data Flow و Secret پیش از انتقال
MigrationDataFlow-ID: Source object/data class: PII/secret/evidence/source code: Export location: Transform process: Temporary storage: Target/region/subprocessors: Identity/role: Encryption/key: Retention/deletion: Logging/redaction: Approvals/evidence:
Migration dump اغلب از Production tool میآید و میتواند Secret یا دادهٔ افراد داشته باشد. محیط Trial و Script تبدیل باید حداقل دسترسی، دادهٔ Masked/Synthetic، Log redaction و Cleanup receipt داشته باشد.
Semantic Mapping؛ Statusها فقط رشته نیستند
| Source | Target | ریسک معنایی | آزمون |
|---|---|---|---|
| Test case version | Case/revision | History collapse | نسخه و current pointer |
| Blocked | Untested/failed | نتیجه عوض میشود | State contract |
| Requirement link | URL/custom field | Traceability ناقص | referential integrity |
| Attachment | Object/file | نام/Hash/permission | digest/open/access |
| User | New identity | attribution/privacy | mapping/consent |
| Automation result | Run/test result | attempt/retry گم میشود | raw-to-summary reconciliation |
Mapping-ID: Source object/field/semantics: Target object/field/semantics: Transform: Null/default: Many-to-one/one-to-many: Timezone/locale/encoding: Identity/link mapping: Loss/approximation: Acceptance test: Owner/decision:
Migration Rehearsal؛ روی Snapshot ساختگی/پاکشده
- Schema و Inventory نسخهدار بگیرید.
- Subset کمریسک اما نماینده بسازید.
- Export را با Count/Hash ثبت کنید.
- Transform را idempotent و Replayable اجرا کنید.
- Import error و Reject را جدا نگه دارید.
- Object/field/link/attachment/permission را reconcile کنید.
- Workflow واقعی و Integration را روی Target اجرا کنید.
- Performance/capacity و Restore را بسنجید.
- Cleanup را اثبات و Findingها را اصلاح کنید.
الگوی عمیق Snapshot/Mapping/Reconciliation/Cutover در راهنمای تست مهاجرت داده آمده است.
Reconciliation؛ شمارش کل کافی نیست
Reconciliation-ID: Snapshot/source/target: Object counts: Field null/value distributions: Status/version/history: Links/hierarchy: Attachment count/hash/open: Identity/permission: Timestamp/timezone: Rejected/duplicate/orphan: Business workflow sample: Difference disposition: Reviewer/verdict:
۱۰هزار رکورد Source و Target میتواند برابر باشد ولی Linkها یا Permissionها غلط باشند. Reconciliation باید ساختاری، معنایی و Workflow-based باشد.
Dual-run؛ Truth را دو برابر نکنید
DualRun-ID: Authoritative system by object: Write policy: Replication direction: Event identity/idempotency: Latency window: Conflict rule: Sample/volume: Comparison metrics: Manual reconciliation: Entry/exit/stop: Owner/evidence:
نوشتن همزمان بدون Authority مشخص Divergence میسازد. برای Webhook/retry/idempotency و Trace از راهنمای یکپارچهسازی ابزارهای تست استفاده کنید.
Cutover Plan؛ زمان، Freeze و Decision Gate
Cutover-ID: Window/timezone: Decision authority: Entry criteria: Change freeze: Final export/delta: Transform/import: Reconciliation gates: Identity/secret switch: Integration/DNS endpoint switch: Smoke/workflow tests: Communication: Go | Hold | Rollback: Evidence receipt:
Cutover صرفاً تغییر URL نیست. Queueهای درحالپرواز، Webhookهای دیررس، Scheduleها، Tokenها و Linkهای خارجی باید تعیین تکلیف شوند.
Rollback؛ مقصد بازگشت باید سالم باشد
Rollback-ID: Trigger/threshold: Authority: Last known-good source: Writes since freeze: Reverse/delta strategy: Artifact and event queues: Identity/secrets: Integration restore order: RTO/RPO: Validation: Communication: Residual risk/correction:
اگر Source account واقعاً غیرفعال شده، Rollback به آن ممکن نیست؛ باید Degraded target یا Alternate را از قبل آماده کرد. «Rollback موجود است» بدون Exercise ادعاست.
Decommission؛ حساب و دادهٔ رهاشده نسازید
- Acceptance و retention/legal hold تأیید شود؛
- آخرین Export و Hash ثبت شود؛
- Webhook، runner، schedule و integration غیرفعال شوند؛
- Token/API key/SSO app/service account لغو شوند؛
- Agent/extension/package پاک یا quarantine شود؛
- Subscription/renewal/billing بسته شود؛
- Vendor deletion/export receipt گرفته شود؛
- DNS/documentation/runbook لینکها اصلاح شوند؛
- Backup archive readability و owner تعیین شود؛
- Correction window باز بماند.
خانوادهٔ API Tool؛ چه چیزی واقعاً باید منتقل شود؟
Request method/URL/header/body فقط بخش کوچکی است. Environment inheritance، Secret references، pre/request/test scripts، examples، schema، mock، monitor، runner، CLI، report، team permission و audit را Inventory کنید. تبدیل Collection ممکن است Syntax را ببرد اما semantics Script/variable را نه.
Browser/Device Cloud؛ Grid محلی Drop-in نیست
Browser family/version/OS، real device، sensor، network region، video/log، tunnel، parallel capacity، queue، session retention و support را جدا کنید. Emulator یا Containerized browser دستگاه واقعی نیست. Alternative باید Claim Coverage را دوباره تعریف کند، نه همان Label قدیمی را حفظ کند.
Performance Cloud؛ Generator را با Service یکی نکنید
Script language، protocol، arrival model، generator region/capacity، distributed orchestration، target telemetry، JTL/raw result، dashboard، cost و support اجزای جدا هستند. Self-hosting Generator نیاز به کالیبراسیون و headroom دارد؛ راهنمای اجرای معتبر JMeter این مرز را عملی میکند.
Test Management؛ تاریخچه و Authority را حفظ کنید
Case version، Suite hierarchy، Parameter، requirement/defect link، execution attempt، result، evidence، comment، approval، milestone، custom field، permission و audit را Mapping کنید. CSV ساده معمولاً این گراف را حفظ نمیکند. Cutover باید Authoritative system را برای هر Object روشن کند.
هزینهٔ مهاجرت و تداوم
Continuity TCO: Incident diagnosis/support: Degraded-mode labor/backlog: License/subscription/refund: Infrastructure/storage/network: Export/API/consulting: Mapping/transform/import: Dual-run/reconciliation: Training/adoption/support: Backup/restore/DR/security: Downtime/opportunity: Rollback/decommission: Currency/source/time/uncertainty:
Open Source یا Self-hosted هزینه را حذف نمیکند؛ نوع هزینه را عوض میکند. برای ایران، ISO currency، نرخ/زمان منبع، کارمزد و امکان رسمی خرید/تمدید را ثبت کنید؛ تومان را فقط با نسبت ۱ تومان = ۱۰ IRR نمایش دهید.
Metricها و Countermetricها
- Detection latency همراه با false alert؛
- Diagnosis latency همراه با درصد UNKNOWN؛
- RTO achieved همراه با Capability/Claim کاهشیافته؛
- RPO achieved همراه با دادهٔ بازسازیشده/نامعلوم؛
- Reconciliation difference rate همراه با Severity و denominator؛
- Rollback time همراه با validation و residual risk؛
- Continuity exercise pass همراه با Finding و Correction؛
- Cost همراه با Outcome، support load و opportunity.
تعداد ابزار جایگزین، Container یا Export file سنجهٔ تداوم نیست. موفقیت یعنی Workflow و Evidence موردنیاز در زمان هدف با Risk پذیرفتهشده برگردد.
آزمایشگاه آفلاین ایرانی
SYN-QA-ACCESS-CONTINUITY-IR-01 یک Vendor، Account، Repo، Pipeline، API client، Browser runner و Test manager کاملاً ساختگی در حافظه است. هیچ سازمان، هویت، Credential، Tool، Repository، Artifact، پرداخت، Migration یا Release واقعی ندارد و هیچ درخواست شبکهای نمیفرستد.
Fixture شامل Checkout/Order/PaymentAttempt/PSP Stub/Callback/Ledger/Reconciliation ساختگی، IRR canonical و تومان صرفاً نمایشی ۱:۱۰، رقم فارسی/عربی/لاتین، ی/ی، ک/ک، ZWNJ، RTL/LTR/Bidi، UTC/Asia–Tehran و جلالی فقط نمایشی است. Faultها ۴۰۱/۴۰۳/۴۰۴/۴۰۷/۴۲۹، DNS/TLS timeout، Token scope، region policy، quota، export truncation، duplicate import، orphan link و rollback failure هستند.
Checker سطحی چه نتیجهای میدهد؟
Checker سطحی پنج شعار «۴۰۳ یعنی تحریم»، «DNS حل میکند»، «Self-hosting همیشگی است»، «رایگان امن است» و «Alternative جایگزین مستقیم است» را میبیند و بهاشتباه میگوید:
HTTP403_SANCTION_DNS_FIX_SELF_HOST_FOREVER_FREE_SAFE_DROP_IN_ALTERNATIVE_READY
این خروجی لایهٔ شکست، مجوز، Artifact، semantics، عملیات یا Recovery را بررسی نکرده و False green است.
Validator مستقل؛ ۹۷۲ کنترل و HOLD
Validator مستقل ۸۱ گروه—از request/status/network/auth/policy تا continuity/RTO/RPO/backup/export/mapping/reconciliation/dual-run/cutover/rollback/supply-chain/self-hosting/decommission—را با ۱۲ کنترل group-qualified میسازد. Assertion یکتایی دقیقاً ۹۷۲ کنترل را الزام میکند:
HOLD-972 NO_REAL_ORGANIZATION_VENDOR_ACCOUNT_IDENTITY_CREDENTIAL_TOOL_REPOSITORY_PIPELINE_ARTIFACT_PAYMENT_MIGRATION_OR_RELEASE_DECISION_PASS
قاعدهٔ دوم مستقل از شمارش ثابت میکند Lab هیچ سامانه یا تصمیم واقعی ندارد؛ پس از آن نمیتوان Vendor، Region، مهاجرت یا Release واقعی را نتیجه گرفت.
پس از اصلاح؛ فقط آمادگی Continuity Review
پس از پینشدن Incident evidence، Classification، Vendor confirmation ساختگی، Continuity contract، Export inventory، Semantic mapping، Reconciliation، Dual-run، Cutover/Rollback، Supply-chain record و Decommission receipt، خروجی میشود:
READY_FOR_QA_ACCESS_CONTINUITY_REVIEW-0
صفر فقط یعنی فیلد Lab جا نیفتاده؛ نه اینکه محدودیت تشخیص قطعی، Alternative معادل، داده کامل، RTO/RPO محقق، Self-hosting امن، Migration موفق یا Release آماده است. Authority واقعی باید Evidence و Risk را بازبینی کند.
۲۸ ضدالگوی رخداد و مهاجرت ابزار QA
- ۴۰۳ مساوی تحریم؛
- همهٔ 4xx مساوی یک علت؛
- Retry بیتغییر؛
- چند متغیر در یک Probe؛
- Screenshot بدون Request ID؛
- Token در Ticket؛
- Forum مساوی Policy؛
- برچسب Vendor بدون تاریخ؛
- DNS/Proxy نسخهٔ عمومی؛
- هویت/Region جعلی؛
- Account اجارهای؛
- TLS validation خاموش؛
- Binary قدیمی/کرک؛
- Mirror بیHash؛
- Self-hosting مساوی بیمه؛
- Container مساوی Service؛
- Open Source مساوی امن/رایگان؛
- Alternative مساوی Drop-in؛
- CSV مساوی Backup؛
- Export بدون Restore؛
- Count مساوی Reconciliation؛
- Status string مساوی semantics؛
- Dual-write بدون Authority؛
- Cutover بدون Freeze؛
- Rollback بدون Exercise؛
- Local runner مساوی Cloud coverage؛
- خاموشکردن Account بدون Decommission؛
- موفقیت بدون Workflow/Evidence.
برنامهٔ ۳۰روزهٔ Continuity Exercise
- روز ۱ تا ۵: Dependency/Artifact Inventory، MTD/RTO/RPO و Incident template را بسازید.
- روز ۶ تا ۹: روی Lab، ۴۰۱/۴۰۳/۴۰۴/۴۰۷/۴۲۹/DNS/TLS را با Probe تکمتغیره طبقهبندی کنید.
- روز ۱۰ تا ۱۴: Degraded mode، Backup/Export و Restore جدا را تمرین کنید.
- روز ۱۵ تا ۲۰: Candidate ساختگی را با Capability/License/Supply-chain/Data-flow PoC کنید.
- روز ۲۱ تا ۲۵: Mapping/Transform/Import/Reconciliation و Dual-run را اجرا کنید.
- روز ۲۶ تا ۲۸: Cutover و Rollback fault را تمرین کنید.
- روز ۲۹: Decommission receipt و Archive readability را بررسی کنید.
- روز ۳۰: Finding/metric/Correction را مرور کنید؛ هیچ سرویس واقعی خودکار تغییر نمیکند.
چکلیست ۵۴نقطهای Access و Continuity
- Incident-ID؛
- Timestamp/timezone؛
- Workflow/decision؛
- Client/runtime؛
- Method/URL؛
- Status/body code؛
- Request/trace ID؛
- Redaction؛
- DNS؛
- TLS؛
- Proxy؛
- CDN/WAF؛
- AuthN؛
- AuthZ/role/scope؛
- Account/org؛
- Plan/quota/billing؛
- Region/policy؛
- Last-known-good؛
- Recent change؛
- Control؛
- Single-variable probe؛
- Hypothesis/counterevidence؛
- Classification؛
- Vendor Case ID؛
- As-of/expiry؛
- Stop rules؛
- Dependency/owner؛
- Impact/backlog؛
- MTD؛
- RTO؛
- RPO؛
- WRT؛
- Degraded mode؛
- Backup cadence؛
- Restore exercise؛
- Export inventory؛
- Alternative capability؛
- Candidate manifest؛
- License؛
- Source/hash/signature؛
- SBOM/advisory؛
- Data flow/secret؛
- Semantic mapping؛
- Transform idempotency؛
- Import rejects؛
- Reconciliation؛
- Identity/permission؛
- Dual-run authority؛
- Cutover/freeze؛
- Rollback trigger؛
- Communication؛
- Decommission؛
- TCO/IRR؛
- Review/Correction owner.
جمعبندی؛ تداوم یعنی Evidence، نه دسترسی به هر قیمت
یک ۴۰۳ را با Cause اشتباه نگیرید. Request/Response و Baseline را ثبت کنید، لایه را با Probe امن جدا کنید و Vendor policy را تاریخدار نگه دارید. اگر محدودیت پایدار است، Capabilityهای حیاتی، Degraded mode و RTO/RPO را پیش از نام Alternative تعریف کنید.
مهاجرت وقتی کامل است که Object و semantics، Evidence و Permission، Integration و Secret، Backup و Restore، Dual-run و Reconciliation، Cutover و Rollback و Decommission بسته شده باشند. Self-hosting یا Open Source میتواند گزینه باشد، اما هیچکدام مصونیت دائمی نمیدهد.
پرسشهای متداول خطای ۴۰۳ و جایگزینی ابزار QA
آیا خطای ۴۰۳ یعنی سرویس ایران را تحریم کرده است؟
نه. ۴۰۳ فقط رد پردازش درخواست فهمیدهشده را نشان میدهد. Permission، WAF، Account، quota، policy یا Region میتوانند علت باشند. Body/Header، Control و پاسخ رسمی تاریخدار لازم است.
آیا DNS یا VPN راهحل امن ۴۰۳ است؟
نسخهٔ عمومی نیست. DNS علت Authorization را عوض نمیکند و مسیرهای ناشناس میتوانند Secret/Terms را درگیر کنند. فقط مسیر سازمانیِ مجاز و بررسیشده را برای Probe محدود استفاده کنید؛ هویت یا موقعیت جعلی مجاز نیست.
آیا Self-hosting تیم را برای همیشه از محدودیت بینیاز میکند؟
خیر. وابستگی به Package registry، image، OS، runtime، plugin و maintainer باقی میماند و عملیات/امنیت/Backup بر عهدهٔ تیم میآید. Supply chain و Exit خود راهکار را طراحی کنید.
چگونه بفهمیم Alternative واقعاً معادل است؟
Capability و semantics لازم را بنویسید، Candidate دقیق را روی Workflow/Fault/volume همسان PoC کنید و Export/Mapping/Permission/Integration/TCO را بسنجید. همدستهبودن دو محصول معادلبودن را ثابت نمیکند.
چه زمانی ابزار قبلی را حذف کنیم؟
پس از Acceptance مهاجرت، Reconciliation، پایان Dual-run، آزمون Rollback، حفظ قانونی Archive و دریافت تأیید Ownerها. سپس Integration/Token/Agent/Subscription/Data را طبق Decommission plan ببندید و Receipt نگه دارید.

