Conversation
…irectories - New methodologies: political-style-guide.md, ai-driven-analysis-guide.md - New templates: synthesis-summary.md, per-file-political-intelligence.md - New reference/: 4 ISMS adaptation files (classification, risk, threat, style) - New daily/, weekly/, monthly/ directories with README.md files Agent-Logs-Url: https://github.com/Hack23/euparliamentmonitor/sessions/57531450-91f6-46d8-bc57-800940f916e9 Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
…rotocols - Threat framework: Added 5 additional frameworks (Attack Trees, LINDDUN, PESTLE, Scenario Planning, Kill Chain) beyond STRIDE baseline - Risk methodology: Added AI analysis protocol, SWOT integration rules, anti-pattern warnings - SWOT framework: Added AI protocol, evidence quality gates - Classification guide: Added borderline guidance, AI protocol Agent-Logs-Url: https://github.com/Hack23/euparliamentmonitor/sessions/57531450-91f6-46d8-bc57-800940f916e9 Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
- All 6 existing templates: Added anti-pattern warnings, AI analysis mandate, evidence requirement reminders - README.md: Comprehensive v2 rewrite with per-file analysis protocol, temporal aggregation (daily/weekly/monthly), collision-free design, 6 methodology docs, 8 templates, 4 reference files Agent-Logs-Url: https://github.com/Hack23/euparliamentmonitor/sessions/57531450-91f6-46d8-bc57-800940f916e9 Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
- Threat framework: Added explanation why STRIDE alone is insufficient - AI analysis guide: Added weighted score formula with example - Synthesis template: Added Mermaid comments for style replacement - Risk adaptation: Clarified pre-election likelihood adjustment cap Agent-Logs-Url: https://github.com/Hack23/euparliamentmonitor/sessions/57531450-91f6-46d8-bc57-800940f916e9 Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
…l Threat Landscape - Rewrite political-threat-framework.md: Replace STRIDE with purpose-built 6-dimension Political Threat Landscape (Coalition Shifts, Transparency Deficit, Policy Reversal, Institutional Pressure, Legislative Obstruction, Democratic Erosion) + Diamond Model + Attack Trees + PESTLE + Scenario Planning + Kill Chain - Rewrite threat-analysis.md template: Replace S/T/R/I/D/E sections with 6 political dimensions (CS/TD/PR/IP/LO/DE) + Diamond Model section - Update synthesis-summary.md: Replace STRIDE references with Threat Landscape - Update per-file-political-intelligence.md: Replace STRIDE with Threat Landscape Agent-Logs-Url: https://github.com/Hack23/euparliamentmonitor/sessions/aab07e05-1867-42e1-a959-332c1a3b690e Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
Types: - Add PoliticalThreatDimension type alias (PoliticalStrideCategory kept for backward compat) - Add threatDimensions field to PoliticalThreatAssessment (strideCategories kept for backward compat) - Export PoliticalThreatDimension from types/index.ts Pipeline: - Add political-threat-landscape as primary method (political-stride kept as deprecated alias) - Update all method mappings (builders, subdirs, confidence, filenames) Assessment utility: - Remove STRIDE from all display labels (now "Coalition Shifts" not "Coalition Shifts (S)") - Update markdown output headers to "Political Threat Landscape Analysis" - Export ALL_THREAT_LANDSCAPE_DIMENSIONS constant - Update all JSDoc comments Analysis docs: - Update README.md, ai-driven-analysis-guide, style guide, ISMS reference to remove all STRIDE references All 2713 tests pass, TypeScript compiles cleanly. Agent-Logs-Url: https://github.com/Hack23/euparliamentmonitor/sessions/aab07e05-1867-42e1-a959-332c1a3b690e Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
- per-file template: Replace S/T/R/I/D/E prefixes with CS/TD/PR/IP/LO/DE - per-file template: Replace LINDDUN section with Diamond Model - threat framework: Fix date reference, add Diamond Model citation URL - assessment utility: Rename ALL_STRIDE_CATEGORIES to ALL_THREAT_DIMENSIONS - workflow files: Update 9 workflow .md files to remove STRIDE naming - docs/analysis-methodology/README.md: Update STRIDE references - monthly/README.md: Fix STRIDE reference in threat landscape description Agent-Logs-Url: https://github.com/Hack23/euparliamentmonitor/sessions/aab07e05-1867-42e1-a959-332c1a3b690e Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
Agent-Logs-Url: https://github.com/Hack23/euparliamentmonitor/sessions/ba8bef99-205a-4b26-b0af-6b2b302fbff4 Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
- Remove PoliticalStrideCategory interface → PoliticalThreatDimension is now canonical - Remove strideCategories field → threatDimensions is the only field - Remove political-stride analysis method alias entirely - Rename ALL_POLITICAL_STRIDE_CATEGORIES → ALL_THREAT_LANDSCAPE_DIMENSIONS - Rename STRIDE_LABELS → DIMENSION_LABELS - Rename buildPoliticalStrideMarkdown → buildThreatLandscapeMarkdown - Remove political-stride from METHOD_SUBDIRS, METHOD_FILENAMES, METHOD_DEFAULT_CONFIDENCE, METHOD_BUILDERS - Update all test files to match new naming - All 2713 tests pass, 0 lint errors Agent-Logs-Url: https://github.com/Hack23/euparliamentmonitor/sessions/ba8bef99-205a-4b26-b0af-6b2b302fbff4 Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
…tre and update FUTURE_WORKFLOWS.md with visionary intelligence evolution roadmap Agent-Logs-Url: https://github.com/Hack23/euparliamentmonitor/sessions/32bf8f1d-59b1-4126-a180-273811060f51 Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
Agent-Logs-Url: https://github.com/Hack23/euparliamentmonitor/sessions/557ffdea-fe4e-4379-9c38-280305e09b37 Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
…Mermaid diagrams, quality gates; add workflow-specific analytical routing to methodologies and templates READMEs; fix STRIDE references in WORKFLOWS.md and FUTURE_WORKFLOWS.md Agent-Logs-Url: https://github.com/Hack23/euparliamentmonitor/sessions/557ffdea-fe4e-4379-9c38-280305e09b37 Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
…ase 0b intelligence quality enhancement to FUTURE_WORKFLOWS.md; enhance all documentation with workflow-specific analytics focus Agent-Logs-Url: https://github.com/Hack23/euparliamentmonitor/sessions/557ffdea-fe4e-4379-9c38-280305e09b37 Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Updates the project’s political-intelligence documentation and analysis framework to replace STRIDE terminology with a “Political Threat Landscape” model, while aligning the analysis pipeline and tests with the new naming and output conventions.
Changes:
- Expanded workflow + analysis documentation (matrices, Mermaid diagrams, templates, and reference guides) with a political-intelligence focus.
- Renamed the threat assessment method/outputs from
political-stridetopolitical-threat-landscapeacross pipeline code, exports, and unit tests. - Removed a couple of deprecated config exports in
config(and compiledscripts/output).
Reviewed changes
Copilot reviewed 48 out of 48 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| WORKFLOWS.md | Updates workflow documentation, adds PRIO 1 data/analytics matrix and political intelligence “Ops Centre” diagrams. |
| FUTURE_WORKFLOWS.md | Reframes roadmap around political intelligence + threat landscape; adds Phase 0b quality enhancement content. |
| docs/analysis-methodology/README.md | Updates higher-level methodology docs to reference Threat Landscape vs STRIDE. |
| analysis/daily/README.md | New doc describing daily analysis directory structure and rules. |
| analysis/weekly/README.md | New doc describing weekly aggregation directory structure and retention. |
| analysis/monthly/README.md | New doc describing monthly aggregation directory structure and retention. |
| analysis/templates/threat-analysis.md | Updates threat template to Political Threat Landscape dimensions + adds anti-pattern guidance. |
| analysis/templates/synthesis-summary.md | Adds a synthesis template combining all analysis streams and quality requirements. |
| analysis/templates/swot-analysis.md | Adds anti-pattern guidance emphasizing evidence/citations. |
| analysis/templates/stakeholder-impact.md | Adds anti-pattern guidance emphasizing evidence/citations. |
| analysis/templates/significance-scoring.md | Adds anti-pattern guidance + requires 5-dimension scoring breakdown. |
| analysis/templates/risk-assessment.md | Adds anti-pattern guidance + requires quantified L×I with evidence. |
| analysis/templates/political-classification.md | Adds anti-pattern guidance + structure/diagram requirements. |
| analysis/templates/per-file-political-intelligence.md | New per-file deep analysis template spanning classification/SWOT/risk/threat/stakeholders. |
| analysis/reference/isms-threat-modeling-adaptation.md | New mapping doc from ISMS threat modeling concepts to political threat analysis. |
| analysis/reference/isms-style-guide-adaptation.md | New mapping doc from ISMS style guide to political intelligence writing standards. |
| analysis/reference/isms-risk-assessment-adaptation.md | New mapping doc from ISMS risk assessment to EU political risk scoring. |
| analysis/reference/isms-classification-adaptation.md | New mapping doc from ISMS classification to political sensitivity/urgency conventions. |
| analysis/methodologies/political-threat-framework.md | Major rewrite to multi-framework Threat Landscape + Diamond/Attack Trees/PESTLE/etc. |
| analysis/methodologies/political-style-guide.md | New writing style guide defining depth levels, evidence density, and prohibited patterns. |
| analysis/methodologies/political-swot-framework.md | Adds an AI protocol section tying SWOT to evidence and other analyses. |
| analysis/methodologies/political-risk-methodology.md | Adds an AI protocol section and risk→SWOT integration rules. |
| analysis/methodologies/political-classification-guide.md | Adds an AI protocol section and borderline classification guidance. |
| analysis/methodologies/ai-driven-analysis-guide.md | New per-file AI analysis protocol + quality gate checklist. |
| src/utils/political-threat-assessment.ts | Renames STRIDE concepts to Threat Landscape; changes assessment shape + exported constant name. |
| src/types/political-threats.ts | Renames STRIDE type(s) to Threat Landscape equivalents; updates top-level assessment property name. |
| src/generators/pipeline/analysis-stage.ts | Renames analysis method string + output filename for threat assessment markdown generation. |
| src/index.ts | Updates public exports to new Threat Landscape constant name. |
| src/types/index.ts | Updates barrel exports to new threat-dimension type name. |
| src/constants/config.ts | Removes deprecated exports (VALID_ARTICLE_TYPES, THEME_TOGGLE_BUTTON). |
| test/unit/political-threat-assessment.test.js | Updates unit tests for new constant name and assessment object shape. |
| test/unit/analysis-stage.test.js | Updates unit tests for renamed analysis method and output filename. |
| scripts/utils/political-threat-assessment.js | Compiled output updated to match src/utils/political-threat-assessment.ts. |
| scripts/generators/pipeline/analysis-stage.js | Compiled output updated to match src/generators/pipeline/analysis-stage.ts. |
| scripts/index.js | Compiled exports updated to new Threat Landscape constant name. |
| scripts/constants/config.js | Compiled output updated to match src/constants/config.ts deprecated export removals. |
| .github/workflows/news-breaking.md | Updates workflow doc text and analysis-method list to political-threat-landscape. |
| .github/workflows/news-committee-reports.md | Updates workflow doc threat assessment wording to Threat Landscape. |
| .github/workflows/news-motions.md | Updates workflow doc threat assessment wording to Threat Landscape. |
| .github/workflows/news-propositions.md | Updates workflow doc threat assessment wording to Threat Landscape. |
| .github/workflows/news-week-ahead.md | Updates workflow doc threat assessment wording to Threat Landscape. |
| .github/workflows/news-weekly-review.md | Updates workflow doc threat assessment wording to Threat Landscape. |
| .github/workflows/news-month-ahead.md | Updates workflow doc threat assessment wording to Threat Landscape. |
| .github/workflows/news-monthly-review.md | Updates workflow doc threat assessment wording to Threat Landscape. |
| .github/workflows/news-article-generator.md | Updates workflow doc threat assessment wording + references to the methodology shift. |
Comments suppressed due to low confidence (1)
src/constants/config.ts:48
- This change removes the deprecated
VALID_ARTICLE_TYPESandTHEME_TOGGLE_BUTTONexports. Even if unused internally, this is still a breaking change for external consumers who may import them. Consider keeping deprecated re-exports for one release cycle (or documenting the removal with an explicit major-version bump).
| /** | ||
| * @module Utils/PoliticalThreatAssessment | ||
| * @description Pure political threat assessment functions adapted from ISMS threat | ||
| * modeling (STRIDE, attack trees, kill chain analysis) applied to parliamentary | ||
| * political dynamics. All functions are stateless and safely handle malformed or | ||
| * missing input data. No side effects. | ||
| * @description Pure political threat assessment functions using the Political | ||
| * Threat Landscape framework (6 dimensions: Coalition Shifts, Transparency | ||
| * Deficit, Policy Reversal, Institutional Pressure, Legislative Obstruction, | ||
| * Democratic Erosion), supplemented by attack trees and kill chain analysis. | ||
| * All functions are stateless and safely handle malformed or missing input data. | ||
| * No side effects. |
There was a problem hiding this comment.
The PR description states “No code changes — documentation only”, but this change set includes behavior/API changes (e.g., renaming the threat assessment method/exports and updating tests). Please update the PR title/description to reflect the code changes, or split docs vs. code into separate PRs for accurate review/release notes.
| // ─── Political Threat Assessment ───────────────────────────────────────────── | ||
| export { | ||
| assessPoliticalThreats, | ||
| buildActorThreatProfiles, | ||
| buildConsequenceTree, | ||
| analyzeLegislativeDisruption, | ||
| generateThreatAssessmentMarkdown, | ||
| ALL_POLITICAL_STRIDE_CATEGORIES, | ||
| ALL_THREAT_LANDSCAPE_DIMENSIONS, | ||
| } from './utils/political-threat-assessment.js'; |
There was a problem hiding this comment.
This re-export renames/removes ALL_POLITICAL_STRIDE_CATEGORIES in the public entrypoint. If this package has external consumers, this is a breaking API change; consider keeping a deprecated alias export (or bumping major version and documenting the migration).
| export type { | ||
| PoliticalActorThreatProfile, | ||
| ConsequenceNode, | ||
| PoliticalConsequenceTree, | ||
| DisruptionPoint, | ||
| LegislativeDisruptionAnalysis, | ||
| PoliticalStrideCategory, | ||
| PoliticalThreatDimension, | ||
| PoliticalThreatAssessment, | ||
| ThreatAssessmentInput, | ||
| } from './political-threats.js'; |
There was a problem hiding this comment.
PoliticalStrideCategory is no longer exported from the central types barrel. If consumers import this type, this is a breaking change; consider re-exporting a deprecated alias type (e.g., mapping PoliticalStrideCategory to PoliticalThreatDimension) during a transition period.
| // ─── All threat landscape dimensions constant (for external use) ────────────── | ||
|
|
||
| /** | ||
| * All Political STRIDE categories in canonical order. | ||
| * Useful for iterating over all categories without hardcoding the list. | ||
| * All Political Threat Landscape dimensions in canonical order. | ||
| * Useful for iterating over all dimensions without hardcoding the list. | ||
| */ | ||
| export const ALL_POLITICAL_STRIDE_CATEGORIES: readonly PoliticalThreatCategory[] = | ||
| ALL_STRIDE_CATEGORIES; | ||
| export const ALL_THREAT_LANDSCAPE_DIMENSIONS: readonly PoliticalThreatCategory[] = | ||
| ALL_THREAT_DIMENSIONS; |
There was a problem hiding this comment.
Exporting only ALL_THREAT_LANDSCAPE_DIMENSIONS removes the previously exported ALL_POLITICAL_STRIDE_CATEGORIES. To avoid breaking downstream imports, consider keeping a deprecated alias constant (and/or update a changelog + major version).
| ``` | ||
| analysis/daily/ | ||
| ├── YYYY-MM-DD/ ← ISO 8601 date (always zero-padded) | ||
| │ ├── breaking-news/ ← news-breaking workflow output | ||
| │ │ ├── classification/ | ||
| │ │ ├── risk-scoring/ | ||
| │ │ ├── threat-assessment/ | ||
| │ │ ├── data/ ← MCP data for this workflow | ||
| │ │ └── synthesis-summary.md | ||
| │ ├── committee-reports/ ← news-committee-reports workflow output | ||
| │ │ ├── classification/ | ||
| │ │ ├── risk-scoring/ | ||
| │ │ ├── threat-assessment/ | ||
| │ │ ├── data/ | ||
| │ │ └── synthesis-summary.md | ||
| │ ├── weekly-review/ ← news-weekly-review workflow output | ||
| │ │ └── ... | ||
| │ ├── week-ahead/ ← news-week-ahead workflow output | ||
| │ │ └── ... | ||
| │ └── ai-*.md ← Cross-workflow AI synthesis (shared) | ||
| ``` |
There was a problem hiding this comment.
The example directory names here (e.g. breaking-news/, weekly-review/) don’t match the slugs produced by the generator code: ArticleCategory.BREAKING_NEWS is breaking, and WEEK_IN_REVIEW is week-in-review (see src/types/common.ts). This will mislead operators looking for artifacts; please align the documented folder names with the actual articleTypeSlug values.
| ## 🔗 Workflow → Directory Mapping | ||
|
|
||
| | Workflow | Article Type Slug | Output Directory | | ||
| |----------|-------------------|------------------| | ||
| | `news-breaking` | `breaking-news` | `analysis/daily/YYYY-MM-DD/breaking-news/` | | ||
| | `news-committee-reports` | `committee-reports` | `analysis/daily/YYYY-MM-DD/committee-reports/` | | ||
| | `news-propositions` | `propositions` | `analysis/daily/YYYY-MM-DD/propositions/` | | ||
| | `news-motions` | `motions` | `analysis/daily/YYYY-MM-DD/motions/` | | ||
| | `news-week-ahead` | `week-ahead` | `analysis/daily/YYYY-MM-DD/week-ahead/` | | ||
| | `news-weekly-review` | `weekly-review` | `analysis/daily/YYYY-MM-DD/weekly-review/` | | ||
| | `news-month-ahead` | `month-ahead` | `analysis/daily/YYYY-MM-DD/month-ahead/` | | ||
| | `news-monthly-review` | `monthly-review` | `analysis/daily/YYYY-MM-DD/monthly-review/` | | ||
| | `news-article-generator` | `article-generator` | `analysis/daily/YYYY-MM-DD/article-generator/` | | ||
|
|
There was a problem hiding this comment.
This workflow→directory mapping table uses breaking-news and weekly-review, but the codebase’s canonical article category values are breaking and week-in-review (src/types/common.ts). Please update the slugs in the table to match the enum values so the mapping is actionable.
| ``` | ||
| analysis/2026-03-31/ | ||
| ├── ai-daily-synthesis.md ← Cross-article synthesis (date root) | ||
| ├── breaking-news/ ← news-breaking workflow | ||
| │ ├── manifest.json | ||
| │ ├── classification/ | ||
| │ ├── threat-assessment/ | ||
| │ ├── risk-scoring/ | ||
| │ └── data/ ← EP MCP data for this workflow | ||
| ├── committee-reports/ ← news-committee-reports workflow | ||
| │ ├── manifest.json | ||
| │ ├── classification/ | ||
| │ └── data/ | ||
| ├── motions/ ← news-motions workflow |
There was a problem hiding this comment.
The “Analysis Artifact Structure” example uses breaking-news/ etc., but the actual analysis output is scoped by deriveArticleTypeSlug() (e.g., breaking, week-in-review) under {outputDir}/{date}/{slug}/ (see src/generators/news-enhanced.ts and src/generators/pipeline/analysis-stage.ts). Please align the example paths with the real on-disk layout to prevent confusion during incident/debugging.
| @@ -214,8 +216,8 @@ export interface PoliticalThreatAssessment { | |||
| readonly overallThreatLevel: ImpactLevel; | |||
| /** Confidence level in the assessment */ | |||
| readonly confidence: 'high' | 'medium' | 'low'; | |||
| /** Political STRIDE analysis for each of the six categories */ | |||
| readonly strideCategories: readonly PoliticalStrideCategory[]; | |||
| /** Political Threat Landscape analysis for each of the six dimensions */ | |||
| readonly threatDimensions: readonly PoliticalThreatDimension[]; | |||
| /** Threat profiles for key political actors */ | |||
There was a problem hiding this comment.
PoliticalThreatAssessment replaces the strideCategories property with threatDimensions. If any downstream code consumes the serialized assessment object (or relies on this interface), this is a breaking change. Consider a transition strategy (e.g., keep strideCategories as a deprecated alias property, or provide a converter) and document the migration.
|
@copilot apply changes based on the comments in this thread and fix Test and Report / Validate Code (pull_request) |
…ttier formatting, correct directory slugs in documentation Agent-Logs-Url: https://github.com/Hack23/euparliamentmonitor/sessions/5d836654-12b3-4736-b79f-88f6046ef762 Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
Fixed in 290b247:
All 2713 tests pass, 0 lint errors, Prettier check passes. |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 48 out of 48 changed files in this pull request and generated 1 comment.
Comments suppressed due to low confidence (1)
test/unit/analysis-stage.test.js:76
- The tests cover the renamed default method (
political-threat-landscape) but don’t cover the promised backward-compatible alias. Add assertions thatVALID_ANALYSIS_METHODSincludespolitical-strideand arunAnalysisStagetest case thatenabledMethods: ['political-stride']is accepted and writes the expected threat assessment markdown output.
| | 'cross-session-intelligence' | ||
| // Per-document intelligence analysis | ||
| | 'document-analysis'; | ||
| | 'document-analysis' | ||
| // Deprecated alias — use 'political-threat-landscape' instead | ||
| | 'political-stride'; |
There was a problem hiding this comment.
political-stride is added as a deprecated AnalysisMethod alias, and the pipeline maps it to the new builder/filename, but VALID_ANALYSIS_METHODS is still derived only from ALL_ANALYSIS_METHODS + document-analysis. That means CLI/user validation will reject --analysis-methods=political-stride, breaking the stated backward compatibility. Include 'political-stride' in VALID_ANALYSIS_METHODS (and consider keeping it out of ALL_ANALYSIS_METHODS defaults if desired).
|
@copilot apply changes based on the comments in this thread |
…compatible CLI validation Agent-Logs-Url: https://github.com/Hack23/euparliamentmonitor/sessions/db3755f9-7f16-4dfc-a897-726a279c270a Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
Fixed in bf74888. Added |
Documentation overhaul across 5 files to add workflow-specific data/analytics matrices, fix STRIDE references, and add color-coded Mermaid diagrams focused on political intelligence. Includes code changes to rename threat assessment from STRIDE to Political Threat Landscape with backward-compatible deprecated aliases.
STRIDE → Political Threat Landscape (code + docs)
political-stridetopolitical-threat-landscapeacross pipeline code, types, and unit testsPoliticalStrideCategorytype →PoliticalThreatDimensionstrideCategoriesoptional field onPoliticalThreatAssessmentALL_POLITICAL_STRIDE_CATEGORIESconstant →ALL_THREAT_LANDSCAPE_DIMENSIONS'political-stride'analysis method →'political-threat-landscape''political-stride'inVALID_ANALYSIS_METHODSso CLI validation (--analysis-methods=political-stride) accepts the deprecated alias, while keeping it out ofALL_ANALYSIS_METHODS(the default execution set)Directory slug corrections
ArticleCategoryenum values:breaking-news/→breaking/,weekly-review/→week-in-review/,monthly-review/→month-in-review/analysis/README.md (311→418 lines, 5 Mermaid diagrams)
analysis/methodologies/README.md (+66 lines, 10 Mermaid diagrams)
analysis/templates/README.md (+65 lines, 12 Mermaid diagrams)
WORKFLOWS.md (+48 lines, 21 Mermaid diagrams)
FUTURE_WORKFLOWS.md (+71 lines, 11 Mermaid diagrams)
Code changes
VALID_ARTICLE_TYPES,THEME_TOGGLE_BUTTON)votingAnomaliesfield fromThreatAssessmentInputsrc/constants/config.tsAll 2714 tests pass. 0 lint errors.