aiox-core 5.0.7 → 5.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.aiox-core/cli/commands/pro/buyer.js +379 -0
- package/.aiox-core/cli/commands/pro/index.js +191 -52
- package/.aiox-core/cli/commands/validate/index.js +2 -0
- package/.aiox-core/core/code-intel/helpers/dev-helper.js +1 -1
- package/.aiox-core/core/code-intel/helpers/devops-helper.js +0 -1
- package/.aiox-core/core/code-intel/helpers/planning-helper.js +1 -1
- package/.aiox-core/core/code-intel/helpers/qa-helper.js +2 -2
- package/.aiox-core/core/config/schemas/framework-config.schema.json +1 -0
- package/.aiox-core/core/config/template-overrides.js +1 -1
- package/.aiox-core/core/doctor/checks/ide-sync.js +81 -25
- package/.aiox-core/core/doctor/checks/rules-files.js +0 -1
- package/.aiox-core/core/doctor/checks/skills-count.js +83 -15
- package/.aiox-core/core/graph-dashboard/cli.js +1 -2
- package/.aiox-core/core/graph-dashboard/data-sources/code-intel-source.js +1 -1
- package/.aiox-core/core/ids/layer-classifier.js +1 -1
- package/.aiox-core/core/pro/pro-updater.js +578 -0
- package/.aiox-core/core/synapse/context/context-tracker.js +107 -9
- package/.aiox-core/core/synapse/layers/layer-processor.js +1 -1
- package/.aiox-core/core-config.yaml +15 -1
- package/.aiox-core/data/capability-detection.js +15 -15
- package/.aiox-core/data/entity-registry.yaml +18 -2
- package/.aiox-core/data/registry-update-log.jsonl +5 -0
- package/.aiox-core/data/tok3-token-comparison.js +0 -4
- package/.aiox-core/data/tool-search-validation.js +1 -1
- package/.aiox-core/development/agents/aiox-master.md +44 -6
- package/.aiox-core/development/agents/data-engineer.md +4 -4
- package/.aiox-core/development/agents/devops.md +52 -2
- package/.aiox-core/development/agents/po.md +1 -1
- package/.aiox-core/development/agents/qa.md +5 -11
- package/.aiox-core/development/agents/sm.md +3 -3
- package/.aiox-core/development/agents/ux-design-expert.md +1 -1
- package/.aiox-core/development/scripts/unified-activation-pipeline.js +29 -3
- package/.aiox-core/development/tasks/dev-develop-story.md +46 -7
- package/.aiox-core/development/tasks/devops-pro-access-grant.md +93 -0
- package/.aiox-core/development/tasks/devops-pro-activate.md +42 -0
- package/.aiox-core/development/tasks/devops-pro-check-access.md +34 -0
- package/.aiox-core/development/tasks/devops-pro-request-reset.md +34 -0
- package/.aiox-core/development/tasks/devops-pro-resend-verification.md +32 -0
- package/.aiox-core/development/tasks/devops-pro-reset-password.md +36 -0
- package/.aiox-core/development/tasks/devops-pro-validate-login.md +36 -0
- package/.aiox-core/development/tasks/devops-pro-verify-status.md +33 -0
- package/.aiox-core/development/tasks/qa-gate.md +54 -4
- package/.aiox-core/development/tasks/validate-next-story.md +39 -2
- package/.aiox-core/framework-config.yaml +1 -0
- package/.aiox-core/infrastructure/scripts/codex-skills-sync/README.md +69 -0
- package/.aiox-core/infrastructure/scripts/codex-skills-sync/bootstrap.js +727 -0
- package/.aiox-core/infrastructure/scripts/codex-skills-sync/index.js +10 -0
- package/.aiox-core/infrastructure/scripts/codex-skills-sync/validate.js +65 -4
- package/.aiox-core/infrastructure/scripts/generate-settings-json.js +29 -4
- package/.aiox-core/infrastructure/scripts/ide-sync/agent-parser.js +4 -0
- package/.aiox-core/infrastructure/scripts/ide-sync/index.js +67 -7
- package/.aiox-core/infrastructure/scripts/ide-sync/transformers/claude-code.js +145 -3
- package/.aiox-core/infrastructure/scripts/repair-agent-references.js +263 -0
- package/.aiox-core/infrastructure/scripts/validate-claude-integration.js +60 -8
- package/.aiox-core/infrastructure/scripts/validate-paths.js +13 -0
- package/.aiox-core/install-manifest.yaml +134 -82
- package/.aiox-core/utils/filters/index.js +2 -1
- package/.claude/commands/AIOX/agents/aiox-master.md +21 -0
- package/.claude/commands/AIOX/agents/analyst.md +21 -0
- package/.claude/commands/AIOX/agents/architect.md +21 -0
- package/.claude/commands/AIOX/agents/data-engineer.md +21 -0
- package/.claude/commands/AIOX/agents/dev.md +21 -0
- package/.claude/commands/AIOX/agents/devops.md +21 -0
- package/.claude/commands/AIOX/agents/pm.md +21 -0
- package/.claude/commands/AIOX/agents/po.md +21 -0
- package/.claude/commands/AIOX/agents/qa.md +21 -0
- package/.claude/commands/AIOX/agents/sm.md +21 -0
- package/.claude/commands/AIOX/agents/squad-creator.md +21 -0
- package/.claude/commands/AIOX/agents/ux-design-expert.md +21 -0
- package/.claude/commands/AIOX/scripts/agent-config-loader.js +624 -0
- package/.claude/commands/AIOX/scripts/generate-greeting.js +160 -0
- package/.claude/commands/AIOX/scripts/greeting-builder.js +866 -0
- package/.claude/commands/AIOX/scripts/session-context-loader.js +286 -0
- package/.claude/commands/AIOX/stories/story-6.1.4.md +1404 -0
- package/.claude/commands/cohort-squad/agents/cohort-manager.md +156 -0
- package/.claude/commands/design-system/agents/brad-frost.md +1097 -0
- package/.claude/commands/design-system/agents/dan-mall.md +857 -0
- package/.claude/commands/design-system/agents/dave-malouf.md +2272 -0
- package/.claude/commands/design-system/agents/design-chief.md +102 -0
- package/.claude/commands/design-system/agents/nano-banana-generator.md +162 -0
- package/.claude/commands/greet.md +101 -0
- package/.claude/commands/synapse/manager.md +75 -0
- package/.claude/commands/synapse/tasks/add-rule.md +94 -0
- package/.claude/commands/synapse/tasks/create-command.md +109 -0
- package/.claude/commands/synapse/tasks/create-domain.md +127 -0
- package/.claude/commands/synapse/tasks/diagnose-synapse.md +245 -0
- package/.claude/commands/synapse/tasks/edit-rule.md +109 -0
- package/.claude/commands/synapse/tasks/suggest-domain.md +116 -0
- package/.claude/commands/synapse/tasks/toggle-domain.md +83 -0
- package/.claude/commands/synapse/templates/domain-template +8 -0
- package/.claude/commands/synapse/templates/manifest-entry-template +4 -0
- package/.claude/commands/synapse/utils/manifest-parser-reference.md +134 -0
- package/.claude/hooks/precompact-session-digest.cjs +2 -2
- package/.claude/skills/AIOX/agents/aiox-master/SKILL.md +511 -0
- package/.claude/skills/AIOX/agents/analyst/SKILL.md +281 -0
- package/.claude/skills/AIOX/agents/architect/SKILL.md +482 -0
- package/.claude/skills/AIOX/agents/data-engineer/SKILL.md +503 -0
- package/.claude/skills/AIOX/agents/dev/SKILL.md +568 -0
- package/.claude/skills/AIOX/agents/devops/SKILL.md +597 -0
- package/.claude/skills/AIOX/agents/pm/SKILL.md +385 -0
- package/.claude/skills/AIOX/agents/po/SKILL.md +343 -0
- package/.claude/skills/AIOX/agents/qa/SKILL.md +451 -0
- package/.claude/skills/AIOX/agents/sm/SKILL.md +295 -0
- package/.claude/skills/AIOX/agents/squad-creator/SKILL.md +352 -0
- package/.claude/skills/AIOX/agents/ux-design-expert/SKILL.md +503 -0
- package/.claude/skills/architect-first/SKILL.md +275 -0
- package/.claude/skills/architect-first/assets/architecture-template.md +505 -0
- package/.claude/skills/architect-first/assets/config-template.yaml +351 -0
- package/.claude/skills/architect-first/references/architecture-checklist.md +216 -0
- package/.claude/skills/architect-first/references/pre-implementation-checklist.md +119 -0
- package/.claude/skills/architect-first/references/stop-rules-guide.md +291 -0
- package/.claude/skills/architect-first/references/testing-strategy-guide.md +477 -0
- package/.claude/skills/architect-first/scripts/architecture_validator.py +490 -0
- package/.claude/skills/architect-first/scripts/check_coupling.py +306 -0
- package/.claude/skills/architect-first/scripts/validate_risk_mitigation.py +382 -0
- package/.claude/skills/checklist-runner/SKILL.md +113 -0
- package/.claude/skills/clone-mind.md +329 -0
- package/.claude/skills/coderabbit-review/SKILL.md +106 -0
- package/.claude/skills/course-generation-workflow.md +76 -0
- package/.claude/skills/enhance-workflow.md +466 -0
- package/.claude/skills/mcp-builder/LICENSE.txt +202 -0
- package/.claude/skills/mcp-builder/SKILL.md +328 -0
- package/.claude/skills/mcp-builder/reference/evaluation.md +602 -0
- package/.claude/skills/mcp-builder/reference/mcp_best_practices.md +915 -0
- package/.claude/skills/mcp-builder/reference/node_mcp_server.md +916 -0
- package/.claude/skills/mcp-builder/reference/python_mcp_server.md +752 -0
- package/.claude/skills/mcp-builder/scripts/connections.py +151 -0
- package/.claude/skills/mcp-builder/scripts/evaluation.py +373 -0
- package/.claude/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/.claude/skills/mcp-builder/scripts/requirements.txt +2 -0
- package/.claude/skills/ralph.md +181 -0
- package/.claude/skills/skill-creator/LICENSE.txt +202 -0
- package/.claude/skills/skill-creator/SKILL.md +209 -0
- package/.claude/skills/skill-creator/scripts/init_skill.py +303 -0
- package/.claude/skills/skill-creator/scripts/package_skill.py +110 -0
- package/.claude/skills/skill-creator/scripts/quick_validate.py +65 -0
- package/.claude/skills/squad.md +301 -0
- package/.claude/skills/synapse/SKILL.md +132 -0
- package/.claude/skills/synapse/assets/README.md +50 -0
- package/.claude/skills/synapse/references/brackets.md +100 -0
- package/.claude/skills/synapse/references/commands.md +118 -0
- package/.claude/skills/synapse/references/domains.md +126 -0
- package/.claude/skills/synapse/references/layers.md +186 -0
- package/.claude/skills/synapse/references/manifest.md +142 -0
- package/.claude/skills/tech-search/SKILL.md +431 -0
- package/.claude/skills/tech-search/prompts/page-extract.md +133 -0
- package/README.en.md +2 -2
- package/README.md +8 -2
- package/bin/aiox.js +55 -4
- package/bin/utils/framework-guard.js +4 -2
- package/bin/utils/pro-detector.js +119 -28
- package/bin/utils/validate-publish.js +6 -6
- package/docs/aiox-agent-flows/devops-system.md +18 -0
- package/docs/aiox-workflows/README.md +1 -0
- package/docs/aiox-workflows/pro-access-grant-workflow.md +218 -0
- package/docs/guides/pro/access-grant-ops-playbook.md +370 -0
- package/docs/guides/pro/install-gate-setup.md +12 -6
- package/docs/guides/pro/squad-creator-handoff-pro-access-ops.md +134 -0
- package/docs/guides/supabase-ops-handoff.md +768 -0
- package/package.json +12 -1
- package/packages/aiox-pro-cli/bin/aiox-pro.js +33 -12
- package/packages/installer/src/config/configure-environment.js +118 -50
- package/packages/installer/src/installer/aiox-core-installer.js +124 -27
- package/packages/installer/src/installer/brownfield-upgrader.js +66 -9
- package/packages/installer/src/installer/dependency-installer.js +4 -0
- package/packages/installer/src/pro/pro-scaffolder.js +5 -5
- package/packages/installer/src/updater/index.js +151 -10
- package/packages/installer/src/wizard/ide-config-generator.js +73 -7
- package/packages/installer/src/wizard/index.js +119 -31
- package/packages/installer/src/wizard/pro-setup.js +118 -47
- package/packages/installer/src/wizard/validation/validators/dependency-validator.js +32 -25
- package/packages/installer/src/wizard/validation/validators/file-structure-validator.js +26 -0
- package/packages/installer/tests/unit/artifact-copy-pipeline/artifact-copy-pipeline.test.js +84 -1
- package/packages/installer/tests/unit/claude-md-template-v5/claude-md-template-v5.test.js +1 -1
- package/packages/installer/tests/unit/doctor/doctor-checks.test.js +85 -19
- package/packages/installer/tests/unit/entity-registry-bootstrap.test.js +4 -4
- package/packages/installer/tests/unit/generate-settings-json/generate-settings-json.test.js +5 -5
- package/packages/installer/tests/unit/ide-sync-integration/ide-sync-integration.test.js +4 -4
- package/packages/installer/tests/unit/merger/yaml-merger.test.js +11 -11
- package/pro/README.md +12 -1
- package/pro/license/index.js +3 -11
- package/pro/license/license-api.js +25 -0
- package/pro/license/license-cache.js +135 -31
- package/pro/license/license-crypto.js +59 -3
- package/pro/package.json +5 -4
- package/pro/squads/README.md +16 -16
- package/pro/squads/index.js +1 -1
- package/scripts/e2e/installed-skills-smoke.js +264 -0
- package/scripts/package-synapse.js +3 -3
- package/scripts/validate-package-completeness.js +8 -11
- package/.aiox-core/lib/build.json +0 -1
|
@@ -120,7 +120,7 @@ persona:
|
|
|
120
120
|
|
|
121
121
|
quality_gates:
|
|
122
122
|
mandatory_checks:
|
|
123
|
-
- coderabbit --prompt-only --base main (must have 0 CRITICAL issues)
|
|
123
|
+
- coderabbit --prompt-only --base ${DEFAULT_BRANCH:-main} (must have 0 CRITICAL issues)
|
|
124
124
|
- npm run lint (must PASS)
|
|
125
125
|
- npm test (must PASS)
|
|
126
126
|
- npm run typecheck (must PASS)
|
|
@@ -175,6 +175,38 @@ commands:
|
|
|
175
175
|
visibility: [full, quick, key]
|
|
176
176
|
args: '{issue_number}'
|
|
177
177
|
description: 'Investigate and resolve a GitHub issue end-to-end'
|
|
178
|
+
- name: pro-access-grant
|
|
179
|
+
visibility: [full, quick, key]
|
|
180
|
+
args: '{email} {password} [--reset-password] [--skip-guided-validation]'
|
|
181
|
+
description: 'Grant or restore AIOX Pro access with API validation and optional guided installer validation'
|
|
182
|
+
- name: pro-check-access
|
|
183
|
+
visibility: [full, quick, key]
|
|
184
|
+
args: '{email}'
|
|
185
|
+
description: 'Check AIOX Pro buyer entitlement and account existence via check-email'
|
|
186
|
+
- name: pro-request-reset
|
|
187
|
+
visibility: [full, quick, key]
|
|
188
|
+
args: '{email}'
|
|
189
|
+
description: 'Trigger the password reset email flow for an AIOX Pro account'
|
|
190
|
+
- name: pro-resend-verification
|
|
191
|
+
visibility: [full, quick, key]
|
|
192
|
+
args: '{email}'
|
|
193
|
+
description: 'Resend the AIOX Pro email verification link'
|
|
194
|
+
- name: pro-reset-password
|
|
195
|
+
visibility: [full, quick, key]
|
|
196
|
+
args: '{email} {new_password}'
|
|
197
|
+
description: 'Reset an AIOX Pro password administratively and validate login'
|
|
198
|
+
- name: pro-validate-login
|
|
199
|
+
visibility: [full, quick, key]
|
|
200
|
+
args: '{email} {password}'
|
|
201
|
+
description: 'Validate AIOX Pro login and return auth health signals'
|
|
202
|
+
- name: pro-verify-status
|
|
203
|
+
visibility: [full, quick, key]
|
|
204
|
+
args: '{access_token}'
|
|
205
|
+
description: 'Check AIOX Pro email verification status for an access token'
|
|
206
|
+
- name: pro-activate
|
|
207
|
+
visibility: [full, quick, key]
|
|
208
|
+
args: '{access_token} [machine_id] [version]'
|
|
209
|
+
description: 'Call activate-pro directly to validate or restore AIOX Pro activation'
|
|
178
210
|
- name: init-project-status
|
|
179
211
|
visibility: [full]
|
|
180
212
|
description: 'Initialize dynamic project status tracking (Story 6.1.2.4)'
|
|
@@ -272,6 +304,14 @@ dependencies:
|
|
|
272
304
|
# GitHub Issues Management
|
|
273
305
|
- triage-github-issues.md
|
|
274
306
|
- resolve-github-issue.md
|
|
307
|
+
- devops-pro-access-grant.md
|
|
308
|
+
- devops-pro-check-access.md
|
|
309
|
+
- devops-pro-request-reset.md
|
|
310
|
+
- devops-pro-resend-verification.md
|
|
311
|
+
- devops-pro-reset-password.md
|
|
312
|
+
- devops-pro-validate-login.md
|
|
313
|
+
- devops-pro-verify-status.md
|
|
314
|
+
- devops-pro-activate.md
|
|
275
315
|
# Worktree Management (Story 1.3-1.4)
|
|
276
316
|
- create-worktree.md
|
|
277
317
|
- list-worktrees.md
|
|
@@ -324,7 +364,7 @@ dependencies:
|
|
|
324
364
|
LOW: Optional improvements, note in comments
|
|
325
365
|
commands:
|
|
326
366
|
pre_push_uncommitted: "wsl bash -c 'cd ${PROJECT_ROOT} && ~/.local/bin/coderabbit --prompt-only -t uncommitted'"
|
|
327
|
-
pre_pr_against_main: "wsl bash -c 'cd ${PROJECT_ROOT} && ~/.local/bin/coderabbit --prompt-only --base main'"
|
|
367
|
+
pre_pr_against_main: "wsl bash -c 'cd ${PROJECT_ROOT} && ~/.local/bin/coderabbit --prompt-only --base ${DEFAULT_BRANCH:-main}'"
|
|
328
368
|
pre_commit_committed: "wsl bash -c 'cd ${PROJECT_ROOT} && ~/.local/bin/coderabbit --prompt-only -t committed'"
|
|
329
369
|
execution_guidelines: |
|
|
330
370
|
CRITICAL: CodeRabbit CLI is installed in WSL, not Windows.
|
|
@@ -461,6 +501,14 @@ autoClaude:
|
|
|
461
501
|
|
|
462
502
|
- `*triage-issues` - Analyze and prioritize open issues
|
|
463
503
|
- `*resolve-issue {number}` - Investigate and resolve an issue end-to-end
|
|
504
|
+
- `*pro-access-grant {email} {password}` - Grant or restore AIOX Pro access
|
|
505
|
+
- `*pro-check-access {email}` - Check buyer + account state
|
|
506
|
+
- `*pro-request-reset {email}` - Send reset email
|
|
507
|
+
- `*pro-resend-verification {email}` - Resend verification email
|
|
508
|
+
- `*pro-reset-password {email} {new_password}` - Reset password administratively
|
|
509
|
+
- `*pro-validate-login {email} {password}` - Validate login and token issue
|
|
510
|
+
- `*pro-verify-status {access_token}` - Check verification status
|
|
511
|
+
- `*pro-activate {access_token}` - Validate or restore activation
|
|
464
512
|
|
|
465
513
|
**Quality & Push:**
|
|
466
514
|
|
|
@@ -506,6 +554,8 @@ Type `*help` to see all commands.
|
|
|
506
554
|
- Release management and versioning
|
|
507
555
|
- Repository cleanup
|
|
508
556
|
- Environment health diagnostics (`*health-check`)
|
|
557
|
+
- AIOX Pro access grant and recovery (`*pro-access-grant`)
|
|
558
|
+
- AIOX Pro point actions (`*pro-check-access`, `*pro-request-reset`, `*pro-resend-verification`, `*pro-reset-password`, `*pro-validate-login`, `*pro-verify-status`, `*pro-activate`)
|
|
509
559
|
|
|
510
560
|
### Prerequisites
|
|
511
561
|
|
|
@@ -269,7 +269,7 @@ Type `*help` to see all commands.
|
|
|
269
269
|
|
|
270
270
|
## Handoff Protocol
|
|
271
271
|
|
|
272
|
-
> Reference: [Command Authority Matrix](
|
|
272
|
+
> Reference: [Command Authority Matrix](/docs/architecture/command-authority-matrix.md)
|
|
273
273
|
|
|
274
274
|
**Commands I delegate:**
|
|
275
275
|
|
|
@@ -259,12 +259,6 @@ dependencies:
|
|
|
259
259
|
severity_filter:
|
|
260
260
|
- CRITICAL
|
|
261
261
|
- HIGH
|
|
262
|
-
behavior:
|
|
263
|
-
CRITICAL: auto_fix # Auto-fix (3 attempts max)
|
|
264
|
-
HIGH: auto_fix # Auto-fix (3 attempts max)
|
|
265
|
-
MEDIUM: document_as_debt # Create tech debt issue
|
|
266
|
-
LOW: ignore # Note in review, no action
|
|
267
|
-
|
|
268
262
|
severity_handling:
|
|
269
263
|
CRITICAL: Block story completion, must fix immediately
|
|
270
264
|
HIGH: Report in QA gate, recommend fix before merge
|
|
@@ -278,7 +272,7 @@ dependencies:
|
|
|
278
272
|
max_iterations = 3
|
|
279
273
|
|
|
280
274
|
WHILE iteration < max_iterations:
|
|
281
|
-
1. Run: wsl bash -c 'cd
|
|
275
|
+
1. Run: wsl bash -c 'cd ${PROJECT_ROOT} && ~/.local/bin/coderabbit --prompt-only -t committed --base ${DEFAULT_BRANCH:-main}'
|
|
282
276
|
2. Parse output for all severity levels
|
|
283
277
|
|
|
284
278
|
critical_issues = filter(output, severity == "CRITICAL")
|
|
@@ -292,8 +286,8 @@ dependencies:
|
|
|
292
286
|
- BREAK (ready to approve)
|
|
293
287
|
|
|
294
288
|
IF CRITICAL or HIGH issues found:
|
|
295
|
-
-
|
|
296
|
-
-
|
|
289
|
+
- Request a fix for each CRITICAL issue
|
|
290
|
+
- Request a fix for each HIGH issue
|
|
297
291
|
- iteration++
|
|
298
292
|
- CONTINUE loop
|
|
299
293
|
|
|
@@ -305,7 +299,7 @@ dependencies:
|
|
|
305
299
|
|
|
306
300
|
commands:
|
|
307
301
|
qa_pre_review_uncommitted: "wsl bash -c 'cd ${PROJECT_ROOT} && ~/.local/bin/coderabbit --prompt-only -t uncommitted'"
|
|
308
|
-
qa_story_review_committed: "wsl bash -c 'cd ${PROJECT_ROOT} && ~/.local/bin/coderabbit --prompt-only -t committed --base main'"
|
|
302
|
+
qa_story_review_committed: "wsl bash -c 'cd ${PROJECT_ROOT} && ~/.local/bin/coderabbit --prompt-only -t committed --base ${DEFAULT_BRANCH:-main}'"
|
|
309
303
|
execution_guidelines: |
|
|
310
304
|
CRITICAL: CodeRabbit CLI is installed in WSL, not Windows.
|
|
311
305
|
|
|
@@ -316,7 +310,7 @@ dependencies:
|
|
|
316
310
|
|
|
317
311
|
**Timeout:** 30 minutes (1800000ms) - Full review may take longer
|
|
318
312
|
|
|
319
|
-
**Self-Healing:** Max 3 iterations for CRITICAL and HIGH issues
|
|
313
|
+
**Self-Healing:** Max 3 advisory request iterations for CRITICAL and HIGH issues
|
|
320
314
|
|
|
321
315
|
**Error Handling:**
|
|
322
316
|
- If "coderabbit: command not found" → verify wsl_config.installation_path
|
|
@@ -224,14 +224,14 @@ Type `*help` to see all commands.
|
|
|
224
224
|
|
|
225
225
|
## Handoff Protocol
|
|
226
226
|
|
|
227
|
-
> Reference: [Command Authority Matrix](
|
|
227
|
+
> Reference: [Command Authority Matrix](/docs/architecture/command-authority-matrix.md)
|
|
228
228
|
|
|
229
229
|
**Commands I delegate:**
|
|
230
230
|
|
|
231
231
|
| Request | Delegate To | Command |
|
|
232
232
|
|---------|-------------|---------|
|
|
233
|
-
| Push to remote | @devops | `*push` |
|
|
234
|
-
| Create PR | @devops | `*create-pr` |
|
|
233
|
+
| Push to remote | @github-devops | `*push` |
|
|
234
|
+
| Create PR | @github-devops | `*create-pr` |
|
|
235
235
|
| Course correction | @aiox-master | `*correct-course` |
|
|
236
236
|
|
|
237
237
|
**Commands I receive from:**
|
|
@@ -294,7 +294,7 @@ workflow:
|
|
|
294
294
|
output: 'tokens.yaml, design system structure, migration plan'
|
|
295
295
|
|
|
296
296
|
phase_4_build:
|
|
297
|
-
commands: ['*build {
|
|
297
|
+
commands: ['*build {component}', '*compose {molecule}', '*extend {component}']
|
|
298
298
|
output: 'Production-ready components (TypeScript, tests, docs)'
|
|
299
299
|
|
|
300
300
|
phase_5_quality:
|
|
@@ -209,7 +209,7 @@ class UnifiedActivationPipeline {
|
|
|
209
209
|
const metrics = { loaders: {} };
|
|
210
210
|
|
|
211
211
|
// --- Tier 1: Critical (AgentConfig) ---
|
|
212
|
-
const tier1Budget = LOADER_TIERS.critical.timeout;
|
|
212
|
+
const tier1Budget = this._resolveLoaderTimeout('critical', LOADER_TIERS.critical.timeout);
|
|
213
213
|
const agentComplete = await this._profileLoader('agentConfig', metrics, tier1Budget, () => {
|
|
214
214
|
const loader = new AgentConfigLoader(agentId);
|
|
215
215
|
return loader.loadComplete(coreConfig);
|
|
@@ -231,7 +231,7 @@ class UnifiedActivationPipeline {
|
|
|
231
231
|
}
|
|
232
232
|
|
|
233
233
|
// --- Tier 2: High (PermissionMode + GitConfig) — parallel ---
|
|
234
|
-
const tier2Budget = LOADER_TIERS.high.timeout;
|
|
234
|
+
const tier2Budget = this._resolveLoaderTimeout('high', LOADER_TIERS.high.timeout);
|
|
235
235
|
const elapsedAfterT1 = Date.now() - pipelineStart;
|
|
236
236
|
const tier2Remaining = Math.max(tier2Budget - elapsedAfterT1, 20);
|
|
237
237
|
|
|
@@ -277,7 +277,7 @@ class UnifiedActivationPipeline {
|
|
|
277
277
|
}
|
|
278
278
|
|
|
279
279
|
// --- Tier 3: Best-effort (SessionContext + ProjectStatus) — parallel ---
|
|
280
|
-
const tier3Budget = LOADER_TIERS.bestEffort.timeout;
|
|
280
|
+
const tier3Budget = this._resolveLoaderTimeout('bestEffort', LOADER_TIERS.bestEffort.timeout);
|
|
281
281
|
const elapsedAfterT2 = Date.now() - pipelineStart;
|
|
282
282
|
const tier3Remaining = Math.max(tier3Budget - elapsedAfterT2, 20);
|
|
283
283
|
|
|
@@ -467,6 +467,32 @@ class UnifiedActivationPipeline {
|
|
|
467
467
|
return DEFAULT_PIPELINE_TIMEOUT_MS;
|
|
468
468
|
}
|
|
469
469
|
|
|
470
|
+
/**
|
|
471
|
+
* Resolve per-tier loader timeout.
|
|
472
|
+
*
|
|
473
|
+
* Intended mainly for constrained CI/test environments where cold filesystem
|
|
474
|
+
* reads can exceed the production performance budget without indicating a
|
|
475
|
+
* functional activation failure.
|
|
476
|
+
*
|
|
477
|
+
* @private
|
|
478
|
+
* @param {'critical'|'high'|'bestEffort'} tierName
|
|
479
|
+
* @param {number} defaultTimeout
|
|
480
|
+
* @returns {number}
|
|
481
|
+
*/
|
|
482
|
+
_resolveLoaderTimeout(tierName, defaultTimeout) {
|
|
483
|
+
const envKey = `AIOX_LOADER_TIMEOUT_${tierName.replace(/([A-Z])/g, '_$1').toUpperCase()}`;
|
|
484
|
+
const envTimeout = process.env[envKey];
|
|
485
|
+
|
|
486
|
+
if (envTimeout) {
|
|
487
|
+
const parsed = parseInt(envTimeout, 10);
|
|
488
|
+
if (!isNaN(parsed) && parsed > 0) {
|
|
489
|
+
return parsed;
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
return defaultTimeout;
|
|
494
|
+
}
|
|
495
|
+
|
|
470
496
|
/**
|
|
471
497
|
* Build agent definition from loaded config data.
|
|
472
498
|
* @private
|
|
@@ -370,7 +370,7 @@ const {
|
|
|
370
370
|
- All tasks complete
|
|
371
371
|
- All tests pass
|
|
372
372
|
- Execute story-dod-checklist
|
|
373
|
-
- Set status: "
|
|
373
|
+
- Set status: "InReview" (see Status Transitions section)
|
|
374
374
|
- **Generate decision log**:
|
|
375
375
|
```javascript
|
|
376
376
|
const logPath = await completeDecisionLogging(storyId, 'completed');
|
|
@@ -416,7 +416,7 @@ const {
|
|
|
416
416
|
- All tests pass
|
|
417
417
|
- Execute story-dod-checklist
|
|
418
418
|
- Present completion summary to user
|
|
419
|
-
- Set status: "
|
|
419
|
+
- Set status: "InReview" (see Status Transitions section)
|
|
420
420
|
|
|
421
421
|
**User Prompts**: 5-10 (balanced for control and speed)
|
|
422
422
|
|
|
@@ -467,7 +467,7 @@ const {
|
|
|
467
467
|
- All tests pass
|
|
468
468
|
- Execute story-dod-checklist
|
|
469
469
|
- Present execution summary vs. plan
|
|
470
|
-
- Set status: "
|
|
470
|
+
- Set status: "InReview" (see Status Transitions section)
|
|
471
471
|
|
|
472
472
|
**User Prompts**: All upfront (questionnaire phase), then 0 during execution
|
|
473
473
|
|
|
@@ -501,7 +501,7 @@ const {
|
|
|
501
501
|
- Completion Notes List
|
|
502
502
|
- File List
|
|
503
503
|
- Change Log (add entry on completion)
|
|
504
|
-
- Status (set to "
|
|
504
|
+
- Status (set to "InReview" when complete — see Status Transitions section)
|
|
505
505
|
|
|
506
506
|
**DO NOT modify**: Story, Acceptance Criteria, Dev Notes, Testing sections
|
|
507
507
|
|
|
@@ -514,7 +514,7 @@ const {
|
|
|
514
514
|
- Missing configuration
|
|
515
515
|
- Failing regression tests
|
|
516
516
|
|
|
517
|
-
###
|
|
517
|
+
### InReview Criteria (All Modes)
|
|
518
518
|
|
|
519
519
|
- Code matches all requirements
|
|
520
520
|
- All validations pass
|
|
@@ -530,7 +530,7 @@ const {
|
|
|
530
530
|
5. File List is complete
|
|
531
531
|
6. **Execute CodeRabbit Self-Healing Loop** (see below)
|
|
532
532
|
7. Execute `.aiox-core/product/checklists/story-dod-checklist.md`
|
|
533
|
-
8. Set story status: "
|
|
533
|
+
8. Set story status: "InReview" (see Status Transitions section)
|
|
534
534
|
9. HALT (do not proceed further)
|
|
535
535
|
|
|
536
536
|
---
|
|
@@ -915,10 +915,49 @@ Found 5 technical decisions needed.
|
|
|
915
915
|
- **Educational Value**: Interactive mode explanations help developers learn framework patterns
|
|
916
916
|
- **Scope Drift Prevention**: Pre-flight mode eliminates mid-development ambiguity
|
|
917
917
|
|
|
918
|
+
## Status Transitions (MANDATORY — All Modes)
|
|
919
|
+
|
|
920
|
+
**Reference:** `.claude/rules/story-lifecycle.md` — @dev owns Ready → InProgress and InProgress → InReview transitions.
|
|
921
|
+
|
|
922
|
+
**These steps MUST be executed at the specified points, regardless of execution mode.**
|
|
923
|
+
|
|
924
|
+
**Change Log format:** Use `{date: YYYY-MM-DD}` and `{version: MAJOR.MINOR.PATCH}`. Version MUST follow semantic bump rules: major for breaking changes, minor for features, patch for fixes/process updates. HALT if either value cannot be resolved deterministically.
|
|
925
|
+
|
|
926
|
+
### On Development Start (before first task):
|
|
927
|
+
|
|
928
|
+
0. **Pre-check (blocking):**
|
|
929
|
+
- If current Status is `**InProgress**`, skip to first uncompleted task (resume scenario — no status change needed).
|
|
930
|
+
- If current Status is not `**Ready**` and not `**InProgress**`, HALT and log: "Cannot start development: expected Ready or InProgress, found {current status}."
|
|
931
|
+
- If Change Log section is missing, HALT and request user to restore template structure.
|
|
932
|
+
1. **Update story Status field:** change `**Ready**` to `**InProgress**` (skip if already InProgress)
|
|
933
|
+
2. **Add Change Log entry:**
|
|
934
|
+
```text
|
|
935
|
+
| {date: YYYY-MM-DD} | {version: MAJOR.MINOR.PATCH} | Development started ({mode} mode) — Status: Ready → InProgress | @dev |
|
|
936
|
+
```
|
|
937
|
+
3. **Log:** "🚀 Story status updated: Ready → InProgress"
|
|
938
|
+
|
|
939
|
+
### On Development Complete (after DOD checklist, before HALT):
|
|
940
|
+
|
|
941
|
+
0. **Pre-check (blocking):**
|
|
942
|
+
- If current Status is not `**InProgress**`, HALT and log: "Cannot mark for review: expected InProgress, found {current status}."
|
|
943
|
+
- If Change Log section is missing, HALT and request user to restore template structure.
|
|
944
|
+
1. **Update story Status field:** change `**InProgress**` to `**InReview**`
|
|
945
|
+
2. **Add Change Log entry:**
|
|
946
|
+
```text
|
|
947
|
+
| {date: YYYY-MM-DD} | {version: MAJOR.MINOR.PATCH} | Development complete — Status: InProgress → InReview | @dev |
|
|
948
|
+
```
|
|
949
|
+
3. **Log:** "✅ Story status updated: InProgress → InReview"
|
|
950
|
+
|
|
951
|
+
### Rationale
|
|
952
|
+
|
|
953
|
+
Status transitions defined in `story-lifecycle.md` are advisory (contextual rules). These steps make them imperative (procedural), ensuring agents always execute the transitions as part of the workflow rather than relying on contextual rule awareness.
|
|
954
|
+
|
|
955
|
+
---
|
|
956
|
+
|
|
918
957
|
## Handoff
|
|
919
958
|
next_agent: @qa
|
|
920
959
|
next_command: *review {story-id}
|
|
921
|
-
condition: Story status is
|
|
960
|
+
condition: Story status is InReview (updated in Status Transitions above)
|
|
922
961
|
alternatives:
|
|
923
962
|
- agent: @qa, command: *gate {story-id}, condition: Quick gate decision needed
|
|
924
963
|
- agent: @dev, command: *apply-qa-fixes, condition: Self-identified issues during dev
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Task: DevOps Pro Access Grant
|
|
2
|
+
|
|
3
|
+
> **Version:** 1.0.0
|
|
4
|
+
> **Created:** 2026-04-20
|
|
5
|
+
> **Type:** SUPPORT-OPS
|
|
6
|
+
> **Agent:** `@devops`
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Grant, restore, or validate AIOX Pro access for a customer using the live license server, Supabase Auth, and guided installer validation.
|
|
11
|
+
|
|
12
|
+
## Inputs
|
|
13
|
+
|
|
14
|
+
Required:
|
|
15
|
+
|
|
16
|
+
- `target_email`
|
|
17
|
+
- `target_password`
|
|
18
|
+
|
|
19
|
+
Optional:
|
|
20
|
+
|
|
21
|
+
- `reset_password` (`true|false`, default: `false`)
|
|
22
|
+
- `run_guided_validation` (`true|false`, default: `true` after code changes, `false` for pure entitlement-only support)
|
|
23
|
+
- `source` (default: `manual_support`)
|
|
24
|
+
|
|
25
|
+
## Source Of Truth
|
|
26
|
+
|
|
27
|
+
- `docs/guides/pro/access-grant-ops-playbook.md`
|
|
28
|
+
- `docs/aiox-workflows/pro-access-grant-workflow.md`
|
|
29
|
+
|
|
30
|
+
## Execution Order
|
|
31
|
+
|
|
32
|
+
1. Run `POST /api/v1/auth/check-email` for `target_email`.
|
|
33
|
+
2. If buyer is missing, upsert `public.buyers` with `source=manual_support` and `is_active=true`.
|
|
34
|
+
3. If account is missing, create or update the Supabase Auth user with `target_password` and confirmed email.
|
|
35
|
+
4. If buyer validation is unstable or stale, upsert `public.buyer_validations` with `is_valid=true` for the target `user_id`.
|
|
36
|
+
5. Validate `login`.
|
|
37
|
+
6. Validate `verify-status`.
|
|
38
|
+
7. Validate `activate-pro`.
|
|
39
|
+
8. If `run_guided_validation=true`, validate:
|
|
40
|
+
- source checkout installer path
|
|
41
|
+
- packaged tarball installer path
|
|
42
|
+
9. Attach evidence and close the support request.
|
|
43
|
+
|
|
44
|
+
## Mandatory Checks
|
|
45
|
+
|
|
46
|
+
- `check-email` must end with `isBuyer=true` and `hasAccount=true`
|
|
47
|
+
- `login` must return `accessToken`
|
|
48
|
+
- `verify-status` must return `emailVerified=true`
|
|
49
|
+
- `activate-pro` must return success
|
|
50
|
+
|
|
51
|
+
## Guided Validation Checklist
|
|
52
|
+
|
|
53
|
+
- installer path from source checkout passes
|
|
54
|
+
- installer path from packed `.tgz` passes
|
|
55
|
+
- final report says all checks passed
|
|
56
|
+
- generated project contains `.claude/skills`
|
|
57
|
+
- generated project contains `.claude/commands`
|
|
58
|
+
- generated project contains `.codex/skills`
|
|
59
|
+
|
|
60
|
+
## Failure Branches
|
|
61
|
+
|
|
62
|
+
### Buyer missing after grant
|
|
63
|
+
|
|
64
|
+
- confirm lowercase email in `public.buyers`
|
|
65
|
+
- confirm `is_active=true`
|
|
66
|
+
- seed `public.buyer_validations`
|
|
67
|
+
|
|
68
|
+
### `activate-pro` returns invalid input for token
|
|
69
|
+
|
|
70
|
+
- caller is outdated
|
|
71
|
+
- resend using `{ accessToken }` in JSON body
|
|
72
|
+
|
|
73
|
+
### Email not verified
|
|
74
|
+
|
|
75
|
+
- confirm the Auth user email manually
|
|
76
|
+
- rerun `verify-status`
|
|
77
|
+
|
|
78
|
+
### Installer validation misses Claude or Codex assets
|
|
79
|
+
|
|
80
|
+
- rebuild using the updated package
|
|
81
|
+
- rerun source and tarball validation
|
|
82
|
+
|
|
83
|
+
## Evidence Pack
|
|
84
|
+
|
|
85
|
+
Capture:
|
|
86
|
+
|
|
87
|
+
- `check-email` response
|
|
88
|
+
- `login` status
|
|
89
|
+
- `verify-status` response
|
|
90
|
+
- `activate-pro` status
|
|
91
|
+
- guided install result
|
|
92
|
+
|
|
93
|
+
Do not store full `accessToken` or full `licenseKey` in tickets, handoffs, or chat.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Task: DevOps Pro Activate
|
|
2
|
+
|
|
3
|
+
> **Version:** 1.0.0
|
|
4
|
+
> **Created:** 2026-04-20
|
|
5
|
+
> **Type:** SUPPORT-OPS
|
|
6
|
+
> **Agent:** `@devops`
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Call the live `activate-pro` endpoint directly to validate or restore AIOX Pro activation for a session.
|
|
11
|
+
|
|
12
|
+
## Inputs
|
|
13
|
+
|
|
14
|
+
- `access_token`
|
|
15
|
+
- `machine_id` (optional, default: `ops-validation-machine`)
|
|
16
|
+
- `version` (optional, default: current installer version)
|
|
17
|
+
|
|
18
|
+
## Endpoint
|
|
19
|
+
|
|
20
|
+
- `POST https://aiox-license-server.vercel.app/api/v1/auth/activate-pro`
|
|
21
|
+
|
|
22
|
+
## Execution
|
|
23
|
+
|
|
24
|
+
1. Build the request body with:
|
|
25
|
+
- `accessToken`
|
|
26
|
+
- `machineId`
|
|
27
|
+
- `version`
|
|
28
|
+
- `aioxCoreVersion`
|
|
29
|
+
2. Call `activate-pro`.
|
|
30
|
+
3. Report:
|
|
31
|
+
- HTTP status
|
|
32
|
+
- `activated`
|
|
33
|
+
- whether activation was new or restored
|
|
34
|
+
4. Never paste the full `licenseKey` into logs or tickets.
|
|
35
|
+
|
|
36
|
+
## Pass Criteria
|
|
37
|
+
|
|
38
|
+
- `201` on first activation or `200` on idempotent restore
|
|
39
|
+
|
|
40
|
+
## Source Of Truth
|
|
41
|
+
|
|
42
|
+
- `docs/guides/pro/access-grant-ops-playbook.md`
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Task: DevOps Pro Check Access
|
|
2
|
+
|
|
3
|
+
> **Version:** 1.0.0
|
|
4
|
+
> **Created:** 2026-04-20
|
|
5
|
+
> **Type:** SUPPORT-OPS
|
|
6
|
+
> **Agent:** `@devops`
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Check whether an email already has AIOX Pro buyer entitlement and whether an auth account exists.
|
|
11
|
+
|
|
12
|
+
## Input
|
|
13
|
+
|
|
14
|
+
- `target_email`
|
|
15
|
+
|
|
16
|
+
## Endpoint
|
|
17
|
+
|
|
18
|
+
- `POST https://aiox-license-server.vercel.app/api/v1/auth/check-email`
|
|
19
|
+
|
|
20
|
+
## Execution
|
|
21
|
+
|
|
22
|
+
1. Call `check-email` with the target email.
|
|
23
|
+
2. Report `isBuyer`, `hasAccount`, and normalized `email`.
|
|
24
|
+
3. If `isBuyer=false`, recommend `*pro-access-grant`.
|
|
25
|
+
4. If `isBuyer=true` and `hasAccount=false`, recommend account creation or `*pro-access-grant`.
|
|
26
|
+
|
|
27
|
+
## Pass Criteria
|
|
28
|
+
|
|
29
|
+
- request returns `200`
|
|
30
|
+
- response clearly identifies buyer/account state
|
|
31
|
+
|
|
32
|
+
## Source Of Truth
|
|
33
|
+
|
|
34
|
+
- `docs/guides/pro/access-grant-ops-playbook.md`
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Task: DevOps Pro Request Reset
|
|
2
|
+
|
|
3
|
+
> **Version:** 1.0.0
|
|
4
|
+
> **Created:** 2026-04-20
|
|
5
|
+
> **Type:** SUPPORT-OPS
|
|
6
|
+
> **Agent:** `@devops`
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Trigger the user-facing password reset email flow for an AIOX Pro account.
|
|
11
|
+
|
|
12
|
+
## Input
|
|
13
|
+
|
|
14
|
+
- `target_email`
|
|
15
|
+
|
|
16
|
+
## Endpoint
|
|
17
|
+
|
|
18
|
+
- `POST https://aiox-license-server.vercel.app/api/v1/auth/request-reset`
|
|
19
|
+
|
|
20
|
+
## Execution
|
|
21
|
+
|
|
22
|
+
1. Call `request-reset` with the target email.
|
|
23
|
+
2. Report the HTTP status.
|
|
24
|
+
3. Treat the generic success message as expected anti-enumeration behavior.
|
|
25
|
+
4. If the endpoint returns `429`, report the rate limit window.
|
|
26
|
+
|
|
27
|
+
## Pass Criteria
|
|
28
|
+
|
|
29
|
+
- request returns `200` with the generic message
|
|
30
|
+
- or a clear `429` with retry guidance
|
|
31
|
+
|
|
32
|
+
## Source Of Truth
|
|
33
|
+
|
|
34
|
+
- `docs/guides/pro/access-grant-ops-playbook.md`
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Task: DevOps Pro Resend Verification
|
|
2
|
+
|
|
3
|
+
> **Version:** 1.0.0
|
|
4
|
+
> **Created:** 2026-04-20
|
|
5
|
+
> **Type:** SUPPORT-OPS
|
|
6
|
+
> **Agent:** `@devops`
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Resend the email verification link for an AIOX Pro user account.
|
|
11
|
+
|
|
12
|
+
## Input
|
|
13
|
+
|
|
14
|
+
- `target_email`
|
|
15
|
+
|
|
16
|
+
## Endpoint
|
|
17
|
+
|
|
18
|
+
- `POST https://aiox-license-server.vercel.app/api/v1/auth/resend-verification`
|
|
19
|
+
|
|
20
|
+
## Execution
|
|
21
|
+
|
|
22
|
+
1. Call `resend-verification` with the target email.
|
|
23
|
+
2. Report status and generic delivery message.
|
|
24
|
+
3. If `429`, report resend rate limit and retry guidance.
|
|
25
|
+
|
|
26
|
+
## Pass Criteria
|
|
27
|
+
|
|
28
|
+
- endpoint returns success-style response without leaking account existence
|
|
29
|
+
|
|
30
|
+
## Source Of Truth
|
|
31
|
+
|
|
32
|
+
- `docs/guides/pro/access-grant-ops-playbook.md`
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Task: DevOps Pro Reset Password
|
|
2
|
+
|
|
3
|
+
> **Version:** 1.0.0
|
|
4
|
+
> **Created:** 2026-04-20
|
|
5
|
+
> **Type:** SUPPORT-OPS
|
|
6
|
+
> **Agent:** `@devops`
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Reset an AIOX Pro password administratively, then validate login with the new password.
|
|
11
|
+
|
|
12
|
+
## Inputs
|
|
13
|
+
|
|
14
|
+
- `target_email`
|
|
15
|
+
- `new_password`
|
|
16
|
+
|
|
17
|
+
## Execution
|
|
18
|
+
|
|
19
|
+
1. Ensure the auth user exists for the target email.
|
|
20
|
+
2. Update the password in Supabase Auth.
|
|
21
|
+
3. Ensure the email remains confirmed.
|
|
22
|
+
4. Validate the new password with `login`.
|
|
23
|
+
|
|
24
|
+
## Pass Criteria
|
|
25
|
+
|
|
26
|
+
- auth user password updated successfully
|
|
27
|
+
- `POST /api/v1/auth/login` returns `200` and `accessToken`
|
|
28
|
+
|
|
29
|
+
## Recommended Follow-Up
|
|
30
|
+
|
|
31
|
+
- if the request was really a recovery flow for the user, also offer `*pro-request-reset {email}`
|
|
32
|
+
|
|
33
|
+
## Source Of Truth
|
|
34
|
+
|
|
35
|
+
- `docs/guides/pro/access-grant-ops-playbook.md`
|
|
36
|
+
- `.aiox-core/development/tasks/devops-pro-access-grant.md`
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Task: DevOps Pro Validate Login
|
|
2
|
+
|
|
3
|
+
> **Version:** 1.0.0
|
|
4
|
+
> **Created:** 2026-04-20
|
|
5
|
+
> **Type:** SUPPORT-OPS
|
|
6
|
+
> **Agent:** `@devops`
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Validate whether AIOX Pro login works for a given email and password pair.
|
|
11
|
+
|
|
12
|
+
## Inputs
|
|
13
|
+
|
|
14
|
+
- `target_email`
|
|
15
|
+
- `target_password`
|
|
16
|
+
|
|
17
|
+
## Endpoint
|
|
18
|
+
|
|
19
|
+
- `POST https://aiox-license-server.vercel.app/api/v1/auth/login`
|
|
20
|
+
|
|
21
|
+
## Execution
|
|
22
|
+
|
|
23
|
+
1. Call `login` with the provided credentials.
|
|
24
|
+
2. Report:
|
|
25
|
+
- HTTP status
|
|
26
|
+
- whether `accessToken` was issued
|
|
27
|
+
- whether `emailVerified=true`
|
|
28
|
+
3. Do not expose the raw access token in logs or handoffs.
|
|
29
|
+
|
|
30
|
+
## Pass Criteria
|
|
31
|
+
|
|
32
|
+
- `200` response with `accessToken`
|
|
33
|
+
|
|
34
|
+
## Source Of Truth
|
|
35
|
+
|
|
36
|
+
- `docs/guides/pro/access-grant-ops-playbook.md`
|