@sun-asterisk/sungen 3.2.33 → 3.2.34-beta.1
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/cli/commands/audit.d.ts +4 -0
- package/dist/cli/commands/audit.d.ts.map +1 -1
- package/dist/cli/commands/audit.js +54 -10
- package/dist/cli/commands/audit.js.map +1 -1
- package/dist/cli/commands/capability.d.ts.map +1 -1
- package/dist/cli/commands/capability.js +5 -1
- package/dist/cli/commands/capability.js.map +1 -1
- package/dist/cli/commands/changed.d.ts.map +1 -1
- package/dist/cli/commands/changed.js +2 -3
- package/dist/cli/commands/changed.js.map +1 -1
- package/dist/cli/commands/dashboard.d.ts.map +1 -1
- package/dist/cli/commands/dashboard.js +2 -28
- package/dist/cli/commands/dashboard.js.map +1 -1
- package/dist/cli/commands/defect.d.ts +7 -0
- package/dist/cli/commands/defect.d.ts.map +1 -0
- package/dist/cli/commands/defect.js +68 -0
- package/dist/cli/commands/defect.js.map +1 -0
- package/dist/cli/commands/delivery.d.ts.map +1 -1
- package/dist/cli/commands/delivery.js +75 -42
- package/dist/cli/commands/delivery.js.map +1 -1
- package/dist/cli/commands/results-merge.d.ts +9 -0
- package/dist/cli/commands/results-merge.d.ts.map +1 -1
- package/dist/cli/commands/results-merge.js +7 -0
- package/dist/cli/commands/results-merge.js.map +1 -1
- package/dist/cli/commands/select.d.ts +12 -0
- package/dist/cli/commands/select.d.ts.map +1 -0
- package/dist/cli/commands/select.js +122 -0
- package/dist/cli/commands/select.js.map +1 -0
- package/dist/cli/commands/triage.d.ts +7 -0
- package/dist/cli/commands/triage.d.ts.map +1 -0
- package/dist/cli/commands/triage.js +98 -0
- package/dist/cli/commands/triage.js.map +1 -0
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +3 -0
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/commands/viewpoint.d.ts +7 -0
- package/dist/cli/commands/viewpoint.d.ts.map +1 -0
- package/dist/cli/commands/viewpoint.js +70 -0
- package/dist/cli/commands/viewpoint.js.map +1 -0
- package/dist/cli/index.js +13 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/dashboard/templates/index.html +1 -1
- package/dist/dashboard/types.d.ts +1 -0
- package/dist/dashboard/types.d.ts.map +1 -1
- package/dist/exporters/csv-exporter.d.ts +4 -0
- package/dist/exporters/csv-exporter.d.ts.map +1 -1
- package/dist/exporters/csv-exporter.js +12 -11
- package/dist/exporters/csv-exporter.js.map +1 -1
- package/dist/exporters/feature-parser.d.ts +8 -0
- package/dist/exporters/feature-parser.d.ts.map +1 -1
- package/dist/exporters/feature-parser.js +12 -0
- package/dist/exporters/feature-parser.js.map +1 -1
- package/dist/exporters/json-exporter.d.ts.map +1 -1
- package/dist/exporters/json-exporter.js +7 -0
- package/dist/exporters/json-exporter.js.map +1 -1
- package/dist/exporters/manual-hybrid-oracle.d.ts +54 -0
- package/dist/exporters/manual-hybrid-oracle.d.ts.map +1 -0
- package/dist/exporters/manual-hybrid-oracle.js +114 -0
- package/dist/exporters/manual-hybrid-oracle.js.map +1 -0
- package/dist/exporters/matrix/build.d.ts.map +1 -1
- package/dist/exporters/matrix/build.js +55 -12
- package/dist/exporters/matrix/build.js.map +1 -1
- package/dist/exporters/matrix/carry-manual-results.d.ts +19 -0
- package/dist/exporters/matrix/carry-manual-results.d.ts.map +1 -1
- package/dist/exporters/matrix/carry-manual-results.js +76 -6
- package/dist/exporters/matrix/carry-manual-results.js.map +1 -1
- package/dist/exporters/matrix/export.d.ts +8 -2
- package/dist/exporters/matrix/export.d.ts.map +1 -1
- package/dist/exporters/matrix/export.js +15 -3
- package/dist/exporters/matrix/export.js.map +1 -1
- package/dist/exporters/matrix/gates.js +6 -0
- package/dist/exporters/matrix/gates.js.map +1 -1
- package/dist/exporters/matrix/render-csv.js +1 -1
- package/dist/exporters/matrix/render-csv.js.map +1 -1
- package/dist/exporters/matrix/render-testcase-sheet.d.ts.map +1 -1
- package/dist/exporters/matrix/render-testcase-sheet.js +10 -4
- package/dist/exporters/matrix/render-testcase-sheet.js.map +1 -1
- package/dist/exporters/matrix/render-xlsx.d.ts.map +1 -1
- package/dist/exporters/matrix/render-xlsx.js +3 -0
- package/dist/exporters/matrix/render-xlsx.js.map +1 -1
- package/dist/exporters/matrix/types.d.ts +13 -1
- package/dist/exporters/matrix/types.d.ts.map +1 -1
- package/dist/exporters/matrix/types.js.map +1 -1
- package/dist/exporters/matrix/wording.d.ts +1 -1
- package/dist/exporters/matrix/wording.d.ts.map +1 -1
- package/dist/exporters/matrix/wording.js +10 -1
- package/dist/exporters/matrix/wording.js.map +1 -1
- package/dist/exporters/playwright-report-parser.d.ts.map +1 -1
- package/dist/exporters/playwright-report-parser.js +1 -0
- package/dist/exporters/playwright-report-parser.js.map +1 -1
- package/dist/exporters/run-environment.d.ts +32 -0
- package/dist/exporters/run-environment.d.ts.map +1 -0
- package/dist/exporters/run-environment.js +125 -0
- package/dist/exporters/run-environment.js.map +1 -0
- package/dist/exporters/scenario-merger.d.ts +18 -0
- package/dist/exporters/scenario-merger.d.ts.map +1 -1
- package/dist/exporters/scenario-merger.js +49 -3
- package/dist/exporters/scenario-merger.js.map +1 -1
- package/dist/exporters/test-data-resolver.d.ts +0 -4
- package/dist/exporters/test-data-resolver.d.ts.map +1 -1
- package/dist/exporters/test-data-resolver.js +0 -7
- package/dist/exporters/test-data-resolver.js.map +1 -1
- package/dist/exporters/types.d.ts +5 -0
- package/dist/exporters/types.d.ts.map +1 -1
- package/dist/generators/gherkin-parser/index.d.ts +11 -4
- package/dist/generators/gherkin-parser/index.d.ts.map +1 -1
- package/dist/generators/gherkin-parser/index.js +49 -19
- package/dist/generators/gherkin-parser/index.js.map +1 -1
- package/dist/generators/test-generator/adapters/adapter-interface.d.ts +4 -0
- package/dist/generators/test-generator/adapters/adapter-interface.d.ts.map +1 -1
- package/dist/generators/test-generator/adapters/playwright/templates/steps/actions/click-select-action.hbs +1 -1
- package/dist/generators/test-generator/adapters/playwright/templates/steps/actions/select-action.hbs +1 -1
- package/dist/generators/test-generator/adapters/playwright/templates/steps/partials/pick-option.hbs +13 -0
- package/dist/generators/test-generator/adapters/playwright/templates/test-file.hbs +16 -0
- package/dist/generators/test-generator/code-generator.d.ts.map +1 -1
- package/dist/generators/test-generator/code-generator.js +23 -2
- package/dist/generators/test-generator/code-generator.js.map +1 -1
- package/dist/generators/test-generator/diagnostics.d.ts +3 -1
- package/dist/generators/test-generator/diagnostics.d.ts.map +1 -1
- package/dist/generators/test-generator/diagnostics.js +3 -1
- package/dist/generators/test-generator/diagnostics.js.map +1 -1
- package/dist/harness/audit.d.ts +3 -0
- package/dist/harness/audit.d.ts.map +1 -1
- package/dist/harness/audit.js +48 -15
- package/dist/harness/audit.js.map +1 -1
- package/dist/harness/counted-assertions.d.ts +2 -0
- package/dist/harness/counted-assertions.d.ts.map +1 -0
- package/dist/harness/counted-assertions.js +38 -0
- package/dist/harness/counted-assertions.js.map +1 -0
- package/dist/harness/data-driven-lint.d.ts.map +1 -1
- package/dist/harness/data-driven-lint.js +69 -27
- package/dist/harness/data-driven-lint.js.map +1 -1
- package/dist/harness/defect-draft.d.ts +14 -0
- package/dist/harness/defect-draft.d.ts.map +1 -0
- package/dist/harness/defect-draft.js +143 -0
- package/dist/harness/defect-draft.js.map +1 -0
- package/dist/harness/defects.d.ts +24 -0
- package/dist/harness/defects.d.ts.map +1 -0
- package/dist/harness/defects.js +118 -0
- package/dist/harness/defects.js.map +1 -0
- package/dist/harness/manifest.d.ts.map +1 -1
- package/dist/harness/manifest.js +2 -2
- package/dist/harness/manifest.js.map +1 -1
- package/dist/harness/next-step.d.ts +2 -4
- package/dist/harness/next-step.d.ts.map +1 -1
- package/dist/harness/next-step.js +50 -5
- package/dist/harness/next-step.js.map +1 -1
- package/dist/harness/parse.d.ts +45 -0
- package/dist/harness/parse.d.ts.map +1 -1
- package/dist/harness/parse.js +142 -24
- package/dist/harness/parse.js.map +1 -1
- package/dist/harness/quality-gates.d.ts.map +1 -1
- package/dist/harness/quality-gates.js +6 -4
- package/dist/harness/quality-gates.js.map +1 -1
- package/dist/harness/read-text.d.ts +15 -0
- package/dist/harness/read-text.d.ts.map +1 -1
- package/dist/harness/read-text.js +25 -0
- package/dist/harness/read-text.js.map +1 -1
- package/dist/harness/script-check.d.ts.map +1 -1
- package/dist/harness/script-check.js +7 -1
- package/dist/harness/script-check.js.map +1 -1
- package/dist/harness/select-by-ids.d.ts +31 -0
- package/dist/harness/select-by-ids.d.ts.map +1 -0
- package/dist/harness/select-by-ids.js +106 -0
- package/dist/harness/select-by-ids.js.map +1 -0
- package/dist/harness/sensors.d.ts +8 -1
- package/dist/harness/sensors.d.ts.map +1 -1
- package/dist/harness/sensors.js +92 -21
- package/dist/harness/sensors.js.map +1 -1
- package/dist/harness/spec-branches.js +1 -1
- package/dist/harness/spec-branches.js.map +1 -1
- package/dist/harness/triage-signals.d.ts +20 -0
- package/dist/harness/triage-signals.d.ts.map +1 -0
- package/dist/harness/triage-signals.js +30 -0
- package/dist/harness/triage-signals.js.map +1 -0
- package/dist/harness/triage-unit.d.ts +23 -0
- package/dist/harness/triage-unit.d.ts.map +1 -0
- package/dist/harness/triage-unit.js +142 -0
- package/dist/harness/triage-unit.js.map +1 -0
- package/dist/harness/triage.d.ts +28 -0
- package/dist/harness/triage.d.ts.map +1 -0
- package/dist/harness/triage.js +99 -0
- package/dist/harness/triage.js.map +1 -0
- package/dist/harness/ui-inventory.d.ts +40 -0
- package/dist/harness/ui-inventory.d.ts.map +1 -0
- package/dist/harness/ui-inventory.js +191 -0
- package/dist/harness/ui-inventory.js.map +1 -0
- package/dist/harness/viewpoint-baseline.d.ts.map +1 -1
- package/dist/harness/viewpoint-baseline.js +7 -1
- package/dist/harness/viewpoint-baseline.js.map +1 -1
- package/dist/harness/viewpoint-draft-header.d.ts +7 -0
- package/dist/harness/viewpoint-draft-header.d.ts.map +1 -0
- package/dist/harness/viewpoint-draft-header.js +100 -0
- package/dist/harness/viewpoint-draft-header.js.map +1 -0
- package/dist/harness/viewpoint-ledger.d.ts +13 -3
- package/dist/harness/viewpoint-ledger.d.ts.map +1 -1
- package/dist/harness/viewpoint-ledger.js +104 -18
- package/dist/harness/viewpoint-ledger.js.map +1 -1
- package/dist/harness/viewpoint-mode.d.ts +9 -0
- package/dist/harness/viewpoint-mode.d.ts.map +1 -0
- package/dist/harness/viewpoint-mode.js +52 -0
- package/dist/harness/viewpoint-mode.js.map +1 -0
- package/dist/harness/viewpoint-priority.d.ts +19 -0
- package/dist/harness/viewpoint-priority.d.ts.map +1 -0
- package/dist/harness/viewpoint-priority.js +36 -0
- package/dist/harness/viewpoint-priority.js.map +1 -0
- package/dist/harness/viewpoint-review-open.d.ts +6 -0
- package/dist/harness/viewpoint-review-open.d.ts.map +1 -0
- package/dist/harness/viewpoint-review-open.js +90 -0
- package/dist/harness/viewpoint-review-open.js.map +1 -0
- package/dist/harness/viewpoint-scan-refs.d.ts +50 -0
- package/dist/harness/viewpoint-scan-refs.d.ts.map +1 -0
- package/dist/harness/viewpoint-scan-refs.js +200 -0
- package/dist/harness/viewpoint-scan-refs.js.map +1 -0
- package/dist/harness/viewpoint-scan.d.ts +41 -0
- package/dist/harness/viewpoint-scan.d.ts.map +1 -0
- package/dist/harness/viewpoint-scan.js +118 -0
- package/dist/harness/viewpoint-scan.js.map +1 -0
- package/dist/orchestrator/flow-manager.d.ts +0 -1
- package/dist/orchestrator/flow-manager.d.ts.map +1 -1
- package/dist/orchestrator/flow-manager.js +3 -52
- package/dist/orchestrator/flow-manager.js.map +1 -1
- package/dist/orchestrator/screen-manager.d.ts.map +1 -1
- package/dist/orchestrator/screen-manager.js +8 -62
- package/dist/orchestrator/screen-manager.js.map +1 -1
- package/dist/orchestrator/templates/ai-src/agents/discovery.md +11 -3
- package/dist/orchestrator/templates/ai-src/agents/reviewer.md +8 -0
- package/dist/orchestrator/templates/ai-src/commands/create-test.md +32 -24
- package/dist/orchestrator/templates/ai-src/commands/review.md +2 -2
- package/dist/orchestrator/templates/ai-src/commands/run-test.md +78 -15
- package/dist/orchestrator/templates/ai-src/skills/sungen-capture/mode-local.md +2 -2
- package/dist/orchestrator/templates/ai-src/skills/sungen-error-mapping/SKILL.md +22 -0
- package/dist/orchestrator/templates/ai-src/skills/sungen-gherkin-syntax/SKILL.md +18 -9
- package/dist/orchestrator/templates/ai-src/skills/sungen-harness-audit/SKILL.md +5 -1
- package/dist/orchestrator/templates/ai-src/skills/sungen-selector-fix/SKILL.md +58 -14
- package/dist/orchestrator/templates/ai-src/skills/sungen-tc-generation/SKILL.md +42 -2
- package/dist/orchestrator/templates/ai-src/skills/sungen-tc-review/SKILL.md +7 -0
- package/dist/orchestrator/templates/ai-src/skills/sungen-viewpoint/SKILL.md +18 -0
- package/dist/orchestrator/templates/ai-src/skills/sungen-viewpoint/review-checklist.md +63 -0
- package/dist/orchestrator/templates/ai-src/skills/sungen-viewpoint/viewpoint-template.md +158 -0
- package/dist/orchestrator/templates/playwright.config.ts +4 -2
- package/dist/orchestrator/templates/specs-url-assert.d.ts.map +1 -1
- package/dist/orchestrator/templates/specs-url-assert.js +24 -2
- package/dist/orchestrator/templates/specs-url-assert.js.map +1 -1
- package/dist/orchestrator/templates/specs-url-assert.ts +23 -2
- package/dist/orchestrator/trace-mode-install.d.ts +14 -0
- package/dist/orchestrator/trace-mode-install.d.ts.map +1 -0
- package/dist/orchestrator/trace-mode-install.js +132 -0
- package/dist/orchestrator/trace-mode-install.js.map +1 -0
- package/dist/orchestrator/viewpoint-pattern-catalog.d.ts +23 -0
- package/dist/orchestrator/viewpoint-pattern-catalog.d.ts.map +1 -0
- package/dist/orchestrator/viewpoint-pattern-catalog.js +48 -0
- package/dist/orchestrator/viewpoint-pattern-catalog.js.map +1 -0
- package/dist/orchestrator/viewpoint-scaffold.d.ts +3 -0
- package/dist/orchestrator/viewpoint-scaffold.d.ts.map +1 -0
- package/dist/orchestrator/viewpoint-scaffold.js +70 -0
- package/dist/orchestrator/viewpoint-scaffold.js.map +1 -0
- package/package.json +3 -3
- package/src/cli/commands/audit.ts +49 -10
- package/src/cli/commands/capability.ts +3 -1
- package/src/cli/commands/changed.ts +2 -4
- package/src/cli/commands/dashboard.ts +1 -26
- package/src/cli/commands/defect.ts +49 -0
- package/src/cli/commands/delivery.ts +70 -42
- package/src/cli/commands/results-merge.ts +7 -1
- package/src/cli/commands/select.ts +88 -0
- package/src/cli/commands/triage.ts +57 -0
- package/src/cli/commands/update.ts +3 -0
- package/src/cli/commands/viewpoint.ts +58 -0
- package/src/cli/index.ts +13 -2
- package/src/dashboard/templates/index.html +1 -1
- package/src/dashboard/types.ts +1 -0
- package/src/exporters/csv-exporter.ts +12 -11
- package/src/exporters/feature-parser.ts +12 -0
- package/src/exporters/json-exporter.ts +6 -1
- package/src/exporters/manual-hybrid-oracle.ts +112 -0
- package/src/exporters/matrix/build.ts +57 -11
- package/src/exporters/matrix/carry-manual-results.ts +70 -7
- package/src/exporters/matrix/export.ts +16 -2
- package/src/exporters/matrix/gates.ts +6 -0
- package/src/exporters/matrix/render-csv.ts +1 -1
- package/src/exporters/matrix/render-testcase-sheet.ts +10 -4
- package/src/exporters/matrix/render-xlsx.ts +3 -0
- package/src/exporters/matrix/types.ts +13 -1
- package/src/exporters/matrix/wording.ts +10 -1
- package/src/exporters/playwright-report-parser.ts +1 -0
- package/src/exporters/run-environment.ts +89 -0
- package/src/exporters/scenario-merger.ts +51 -5
- package/src/exporters/test-data-resolver.ts +0 -6
- package/src/exporters/types.ts +5 -0
- package/src/generators/gherkin-parser/index.ts +50 -18
- package/src/generators/test-generator/adapters/adapter-interface.ts +4 -0
- package/src/generators/test-generator/adapters/playwright/templates/steps/actions/click-select-action.hbs +1 -1
- package/src/generators/test-generator/adapters/playwright/templates/steps/actions/select-action.hbs +1 -1
- package/src/generators/test-generator/adapters/playwright/templates/steps/partials/pick-option.hbs +13 -0
- package/src/generators/test-generator/adapters/playwright/templates/test-file.hbs +16 -0
- package/src/generators/test-generator/code-generator.ts +23 -2
- package/src/generators/test-generator/diagnostics.ts +3 -1
- package/src/harness/audit.ts +52 -17
- package/src/harness/counted-assertions.ts +33 -0
- package/src/harness/data-driven-lint.ts +82 -24
- package/src/harness/defect-draft.ts +115 -0
- package/src/harness/defects.ts +94 -0
- package/src/harness/manifest.ts +2 -2
- package/src/harness/next-step.ts +47 -5
- package/src/harness/parse.ts +151 -27
- package/src/harness/quality-gates.ts +6 -4
- package/src/harness/read-text.ts +25 -0
- package/src/harness/script-check.ts +7 -1
- package/src/harness/select-by-ids.ts +83 -0
- package/src/harness/sensors.ts +91 -21
- package/src/harness/spec-branches.ts +1 -1
- package/src/harness/triage-signals.ts +46 -0
- package/src/harness/triage-unit.ts +113 -0
- package/src/harness/triage.ts +127 -0
- package/src/harness/ui-inventory.ts +164 -0
- package/src/harness/viewpoint-baseline.ts +7 -1
- package/src/harness/viewpoint-draft-header.ts +55 -0
- package/src/harness/viewpoint-ledger.ts +111 -24
- package/src/harness/viewpoint-mode.ts +49 -0
- package/src/harness/viewpoint-priority.ts +38 -0
- package/src/harness/viewpoint-review-open.ts +51 -0
- package/src/harness/viewpoint-scan-refs.ts +154 -0
- package/src/harness/viewpoint-scan.ts +111 -0
- package/src/orchestrator/flow-manager.ts +3 -53
- package/src/orchestrator/screen-manager.ts +7 -61
- package/src/orchestrator/templates/ai-src/agents/discovery.md +11 -3
- package/src/orchestrator/templates/ai-src/agents/reviewer.md +8 -0
- package/src/orchestrator/templates/ai-src/commands/create-test.md +32 -24
- package/src/orchestrator/templates/ai-src/commands/review.md +2 -2
- package/src/orchestrator/templates/ai-src/commands/run-test.md +78 -15
- package/src/orchestrator/templates/ai-src/skills/sungen-capture/mode-local.md +2 -2
- package/src/orchestrator/templates/ai-src/skills/sungen-error-mapping/SKILL.md +22 -0
- package/src/orchestrator/templates/ai-src/skills/sungen-gherkin-syntax/SKILL.md +18 -9
- package/src/orchestrator/templates/ai-src/skills/sungen-harness-audit/SKILL.md +5 -1
- package/src/orchestrator/templates/ai-src/skills/sungen-selector-fix/SKILL.md +58 -14
- package/src/orchestrator/templates/ai-src/skills/sungen-tc-generation/SKILL.md +42 -2
- package/src/orchestrator/templates/ai-src/skills/sungen-tc-review/SKILL.md +7 -0
- package/src/orchestrator/templates/ai-src/skills/sungen-viewpoint/SKILL.md +18 -0
- package/src/orchestrator/templates/ai-src/skills/sungen-viewpoint/review-checklist.md +63 -0
- package/src/orchestrator/templates/ai-src/skills/sungen-viewpoint/viewpoint-template.md +158 -0
- package/src/orchestrator/templates/playwright.config.ts +4 -2
- package/src/orchestrator/templates/specs-url-assert.ts +23 -2
- package/src/orchestrator/trace-mode-install.ts +94 -0
- package/src/orchestrator/viewpoint-pattern-catalog.ts +61 -0
- package/src/orchestrator/viewpoint-scaffold.ts +36 -0
|
@@ -49,8 +49,10 @@ exports.viewpointIntegrity = viewpointIntegrity;
|
|
|
49
49
|
* gaps that inflate a "looks-covered" score; it does not fail the gate.
|
|
50
50
|
*/
|
|
51
51
|
const fs = __importStar(require("fs"));
|
|
52
|
+
const parse_1 = require("./parse");
|
|
52
53
|
const read_text_1 = require("./read-text");
|
|
53
54
|
const keyword_match_1 = require("./keyword-match");
|
|
55
|
+
const counted_assertions_1 = require("./counted-assertions");
|
|
54
56
|
const NUMBER_WORDS = {
|
|
55
57
|
two: 2, three: 3, four: 4, five: 5, six: 6, seven: 7, eight: 8, nine: 9, ten: 10,
|
|
56
58
|
};
|
|
@@ -73,6 +75,13 @@ function claimedCount(text) {
|
|
|
73
75
|
return null;
|
|
74
76
|
}
|
|
75
77
|
const ID_RE = /\b([A-Z]{1,5}\d{0,2}(?:[.\-][A-Za-z0-9]+)*-?\d{0,3})\b/; // VP0.Title, VP7-002, MS-HP-001, TV-01
|
|
78
|
+
/**
|
|
79
|
+
* A bullet declares only the id it STARTS with (after a `[ ]` checkbox); one further along is a
|
|
80
|
+
* citation (`… (SG-01, …)`). `- **High** VP-…` or `- Email shown — VP-…` therefore carry no id.
|
|
81
|
+
*/
|
|
82
|
+
const BULLET_ID = new RegExp(`^[\\s(#]*(?:\\[[ xX]\\]\\s*)?\\[?${ID_RE.source}`);
|
|
83
|
+
/** A table cell that is an id and nothing else. */
|
|
84
|
+
const WHOLE_ID = new RegExp(`^${ID_RE.source}$`);
|
|
76
85
|
/**
|
|
77
86
|
* Lines that DECLARE something about the checklist rather than being a checklist item —
|
|
78
87
|
* atomizing them manufactures gaps that can never be closed (QA field report: 4 of 6
|
|
@@ -84,7 +93,10 @@ const ID_RE = /\b([A-Z]{1,5}\d{0,2}(?:[.\-][A-Za-z0-9]+)*-?\d{0,3})\b/; // VP0.T
|
|
|
84
93
|
const PLACEHOLDER_ITEM = /^(none\b|n\/a\b|tbd\b|no known\b|nothing\b|do not invent\b|-+$)/i;
|
|
85
94
|
/** A priority-DECLARATION row: `| VP-LOGIC | High | <reason prose> |`. The category id and its
|
|
86
95
|
* priority are consumed by the traceability + balance axes; the reason is rationale. */
|
|
87
|
-
|
|
96
|
+
// The word must be the WHOLE second cell: `skip` / `none` / `n/a` also open real claims
|
|
97
|
+
// ("Skip link moves focus to main", "None of the optional fields block submit") — and so did
|
|
98
|
+
// `high`/`low` ("High contrast mode …"), which the old word-boundary match swallowed too.
|
|
99
|
+
const PRIORITY_ROW = new RegExp(`^(?:VP|FL)[A-Z0-9._-]*\\s+—\\s+[*_\`]*(?:${parse_1.PRIORITY_WORDS})[*_\`.]*(?=\\s+—|\\s*$)`, 'i');
|
|
88
100
|
/**
|
|
89
101
|
* Whole SECTIONS that declare something ABOUT the checklist rather than listing claims to prove.
|
|
90
102
|
*
|
|
@@ -97,13 +109,28 @@ const PRIORITY_ROW = /^(?:VP|FL)[A-Z0-9._-]*\s+—\s+(?:critical|high|medium|nor
|
|
|
97
109
|
* `Design Decisions` deliberately stays IN: "values are buffered between step 3 and 4, a reload
|
|
98
110
|
* loses them" is a real claim, and it is what the continuity check reads.
|
|
99
111
|
*/
|
|
100
|
-
const DECLARATION_SECTION =
|
|
112
|
+
const DECLARATION_SECTION = parse_1.NON_DECLARATION_SECTION; // shared with the overview parser (#833)
|
|
113
|
+
/**
|
|
114
|
+
* A lead-in that introduces a manual check's PROCEDURE — `How to run VP-SEC-1:`, `Procedures:`,
|
|
115
|
+
* `Steps to reproduce:`. The list under it is how to EXECUTE a claim already declared above;
|
|
116
|
+
* counting each step as its own claim made gaps no scenario can close (8 of 13 surplus items on a
|
|
117
|
+
* field unit, #855).
|
|
118
|
+
*
|
|
119
|
+
* Deliberately narrow, because a false match HIDES claims: the lead may name one id and nothing
|
|
120
|
+
* else (`How to verify the following claims hold:` introduces claims, not steps), and a bare
|
|
121
|
+
* `Steps:` (a flow lists real step claims under it) and `Tester verifies:` (expected outcomes —
|
|
122
|
+
* exactly what the ledger counts) never qualify.
|
|
123
|
+
*/
|
|
124
|
+
const PROCEDURE_LEAD = /^(?:how to (?:run|test|reproduce|verify)|(?:manual )?procedures?|manual steps|steps to reproduce)(?:\s+(?:VP|FL)-[\w.-]+)?\s*:$/i;
|
|
125
|
+
const LIST_ITEM = /^(?:[-*+]|\d+[.)])\s+/;
|
|
101
126
|
const GENERIC = new Set(['display', 'shown', 'value', 'field', 'input', 'page', 'screen', 'button', 'link', 'text', 'check', 'verify', 'should', 'with', 'when', 'then', 'user', 'this', 'that', 'each', 'item', 'items']);
|
|
127
|
+
const DECISION_ID = /^D\d+$/;
|
|
128
|
+
const DECISIONS_SECTION = /^(?:design decisions?|quyết định(?: thiết kế)?)\b/i;
|
|
102
129
|
/** Extract atomic checklist items from a viewpoint file (format-tolerant). */
|
|
103
130
|
function parseViewpointItems(viewpointPath) {
|
|
104
131
|
if (!fs.existsSync(viewpointPath))
|
|
105
132
|
return [];
|
|
106
|
-
const lines = (0, read_text_1.
|
|
133
|
+
const lines = (0, read_text_1.readViewpointText)(viewpointPath).split('\n');
|
|
107
134
|
const items = [];
|
|
108
135
|
let inFence = false;
|
|
109
136
|
let inDeclarationSection = false;
|
|
@@ -111,46 +138,100 @@ function parseViewpointItems(viewpointPath) {
|
|
|
111
138
|
// nested under `## 8. Traceability Index` used to re-open the section and hand its rows
|
|
112
139
|
// back as claims, because exclusion was recomputed from scratch at every heading.
|
|
113
140
|
let excludedAt = null;
|
|
114
|
-
|
|
115
|
-
|
|
141
|
+
// The level the Design Decisions section was opened at, while inside it (see `decision`).
|
|
142
|
+
let decisionsAt = null;
|
|
143
|
+
// Inside the list a PROCEDURE_LEAD introduced: the indent of the lead (-1 for a paragraph lead),
|
|
144
|
+
// whose list items — and their wrapped continuation lines — are steps. A heading, a table, a
|
|
145
|
+
// new lead, or (after a paragraph lead) a blank line once a step was read ends it: when in
|
|
146
|
+
// doubt a step stays a claim, because a swallowed claim is a gap nobody ever sees — so a LOOSE
|
|
147
|
+
// procedure (steps separated by blank lines) leaks its later steps as claims, by design.
|
|
148
|
+
// Only an INDENTED line continues a step (Markdown's continuation); unindented prose ends it.
|
|
149
|
+
let procIndent = null;
|
|
150
|
+
let procSteps = 0;
|
|
151
|
+
let prevBlank = false;
|
|
152
|
+
for (let i = 0; i < lines.length; i++) {
|
|
153
|
+
const line = lines[i].trim();
|
|
116
154
|
if (line.startsWith('```')) {
|
|
117
155
|
inFence = !inFence;
|
|
118
156
|
continue;
|
|
119
157
|
}
|
|
120
|
-
if (inFence
|
|
158
|
+
if (inFence)
|
|
159
|
+
continue;
|
|
160
|
+
if (!line) {
|
|
161
|
+
prevBlank = true;
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
const wasBlank = prevBlank;
|
|
165
|
+
prevBlank = false;
|
|
166
|
+
const isItem = LIST_ITEM.test(line);
|
|
167
|
+
const indent = lines[i].length - lines[i].trimStart().length;
|
|
168
|
+
if (PROCEDURE_LEAD.test(line.replace(LIST_ITEM, '').replace(/[*_`]/g, '').trim())) {
|
|
169
|
+
procIndent = isItem ? indent : -1;
|
|
170
|
+
procSteps = 0;
|
|
121
171
|
continue;
|
|
172
|
+
}
|
|
173
|
+
if (procIndent !== null) {
|
|
174
|
+
const listEnded = wasBlank && procIndent < 0 && procSteps > 0;
|
|
175
|
+
if (!listEnded && isItem && indent > procIndent) {
|
|
176
|
+
procSteps++;
|
|
177
|
+
continue;
|
|
178
|
+
} // a step
|
|
179
|
+
if (!listEnded && !isItem && !wasBlank && procSteps > 0 && indent > Math.max(procIndent, 0)
|
|
180
|
+
&& !/^[#|]/.test(line) && !line.endsWith(':'))
|
|
181
|
+
continue; // a step that wraps
|
|
182
|
+
procIndent = null;
|
|
183
|
+
}
|
|
122
184
|
const heading = line.match(/^(#{1,6})\s+(.*)$/);
|
|
123
185
|
if (heading) {
|
|
124
186
|
const level = heading[1].length;
|
|
125
187
|
if (excludedAt !== null && level > excludedAt)
|
|
126
188
|
continue; // still inside the excluded section
|
|
189
|
+
if (decisionsAt !== null && level > decisionsAt)
|
|
190
|
+
continue; // a subsection of Design Decisions
|
|
127
191
|
// A heading both ends the previous section and decides whether this one declares or claims.
|
|
128
192
|
// Strip an ordinal prefix ("## 5. Known Issues", "## 8. Viewpoint Grouping") before
|
|
129
193
|
// testing. The regex anchors at the start, so a NUMBERED heading matched nothing and
|
|
130
194
|
// every excluded section leaked its rows back in as claims — a real viewpoint numbers
|
|
131
195
|
// its sections, so in practice the exclusion list was doing nothing at all (#657).
|
|
132
|
-
|
|
196
|
+
// `Phần 4:` / `Part 4.` / `Mục 4.` number a section the same way.
|
|
197
|
+
const headText = heading[2].replace(/[*`]/g, '').replace(/^\s*(?:(?:[Pp]hần|[Pp]art|[Mm]ục|[Ss]ection)\s+)?(?:\d+|[A-Z])\s*[.):]\s*/, '').trim();
|
|
133
198
|
inDeclarationSection = DECLARATION_SECTION.test(headText);
|
|
134
199
|
excludedAt = inDeclarationSection ? level : null;
|
|
200
|
+
decisionsAt = DECISIONS_SECTION.test(headText) ? level : null;
|
|
135
201
|
continue;
|
|
136
202
|
}
|
|
137
203
|
if (inDeclarationSection)
|
|
138
204
|
continue;
|
|
139
205
|
let text = '';
|
|
140
206
|
let lead = '';
|
|
207
|
+
let declared = null;
|
|
141
208
|
const bullet = line.match(/^(?:[-*+]|\d+[.)])\s+(.*)$/);
|
|
142
209
|
if (bullet) {
|
|
143
210
|
text = bullet[1];
|
|
144
211
|
lead = bullet[1];
|
|
212
|
+
declared = lead.replace(/[*`]/g, '').match(BULLET_ID);
|
|
145
213
|
}
|
|
146
214
|
else if (line.startsWith('|')) { // table data row
|
|
147
215
|
if (/^\|[\s|:-]+\|?$/.test(line))
|
|
148
216
|
continue; // separator
|
|
217
|
+
// The row right above a `|---|` separator IS the header, whatever its words (`Skill #`,
|
|
218
|
+
// `Case #`) — structure, not a guessed word list, so a data row such as `C#` or `Issue #`
|
|
219
|
+
// is never mistaken for one (#832). The word list below still covers a separator-less table.
|
|
220
|
+
const next = (lines[i + 1] ?? '').trim();
|
|
221
|
+
if (/^\|[\s|:-]+\|?$/.test(next) && next.includes('-'))
|
|
222
|
+
continue; // header
|
|
149
223
|
const cells = line.split('|').map((c) => c.trim()).filter(Boolean);
|
|
150
224
|
if (/^(vp|id|viewpoint|priority|reason|no\.?|category|item|trigger|#|pattern|applicable|notes|field|constraint|code|description|status|step|flow|ref|level|question|screen|actor|branches from|own steps|component|thành phần|trường|bước)$/i.test(cells[0] || ''))
|
|
151
225
|
continue; // header
|
|
152
226
|
text = cells.join(' — ');
|
|
153
|
-
lead
|
|
227
|
+
// The lead is the row's FIRST cell, empty or not: a continuation row (`| | | case | … see SG-02 |`)
|
|
228
|
+
// declares nothing. A later cell holding an id and nothing else still declares (`| x | VP-UI-001 |`),
|
|
229
|
+
// and so does a row number followed by a cell that starts with one (`| 1 | VP-UI-001 — … |`).
|
|
230
|
+
const raw = line.replace(/^\|/, '').replace(/\|$/, '').split('|').map((c) => c.replace(/[*`]/g, '').trim());
|
|
231
|
+
lead = raw[0] ?? '';
|
|
232
|
+
declared = lead.match(ID_RE)
|
|
233
|
+
?? (/^\d+\.?$/.test(lead) ? (raw[1] ?? '').match(BULLET_ID) : null)
|
|
234
|
+
?? raw.slice(1).map((c) => c.match(WHOLE_ID)).find(Boolean) ?? null;
|
|
154
235
|
}
|
|
155
236
|
else
|
|
156
237
|
continue;
|
|
@@ -171,8 +252,7 @@ function parseViewpointItems(viewpointPath) {
|
|
|
171
252
|
const leadIds = new Set((leadClean.match(new RegExp(ID_RE.source, 'g')) || []).filter((x) => /\d/.test(x)));
|
|
172
253
|
if (leadIds.size > 1)
|
|
173
254
|
continue;
|
|
174
|
-
const
|
|
175
|
-
const id = idM && /\d/.test(idM[1]) ? idM[1] : undefined; // require a digit so prose words aren't IDs
|
|
255
|
+
const id = declared && /\d/.test(declared[1]) ? declared[1] : undefined; // require a digit so prose words aren't IDs
|
|
176
256
|
// A row keyed by a bare GROUP prefix ("VP-LOGIC — transitions — High — why the flow exists")
|
|
177
257
|
// declares a family and its priority, not a checklist item: nothing can "cover" it, and
|
|
178
258
|
// demanding coverage sends the author looking for a test that was never meant to exist.
|
|
@@ -181,7 +261,9 @@ function parseViewpointItems(viewpointPath) {
|
|
|
181
261
|
const words = (text.toLowerCase().match(/[a-z][a-z-]{3,}/g) || []).filter((w) => !GENERIC.has(w));
|
|
182
262
|
if (!id && words.length < 2)
|
|
183
263
|
continue; // not substantive enough to track
|
|
184
|
-
items.push(
|
|
264
|
+
items.push(decisionsAt !== null && id && DECISION_ID.test(id)
|
|
265
|
+
? { id, text: text.slice(0, 100), decision: true }
|
|
266
|
+
: { id, text: text.slice(0, 100) });
|
|
185
267
|
}
|
|
186
268
|
return items;
|
|
187
269
|
}
|
|
@@ -191,6 +273,7 @@ function viewpointLedger(viewpointPath, scenarios, featureText) {
|
|
|
191
273
|
// (#622) — silently collapsing those would remove its input.
|
|
192
274
|
const seen = new Set();
|
|
193
275
|
const items = parseViewpointItems(viewpointPath)
|
|
276
|
+
.filter((i) => !i.decision)
|
|
194
277
|
.filter((i) => { const k = `${i.id ?? ''}|${i.text}`; if (seen.has(k))
|
|
195
278
|
return false; seen.add(k); return true; });
|
|
196
279
|
if (!fs.existsSync(viewpointPath) || items.length === 0) {
|
|
@@ -225,7 +308,7 @@ function viewpointLedger(viewpointPath, scenarios, featureText) {
|
|
|
225
308
|
const n = claimedCount(item.text);
|
|
226
309
|
const auto = carriers.filter((s) => !s.manual);
|
|
227
310
|
if (n !== null && auto.length > 0 && !auto.some((s) => /\bsee all\b/.test(s.stepsText))) {
|
|
228
|
-
const asserted = Math.max(...auto.map((s) => (s.stepsText
|
|
311
|
+
const asserted = Math.max(...auto.map((s) => (0, counted_assertions_1.countedAssertions)(s.stepsText)));
|
|
229
312
|
if (asserted > 0 && asserted < n)
|
|
230
313
|
partial.push({ id: item.id, text: item.text, claimed: n, asserted });
|
|
231
314
|
}
|
|
@@ -358,13 +441,16 @@ function viewpointIntegrity(viewpointPath, scenarioIds, extraSources = []) {
|
|
|
358
441
|
}
|
|
359
442
|
}
|
|
360
443
|
// The Priority-Viewpoints table: `| <id> | <priority> | <reason> |`.
|
|
361
|
-
|
|
362
|
-
const
|
|
363
|
-
|
|
364
|
-
.matchAll(/^\|\s*((?:VP|FL)[A-Z0-9._-]*)\s*\|\s*(critical|high|medium|normal|low|deferred)\s*\|/gim)]
|
|
444
|
+
const vpText = (0, read_text_1.readViewpointText)(viewpointPath);
|
|
445
|
+
const words = [...vpText
|
|
446
|
+
.matchAll(new RegExp(`^\\|\\s*((?:VP|FL)[A-Z0-9._-]*)\\s*\\|\\s*(${parse_1.PRIORITY_WORDS})\\s*\\|`, 'gim'))]
|
|
365
447
|
.map((m) => m[2].toLowerCase());
|
|
366
|
-
|
|
367
|
-
|
|
448
|
+
// Fold only synonyms (Medium / Med / Normal are one level). `critical` stays its own word: a
|
|
449
|
+
// Critical / High / High table is a ranking, and folding it into `high` made it read as uniform.
|
|
450
|
+
const level = (w) => (/^(?:medium|med|normal)$/.test(w) ? 'normal' : w);
|
|
451
|
+
const uniformPriority = words.length >= 3 && new Set(words.map(level)).size === 1
|
|
452
|
+
? { levels: [words[0]], rows: words.length } // the word QA wrote, not the folded key
|
|
453
|
+
: null;
|
|
368
454
|
return { duplicateIds, danglingRefs, uniformPriority };
|
|
369
455
|
}
|
|
370
456
|
//# sourceMappingURL=viewpoint-ledger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewpoint-ledger.js","sourceRoot":"","sources":["../../src/harness/viewpoint-ledger.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"viewpoint-ledger.js","sourceRoot":"","sources":["../../src/harness/viewpoint-ledger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type ViewpointMode = 1 | 2;
|
|
2
|
+
/** `raw` is the file as written (null when missing); `rows` are its VP rows from the scan. */
|
|
3
|
+
export declare function viewpointMode(raw: string | null, rows: {
|
|
4
|
+
hasExpected: boolean;
|
|
5
|
+
}[]): {
|
|
6
|
+
mode: ViewpointMode;
|
|
7
|
+
reason: string;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=viewpoint-mode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewpoint-mode.d.ts","sourceRoot":"","sources":["../../src/harness/viewpoint-mode.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,CAAC,CAAC;AAuBlC,8FAA8F;AAC9F,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE;IAAE,WAAW,EAAE,OAAO,CAAA;CAAE,EAAE,GAAG;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAO3H"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.viewpointMode = viewpointMode;
|
|
4
|
+
/**
|
|
5
|
+
* Which create-test mode a unit's test-viewpoint.md calls for — the table in create-test.md,
|
|
6
|
+
* computed so the agent reads it from `sungen viewpoint scan` instead of inferring it.
|
|
7
|
+
*
|
|
8
|
+
* mode 2 (AI drafts / re-reviews its draft): file missing · untouched scaffold · first line
|
|
9
|
+
* `drafted-by: ai` · VP rows exist but none has a Kỳ vọng
|
|
10
|
+
* mode 1 (review only, never edit): anything else — a QA-written file, with or without VP ids
|
|
11
|
+
*
|
|
12
|
+
* "Untouched scaffold" is checked on RAW lines against the template the scaffold is written from:
|
|
13
|
+
* apart from the first `# ` line (the title), every non-blank line must be a template line —
|
|
14
|
+
* comments included, so a QA note inside `<!-- -->` or under its own `# ` heading makes the file
|
|
15
|
+
* the QA's (owner decision 2026-10-14: a QA file is never overwritten). Every doubt falls to
|
|
16
|
+
* mode 1: a scaffold from an older sungen (other template lines) or an unreadable template.
|
|
17
|
+
*/
|
|
18
|
+
const viewpoint_draft_header_1 = require("./viewpoint-draft-header");
|
|
19
|
+
const viewpoint_scaffold_1 = require("../orchestrator/viewpoint-scaffold");
|
|
20
|
+
/** Trimmed non-blank lines without the title (the first `# ` line), BOM and CRLF ignored. */
|
|
21
|
+
function bodyLines(text) {
|
|
22
|
+
const lines = text.replace(/^/, '').replace(/\r\n?/g, '\n').split('\n').map((l) => l.trim()).filter(Boolean);
|
|
23
|
+
const title = lines.findIndex((l) => l.startsWith('# '));
|
|
24
|
+
if (title >= 0)
|
|
25
|
+
lines.splice(title, 1);
|
|
26
|
+
return lines;
|
|
27
|
+
}
|
|
28
|
+
let templateLines = null;
|
|
29
|
+
function isUntouchedScaffold(raw) {
|
|
30
|
+
if (!templateLines) {
|
|
31
|
+
try {
|
|
32
|
+
templateLines = new Set([false, true].flatMap((mobile) => bodyLines((0, viewpoint_scaffold_1.viewpointScaffold)('', mobile))));
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return false; // no template to compare with → treat the file as the QA's
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const known = templateLines;
|
|
39
|
+
return bodyLines(raw).every((l) => known.has(l));
|
|
40
|
+
}
|
|
41
|
+
/** `raw` is the file as written (null when missing); `rows` are its VP rows from the scan. */
|
|
42
|
+
function viewpointMode(raw, rows) {
|
|
43
|
+
if (raw === null)
|
|
44
|
+
return { mode: 2, reason: 'file missing' };
|
|
45
|
+
if ((0, viewpoint_draft_header_1.isAiDraft)(raw))
|
|
46
|
+
return { mode: 2, reason: 'drafted-by: ai (re-review)' };
|
|
47
|
+
if (rows.length > 0) {
|
|
48
|
+
return rows.some((r) => r.hasExpected) ? { mode: 1, reason: 'QA-written' } : { mode: 2, reason: 'VP rows without Kỳ vọng' };
|
|
49
|
+
}
|
|
50
|
+
return isUntouchedScaffold(raw) ? { mode: 2, reason: 'untouched scaffold' } : { mode: 1, reason: 'QA-written, no VP ids' };
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=viewpoint-mode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewpoint-mode.js","sourceRoot":"","sources":["../../src/harness/viewpoint-mode.ts"],"names":[],"mappings":";;AAyCA,sCAOC;AAhDD;;;;;;;;;;;;;GAaG;AACH,qEAAqD;AACrD,2EAAuE;AAIvE,6FAA6F;AAC7F,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9G,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD,IAAI,KAAK,IAAI,CAAC;QAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACvC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,IAAI,aAAa,GAAuB,IAAI,CAAC;AAC7C,SAAS,mBAAmB,CAAC,GAAW;IACtC,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,IAAI,CAAC;YACH,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,IAAA,sCAAiB,EAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACvG,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC,CAAG,2DAA2D;QAC7E,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,aAAa,CAAC;IAC5B,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,8FAA8F;AAC9F,SAAgB,aAAa,CAAC,GAAkB,EAAE,IAAgC;IAChF,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IAC7D,IAAI,IAAA,kCAAS,EAAC,GAAG,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC;IAC7E,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC;IAC9H,CAAC;IACD,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC;AAC7H,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One reading of a priority — a viewpoint row's cell or a scenario's tag.
|
|
3
|
+
*
|
|
4
|
+
* The overview parser, the ledger's uniform-priority check and PRIORITY-CONTRADICTED each read a
|
|
5
|
+
* priority their own way (`/high/i` substrings, raw words, a one-off medium→normal), so the same
|
|
6
|
+
* row could be `Medium` to one and `Unknown` to another — `Med`, which QA writes, was `Unknown`.
|
|
7
|
+
* The vocabulary is `high | normal | low`; `critical`, `medium` and `med` are read as aliases.
|
|
8
|
+
*/
|
|
9
|
+
export type PriorityLevel = 'high' | 'normal' | 'low' | 'deferred' | 'skip' | 'unknown';
|
|
10
|
+
/**
|
|
11
|
+
* A priority cell or tag → its level. The whole cell being a word is the clean case; otherwise the
|
|
12
|
+
* overview has always read prose by SUBSTRING in precedence order (`High — complex form`,
|
|
13
|
+
* `Medium-High`), and keeps doing so. The substring words stay unbounded for `high|medium|low`
|
|
14
|
+
* (existing behaviour); the newer `critical|normal|med` need word boundaries (`Medical` is not `Med`).
|
|
15
|
+
*/
|
|
16
|
+
export declare function parsePriority(cell: string): PriorityLevel;
|
|
17
|
+
/** The public `ViewpointEntry.priority` spelling of a level — the exported type is unchanged. */
|
|
18
|
+
export declare function toEntryPriority(level: PriorityLevel): 'High' | 'Medium' | 'Low' | 'Unknown';
|
|
19
|
+
//# sourceMappingURL=viewpoint-priority.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewpoint-priority.d.ts","sourceRoot":"","sources":["../../src/harness/viewpoint-priority.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;AAUxF;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAQzD;AAED,iGAAiG;AACjG,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAE3F"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parsePriority = parsePriority;
|
|
4
|
+
exports.toEntryPriority = toEntryPriority;
|
|
5
|
+
const WORD = {
|
|
6
|
+
critical: 'high', high: 'high',
|
|
7
|
+
medium: 'normal', med: 'normal', normal: 'normal',
|
|
8
|
+
low: 'low', deferred: 'deferred',
|
|
9
|
+
};
|
|
10
|
+
/** "Declared not applicable" — one level, so every consumer checks one word. */
|
|
11
|
+
const NOT_APPLICABLE = /^(?:skip(?:ped)?|n\/a|none|not applicable)$/;
|
|
12
|
+
/**
|
|
13
|
+
* A priority cell or tag → its level. The whole cell being a word is the clean case; otherwise the
|
|
14
|
+
* overview has always read prose by SUBSTRING in precedence order (`High — complex form`,
|
|
15
|
+
* `Medium-High`), and keeps doing so. The substring words stay unbounded for `high|medium|low`
|
|
16
|
+
* (existing behaviour); the newer `critical|normal|med` need word boundaries (`Medical` is not `Med`).
|
|
17
|
+
*/
|
|
18
|
+
function parsePriority(cell) {
|
|
19
|
+
const w = cell.replace(/[*_`]/g, '').replace(/\.+$/, '').trim().toLowerCase();
|
|
20
|
+
if (WORD[w])
|
|
21
|
+
return WORD[w];
|
|
22
|
+
if (NOT_APPLICABLE.test(w))
|
|
23
|
+
return 'skip';
|
|
24
|
+
if (/high|\bcritical\b/.test(w))
|
|
25
|
+
return 'high';
|
|
26
|
+
if (/medium|\bnormal\b|\bmed\b/.test(w))
|
|
27
|
+
return 'normal';
|
|
28
|
+
if (/low/.test(w))
|
|
29
|
+
return 'low';
|
|
30
|
+
return 'unknown';
|
|
31
|
+
}
|
|
32
|
+
/** The public `ViewpointEntry.priority` spelling of a level — the exported type is unchanged. */
|
|
33
|
+
function toEntryPriority(level) {
|
|
34
|
+
return level === 'high' ? 'High' : level === 'normal' ? 'Medium' : level === 'low' ? 'Low' : 'Unknown';
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=viewpoint-priority.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewpoint-priority.js","sourceRoot":"","sources":["../../src/harness/viewpoint-priority.ts"],"names":[],"mappings":";;AAwBA,sCAQC;AAGD,0CAEC;AA3BD,MAAM,IAAI,GAAkC;IAC1C,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAC9B,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ;IACjD,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU;CACjC,CAAC;AACF,gFAAgF;AAChF,MAAM,cAAc,GAAG,6CAA6C,CAAC;AAErE;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,IAAY;IACxC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9E,IAAI,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC;IAC1C,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC;IAC/C,IAAI,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC;IACzD,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAChC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,iGAAiG;AACjG,SAAgB,eAAe,CAAC,KAAoB;IAClD,OAAO,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACzG,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const VIEWPOINT_REVIEW_FILE = "viewpoint-review.md";
|
|
2
|
+
/** Body rows whose last cell is `[ ]`. The header row (`… | [ ] |` above `|---|`) is not a point. */
|
|
3
|
+
export declare function openReviewPoints(text: string): number;
|
|
4
|
+
/** The info finding for one unit's `requirements/` directory; empty when nothing is open. */
|
|
5
|
+
export declare function viewpointReviewOpenFindings(requirementsDir: string): string[];
|
|
6
|
+
//# sourceMappingURL=viewpoint-review-open.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewpoint-review-open.d.ts","sourceRoot":"","sources":["../../src/harness/viewpoint-review-open.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,qBAAqB,wBAAwB,CAAC;AAe3D,qGAAqG;AACrG,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASrD;AAED,6FAA6F;AAC7F,wBAAgB,2BAA2B,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,EAAE,CAU7E"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.VIEWPOINT_REVIEW_FILE = void 0;
|
|
37
|
+
exports.openReviewPoints = openReviewPoints;
|
|
38
|
+
exports.viewpointReviewOpenFindings = viewpointReviewOpenFindings;
|
|
39
|
+
/**
|
|
40
|
+
* VIEWPOINT-REVIEW-OPEN (info) — the audit's one line about `requirements/viewpoint-review.md`.
|
|
41
|
+
*
|
|
42
|
+
* create-test reviews test-viewpoint.md with the sungen-viewpoint checklist and writes each point a
|
|
43
|
+
* QA should look at as a table row whose last cell is `[ ]`; the QA ticks it `[x]` or deletes the
|
|
44
|
+
* row. While rows stay unticked the audit says how many, once. Advisory only: no score, no gate, no
|
|
45
|
+
* baseline effect. A missing or unreadable file says nothing — the review is optional input.
|
|
46
|
+
*/
|
|
47
|
+
const fs = __importStar(require("fs"));
|
|
48
|
+
const path = __importStar(require("path"));
|
|
49
|
+
const read_text_1 = require("./read-text");
|
|
50
|
+
exports.VIEWPOINT_REVIEW_FILE = 'viewpoint-review.md';
|
|
51
|
+
const SEPARATOR = /^\s*\|?\s*:?-{2,}:?\s*(\|\s*:?-{2,}:?\s*)*\|?\s*$/;
|
|
52
|
+
/** A table separator, not a `---` rule under a row. */
|
|
53
|
+
const isSeparator = (line) => SEPARATOR.test(line) && line.includes('|');
|
|
54
|
+
const UNTICKED = /^\[\s?\]$/;
|
|
55
|
+
/** The last cell of a markdown table row, or null for a line that is not one. */
|
|
56
|
+
function lastCell(line) {
|
|
57
|
+
const t = line.trim();
|
|
58
|
+
if (!t.startsWith('|') || !t.endsWith('|') || t.length < 2)
|
|
59
|
+
return null;
|
|
60
|
+
const cells = t.slice(1, -1).split(/(?<!\\)\|/);
|
|
61
|
+
return cells[cells.length - 1].trim();
|
|
62
|
+
}
|
|
63
|
+
/** Body rows whose last cell is `[ ]`. The header row (`… | [ ] |` above `|---|`) is not a point. */
|
|
64
|
+
function openReviewPoints(text) {
|
|
65
|
+
const lines = (0, read_text_1.stripHtmlComments)(text.replace(/\r\n?/g, '\n')).split('\n');
|
|
66
|
+
let open = 0;
|
|
67
|
+
for (let i = 0; i < lines.length; i++) {
|
|
68
|
+
if (isSeparator(lines[i]) || isSeparator(lines[i + 1] ?? ''))
|
|
69
|
+
continue;
|
|
70
|
+
const last = lastCell(lines[i]);
|
|
71
|
+
if (last !== null && UNTICKED.test(last))
|
|
72
|
+
open++;
|
|
73
|
+
}
|
|
74
|
+
return open;
|
|
75
|
+
}
|
|
76
|
+
/** The info finding for one unit's `requirements/` directory; empty when nothing is open. */
|
|
77
|
+
function viewpointReviewOpenFindings(requirementsDir) {
|
|
78
|
+
let text;
|
|
79
|
+
try {
|
|
80
|
+
text = fs.readFileSync(path.join(requirementsDir, exports.VIEWPOINT_REVIEW_FILE), 'utf-8');
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return [];
|
|
84
|
+
}
|
|
85
|
+
const open = openReviewPoints(text);
|
|
86
|
+
if (open === 0)
|
|
87
|
+
return [];
|
|
88
|
+
return [`VIEWPOINT-REVIEW-OPEN (info): ${open} open point(s) in requirements/${exports.VIEWPOINT_REVIEW_FILE} — the checklist review of test-viewpoint.md is waiting for QA. QA: fix the viewpoint where you agree, then tick the row \`[x]\` or delete it. Not scored; an agent does not tick rows for the QA.`];
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=viewpoint-review-open.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewpoint-review-open.js","sourceRoot":"","sources":["../../src/harness/viewpoint-review-open.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,4CASC;AAGD,kEAUC;AAlDD;;;;;;;GAOG;AACH,uCAAyB;AACzB,2CAA6B;AAC7B,2CAAgD;AAEnC,QAAA,qBAAqB,GAAG,qBAAqB,CAAC;AAE3D,MAAM,SAAS,GAAG,mDAAmD,CAAC;AACtE,uDAAuD;AACvD,MAAM,WAAW,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC1F,MAAM,QAAQ,GAAG,WAAW,CAAC;AAE7B,iFAAiF;AACjF,SAAS,QAAQ,CAAC,IAAY;IAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtB,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACxE,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAChD,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACxC,CAAC;AAED,qGAAqG;AACrG,SAAgB,gBAAgB,CAAC,IAAY;IAC3C,MAAM,KAAK,GAAG,IAAA,6BAAiB,EAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1E,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YAAE,SAAS;QACvE,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,IAAI,KAAK,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,EAAE,CAAC;IACnD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,6FAA6F;AAC7F,SAAgB,2BAA2B,CAAC,eAAuB;IACjE,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,6BAAqB,CAAC,EAAE,OAAO,CAAC,CAAC;IACrF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC1B,OAAO,CAAC,iCAAiC,IAAI,kCAAkC,6BAAqB,oMAAoM,CAAC,CAAC;AAC5S,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export interface TableRow {
|
|
2
|
+
/** 1-based line in the (comment-stripped, newline-preserving) text. */
|
|
3
|
+
line: number;
|
|
4
|
+
raw: string;
|
|
5
|
+
/** Cells with `**`, backticks and edge spaces removed. */
|
|
6
|
+
cells: string[];
|
|
7
|
+
/** The table's header cells; null for a table with no separator line. */
|
|
8
|
+
header: string[] | null;
|
|
9
|
+
/** Text of every heading enclosing the row (outermost first) — where a `# MANUAL/ENV` mark may sit. */
|
|
10
|
+
section: string;
|
|
11
|
+
}
|
|
12
|
+
/** Every body row of every markdown table, with its header and enclosing headings. */
|
|
13
|
+
export declare function tableRows(text: string): TableRow[];
|
|
14
|
+
/** `009` → `9`, `4.03` → `4.3`; null when the text is not a plain (dotted) number. */
|
|
15
|
+
export declare function normRef(s: string): string | null;
|
|
16
|
+
/**
|
|
17
|
+
* Item numbers a cell cites: `item 9`, `item 2, 3, 7`, `item 4–6`, `item 5.4–5.8`, `項目 4.3〜4.6`, `UI #9`,
|
|
18
|
+
* `UI-009`, `[9]`, `§4.3.2`. Prose (`Auth guard`), message codes (`M02`) and question ids
|
|
19
|
+
* (`Q-01`) are not refs.
|
|
20
|
+
*/
|
|
21
|
+
export declare function extractRefs(text: string): string[];
|
|
22
|
+
export type ItemSource = 'spec-ids' | 'spec-table' | 'spec-ids+spec-table' | 'ui-inventory' | 'none';
|
|
23
|
+
export interface UniverseItem {
|
|
24
|
+
ref: string;
|
|
25
|
+
name: string;
|
|
26
|
+
}
|
|
27
|
+
/** Every list a citation could point at, each in its own notation. */
|
|
28
|
+
export interface ItemUniverses {
|
|
29
|
+
specIds: UniverseItem[];
|
|
30
|
+
specTable: UniverseItem[];
|
|
31
|
+
inventory: UniverseItem[];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The unit's lists, by where each id is DECLARED: requirement ids spec.md declares (`**FR-BC-03**:`),
|
|
35
|
+
* the spec's item table (`No` + name + type columns), and ui-inventory ids (`UI-NNN`). An id's shape
|
|
36
|
+
* says nothing about which list it belongs to — `item 9` on a mockup and `UI-009` in the inventory
|
|
37
|
+
* number different things.
|
|
38
|
+
*/
|
|
39
|
+
export declare function itemUniverses(reqDir: string): ItemUniverses;
|
|
40
|
+
/**
|
|
41
|
+
* The list(s) the viewpoint actually cites — a list nobody cites says nothing about gaps. The spec's
|
|
42
|
+
* ids and its item table, each when cited (both when both are: the notations cannot collide, and
|
|
43
|
+
* dropping one would under-report); the table also when nothing is cited at all (then every item is
|
|
44
|
+
* uncited, which is true); the inventory only when the viewpoint writes `UI-NNN`; else none.
|
|
45
|
+
*/
|
|
46
|
+
export declare function citedUniverse(u: ItemUniverses, cited: ReadonlySet<string>, writesInventoryIds: boolean): {
|
|
47
|
+
source: ItemSource;
|
|
48
|
+
items: UniverseItem[];
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=viewpoint-scan-refs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewpoint-scan-refs.d.ts","sourceRoot":"","sources":["../../src/harness/viewpoint-scan-refs.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,QAAQ;IACvB,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,0DAA0D;IAC1D,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,yEAAyE;IACzE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACxB,uGAAuG;IACvG,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,sFAAsF;AACtF,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE,CAelD;AAKD,sFAAsF;AACtF,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGhD;AAkBD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAiBlD;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,qBAAqB,GAAG,cAAc,GAAG,MAAM,CAAC;AACrG,MAAM,WAAW,YAAY;IAAG,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAC3D,sEAAsE;AACtE,MAAM,WAAW,aAAa;IAAG,OAAO,EAAE,YAAY,EAAE,CAAC;IAAC,SAAS,EAAE,YAAY,EAAE,CAAC;IAAC,SAAS,EAAE,YAAY,EAAE,CAAA;CAAE;AAMhH;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CA2B3D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,kBAAkB,EAAE,OAAO,GAAG;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,YAAY,EAAE,CAAA;CAAE,CAStJ"}
|