@shrkcrft/inspector 0.1.0-alpha.29 → 0.1.0-alpha.31
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/dist/acceptance-replay.js +1 -1
- package/dist/agent-contract-templates.js +6 -6
- package/dist/agent-contract.d.ts.map +1 -1
- package/dist/agent-contract.js +13 -8
- package/dist/agent-orchestration.js +2 -2
- package/dist/agent-task-prep.d.ts +16 -0
- package/dist/agent-task-prep.d.ts.map +1 -1
- package/dist/agent-task-prep.js +51 -4
- package/dist/ai-readiness.d.ts.map +1 -1
- package/dist/ai-readiness.js +21 -3
- package/dist/architecture-map.d.ts +16 -0
- package/dist/architecture-map.d.ts.map +1 -1
- package/dist/architecture-map.js +42 -26
- package/dist/area-explore.d.ts +2 -2
- package/dist/area-explore.d.ts.map +1 -1
- package/dist/area-explore.js +36 -16
- package/dist/area-map.d.ts +56 -11
- package/dist/area-map.d.ts.map +1 -1
- package/dist/area-map.js +106 -25
- package/dist/asset-doctor-proposed-exit.d.ts +21 -0
- package/dist/asset-doctor-proposed-exit.d.ts.map +1 -0
- package/dist/asset-doctor-proposed-exit.js +22 -0
- package/dist/asset-provenance.js +1 -1
- package/dist/boundaries-changed-only.d.ts +24 -1
- package/dist/boundaries-changed-only.d.ts.map +1 -1
- package/dist/boundaries-changed-only.js +12 -2
- package/dist/boundary-check-options.model.d.ts +40 -0
- package/dist/boundary-check-options.model.d.ts.map +1 -0
- package/dist/boundary-check-options.model.js +1 -0
- package/dist/boundary-check-result.model.d.ts +89 -0
- package/dist/boundary-check-result.model.d.ts.map +1 -0
- package/dist/boundary-check-result.model.js +1 -0
- package/dist/boundary-configuration-status.d.ts +38 -0
- package/dist/boundary-configuration-status.d.ts.map +1 -0
- package/dist/boundary-configuration-status.js +118 -0
- package/dist/boundary-configuration-status.model.d.ts +37 -0
- package/dist/boundary-configuration-status.model.d.ts.map +1 -0
- package/dist/boundary-configuration-status.model.js +1 -0
- package/dist/boundary-load-issue.model.d.ts +30 -0
- package/dist/boundary-load-issue.model.d.ts.map +1 -0
- package/dist/boundary-load-issue.model.js +1 -0
- package/dist/boundary-rule-check.model.d.ts +44 -0
- package/dist/boundary-rule-check.model.d.ts.map +1 -0
- package/dist/boundary-rule-check.model.js +1 -0
- package/dist/boundary-rule-invalidation.model.d.ts +31 -0
- package/dist/boundary-rule-invalidation.model.d.ts.map +1 -0
- package/dist/boundary-rule-invalidation.model.js +1 -0
- package/dist/boundary-rule-set-diff.model.d.ts +75 -0
- package/dist/boundary-rule-set-diff.model.d.ts.map +1 -0
- package/dist/boundary-rule-set-diff.model.js +1 -0
- package/dist/boundary-rule-sources.d.ts +28 -0
- package/dist/boundary-rule-sources.d.ts.map +1 -0
- package/dist/boundary-rule-sources.js +110 -0
- package/dist/boundary-stale-exception-finding.model.d.ts +12 -0
- package/dist/boundary-stale-exception-finding.model.d.ts.map +1 -0
- package/dist/boundary-stale-exception-finding.model.js +1 -0
- package/dist/boundary-unit-liveness.d.ts +35 -0
- package/dist/boundary-unit-liveness.d.ts.map +1 -0
- package/dist/boundary-unit-liveness.js +71 -0
- package/dist/change-intent.d.ts +3 -0
- package/dist/change-intent.d.ts.map +1 -1
- package/dist/change-intent.js +61 -27
- package/dist/changes-summary.d.ts.map +1 -1
- package/dist/changes-summary.js +19 -9
- package/dist/ci-integrity-report.js +1 -1
- package/dist/ci-predict.d.ts.map +1 -1
- package/dist/ci-predict.js +38 -5
- package/dist/code-intelligence-doctor.d.ts +40 -0
- package/dist/code-intelligence-doctor.d.ts.map +1 -1
- package/dist/code-intelligence-doctor.js +86 -12
- package/dist/command-recommender.d.ts +45 -2
- package/dist/command-recommender.d.ts.map +1 -1
- package/dist/command-recommender.js +41 -263
- package/dist/command-resolution-status.d.ts +44 -0
- package/dist/command-resolution-status.d.ts.map +1 -0
- package/dist/command-resolution-status.js +44 -0
- package/dist/command-safety-level.d.ts +15 -0
- package/dist/command-safety-level.d.ts.map +1 -0
- package/dist/command-safety-level.js +43 -0
- package/dist/command-taxonomy.js +1 -1
- package/dist/compliance-evidence.js +1 -1
- package/dist/compliance-profiles.js +1 -1
- package/dist/construct-registry.d.ts +40 -0
- package/dist/construct-registry.d.ts.map +1 -1
- package/dist/construct-registry.js +186 -82
- package/dist/context-tuning.d.ts +4 -0
- package/dist/context-tuning.d.ts.map +1 -1
- package/dist/context-tuning.js +10 -7
- package/dist/contract-template-registry.d.ts +10 -0
- package/dist/contract-template-registry.d.ts.map +1 -1
- package/dist/contract-template-registry.js +59 -33
- package/dist/contribution-kind.d.ts +52 -0
- package/dist/contribution-kind.d.ts.map +1 -0
- package/dist/contribution-kind.js +52 -0
- package/dist/contribution-load-failures.d.ts +106 -0
- package/dist/contribution-load-failures.d.ts.map +1 -0
- package/dist/contribution-load-failures.js +575 -0
- package/dist/contributions-report.d.ts +28 -0
- package/dist/contributions-report.d.ts.map +1 -0
- package/dist/contributions-report.js +242 -0
- package/dist/convention-registry.d.ts +22 -0
- package/dist/convention-registry.d.ts.map +1 -1
- package/dist/convention-registry.js +79 -39
- package/dist/coverage-report.d.ts.map +1 -1
- package/dist/coverage-report.js +6 -6
- package/dist/custom-checks.d.ts +60 -1
- package/dist/custom-checks.d.ts.map +1 -1
- package/dist/custom-checks.js +159 -6
- package/dist/dashboard/dashboard-data.d.ts +6 -0
- package/dist/dashboard/dashboard-data.d.ts.map +1 -1
- package/dist/dashboard/dashboard-data.js +99 -8
- package/dist/dashboard/dashboard-knowledge.d.ts.map +1 -1
- package/dist/dashboard/dashboard-knowledge.js +14 -2
- package/dist/decision-records.d.ts +20 -0
- package/dist/decision-records.d.ts.map +1 -1
- package/dist/decision-records.js +68 -20
- package/dist/declared-cross-references.d.ts +61 -0
- package/dist/declared-cross-references.d.ts.map +1 -0
- package/dist/declared-cross-references.js +550 -0
- package/dist/declared-gate-plane-rules.d.ts +24 -0
- package/dist/declared-gate-plane-rules.d.ts.map +1 -0
- package/dist/declared-gate-plane-rules.js +39 -0
- package/dist/declared-reference-coverage.d.ts +27 -0
- package/dist/declared-reference-coverage.d.ts.map +1 -0
- package/dist/declared-reference-coverage.js +50 -0
- package/dist/declared-xref-status.d.ts +19 -0
- package/dist/declared-xref-status.d.ts.map +1 -0
- package/dist/declared-xref-status.js +19 -0
- package/dist/delegate-pack-recipes.d.ts +13 -2
- package/dist/delegate-pack-recipes.d.ts.map +1 -1
- package/dist/delegate-pack-recipes.js +45 -14
- package/dist/demo-package.js +2 -2
- package/dist/demo-script.js +2 -2
- package/dist/demo-workflow.js +3 -3
- package/dist/dev-cycle.js +1 -1
- package/dist/dev-session.js +1 -1
- package/dist/doc-references.d.ts +80 -0
- package/dist/doc-references.d.ts.map +1 -0
- package/dist/doc-references.js +269 -0
- package/dist/doctor-result.d.ts +8 -0
- package/dist/doctor-result.d.ts.map +1 -1
- package/dist/doctor-verdict-kind.d.ts +19 -0
- package/dist/doctor-verdict-kind.d.ts.map +1 -0
- package/dist/doctor-verdict-kind.js +19 -0
- package/dist/doctor-verdict.d.ts +18 -0
- package/dist/doctor-verdict.d.ts.map +1 -0
- package/dist/doctor-verdict.js +28 -0
- package/dist/drift.d.ts +17 -0
- package/dist/drift.d.ts.map +1 -1
- package/dist/drift.js +40 -10
- package/dist/entrypoint-matrix.d.ts.map +1 -1
- package/dist/entrypoint-matrix.js +4 -1
- package/dist/feedback-ingestion.d.ts +28 -2
- package/dist/feedback-ingestion.d.ts.map +1 -1
- package/dist/feedback-ingestion.js +68 -19
- package/dist/fix-preview.d.ts.map +1 -1
- package/dist/fix-preview.js +9 -5
- package/dist/framework-extractor-outcomes.d.ts +27 -0
- package/dist/framework-extractor-outcomes.d.ts.map +1 -0
- package/dist/framework-extractor-outcomes.js +83 -0
- package/dist/fuzzy-impact.d.ts.map +1 -1
- package/dist/fuzzy-impact.js +12 -21
- package/dist/healing-plan.d.ts.map +1 -1
- package/dist/healing-plan.js +3 -4
- package/dist/helper-catalog.d.ts +25 -0
- package/dist/helper-catalog.d.ts.map +1 -0
- package/dist/helper-catalog.js +91 -0
- package/dist/helper-registry.d.ts.map +1 -1
- package/dist/helper-registry.js +17 -1
- package/dist/helper-view.d.ts +33 -0
- package/dist/helper-view.d.ts.map +1 -0
- package/dist/helper-view.js +1 -0
- package/dist/i-asset-doctor-flags.d.ts +16 -0
- package/dist/i-asset-doctor-flags.d.ts.map +1 -0
- package/dist/i-asset-doctor-flags.js +1 -0
- package/dist/i-command-resolution.d.ts +22 -0
- package/dist/i-command-resolution.d.ts.map +1 -0
- package/dist/i-command-resolution.js +1 -0
- package/dist/i-command-resolve-options.d.ts +24 -0
- package/dist/i-command-resolve-options.d.ts.map +1 -0
- package/dist/i-command-resolve-options.js +1 -0
- package/dist/i-command-safety.d.ts +13 -0
- package/dist/i-command-safety.d.ts.map +1 -0
- package/dist/i-command-safety.js +1 -0
- package/dist/i-contribution-accepted-entry.d.ts +18 -0
- package/dist/i-contribution-accepted-entry.d.ts.map +1 -0
- package/dist/i-contribution-accepted-entry.js +1 -0
- package/dist/i-contribution-entry-rejection.d.ts +21 -0
- package/dist/i-contribution-entry-rejection.d.ts.map +1 -0
- package/dist/i-contribution-entry-rejection.js +1 -0
- package/dist/i-contribution-file-issue.d.ts +18 -0
- package/dist/i-contribution-file-issue.d.ts.map +1 -0
- package/dist/i-contribution-file-issue.js +1 -0
- package/dist/i-contribution-file-report.d.ts +40 -0
- package/dist/i-contribution-file-report.d.ts.map +1 -0
- package/dist/i-contribution-file-report.js +1 -0
- package/dist/i-contribution-file-validation.d.ts +24 -0
- package/dist/i-contribution-file-validation.d.ts.map +1 -0
- package/dist/i-contribution-file-validation.js +1 -0
- package/dist/i-contributions-report.d.ts +31 -0
- package/dist/i-contributions-report.d.ts.map +1 -0
- package/dist/i-contributions-report.js +1 -0
- package/dist/i-declared-xref-field.d.ts +25 -0
- package/dist/i-declared-xref-field.d.ts.map +1 -0
- package/dist/i-declared-xref-field.js +1 -0
- package/dist/i-declared-xref-issue.d.ts +25 -0
- package/dist/i-declared-xref-issue.d.ts.map +1 -0
- package/dist/i-declared-xref-issue.js +1 -0
- package/dist/i-declared-xref-report.d.ts +48 -0
- package/dist/i-declared-xref-report.d.ts.map +1 -0
- package/dist/i-declared-xref-report.js +1 -0
- package/dist/i-declared-xref-row.d.ts +29 -0
- package/dist/i-declared-xref-row.d.ts.map +1 -0
- package/dist/i-declared-xref-row.js +1 -0
- package/dist/i-doctor-verdict.d.ts +10 -0
- package/dist/i-doctor-verdict.d.ts.map +1 -0
- package/dist/i-doctor-verdict.js +1 -0
- package/dist/i-kind-outcomes.d.ts +13 -0
- package/dist/i-kind-outcomes.d.ts.map +1 -0
- package/dist/i-kind-outcomes.js +1 -0
- package/dist/i-pack-doctor-verdict.d.ts +15 -0
- package/dist/i-pack-doctor-verdict.d.ts.map +1 -0
- package/dist/i-pack-doctor-verdict.js +1 -0
- package/dist/i-probed-id-field.d.ts +17 -0
- package/dist/i-probed-id-field.d.ts.map +1 -0
- package/dist/i-probed-id-field.js +1 -0
- package/dist/i-reference-kind-declaration.d.ts +38 -0
- package/dist/i-reference-kind-declaration.d.ts.map +1 -0
- package/dist/i-reference-kind-declaration.js +1 -0
- package/dist/i-reference-warm-options.d.ts +21 -0
- package/dist/i-reference-warm-options.d.ts.map +1 -0
- package/dist/i-reference-warm-options.js +1 -0
- package/dist/i-registry-outcomes.d.ts +16 -0
- package/dist/i-registry-outcomes.d.ts.map +1 -0
- package/dist/i-registry-outcomes.js +1 -0
- package/dist/i-scaffold-pattern-doctor-report.d.ts +35 -0
- package/dist/i-scaffold-pattern-doctor-report.d.ts.map +1 -0
- package/dist/i-scaffold-pattern-doctor-report.js +1 -0
- package/dist/i-search-tuning-key-probe.d.ts +30 -0
- package/dist/i-search-tuning-key-probe.d.ts.map +1 -0
- package/dist/i-search-tuning-key-probe.js +1 -0
- package/dist/i-search-tuning-lint-issue.d.ts +61 -0
- package/dist/i-search-tuning-lint-issue.d.ts.map +1 -0
- package/dist/i-search-tuning-lint-issue.js +1 -0
- package/dist/i-search-tuning-lint-report.d.ts +38 -0
- package/dist/i-search-tuning-lint-report.d.ts.map +1 -0
- package/dist/i-search-tuning-lint-report.js +1 -0
- package/dist/i-unresolvable-reference-scan.d.ts +14 -0
- package/dist/i-unresolvable-reference-scan.d.ts.map +1 -0
- package/dist/i-unresolvable-reference-scan.js +1 -0
- package/dist/i-unresolvable-reference.d.ts +29 -0
- package/dist/i-unresolvable-reference.d.ts.map +1 -0
- package/dist/i-unresolvable-reference.js +1 -0
- package/dist/i-workspace-profile-payload.d.ts +12 -0
- package/dist/i-workspace-profile-payload.d.ts.map +1 -0
- package/dist/i-workspace-profile-payload.js +1 -0
- package/dist/impact-analysis.d.ts +15 -0
- package/dist/impact-analysis.d.ts.map +1 -1
- package/dist/impact-analysis.js +58 -13
- package/dist/impact-render.d.ts.map +1 -1
- package/dist/impact-render.js +22 -0
- package/dist/import-hygiene.d.ts +35 -1
- package/dist/import-hygiene.d.ts.map +1 -1
- package/dist/import-hygiene.js +107 -13
- package/dist/index.d.ts +145 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +176 -0
- package/dist/inspection-discovery.d.ts +45 -0
- package/dist/inspection-discovery.d.ts.map +1 -0
- package/dist/inspection-discovery.js +70 -0
- package/dist/knowledge-advisory-code.d.ts +17 -0
- package/dist/knowledge-advisory-code.d.ts.map +1 -0
- package/dist/knowledge-advisory-code.js +17 -0
- package/dist/knowledge-aged-entry.d.ts +10 -0
- package/dist/knowledge-aged-entry.d.ts.map +1 -0
- package/dist/knowledge-aged-entry.js +1 -0
- package/dist/knowledge-authoring.d.ts +24 -1
- package/dist/knowledge-authoring.d.ts.map +1 -1
- package/dist/knowledge-authoring.js +46 -7
- package/dist/knowledge-entry-verdict-record.d.ts +22 -0
- package/dist/knowledge-entry-verdict-record.d.ts.map +1 -0
- package/dist/knowledge-entry-verdict-record.js +1 -0
- package/dist/knowledge-entry-verdict.d.ts +17 -0
- package/dist/knowledge-entry-verdict.d.ts.map +1 -0
- package/dist/knowledge-entry-verdict.js +17 -0
- package/dist/knowledge-graph.d.ts +6 -0
- package/dist/knowledge-graph.d.ts.map +1 -1
- package/dist/knowledge-graph.js +18 -7
- package/dist/knowledge-kind-bucket.d.ts +19 -0
- package/dist/knowledge-kind-bucket.d.ts.map +1 -0
- package/dist/knowledge-kind-bucket.js +1 -0
- package/dist/knowledge-load-failure.d.ts +23 -0
- package/dist/knowledge-load-failure.d.ts.map +1 -0
- package/dist/knowledge-load-failure.js +1 -0
- package/dist/knowledge-reference-kind-bucket.d.ts +11 -0
- package/dist/knowledge-reference-kind-bucket.d.ts.map +1 -0
- package/dist/knowledge-reference-kind-bucket.js +1 -0
- package/dist/knowledge-stale-advisory.d.ts +14 -0
- package/dist/knowledge-stale-advisory.d.ts.map +1 -0
- package/dist/knowledge-stale-advisory.js +1 -0
- package/dist/knowledge-stale-coverage.d.ts +19 -0
- package/dist/knowledge-stale-coverage.d.ts.map +1 -0
- package/dist/knowledge-stale-coverage.js +1 -0
- package/dist/knowledge-stale-gate-flags.d.ts +33 -0
- package/dist/knowledge-stale-gate-flags.d.ts.map +1 -0
- package/dist/knowledge-stale-gate-flags.js +1 -0
- package/dist/knowledge-stale-gate-input.d.ts +46 -0
- package/dist/knowledge-stale-gate-input.d.ts.map +1 -0
- package/dist/knowledge-stale-gate-input.js +1 -0
- package/dist/knowledge-stale-gate-result.d.ts +33 -0
- package/dist/knowledge-stale-gate-result.d.ts.map +1 -0
- package/dist/knowledge-stale-gate-result.js +1 -0
- package/dist/knowledge-stale-gate-rule.d.ts +33 -0
- package/dist/knowledge-stale-gate-rule.d.ts.map +1 -0
- package/dist/knowledge-stale-gate-rule.js +1 -0
- package/dist/knowledge-stale-gate-violation.d.ts +13 -0
- package/dist/knowledge-stale-gate-violation.d.ts.map +1 -0
- package/dist/knowledge-stale-gate-violation.js +1 -0
- package/dist/knowledge-stale-gate.d.ts +83 -0
- package/dist/knowledge-stale-gate.d.ts.map +1 -0
- package/dist/knowledge-stale-gate.js +429 -0
- package/dist/knowledge-stale-quality-gate.d.ts +26 -0
- package/dist/knowledge-stale-quality-gate.d.ts.map +1 -0
- package/dist/knowledge-stale-quality-gate.js +110 -0
- package/dist/knowledge-stale.d.ts +122 -9
- package/dist/knowledge-stale.d.ts.map +1 -1
- package/dist/knowledge-stale.js +1002 -316
- package/dist/knowledge-unverifiable-reason.d.ts +12 -0
- package/dist/knowledge-unverifiable-reason.d.ts.map +1 -0
- package/dist/knowledge-unverifiable-reason.js +12 -0
- package/dist/loader-diagnostics.d.ts +14 -2
- package/dist/loader-diagnostics.d.ts.map +1 -1
- package/dist/match-terms.d.ts +48 -0
- package/dist/match-terms.d.ts.map +1 -0
- package/dist/match-terms.js +155 -0
- package/dist/migration-profile-registry.d.ts +10 -0
- package/dist/migration-profile-registry.d.ts.map +1 -1
- package/dist/migration-profile-registry.js +57 -34
- package/dist/migration-readiness.d.ts.map +1 -1
- package/dist/migration-readiness.js +1 -3
- package/dist/nearest-id.d.ts +14 -0
- package/dist/nearest-id.d.ts.map +1 -0
- package/dist/nearest-id.js +12 -0
- package/dist/pack-asset-freshness.d.ts +65 -0
- package/dist/pack-asset-freshness.d.ts.map +1 -0
- package/dist/pack-asset-freshness.js +340 -0
- package/dist/pack-author-ux.d.ts +24 -3
- package/dist/pack-author-ux.d.ts.map +1 -1
- package/dist/pack-author-ux.js +87 -93
- package/dist/pack-contributions-inventory.d.ts +79 -39
- package/dist/pack-contributions-inventory.d.ts.map +1 -1
- package/dist/pack-contributions-inventory.js +443 -286
- package/dist/pack-doctor-verdict.d.ts +29 -0
- package/dist/pack-doctor-verdict.d.ts.map +1 -0
- package/dist/pack-doctor-verdict.js +45 -0
- package/dist/pack-doctor.d.ts +74 -1
- package/dist/pack-doctor.d.ts.map +1 -1
- package/dist/pack-doctor.js +281 -1
- package/dist/pack-helper-plan.d.ts +24 -0
- package/dist/pack-helper-plan.d.ts.map +1 -0
- package/dist/pack-helper-plan.js +77 -0
- package/dist/pack-helper-registry.d.ts +14 -0
- package/dist/pack-helper-registry.d.ts.map +1 -1
- package/dist/pack-helper-registry.js +76 -37
- package/dist/pack-manifest-reader.d.ts +8 -0
- package/dist/pack-manifest-reader.d.ts.map +1 -0
- package/dist/pack-manifest-reader.js +79 -0
- package/dist/pack-release-check.d.ts +14 -1
- package/dist/pack-release-check.d.ts.map +1 -1
- package/dist/pack-release-check.js +23 -1
- package/dist/pack-signature-status.d.ts +18 -6
- package/dist/pack-signature-status.d.ts.map +1 -1
- package/dist/pack-signature-status.js +59 -105
- package/dist/pack-test-runner.d.ts +27 -5
- package/dist/pack-test-runner.d.ts.map +1 -1
- package/dist/pack-test-runner.js +91 -35
- package/dist/pack-typecheck.d.ts +8 -0
- package/dist/pack-typecheck.d.ts.map +1 -0
- package/dist/pack-typecheck.js +76 -0
- package/dist/plan-review.d.ts +2 -0
- package/dist/plan-review.d.ts.map +1 -1
- package/dist/plan-review.js +17 -5
- package/dist/plan-simulation.d.ts.map +1 -1
- package/dist/plan-simulation.js +16 -5
- package/dist/playbook-load-issue.d.ts +16 -0
- package/dist/playbook-load-issue.d.ts.map +1 -0
- package/dist/playbook-load-issue.js +1 -0
- package/dist/playbook-registry.d.ts +32 -1
- package/dist/playbook-registry.d.ts.map +1 -1
- package/dist/playbook-registry.js +144 -55
- package/dist/policy-declaration.d.ts +18 -0
- package/dist/policy-declaration.d.ts.map +1 -0
- package/dist/policy-declaration.js +1 -0
- package/dist/policy-engine.d.ts +8 -0
- package/dist/policy-engine.d.ts.map +1 -1
- package/dist/policy-engine.js +26 -9
- package/dist/policy-overrides.d.ts.map +1 -1
- package/dist/policy-overrides.js +4 -4
- package/dist/policy-registry.d.ts +42 -0
- package/dist/policy-registry.d.ts.map +1 -0
- package/dist/policy-registry.js +131 -0
- package/dist/probed-id-fields.d.ts +21 -0
- package/dist/probed-id-fields.d.ts.map +1 -0
- package/dist/probed-id-fields.js +25 -0
- package/dist/probed-id-source.d.ts +11 -0
- package/dist/probed-id-source.d.ts.map +1 -0
- package/dist/probed-id-source.js +11 -0
- package/dist/profile-registry.d.ts +25 -2
- package/dist/profile-registry.d.ts.map +1 -1
- package/dist/profile-registry.js +59 -6
- package/dist/quality-gate-examination.d.ts +15 -0
- package/dist/quality-gate-examination.d.ts.map +1 -0
- package/dist/quality-gate-examination.js +15 -0
- package/dist/quality-gate-row-status.d.ts +19 -0
- package/dist/quality-gate-row-status.d.ts.map +1 -0
- package/dist/quality-gate-row-status.js +28 -0
- package/dist/quality-gate-status.d.ts +16 -0
- package/dist/quality-gate-status.d.ts.map +1 -0
- package/dist/quality-gate-status.js +16 -0
- package/dist/quality-html.d.ts.map +1 -1
- package/dist/quality-html.js +14 -3
- package/dist/quality-report-coverage.d.ts +26 -0
- package/dist/quality-report-coverage.d.ts.map +1 -0
- package/dist/quality-report-coverage.js +48 -0
- package/dist/quality-report.d.ts +28 -1
- package/dist/quality-report.d.ts.map +1 -1
- package/dist/quality-report.js +263 -35
- package/dist/query-intent-kind.d.ts +18 -0
- package/dist/query-intent-kind.d.ts.map +1 -0
- package/dist/query-intent-kind.js +18 -0
- package/dist/query-intent-result.d.ts +23 -0
- package/dist/query-intent-result.d.ts.map +1 -0
- package/dist/query-intent-result.js +1 -0
- package/dist/query-intent.d.ts +18 -0
- package/dist/query-intent.d.ts.map +1 -0
- package/dist/query-intent.js +336 -0
- package/dist/query-resolver.d.ts +18 -0
- package/dist/query-resolver.d.ts.map +1 -1
- package/dist/query-resolver.js +15 -12
- package/dist/ranked-recommendations.d.ts +36 -0
- package/dist/ranked-recommendations.d.ts.map +1 -0
- package/dist/ranked-recommendations.js +1 -0
- package/dist/ranker-explainability.d.ts.map +1 -1
- package/dist/ranker-explainability.js +38 -10
- package/dist/recommend-recipe.d.ts +17 -0
- package/dist/recommend-recipe.d.ts.map +1 -0
- package/dist/recommend-recipe.js +1 -0
- package/dist/recommend-recipes.d.ts +9 -0
- package/dist/recommend-recipes.d.ts.map +1 -0
- package/dist/recommend-recipes.js +106 -0
- package/dist/recommendation-candidate.d.ts +30 -0
- package/dist/recommendation-candidate.d.ts.map +1 -0
- package/dist/recommendation-candidate.js +1 -0
- package/dist/recommendation-confidence.d.ts +27 -0
- package/dist/recommendation-confidence.d.ts.map +1 -0
- package/dist/recommendation-confidence.js +1 -0
- package/dist/recommendation-ranking-options.d.ts +24 -0
- package/dist/recommendation-ranking-options.d.ts.map +1 -0
- package/dist/recommendation-ranking-options.js +1 -0
- package/dist/recommendation-ranking.d.ts +50 -0
- package/dist/recommendation-ranking.d.ts.map +1 -0
- package/dist/recommendation-ranking.js +527 -0
- package/dist/recommendation-source.d.ts +23 -0
- package/dist/recommendation-source.d.ts.map +1 -0
- package/dist/recommendation-source.js +23 -0
- package/dist/recommendation-suppression.d.ts +14 -0
- package/dist/recommendation-suppression.d.ts.map +1 -0
- package/dist/recommendation-suppression.js +14 -0
- package/dist/reference-asset-kind.d.ts +14 -0
- package/dist/reference-asset-kind.d.ts.map +1 -0
- package/dist/reference-asset-kind.js +14 -0
- package/dist/reference-content-check.d.ts +32 -0
- package/dist/reference-content-check.d.ts.map +1 -0
- package/dist/reference-content-check.js +143 -0
- package/dist/reference-failure.d.ts +31 -0
- package/dist/reference-failure.d.ts.map +1 -0
- package/dist/reference-failure.js +31 -0
- package/dist/reference-id-status.d.ts +15 -0
- package/dist/reference-id-status.d.ts.map +1 -0
- package/dist/reference-id-status.js +15 -0
- package/dist/reference-kind-declarations.d.ts +42 -0
- package/dist/reference-kind-declarations.d.ts.map +1 -0
- package/dist/reference-kind-declarations.js +142 -0
- package/dist/reference-lookup.d.ts +6 -0
- package/dist/reference-lookup.d.ts.map +1 -1
- package/dist/reference-lookup.js +13 -5
- package/dist/reference-registry.d.ts +210 -0
- package/dist/reference-registry.d.ts.map +1 -0
- package/dist/reference-registry.js +395 -0
- package/dist/reference-subject.d.ts +20 -0
- package/dist/reference-subject.d.ts.map +1 -0
- package/dist/reference-subject.js +1 -0
- package/dist/registration-hint-discovery-status.d.ts +25 -0
- package/dist/registration-hint-discovery-status.d.ts.map +1 -0
- package/dist/registration-hint-discovery-status.js +25 -0
- package/dist/registration-hint-registry.d.ts +80 -0
- package/dist/registration-hint-registry.d.ts.map +1 -1
- package/dist/registration-hint-registry.js +356 -138
- package/dist/registry-lifecycle.d.ts +200 -19
- package/dist/registry-lifecycle.d.ts.map +1 -1
- package/dist/registry-lifecycle.js +526 -136
- package/dist/release-readiness.d.ts.map +1 -1
- package/dist/release-readiness.js +10 -7
- package/dist/release-smoke.d.ts.map +1 -1
- package/dist/release-smoke.js +11 -7
- package/dist/report-site.d.ts.map +1 -1
- package/dist/report-site.js +25 -7
- package/dist/repository-intelligence.d.ts.map +1 -1
- package/dist/repository-intelligence.js +3 -2
- package/dist/repository-knowledge-model.d.ts.map +1 -1
- package/dist/repository-knowledge-model.js +18 -5
- package/dist/resolve-project-config.d.ts +64 -0
- package/dist/resolve-project-config.d.ts.map +1 -1
- package/dist/resolve-project-config.js +258 -32
- package/dist/reuse/compute-reuse-coverage.d.ts +29 -0
- package/dist/reuse/compute-reuse-coverage.d.ts.map +1 -0
- package/dist/reuse/compute-reuse-coverage.js +198 -0
- package/dist/reuse/rank-reuse-candidates.d.ts +38 -0
- package/dist/reuse/rank-reuse-candidates.d.ts.map +1 -0
- package/dist/reuse/rank-reuse-candidates.js +212 -0
- package/dist/reuse/rank-reuse-options.d.ts +20 -0
- package/dist/reuse/rank-reuse-options.d.ts.map +1 -0
- package/dist/reuse/rank-reuse-options.js +1 -0
- package/dist/reuse/rank-reuse-suggestions.d.ts +15 -0
- package/dist/reuse/rank-reuse-suggestions.d.ts.map +1 -0
- package/dist/reuse/rank-reuse-suggestions.js +31 -0
- package/dist/reuse/resolve-curated-reuse.d.ts +43 -0
- package/dist/reuse/resolve-curated-reuse.d.ts.map +1 -0
- package/dist/reuse/resolve-curated-reuse.js +115 -0
- package/dist/reuse/reuse-candidate.d.ts +29 -0
- package/dist/reuse/reuse-candidate.d.ts.map +1 -0
- package/dist/reuse/reuse-candidate.js +1 -0
- package/dist/reuse/reuse-coverage-report.d.ts +74 -0
- package/dist/reuse/reuse-coverage-report.d.ts.map +1 -0
- package/dist/reuse/reuse-coverage-report.js +1 -0
- package/dist/reuse/reuse-curated-coverage.d.ts +36 -0
- package/dist/reuse/reuse-curated-coverage.d.ts.map +1 -0
- package/dist/reuse/reuse-curated-coverage.js +1 -0
- package/dist/reuse/reuse-curated-resolution.d.ts +36 -0
- package/dist/reuse/reuse-curated-resolution.d.ts.map +1 -0
- package/dist/reuse/reuse-curated-resolution.js +1 -0
- package/dist/reuse/reuse-curated-status.d.ts +21 -0
- package/dist/reuse/reuse-curated-status.d.ts.map +1 -0
- package/dist/reuse/reuse-curated-status.js +21 -0
- package/dist/reuse/reuse-match-detail.d.ts +15 -0
- package/dist/reuse/reuse-match-detail.d.ts.map +1 -0
- package/dist/reuse/reuse-match-detail.js +1 -0
- package/dist/reuse/reuse-ranking.d.ts +37 -0
- package/dist/reuse/reuse-ranking.d.ts.map +1 -0
- package/dist/reuse/reuse-ranking.js +1 -0
- package/dist/reuse/reuse-suggestion.d.ts +19 -0
- package/dist/reuse/reuse-suggestion.d.ts.map +1 -0
- package/dist/reuse/reuse-suggestion.js +1 -0
- package/dist/reuse/reuse-symbol-lookup.d.ts +28 -0
- package/dist/reuse/reuse-symbol-lookup.d.ts.map +1 -0
- package/dist/reuse/reuse-symbol-lookup.js +1 -0
- package/dist/reuse/reuse-tokenize.d.ts +11 -0
- package/dist/reuse/reuse-tokenize.d.ts.map +1 -0
- package/dist/reuse/reuse-tokenize.js +26 -0
- package/dist/reuse/score-reuse-name.d.ts +16 -0
- package/dist/reuse/score-reuse-name.d.ts.map +1 -0
- package/dist/reuse/score-reuse-name.js +35 -0
- package/dist/reuse/score-reuse-primitive.d.ts +33 -0
- package/dist/reuse/score-reuse-primitive.d.ts.map +1 -0
- package/dist/reuse/score-reuse-primitive.js +92 -0
- package/dist/review-packet.d.ts +2 -0
- package/dist/review-packet.d.ts.map +1 -1
- package/dist/review-packet.js +13 -6
- package/dist/role-views.d.ts.map +1 -1
- package/dist/role-views.js +16 -16
- package/dist/routing-recommends-channels.d.ts +24 -0
- package/dist/routing-recommends-channels.d.ts.map +1 -0
- package/dist/routing-recommends-channels.js +19 -0
- package/dist/run-boundary-check.d.ts +118 -0
- package/dist/run-boundary-check.d.ts.map +1 -0
- package/dist/run-boundary-check.js +592 -0
- package/dist/safety-audit.js +1 -1
- package/dist/scaffold-coverage.js +1 -1
- package/dist/scaffold-pattern-doctor-report.d.ts +19 -0
- package/dist/scaffold-pattern-doctor-report.d.ts.map +1 -0
- package/dist/scaffold-pattern-doctor-report.js +54 -0
- package/dist/scaffold-patterns.d.ts +75 -1
- package/dist/scaffold-patterns.d.ts.map +1 -1
- package/dist/scaffold-patterns.js +375 -84
- package/dist/schema-inventory.d.ts.map +1 -1
- package/dist/schema-inventory.js +4 -3
- package/dist/search-document-id.d.ts +52 -0
- package/dist/search-document-id.d.ts.map +1 -0
- package/dist/search-document-id.js +72 -0
- package/dist/search-document-prefix.d.ts +7 -0
- package/dist/search-document-prefix.d.ts.map +1 -0
- package/dist/search-document-prefix.js +1 -0
- package/dist/search-index.d.ts.map +1 -1
- package/dist/search-index.js +20 -23
- package/dist/search-tuning-explain.d.ts +6 -0
- package/dist/search-tuning-explain.d.ts.map +1 -1
- package/dist/search-tuning-explain.js +19 -17
- package/dist/search-tuning-key-probes.d.ts +16 -0
- package/dist/search-tuning-key-probes.d.ts.map +1 -0
- package/dist/search-tuning-key-probes.js +65 -0
- package/dist/search-tuning-key-resolution.d.ts +25 -0
- package/dist/search-tuning-key-resolution.d.ts.map +1 -0
- package/dist/search-tuning-key-resolution.js +1 -0
- package/dist/search-tuning-key-resolver.d.ts +4 -0
- package/dist/search-tuning-key-resolver.d.ts.map +1 -0
- package/dist/search-tuning-key-resolver.js +107 -0
- package/dist/search-tuning-key-status.d.ts +24 -0
- package/dist/search-tuning-key-status.d.ts.map +1 -0
- package/dist/search-tuning-key-status.js +24 -0
- package/dist/search-tuning-lint.d.ts +9 -0
- package/dist/search-tuning-lint.d.ts.map +1 -0
- package/dist/search-tuning-lint.js +468 -0
- package/dist/search-tuning-registry.d.ts +43 -0
- package/dist/search-tuning-registry.d.ts.map +1 -1
- package/dist/search-tuning-registry.js +214 -49
- package/dist/self-audit.d.ts +12 -0
- package/dist/self-audit.d.ts.map +1 -1
- package/dist/self-audit.js +36 -10
- package/dist/self-config-doctor-v2.d.ts +145 -3
- package/dist/self-config-doctor-v2.d.ts.map +1 -1
- package/dist/self-config-doctor-v2.js +1329 -255
- package/dist/self-config-doctor.d.ts +20 -1
- package/dist/self-config-doctor.d.ts.map +1 -1
- package/dist/self-config-doctor.js +65 -309
- package/dist/settled-unit-states.d.ts +9 -0
- package/dist/settled-unit-states.d.ts.map +1 -0
- package/dist/settled-unit-states.js +14 -0
- package/dist/sharkcraft-inspector.d.ts +47 -1
- package/dist/sharkcraft-inspector.d.ts.map +1 -1
- package/dist/sharkcraft-inspector.js +278 -29
- package/dist/spec/spec-evidence.d.ts.map +1 -1
- package/dist/spec/spec-evidence.js +14 -20
- package/dist/split-identifier.d.ts +21 -0
- package/dist/split-identifier.d.ts.map +1 -0
- package/dist/split-identifier.js +27 -0
- package/dist/start-here.d.ts.map +1 -1
- package/dist/start-here.js +1 -2
- package/dist/substitute-placeholders.d.ts +8 -0
- package/dist/substitute-placeholders.d.ts.map +1 -0
- package/dist/substitute-placeholders.js +9 -0
- package/dist/symbol-index.d.ts +33 -0
- package/dist/symbol-index.d.ts.map +1 -1
- package/dist/symbol-index.js +241 -3
- package/dist/symbol-member-entry.d.ts +26 -0
- package/dist/symbol-member-entry.d.ts.map +1 -0
- package/dist/symbol-member-entry.js +1 -0
- package/dist/symbol-member-kind.d.ts +14 -0
- package/dist/symbol-member-kind.d.ts.map +1 -0
- package/dist/symbol-member-kind.js +14 -0
- package/dist/task-packet.d.ts.map +1 -1
- package/dist/task-packet.js +52 -9
- package/dist/task-ranker.d.ts +8 -0
- package/dist/task-ranker.d.ts.map +1 -1
- package/dist/task-ranker.js +25 -13
- package/dist/task-risk.js +1 -1
- package/dist/task-routing-hint-registry.d.ts +20 -1
- package/dist/task-routing-hint-registry.d.ts.map +1 -1
- package/dist/task-routing-hint-registry.js +186 -42
- package/dist/template-drift.d.ts.map +1 -1
- package/dist/template-drift.js +30 -9
- package/dist/template-lint.d.ts.map +1 -1
- package/dist/template-lint.js +160 -2
- package/dist/term-query.d.ts +10 -0
- package/dist/term-query.d.ts.map +1 -0
- package/dist/term-query.js +1 -0
- package/dist/test-definitions.d.ts +6 -3
- package/dist/test-definitions.d.ts.map +1 -1
- package/dist/test-runner.d.ts +95 -10
- package/dist/test-runner.d.ts.map +1 -1
- package/dist/test-runner.js +309 -318
- package/dist/tuning-query-tokens.d.ts +29 -0
- package/dist/tuning-query-tokens.d.ts.map +1 -0
- package/dist/tuning-query-tokens.js +51 -0
- package/dist/typecheck-files.d.ts +36 -0
- package/dist/typecheck-files.d.ts.map +1 -0
- package/dist/typecheck-files.js +158 -0
- package/dist/uncertainty.js +1 -1
- package/dist/universal-search.d.ts.map +1 -1
- package/dist/universal-search.js +5 -3
- package/dist/unregistered-exports.d.ts +19 -0
- package/dist/unregistered-exports.d.ts.map +1 -0
- package/dist/unregistered-exports.js +141 -0
- package/dist/unresolvable-reason.d.ts +11 -0
- package/dist/unresolvable-reason.d.ts.map +1 -0
- package/dist/unresolvable-reason.js +11 -0
- package/dist/upgrade-advisor.d.ts.map +1 -1
- package/dist/upgrade-advisor.js +16 -9
- package/dist/validate-contribution-file.d.ts +4 -0
- package/dist/validate-contribution-file.d.ts.map +1 -0
- package/dist/validate-contribution-file.js +228 -0
- package/dist/why-file.d.ts +3 -0
- package/dist/why-file.d.ts.map +1 -1
- package/dist/why-file.js +7 -3
- package/package.json +17 -17
package/dist/quality-report.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type IDriftReport } from './drift.js';
|
|
2
2
|
import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
|
|
3
|
+
import { type IVerdictCoverage } from '@shrkcrft/core';
|
|
3
4
|
export interface IQualityGateResult {
|
|
4
5
|
id: string;
|
|
5
6
|
label: string;
|
|
@@ -13,7 +14,15 @@ export interface IQualityGateResult {
|
|
|
13
14
|
data?: Record<string, unknown>;
|
|
14
15
|
}
|
|
15
16
|
export interface IQualityReport {
|
|
16
|
-
|
|
17
|
+
/**
|
|
18
|
+
* `fail` — a blocking gate failed. `not-verified` — no blocking gate failed,
|
|
19
|
+
* but a gate could not run, examined nothing while required, or examined
|
|
20
|
+
* only part of its scope (core's `coverageShortfall` over {@link coverage}):
|
|
21
|
+
* never a pass, for MCP, the dashboard and the report site alike. `warn` —
|
|
22
|
+
* a non-blocking gate failed. `pass` — every gate that was asked for
|
|
23
|
+
* examined its whole scope and passed.
|
|
24
|
+
*/
|
|
25
|
+
overall: 'pass' | 'fail' | 'warn' | 'not-verified';
|
|
17
26
|
blockers: number;
|
|
18
27
|
warnings: number;
|
|
19
28
|
score: number;
|
|
@@ -21,6 +30,14 @@ export interface IQualityReport {
|
|
|
21
30
|
nextRecommendations: readonly string[];
|
|
22
31
|
/** Drift report attached when the drift gate ran. */
|
|
23
32
|
drift?: IDriftReport;
|
|
33
|
+
/**
|
|
34
|
+
* What the report examined (unit `quality gates`), from the one
|
|
35
|
+
* classification `shrk quality` also reads (`examineQualityGate`).
|
|
36
|
+
* Always set by `buildQualityReport`.
|
|
37
|
+
*/
|
|
38
|
+
coverage?: IVerdictCoverage;
|
|
39
|
+
/** The shortfall that made `overall` `not-verified`, when one did. */
|
|
40
|
+
shortfalls?: readonly string[];
|
|
24
41
|
}
|
|
25
42
|
export interface IQualityConfig {
|
|
26
43
|
minReadiness?: number;
|
|
@@ -40,6 +57,16 @@ export interface IBuildQualityReportInput {
|
|
|
40
57
|
* read-only path so the server never executes shell commands.
|
|
41
58
|
*/
|
|
42
59
|
skipShell?: boolean;
|
|
60
|
+
/** Narrow the knowledge stale-check gate to entries referencing these files (`shrk quality --changed-only`). */
|
|
61
|
+
changedFiles?: readonly string[];
|
|
62
|
+
/**
|
|
63
|
+
* Set ONLY by `shrk quality`, which runs the seven data-defined gate planes
|
|
64
|
+
* itself (some spawn shells). Every other consumer — MCP, the dashboard, the
|
|
65
|
+
* report site — does not run them, so it gets a `gate-planes` row with
|
|
66
|
+
* `executed: false` whenever the config declares any plane rule: the report
|
|
67
|
+
* is then `not-verified`, never a `pass` over rules it never evaluated.
|
|
68
|
+
*/
|
|
69
|
+
callerRunsGatePlanes?: boolean;
|
|
43
70
|
}
|
|
44
71
|
/**
|
|
45
72
|
* Build a quality report from an inspection. Pure orchestration over the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quality-report.d.ts","sourceRoot":"","sources":["../src/quality-report.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"quality-report.d.ts","sourceRoot":"","sources":["../src/quality-report.ts"],"names":[],"mappings":"AAIA,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAcjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAS1E,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,+EAA+E;IAC/E,SAAS,EAAE,OAAO,CAAC;IACnB,4EAA4E;IAC5E,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B;;;;;;;OAOG;IACH,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,cAAc,CAAC;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACrC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,qDAAqD;IACrD,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,sEAAsE;IACtE,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,qBAAqB,CAAC;IAClC,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gHAAgH;IAChH,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,cAAc,CAAC,CAkZzB"}
|
package/dist/quality-report.js
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
|
-
import { evaluateBoundaries, loadTsconfigPaths, scanImports, } from '@shrkcrft/boundaries';
|
|
2
1
|
import { buildAiReadinessReport } from "./ai-readiness.js";
|
|
2
|
+
import { describeBoundaryConfiguration } from "./boundary-configuration-status.js";
|
|
3
|
+
import { boundaryLoadIssueLabel, runBoundaryCheck } from "./run-boundary-check.js";
|
|
3
4
|
import { buildCoverageReport } from "./coverage-report.js";
|
|
4
5
|
import { buildDriftReport } from "./drift.js";
|
|
5
|
-
import {
|
|
6
|
+
import { buildPackDoctorReportAsync } from "./pack-doctor.js";
|
|
7
|
+
import { packDoctorVerdict } from "./pack-doctor-verdict.js";
|
|
8
|
+
import { declaredGatePlaneRules } from "./declared-gate-plane-rules.js";
|
|
9
|
+
import { knowledgeStaleQualityGate } from "./knowledge-stale-quality-gate.js";
|
|
6
10
|
import { runDoctor } from "./sharkcraft-inspector.js";
|
|
11
|
+
import { doctorVerdict } from "./doctor-verdict.js";
|
|
7
12
|
import { loadAgentContractTests, loadContextTests, runAgentContractTest, runContextTest, } from "./test-runner.js";
|
|
13
|
+
import { warmReferenceRegistries } from "./reference-registry.js";
|
|
14
|
+
import { coverageShortfall } from '@shrkcrft/core';
|
|
15
|
+
import { qualityReportCoverage } from "./quality-report-coverage.js";
|
|
16
|
+
import { buildDeclaredXrefReport, declaredXrefCoverage, declaredXrefSummaryLine, isBrokenXref, } from "./declared-cross-references.js";
|
|
8
17
|
/**
|
|
9
18
|
* Build a quality report from an inspection. Pure orchestration over the
|
|
10
19
|
* existing inspector helpers — no IO outside what those helpers already do.
|
|
@@ -12,8 +21,12 @@ import { loadAgentContractTests, loadContextTests, runAgentContractTest, runCont
|
|
|
12
21
|
export async function buildQualityReport(input) {
|
|
13
22
|
const { inspection, config, strict = false, skipShell = false } = input;
|
|
14
23
|
const gates = [];
|
|
15
|
-
// 1. Doctor.
|
|
24
|
+
// 1. Doctor. A scope the doctor could not verify (a compiled pack build with
|
|
25
|
+
// no build record) is PARTIAL here, exactly as `shrk doctor` settles it to 2.
|
|
16
26
|
const doctor = runDoctor(inspection);
|
|
27
|
+
// THE doctor settlement (`doctorVerdict`) — the one `shrk doctor`, `shrk
|
|
28
|
+
// check`, the dashboard and MCP `inspect_sharkcraft_setup` read.
|
|
29
|
+
const doctorShortfalls = doctorVerdict(doctor).shortfalls;
|
|
17
30
|
gates.push({
|
|
18
31
|
id: 'doctor',
|
|
19
32
|
label: 'Project doctor',
|
|
@@ -21,13 +34,15 @@ export async function buildQualityReport(input) {
|
|
|
21
34
|
blocking: true,
|
|
22
35
|
runsShell: false,
|
|
23
36
|
executed: true,
|
|
24
|
-
notes:
|
|
25
|
-
.filter((c) => c.severity === 'error')
|
|
26
|
-
.
|
|
37
|
+
notes: [
|
|
38
|
+
...doctor.checks.filter((c) => c.severity === 'error').map((c) => `${c.title}: ${c.message}`),
|
|
39
|
+
...(doctorShortfalls.length > 0 ? [`NOT VERIFIED — ${doctorShortfalls.join('; ')}`] : []),
|
|
40
|
+
],
|
|
27
41
|
data: {
|
|
28
42
|
errors: doctor.summary.errors,
|
|
29
43
|
warnings: doctor.summary.warnings,
|
|
30
44
|
ok: doctor.summary.ok,
|
|
45
|
+
...(doctorShortfalls.length > 0 ? { partial: true, shortfalls: doctorShortfalls } : {}),
|
|
31
46
|
},
|
|
32
47
|
});
|
|
33
48
|
// 2. Readiness threshold.
|
|
@@ -46,7 +61,9 @@ export async function buildQualityReport(input) {
|
|
|
46
61
|
data: { score: readiness.score, min: readinessMin, grade: readiness.grade },
|
|
47
62
|
});
|
|
48
63
|
// 3. Boundaries. The boundary scan reads files from disk but does not run
|
|
49
|
-
// shell commands; safe for MCP.
|
|
64
|
+
// shell commands; safe for MCP. Through the ONE boundary orchestrator
|
|
65
|
+
// (round 11), so this gate reports exactly what `check boundaries` does —
|
|
66
|
+
// an errored rule counts as an error, a partial scope is never a pass.
|
|
50
67
|
const boundaries = checkBoundaries(inspection);
|
|
51
68
|
gates.push({
|
|
52
69
|
id: 'boundaries',
|
|
@@ -56,7 +73,12 @@ export async function buildQualityReport(input) {
|
|
|
56
73
|
runsShell: false,
|
|
57
74
|
executed: true,
|
|
58
75
|
notes: boundaries.notes,
|
|
59
|
-
data: {
|
|
76
|
+
data: {
|
|
77
|
+
errors: boundaries.errors,
|
|
78
|
+
warnings: boundaries.warnings,
|
|
79
|
+
examinedNothing: boundaries.examinedNothing === true,
|
|
80
|
+
...(boundaries.partial ? { partial: true, shortfalls: boundaries.shortfalls ?? [] } : {}),
|
|
81
|
+
},
|
|
60
82
|
});
|
|
61
83
|
// 4. Coverage.
|
|
62
84
|
const cov = buildCoverageReport(inspection);
|
|
@@ -103,7 +125,11 @@ export async function buildQualityReport(input) {
|
|
|
103
125
|
gates.push({
|
|
104
126
|
id: 'drift',
|
|
105
127
|
label: 'Drift report',
|
|
106
|
-
passed: true
|
|
128
|
+
// A gate that threw proved NOTHING. `passed: true` here would fold an
|
|
129
|
+
// unmeasured verdict into the green count and the score — the exact
|
|
130
|
+
// silent-green the loud-skip contract exists to prevent. `executed:
|
|
131
|
+
// false` marks it unmeasured; the score below excludes it either way.
|
|
132
|
+
passed: false,
|
|
107
133
|
blocking: false,
|
|
108
134
|
runsShell: false,
|
|
109
135
|
executed: false,
|
|
@@ -124,14 +150,21 @@ export async function buildQualityReport(input) {
|
|
|
124
150
|
runsShell: false,
|
|
125
151
|
executed: true,
|
|
126
152
|
notes: failed > 0 ? [`${failed}/${results.length} context tests failed`] : [],
|
|
127
|
-
|
|
153
|
+
// `failed === 0` over ZERO tests is not a pass — it examined nothing.
|
|
154
|
+
// Flagged so the CLI aggregate reports the gate as skipped (a deliberate
|
|
155
|
+
// skip when the gate is optional, NOT verified when it is required).
|
|
156
|
+
data: { total: results.length, failed, examinedNothing: results.length === 0 },
|
|
128
157
|
});
|
|
129
158
|
}
|
|
130
159
|
catch (e) {
|
|
131
160
|
gates.push({
|
|
132
161
|
id: 'context-tests',
|
|
133
162
|
label: 'Context tests',
|
|
134
|
-
passed: true
|
|
163
|
+
// A gate that threw proved NOTHING. `passed: true` here would fold an
|
|
164
|
+
// unmeasured verdict into the green count and the score — the exact
|
|
165
|
+
// silent-green the loud-skip contract exists to prevent. `executed:
|
|
166
|
+
// false` marks it unmeasured; the score below excludes it either way.
|
|
167
|
+
passed: false,
|
|
135
168
|
blocking: false,
|
|
136
169
|
runsShell: false,
|
|
137
170
|
executed: false,
|
|
@@ -140,9 +173,24 @@ export async function buildQualityReport(input) {
|
|
|
140
173
|
}
|
|
141
174
|
// 7. Agent tests. Likewise, pure orchestration.
|
|
142
175
|
try {
|
|
176
|
+
// The agent-test runner reads the shared reference registry (MCP ≡ CLI);
|
|
177
|
+
// a warm here keeps any command resolver a CLI caller already injected.
|
|
178
|
+
await warmReferenceRegistries(inspection);
|
|
143
179
|
const all = await loadAgentContractTests(inspection);
|
|
144
180
|
const results = all.map((t) => runAgentContractTest(inspection, t));
|
|
145
|
-
|
|
181
|
+
// A FAILURE is a test whose verdict is `fail`. A `not-verified` test (an
|
|
182
|
+
// expectation the runner could not evaluate — e.g. an `expectedCommands`
|
|
183
|
+
// entry with no command index injected, the MCP path) is an unexamined
|
|
184
|
+
// unit, the same verdict `shrk test agent` gives it (2): never a failure,
|
|
185
|
+
// never a pass. With no real failure the gate is PARTIAL, which the CLI
|
|
186
|
+
// aggregate reports as an accidental skip (NOT VERIFIED).
|
|
187
|
+
const failed = results.filter((r) => r.verdict === 'fail').length;
|
|
188
|
+
const notVerified = results.filter((r) => r.verdict === 'not-verified');
|
|
189
|
+
const partial = failed === 0 && notVerified.length > 0;
|
|
190
|
+
const notVerifiedNote = `NOT VERIFIED — ${notVerified.length} agent test(s) could not be evaluated: ${notVerified
|
|
191
|
+
.slice(0, 5)
|
|
192
|
+
.map((r) => r.id)
|
|
193
|
+
.join(', ')}${notVerified.length > 5 ? ` (+${notVerified.length - 5} more)` : ''}`;
|
|
146
194
|
gates.push({
|
|
147
195
|
id: 'agent-tests',
|
|
148
196
|
label: 'Agent contract tests',
|
|
@@ -150,15 +198,29 @@ export async function buildQualityReport(input) {
|
|
|
150
198
|
blocking: config.requireAgentTests === true || strict,
|
|
151
199
|
runsShell: false,
|
|
152
200
|
executed: true,
|
|
153
|
-
notes:
|
|
154
|
-
|
|
201
|
+
notes: [
|
|
202
|
+
...(failed > 0 ? [`${failed}/${results.length} agent tests failed`] : []),
|
|
203
|
+
...(notVerified.length > 0 ? [notVerifiedNote] : []),
|
|
204
|
+
],
|
|
205
|
+
// Zero agent tests examined nothing — see the context-tests note above.
|
|
206
|
+
data: {
|
|
207
|
+
total: results.length,
|
|
208
|
+
failed,
|
|
209
|
+
notVerified: notVerified.length,
|
|
210
|
+
examinedNothing: results.length === 0,
|
|
211
|
+
...(partial ? { partial: true, shortfalls: [notVerifiedNote] } : {}),
|
|
212
|
+
},
|
|
155
213
|
});
|
|
156
214
|
}
|
|
157
215
|
catch (e) {
|
|
158
216
|
gates.push({
|
|
159
217
|
id: 'agent-tests',
|
|
160
218
|
label: 'Agent contract tests',
|
|
161
|
-
passed: true
|
|
219
|
+
// A gate that threw proved NOTHING. `passed: true` here would fold an
|
|
220
|
+
// unmeasured verdict into the green count and the score — the exact
|
|
221
|
+
// silent-green the loud-skip contract exists to prevent. `executed:
|
|
222
|
+
// false` marks it unmeasured; the score below excludes it either way.
|
|
223
|
+
passed: false,
|
|
162
224
|
blocking: false,
|
|
163
225
|
runsShell: false,
|
|
164
226
|
executed: false,
|
|
@@ -166,10 +228,20 @@ export async function buildQualityReport(input) {
|
|
|
166
228
|
});
|
|
167
229
|
}
|
|
168
230
|
// 8. Packs doctor. Signature verification reads files but does not exec.
|
|
231
|
+
// Settled by THE pack-doctor verdict (`packDoctorVerdict`, the one `shrk
|
|
232
|
+
// packs doctor` exits on): ZERO packs examined nothing — a deliberate skip
|
|
233
|
+
// when the gate is optional, NOT verified when required — and a compiled
|
|
234
|
+
// build never compared to its source is PARTIAL. Never `passed` over either.
|
|
169
235
|
try {
|
|
170
|
-
|
|
236
|
+
// THE async doctor `shrk packs doctor` runs: registry-backed rejections
|
|
237
|
+
// included, so this row cannot pass a pack the verb fails (R12-X2).
|
|
238
|
+
const report = await buildPackDoctorReportAsync(inspection, {
|
|
171
239
|
requireSignatures: config.requirePackSignatures === true,
|
|
172
240
|
});
|
|
241
|
+
const verdict = packDoctorVerdict(report, inspection);
|
|
242
|
+
const compiledShortfall = report.compiledArtifactCoverage
|
|
243
|
+
? coverageShortfall(report.compiledArtifactCoverage)
|
|
244
|
+
: undefined;
|
|
173
245
|
gates.push({
|
|
174
246
|
id: 'packs',
|
|
175
247
|
label: 'Packs doctor',
|
|
@@ -177,13 +249,20 @@ export async function buildQualityReport(input) {
|
|
|
177
249
|
blocking: config.requirePackSignatures === true || strict,
|
|
178
250
|
runsShell: false,
|
|
179
251
|
executed: true,
|
|
180
|
-
notes:
|
|
181
|
-
.
|
|
182
|
-
|
|
183
|
-
|
|
252
|
+
notes: [
|
|
253
|
+
...report.issues
|
|
254
|
+
.filter((i) => i.severity === 'error')
|
|
255
|
+
.slice(0, 5)
|
|
256
|
+
.map((i) => `${i.packageName}: ${i.message}`),
|
|
257
|
+
...(verdict.examinedNothing ? ['0 packs discovered — nothing to examine'] : []),
|
|
258
|
+
...(compiledShortfall ? [`NOT VERIFIED — ${compiledShortfall}`] : []),
|
|
259
|
+
],
|
|
184
260
|
data: {
|
|
185
261
|
errors: report.summary.errors,
|
|
186
262
|
warnings: report.summary.warnings,
|
|
263
|
+
packsDiscovered: verdict.packsDiscovered,
|
|
264
|
+
...(verdict.examinedNothing ? { examinedNothing: true } : {}),
|
|
265
|
+
...(compiledShortfall !== undefined && report.passed ? { partial: true, shortfalls: [compiledShortfall] } : {}),
|
|
187
266
|
},
|
|
188
267
|
});
|
|
189
268
|
}
|
|
@@ -191,13 +270,101 @@ export async function buildQualityReport(input) {
|
|
|
191
270
|
gates.push({
|
|
192
271
|
id: 'packs',
|
|
193
272
|
label: 'Packs doctor',
|
|
194
|
-
passed: true
|
|
273
|
+
// A gate that threw proved NOTHING. `passed: true` here would fold an
|
|
274
|
+
// unmeasured verdict into the green count and the score — the exact
|
|
275
|
+
// silent-green the loud-skip contract exists to prevent. `executed:
|
|
276
|
+
// false` marks it unmeasured; the score below excludes it either way.
|
|
277
|
+
passed: false,
|
|
195
278
|
blocking: false,
|
|
196
279
|
runsShell: false,
|
|
197
280
|
executed: false,
|
|
198
281
|
notes: [`could not run pack doctor: ${e.message}`],
|
|
199
282
|
});
|
|
200
283
|
}
|
|
284
|
+
// 9. Declared cross-references (round 11, 4.2) — the collector the
|
|
285
|
+
// self-config doctor reads, so the bundle and the verb cannot disagree. A
|
|
286
|
+
// dangling id is a warning (non-blocking unless --strict); a dangling
|
|
287
|
+
// `supersededBy`, a supersession cycle or an unknown facet kind blocks. An id
|
|
288
|
+
// that could not be looked up is an unexamined unit: with no blocking error
|
|
289
|
+
// the gate is PARTIAL (never a pass), and `data.coverage` carries the record.
|
|
290
|
+
try {
|
|
291
|
+
const xrefs = await buildDeclaredXrefReport(inspection);
|
|
292
|
+
const coverage = declaredXrefCoverage(xrefs);
|
|
293
|
+
const c = xrefs.counts;
|
|
294
|
+
const nothing = c.ids === 0 && xrefs.issues.length === 0 && xrefs.examined.unreadSources.length === 0;
|
|
295
|
+
const shortfall = nothing ? undefined : coverageShortfall(coverage);
|
|
296
|
+
gates.push({
|
|
297
|
+
id: 'cross-references',
|
|
298
|
+
label: 'Declared cross-references',
|
|
299
|
+
passed: c.errors === 0 && ((c.warnings === 0) || shortfall !== undefined),
|
|
300
|
+
blocking: c.errors > 0 || (strict && !nothing),
|
|
301
|
+
runsShell: false,
|
|
302
|
+
executed: true,
|
|
303
|
+
notes: [
|
|
304
|
+
declaredXrefSummaryLine(xrefs),
|
|
305
|
+
...xrefs.rows
|
|
306
|
+
.filter(isBrokenXref)
|
|
307
|
+
.slice(0, 5)
|
|
308
|
+
.map((r) => `${r.severity}: ${r.message}${r.file ? ` (${r.file})` : ''}`),
|
|
309
|
+
...xrefs.issues.slice(0, 3).map((i) => `${i.severity}: ${i.message}`),
|
|
310
|
+
...(shortfall ? [`NOT VERIFIED — ${shortfall}`] : []),
|
|
311
|
+
],
|
|
312
|
+
data: {
|
|
313
|
+
ids: c.ids,
|
|
314
|
+
dangling: c.dangling,
|
|
315
|
+
wrongKind: c.wrongKind,
|
|
316
|
+
unverified: c.unverified,
|
|
317
|
+
errors: c.errors,
|
|
318
|
+
warnings: c.warnings,
|
|
319
|
+
coverage,
|
|
320
|
+
...(nothing ? { examinedNothing: true } : {}),
|
|
321
|
+
...(shortfall !== undefined && c.errors === 0 ? { partial: true } : {}),
|
|
322
|
+
},
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
catch (e) {
|
|
326
|
+
gates.push({
|
|
327
|
+
id: 'cross-references',
|
|
328
|
+
label: 'Declared cross-references',
|
|
329
|
+
// Could not run → proved nothing; never folded into a pass.
|
|
330
|
+
passed: false,
|
|
331
|
+
blocking: false,
|
|
332
|
+
runsShell: false,
|
|
333
|
+
executed: false,
|
|
334
|
+
notes: [`could not collect declared cross-references: ${e.message}`],
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
// 10. The knowledge stale-check — THE gate `shrk knowledge stale-check` and
|
|
338
|
+
// `shrk quality` settle (`knowledgeStaleQualityGate`), so this report and
|
|
339
|
+
// the CLI bundle cannot disagree about the corpus (round 11 review: it was
|
|
340
|
+
// CLI-only, and MCP read `pass` over a stale corpus `shrk quality` failed).
|
|
341
|
+
gates.push(await knowledgeStaleQualityGate(inspection, input.changedFiles));
|
|
342
|
+
// 11. The seven data-defined gate planes. `shrk quality` runs them itself;
|
|
343
|
+
// every other consumer does not (some spawn shells), so a config that
|
|
344
|
+
// declares plane rules gets a NOT-RUN row — the report is `not-verified`,
|
|
345
|
+
// never a `pass` over rules nobody evaluated.
|
|
346
|
+
if (input.callerRunsGatePlanes !== true) {
|
|
347
|
+
const planes = await declaredGatePlaneRules(inspection.projectRoot);
|
|
348
|
+
if (planes.total > 0 || planes.loadError !== undefined) {
|
|
349
|
+
const breakdown = Object.entries(planes.byPlane)
|
|
350
|
+
.map(([plane, n]) => `${plane} ${n}`)
|
|
351
|
+
.join(', ');
|
|
352
|
+
gates.push({
|
|
353
|
+
id: 'gate-planes',
|
|
354
|
+
label: 'Data-defined gate planes',
|
|
355
|
+
passed: false,
|
|
356
|
+
blocking: false,
|
|
357
|
+
runsShell: false,
|
|
358
|
+
executed: false,
|
|
359
|
+
notes: [
|
|
360
|
+
planes.loadError !== undefined
|
|
361
|
+
? `could not resolve the config (${planes.loadError}), so the data-defined planes were not evaluated — run \`shrk gates check\``
|
|
362
|
+
: `${planes.total} plane rule(s) declared (${breakdown}) — not evaluated by this report; run \`shrk gates check\` (or \`shrk quality\`)`,
|
|
363
|
+
],
|
|
364
|
+
data: { rules: planes.total, byPlane: planes.byPlane },
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
}
|
|
201
368
|
// If `skipShell` were true and any gate listed runsShell=true, we'd record
|
|
202
369
|
// it as skipped here. Today every gate is pure inspection — no shell. The
|
|
203
370
|
// flag is kept so MCP callers can pre-declare the intent and future gates
|
|
@@ -221,7 +388,13 @@ export async function buildQualityReport(input) {
|
|
|
221
388
|
const executed = gates.filter((g) => g.executed).length;
|
|
222
389
|
const passCount = gates.filter((g) => g.passed).length;
|
|
223
390
|
const score = executed > 0 ? Math.round((passCount / executed) * 100) : 100;
|
|
224
|
-
|
|
391
|
+
// Settled through core's coverage rule, like every CLI verdict: a blocking
|
|
392
|
+
// failure is `fail`; otherwise a gate that could not run, examined nothing
|
|
393
|
+
// while required, or examined only part of its scope makes the report
|
|
394
|
+
// `not-verified` — never `pass` (or `warn`) over it.
|
|
395
|
+
const coverage = qualityReportCoverage(gates);
|
|
396
|
+
const shortfall = coverageShortfall(coverage);
|
|
397
|
+
const overall = blockers > 0 ? 'fail' : shortfall !== undefined ? 'not-verified' : warnings > 0 ? 'warn' : 'pass';
|
|
225
398
|
const nextRecommendations = buildRecommendations(gates);
|
|
226
399
|
const report = {
|
|
227
400
|
overall,
|
|
@@ -230,6 +403,8 @@ export async function buildQualityReport(input) {
|
|
|
230
403
|
score,
|
|
231
404
|
gates,
|
|
232
405
|
nextRecommendations,
|
|
406
|
+
coverage,
|
|
407
|
+
shortfalls: shortfall !== undefined ? [shortfall] : [],
|
|
233
408
|
};
|
|
234
409
|
if (drift)
|
|
235
410
|
report.drift = drift;
|
|
@@ -237,21 +412,58 @@ export async function buildQualityReport(input) {
|
|
|
237
412
|
}
|
|
238
413
|
function checkBoundaries(inspection) {
|
|
239
414
|
const rules = inspection.boundaryRegistry.list();
|
|
240
|
-
|
|
241
|
-
|
|
415
|
+
const loadIssues = inspection.boundaryLoadIssues ?? [];
|
|
416
|
+
if (rules.length === 0 && loadIssues.length === 0) {
|
|
417
|
+
// Zero errors over ZERO rules is not a clean boundary check — it examined
|
|
418
|
+
// nothing. Flagged so the CLI aggregate reports it as a skip, not a pass;
|
|
419
|
+
// the notes say WHY (e.g. a boundaries.ts that is not listed).
|
|
420
|
+
return {
|
|
421
|
+
errors: 0,
|
|
422
|
+
warnings: 0,
|
|
423
|
+
notes: ['no boundary rules configured', ...describeBoundaryConfiguration(inspection).diagnostics],
|
|
424
|
+
examinedNothing: true,
|
|
425
|
+
};
|
|
242
426
|
}
|
|
243
427
|
try {
|
|
244
|
-
const
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
428
|
+
const r = runBoundaryCheck(inspection);
|
|
429
|
+
// An errored rule, a stale exception and a failOnEmpty skip fail the gate
|
|
430
|
+
// exactly as they fail `check boundaries`.
|
|
431
|
+
const errors = r.counts.error +
|
|
432
|
+
r.loadIssues.length +
|
|
433
|
+
r.staleExceptions.length +
|
|
434
|
+
r.rules.filter((x) => x.failedOnEmpty === true).length;
|
|
435
|
+
const partial = errors === 0 && r.exitCode === 2;
|
|
249
436
|
return {
|
|
250
|
-
errors
|
|
251
|
-
warnings:
|
|
252
|
-
notes:
|
|
253
|
-
.slice(0, 5)
|
|
254
|
-
.map((
|
|
437
|
+
errors,
|
|
438
|
+
warnings: r.counts.warning,
|
|
439
|
+
notes: [
|
|
440
|
+
...r.violations.slice(0, 5).map((v) => `${v.severity}: ${v.file}:${v.line} → ${v.importSpecifier}`),
|
|
441
|
+
...r.loadIssues.map((i) => `error: ${boundaryLoadIssueLabel(i)} (${i.file}) — ${i.kind}: ${i.issues.join('; ')} — NOT evaluated`),
|
|
442
|
+
...r.staleExceptions.map((s) => `error: ${s.file} — ${s.message}`),
|
|
443
|
+
...(partial ? [`NOT VERIFIED — ${r.shortfalls.slice(0, 3).join('; ')}`] : []),
|
|
444
|
+
// Round 13 (lane B): dead selector units and went-live expectEmpty
|
|
445
|
+
// markers are ADVISORY here — listed, never an error: `check
|
|
446
|
+
// boundaries --fail-on-dead-units` is where they fail. Quality used to
|
|
447
|
+
// report `passed` with no note while `check boundaries` withheld its ✓.
|
|
448
|
+
...r.deadUnits.slice(0, 5).map((d) => `advisory: dead selector unit [${d.unit}] ${d.ruleId}: ${d.selector} — ${d.reason}`),
|
|
449
|
+
...(r.deadUnits.length > 5
|
|
450
|
+
? [`advisory: ${r.deadUnits.length - 5} more dead selector unit(s) — \`shrk check boundaries\` lists them`]
|
|
451
|
+
: []),
|
|
452
|
+
// A PACK marker that went live is INFO (round 13 review), as `check
|
|
453
|
+
// boundaries` prints it in its own block — never counted as advisory.
|
|
454
|
+
...r.wentLive
|
|
455
|
+
.slice(0, 5)
|
|
456
|
+
.map((u) => `${u.packageName !== undefined ? 'info' : 'advisory'}: [${u.unit}] ${u.ruleId}: ${u.selector} — ${u.reason}`),
|
|
457
|
+
...(r.wentLive.length > 5
|
|
458
|
+
? [`advisory: ${r.wentLive.length - 5} more went-live expectEmpty marker(s) — \`shrk check boundaries\` lists them`]
|
|
459
|
+
: []),
|
|
460
|
+
// …and every intended-empty unit the run ACCEPTED is printed, never
|
|
461
|
+
// silent (round 13 review) — the orchestrator's settled acceptance
|
|
462
|
+
// lines (present only at exit 0), worded as the gate planes' coverage
|
|
463
|
+
// item prints theirs.
|
|
464
|
+
...r.accepted.map((a) => `accepted: ${a}`),
|
|
465
|
+
],
|
|
466
|
+
...(partial ? { partial: true, shortfalls: [...r.shortfalls] } : {}),
|
|
255
467
|
};
|
|
256
468
|
}
|
|
257
469
|
catch (e) {
|
|
@@ -261,7 +473,14 @@ function checkBoundaries(inspection) {
|
|
|
261
473
|
function buildRecommendations(gates) {
|
|
262
474
|
const out = [];
|
|
263
475
|
for (const g of gates) {
|
|
264
|
-
if (g.passed)
|
|
476
|
+
if (g.id === 'agent-tests' && g.passed && g.data?.['partial'] === true) {
|
|
477
|
+
// Not a failure, not a pass: an expectation the runner could not evaluate.
|
|
478
|
+
out.push('Run `shrk test agent` from the CLI — it injects the command index, so every `expectedCommands` entry is evaluated.');
|
|
479
|
+
continue;
|
|
480
|
+
}
|
|
481
|
+
// A gate that passed over PART of its scope still gets its repro: the
|
|
482
|
+
// report is not-verified because of it.
|
|
483
|
+
if (g.passed && g.data?.['partial'] !== true)
|
|
265
484
|
continue;
|
|
266
485
|
switch (g.id) {
|
|
267
486
|
case 'doctor':
|
|
@@ -288,6 +507,15 @@ function buildRecommendations(gates) {
|
|
|
288
507
|
case 'packs':
|
|
289
508
|
out.push('Run `shrk packs doctor --require-signatures` to inspect pack issues.');
|
|
290
509
|
break;
|
|
510
|
+
case 'cross-references':
|
|
511
|
+
out.push('Run `shrk self-config xrefs --dangling-only` to list dangling cross-reference ids (`shrk self-config resolve <id>` explains one).');
|
|
512
|
+
break;
|
|
513
|
+
case 'knowledge-stale':
|
|
514
|
+
out.push('Run `shrk knowledge stale-check` to see the stale, missing and unverifiable knowledge references.');
|
|
515
|
+
break;
|
|
516
|
+
case 'gate-planes':
|
|
517
|
+
out.push('Run `shrk gates check` (or `shrk quality`) to evaluate the data-defined gate planes this report did not run.');
|
|
518
|
+
break;
|
|
291
519
|
default:
|
|
292
520
|
break;
|
|
293
521
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The shape of work a free-text query asks for — THE intent vocabulary
|
|
3
|
+
* `classifyQueryIntent` answers in. The recommender gates source-writing
|
|
4
|
+
* scaffolds on `Create`, pins grounding on `Plan`, and change-intent /
|
|
5
|
+
* prepare-agent-task consult it instead of their own verb regexes.
|
|
6
|
+
*/
|
|
7
|
+
export declare enum QueryIntent {
|
|
8
|
+
Create = "create",
|
|
9
|
+
Diagnose = "diagnose",
|
|
10
|
+
Repair = "repair",
|
|
11
|
+
Refactor = "refactor",
|
|
12
|
+
Review = "review",
|
|
13
|
+
Plan = "plan",
|
|
14
|
+
Explain = "explain",
|
|
15
|
+
Release = "release",
|
|
16
|
+
Unknown = "unknown"
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=query-intent-kind.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-intent-kind.d.ts","sourceRoot":"","sources":["../src/query-intent-kind.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,oBAAY,WAAW;IACrB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The shape of work a free-text query asks for — THE intent vocabulary
|
|
3
|
+
* `classifyQueryIntent` answers in. The recommender gates source-writing
|
|
4
|
+
* scaffolds on `Create`, pins grounding on `Plan`, and change-intent /
|
|
5
|
+
* prepare-agent-task consult it instead of their own verb regexes.
|
|
6
|
+
*/
|
|
7
|
+
export var QueryIntent;
|
|
8
|
+
(function (QueryIntent) {
|
|
9
|
+
QueryIntent["Create"] = "create";
|
|
10
|
+
QueryIntent["Diagnose"] = "diagnose";
|
|
11
|
+
QueryIntent["Repair"] = "repair";
|
|
12
|
+
QueryIntent["Refactor"] = "refactor";
|
|
13
|
+
QueryIntent["Review"] = "review";
|
|
14
|
+
QueryIntent["Plan"] = "plan";
|
|
15
|
+
QueryIntent["Explain"] = "explain";
|
|
16
|
+
QueryIntent["Release"] = "release";
|
|
17
|
+
QueryIntent["Unknown"] = "unknown";
|
|
18
|
+
})(QueryIntent || (QueryIntent = {}));
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { QueryIntent } from './query-intent-kind.js';
|
|
2
|
+
/** `classifyQueryIntent`'s answer. */
|
|
3
|
+
export interface IQueryIntentResult {
|
|
4
|
+
/** The primary intent. */
|
|
5
|
+
readonly intent: QueryIntent;
|
|
6
|
+
/**
|
|
7
|
+
* The create verb that makes this a create/build query, when one does —
|
|
8
|
+
* set even when a planning verb earlier in the query makes the primary
|
|
9
|
+
* intent `Plan` ("plan to add …").
|
|
10
|
+
*/
|
|
11
|
+
readonly createVerb?: string;
|
|
12
|
+
/** A planning verb in the first four terms ("help me plan …"), when present. */
|
|
13
|
+
readonly planVerb?: string;
|
|
14
|
+
/**
|
|
15
|
+
* A create word that was found but does NOT make this a create query,
|
|
16
|
+
* because a repair/diagnosis marker is present ("fix the broken BUILD",
|
|
17
|
+
* "why does the NEW route fail") — names the marker.
|
|
18
|
+
*/
|
|
19
|
+
readonly vetoedBy?: string;
|
|
20
|
+
/** The normalised terms the decision was made over. */
|
|
21
|
+
readonly terms: readonly string[];
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=query-intent-result.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-intent-result.d.ts","sourceRoot":"","sources":["../src/query-intent-result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,sCAAsC;AACtC,MAAM,WAAW,kBAAkB;IACjC,0BAA0B;IAC1B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,gFAAgF;IAChF,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,uDAAuD;IACvD,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { IQueryIntentResult } from './query-intent-result.js';
|
|
2
|
+
/**
|
|
3
|
+
* THE eligibility rule for SOURCE-WRITING offers — a scaffold, a `gen` /
|
|
4
|
+
* `apply` command, a suggested generation: only a create/build query admits
|
|
5
|
+
* them. The recommender gates its writes-source candidates on it and the task
|
|
6
|
+
* packet gates its suggested generation on it, so the two cannot disagree
|
|
7
|
+
* about one query (spec 2.3, round 11 review R11-GAP-6).
|
|
8
|
+
*/
|
|
9
|
+
export declare function intentAdmitsSourceWrites(intent: IQueryIntentResult): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* A diagnose / repair query ("fix the broken build", "why does the new route
|
|
12
|
+
* fail"): a create/scaffold pipeline, a template, or a source-writing command
|
|
13
|
+
* is never an answer to it — the task packet drops them.
|
|
14
|
+
*/
|
|
15
|
+
export declare function intentIsRepairOrDiagnosis(intent: IQueryIntentResult): boolean;
|
|
16
|
+
/** Classify a free-text query. Pure and deterministic. */
|
|
17
|
+
export declare function classifyQueryIntent(query: string): IQueryIntentResult;
|
|
18
|
+
//# sourceMappingURL=query-intent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-intent.d.ts","sourceRoot":"","sources":["../src/query-intent.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AA+QnE;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAE5E;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAE7E;AAED,0DAA0D;AAC1D,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,CAoCrE"}
|