feat(classifier): add multilingual ECP inherence classifier POC
This commit is contained in:
@@ -13,6 +13,10 @@ env/
|
||||
venv/
|
||||
.venv/
|
||||
ENV/
|
||||
.pytest_cache/
|
||||
.coverage
|
||||
htmlcov/
|
||||
out/
|
||||
|
||||
# Node
|
||||
node_modules/
|
||||
|
||||
+215
@@ -0,0 +1,215 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Main CLI entrypoint for Multilingual NLP Entity Inherence Classifier (POC)."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
from src import __version__
|
||||
from src.models import ECPSnapshot, ClassificationError, ErrorCode
|
||||
from src.classifier import InherenceClassifier
|
||||
|
||||
# Ensure UTF-8 output streams across all platforms
|
||||
if hasattr(sys.stdout, "reconfigure"):
|
||||
try:
|
||||
sys.stdout.reconfigure(encoding="utf-8")
|
||||
except Exception:
|
||||
pass
|
||||
if hasattr(sys.stderr, "reconfigure"):
|
||||
try:
|
||||
sys.stderr.reconfigure(encoding="utf-8")
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
def parse_args(argv: list[str] | None = None) -> argparse.Namespace:
|
||||
parser = argparse.ArgumentParser(
|
||||
prog="classify.py",
|
||||
description="Multilingual NLP Entity Inherence Classifier (POC)",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--ecp",
|
||||
type=str,
|
||||
required=True,
|
||||
help="Path to the ECP Snapshot JSON file",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--content",
|
||||
type=str,
|
||||
required=True,
|
||||
help="Path to the Markdown content file",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--output",
|
||||
"-o",
|
||||
type=str,
|
||||
default=None,
|
||||
help="Path to write the output JSON (default: prints to stdout)",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--enable-embeddings",
|
||||
action="store_true",
|
||||
default=False,
|
||||
help="Enable optional Tier 2 vector embeddings adapter (default: false)",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--enable-llm",
|
||||
action="store_true",
|
||||
default=False,
|
||||
help="Enable optional Tier 3 LLM fallback adapter (default: false)",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--version",
|
||||
"-v",
|
||||
action="version",
|
||||
version=f"%(prog)s {__version__}",
|
||||
)
|
||||
return parser.parse_args(argv)
|
||||
|
||||
|
||||
def emit_error(
|
||||
error_code: ErrorCode,
|
||||
message: str,
|
||||
details: dict | None = None,
|
||||
output_path: str | None = None,
|
||||
) -> int:
|
||||
err = ClassificationError(
|
||||
error_code=error_code,
|
||||
message=message,
|
||||
details=details or {},
|
||||
)
|
||||
err_json = err.to_json_str(indent=2)
|
||||
|
||||
if output_path:
|
||||
try:
|
||||
out_file = Path(output_path)
|
||||
out_file.parent.mkdir(parents=True, exist_ok=True)
|
||||
out_file.write_text(err_json, encoding="utf-8")
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
sys.stderr.write(err_json + "\n")
|
||||
return 1
|
||||
|
||||
|
||||
def main(argv: list[str] | None = None) -> int:
|
||||
try:
|
||||
args = parse_args(argv)
|
||||
except SystemExit as e:
|
||||
return int(e.code)
|
||||
|
||||
ecp_path = Path(args.ecp)
|
||||
content_path = Path(args.content)
|
||||
|
||||
# 1. Validate ECP file existence and readability
|
||||
if not ecp_path.is_file():
|
||||
return emit_error(
|
||||
ErrorCode.INVALID_ECP_JSON,
|
||||
f"ECP snapshot file not found: '{args.ecp}'",
|
||||
{"path": str(args.ecp)},
|
||||
output_path=args.output,
|
||||
)
|
||||
|
||||
try:
|
||||
ecp_raw = ecp_path.read_text(encoding="utf-8")
|
||||
except Exception as e:
|
||||
return emit_error(
|
||||
ErrorCode.INVALID_ECP_JSON,
|
||||
f"Failed to read ECP file: {e}",
|
||||
{"path": str(args.ecp), "error": str(e)},
|
||||
output_path=args.output,
|
||||
)
|
||||
|
||||
try:
|
||||
ecp = ECPSnapshot.from_json_str(ecp_raw)
|
||||
except ValueError as e:
|
||||
error_msg = str(e)
|
||||
if "Missing required field" in error_msg:
|
||||
return emit_error(
|
||||
ErrorCode.MISSING_REQUIRED_FIELD,
|
||||
error_msg,
|
||||
{"path": str(args.ecp)},
|
||||
output_path=args.output,
|
||||
)
|
||||
return emit_error(
|
||||
ErrorCode.INVALID_ECP_JSON,
|
||||
error_msg,
|
||||
{"path": str(args.ecp)},
|
||||
output_path=args.output,
|
||||
)
|
||||
|
||||
# 2. Validate Content file existence and readability
|
||||
if not content_path.is_file():
|
||||
return emit_error(
|
||||
ErrorCode.INVALID_MARKDOWN,
|
||||
f"Content markdown file not found: '{args.content}'",
|
||||
{"path": str(args.content)},
|
||||
output_path=args.output,
|
||||
)
|
||||
|
||||
try:
|
||||
content_raw = content_path.read_text(encoding="utf-8")
|
||||
except Exception as e:
|
||||
return emit_error(
|
||||
ErrorCode.INVALID_MARKDOWN,
|
||||
f"Failed to read content file: {e}",
|
||||
{"path": str(args.content), "error": str(e)},
|
||||
output_path=args.output,
|
||||
)
|
||||
|
||||
if not content_raw or len(content_raw.strip()) < 5:
|
||||
return emit_error(
|
||||
ErrorCode.EMPTY_CONTENT,
|
||||
"Content file is empty or contains insufficient text (minimum 5 non-whitespace characters required)",
|
||||
{"path": str(args.content), "length": len(content_raw.strip()) if content_raw else 0},
|
||||
output_path=args.output,
|
||||
)
|
||||
|
||||
# 3. Execute Classification
|
||||
classifier = InherenceClassifier(
|
||||
enable_embeddings=args.enable_embeddings,
|
||||
enable_llm=args.enable_llm,
|
||||
)
|
||||
|
||||
try:
|
||||
result = classifier.classify(ecp, content_raw)
|
||||
except ValueError as e:
|
||||
return emit_error(
|
||||
ErrorCode.INVALID_MARKDOWN,
|
||||
str(e),
|
||||
{"path": str(args.content)},
|
||||
output_path=args.output,
|
||||
)
|
||||
except Exception as e:
|
||||
return emit_error(
|
||||
ErrorCode.INVALID_MARKDOWN,
|
||||
f"Classification processing error: {e}",
|
||||
{"error": str(e)},
|
||||
output_path=args.output,
|
||||
)
|
||||
|
||||
result_json = result.to_json_str(indent=2)
|
||||
|
||||
# 4. Output results
|
||||
if args.output:
|
||||
try:
|
||||
out_file = Path(args.output)
|
||||
out_file.parent.mkdir(parents=True, exist_ok=True)
|
||||
out_file.write_text(result_json, encoding="utf-8")
|
||||
except Exception as e:
|
||||
return emit_error(
|
||||
ErrorCode.INVALID_MARKDOWN,
|
||||
f"Failed to write output file: {e}",
|
||||
{"output_path": str(args.output), "error": str(e)},
|
||||
)
|
||||
else:
|
||||
sys.stdout.write(result_json + "\n")
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
@@ -0,0 +1,7 @@
|
||||
# Batteriezellproduktion für europäische Elektrofahrzeuge
|
||||
|
||||
Der schwedische Batteriehersteller **Northvolt** hat den Bau seiner neuen Produktionslinie für Lithium-Ionen-Zellen erfolgreich vorangetrieben.
|
||||
|
||||
Die neuen Batteriezellen sind speziell für die Anforderungen der europäischen Fahrzeugproduktion konzipiert und sollen ab dem kommenden Quartal in großen Stückzahlen an führende Automobilkonzerne geliefert werden.
|
||||
|
||||
Mit dieser Partnerschaft soll die Abhängigkeit von asiatischen Zulieferern deutlich reduziert werden.
|
||||
@@ -0,0 +1,7 @@
|
||||
# Petrobras bate recorde histórico de produção no pré-sal
|
||||
|
||||
A **Petrobras** anunciou nesta semana que atingiu um novo patamar histórico de produção na camada **pré-sal** da Bacia de Santos.
|
||||
|
||||
A companhia destacou que os investimentos contínuos em tecnologia de extração offshore e novas plataformas flutuantes impulsionaram o volume de barris de petróleo extraídos por dia.
|
||||
|
||||
A diretoria da estatal ressaltou o compromisso com a eficiência operacional e a sustentabilidade no setor energético.
|
||||
@@ -0,0 +1,5 @@
|
||||
# Reflexiones sobre el debate político y la diplomacia regional
|
||||
|
||||
Durante la extensa reunión celebrada en el palacio de gobierno, el tema de las tarifas comerciales se convirtió en una verdadera manzana de la discordia entre las diferentes delegaciones parlamentarias.
|
||||
|
||||
A pesar de las tensiones iniciales, los representantes acordaron continuar las conversaciones la próxima semana en un clima más distendido.
|
||||
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"target_entity_id": "ent_apple",
|
||||
"target_name": "Apple",
|
||||
"aliases": [
|
||||
"Apple Inc.",
|
||||
"Apple Computer",
|
||||
"Apple"
|
||||
],
|
||||
"domain": "Consumer Electronics & Technology",
|
||||
"anchors": [
|
||||
"iPhone",
|
||||
"MacBook",
|
||||
"iOS",
|
||||
"tecnología",
|
||||
"dispositivos móviles",
|
||||
"silicio"
|
||||
],
|
||||
"negative_anchors": [
|
||||
"manzana de la discordia",
|
||||
"receta de tarta de manzana",
|
||||
"huerto de manzanas"
|
||||
],
|
||||
"graph_version": "1.0.0",
|
||||
"related_entities": [
|
||||
{
|
||||
"entity_id": "ent_foxconn",
|
||||
"name": "Foxconn",
|
||||
"aliases": ["Hon Hai Precision Industry"],
|
||||
"relation_type": "MANUFACTURER_FOR",
|
||||
"weight": 0.8,
|
||||
"scope": "manufacturing",
|
||||
"confidence": 0.9
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"target_entity_id": "ent_petrobras",
|
||||
"target_name": "Petrobras",
|
||||
"aliases": [
|
||||
"Petróleo Brasileiro S.A.",
|
||||
"Petrobras",
|
||||
"Petrobrás"
|
||||
],
|
||||
"domain": "Oil & Gas",
|
||||
"anchors": [
|
||||
"pré-sal",
|
||||
"refinaria",
|
||||
"combustíveis",
|
||||
"petróleo",
|
||||
"exploração offshore",
|
||||
"bacia de santos"
|
||||
],
|
||||
"negative_anchors": [
|
||||
"posto de combustíveis pirata",
|
||||
"lavagem clandestina"
|
||||
],
|
||||
"graph_version": "1.0.0",
|
||||
"related_entities": [
|
||||
{
|
||||
"entity_id": "ent_transpetro",
|
||||
"name": "Transpetro",
|
||||
"aliases": ["Petrobras Transporte S.A."],
|
||||
"relation_type": "SUBSIDIARY_OF",
|
||||
"weight": 0.85,
|
||||
"scope": "logistics",
|
||||
"confidence": 1.0
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"target_entity_id": "ent_volkswagen",
|
||||
"target_name": "Volkswagen",
|
||||
"aliases": [
|
||||
"Volkswagen AG",
|
||||
"VW",
|
||||
"Volkswagen Group",
|
||||
"Volkswagen Konzern"
|
||||
],
|
||||
"domain": "Automotive & Electric Vehicles",
|
||||
"anchors": [
|
||||
"Elektrofahrzeuge",
|
||||
"Batteriezellen",
|
||||
"Automobilhersteller",
|
||||
"Modellpalette",
|
||||
"Fahrzeugproduktion"
|
||||
],
|
||||
"negative_anchors": [
|
||||
"Spielzeugautos",
|
||||
"Modellautosammlung"
|
||||
],
|
||||
"graph_version": "1.0.0",
|
||||
"related_entities": [
|
||||
{
|
||||
"entity_id": "ent_northvolt",
|
||||
"name": "Northvolt",
|
||||
"aliases": ["Northvolt AB"],
|
||||
"relation_type": "SUPPLIER_OF",
|
||||
"weight": 0.85,
|
||||
"scope": "battery_supply",
|
||||
"confidence": 0.95
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1 +1,82 @@
|
||||
{"0": "Task Planning", "1": "Convergence Workflow", "2": "SpecKit Utilities", "3": "Graphify Commands", "4": "Specification Analysis", "5": "Analysis Detection", "6": "Feature Specification Template", "7": "Graphify Rules", "8": "Implementation Planning", "9": "Feature Specification", "10": "Task Generation", "11": "Project Constitution", "12": "Constitution Template", "13": "Graphify Exports", "14": "Ponytail Configuration", "15": "Implementation Planning Template", "16": "Ponytail Help", "17": "Checklist Generation", "18": "Clarification Workflow", "19": "Implementation Workflow", "20": "Graph Query", "21": "Constitution Workflow", "22": "Feature Branch Creation", "23": "Ponytail Audit", "24": "Ponytail Metrics", "25": "Ponytail Review", "26": "Task Issue Conversion", "27": "Checklist Template", "28": "Graphify Watch Mode", "29": "Graphify Hooks", "30": "Graphify Updates", "31": "Ponytail Debt", "32": "Repository Merge", "33": "Media Transcription", "34": "Extraction Specification", "35": "Prerequisite Checks", "36": "Template Resolution", "37": "Plan Setup", "38": "Task Setup", "39": "Graphify Workflows"}
|
||||
{
|
||||
"0": "Task Planning",
|
||||
"1": "Convergence Workflow",
|
||||
"2": "SpecKit Utilities",
|
||||
"3": "Graphify Commands",
|
||||
"4": "speckit-analyze/SKILL.md",
|
||||
"5": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)",
|
||||
"6": "Feature Specification Template",
|
||||
"7": "Graphify Rules",
|
||||
"8": "Implementation Planning",
|
||||
"9": "Feature Specification",
|
||||
"10": "Task Generation",
|
||||
"11": "Project Constitution",
|
||||
"12": "Constitution Template",
|
||||
"13": "Graphify Exports",
|
||||
"14": "Ponytail Configuration",
|
||||
"15": "Implementation Planning Template",
|
||||
"16": "Ponytail Help",
|
||||
"17": "Checklist Generation",
|
||||
"18": "Clarification Workflow",
|
||||
"19": "Implementation Workflow",
|
||||
"20": "Graph Query",
|
||||
"21": "Constitution Workflow",
|
||||
"22": "Feature Branch Creation",
|
||||
"23": "Ponytail Audit",
|
||||
"24": "Ponytail Metrics",
|
||||
"25": "Ponytail Review",
|
||||
"26": "Task Issue Conversion",
|
||||
"27": "Checklist Template",
|
||||
"28": "Graphify Watch Mode",
|
||||
"29": "Graphify Hooks",
|
||||
"30": "Graphify Updates",
|
||||
"31": "Ponytail Debt",
|
||||
"32": "Repository Merge",
|
||||
"33": "Media Transcription",
|
||||
"34": "Extraction Specification",
|
||||
"35": "Prerequisite Checks",
|
||||
"36": "Template Resolution",
|
||||
"37": "Plan Setup",
|
||||
"38": "Task Setup",
|
||||
"39": "Graphify Workflows",
|
||||
"40": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)",
|
||||
"41": "1. Technical Decisions & Tradeoffs",
|
||||
"42": "1. Input Schemas",
|
||||
"43": "2. Basic CLI Usage Examples",
|
||||
"44": "2. Standard Streams & Exit Codes",
|
||||
"45": "ECPSnapshot",
|
||||
"46": "test_models.py",
|
||||
"47": "detect_language",
|
||||
"48": "main",
|
||||
"49": "content_northvolt_de.md",
|
||||
"50": "content_presal_pt.md",
|
||||
"51": "content_tangential_es.md",
|
||||
"52": "adapters/__init__.py",
|
||||
"53": "src/__init__.py",
|
||||
"54": "de/contextual.md",
|
||||
"55": "de/direct.md",
|
||||
"56": "de/not_related.md",
|
||||
"57": "de/tangential.md",
|
||||
"58": "en/contextual.md",
|
||||
"59": "en/direct.md",
|
||||
"60": "en/not_related.md",
|
||||
"61": "en/tangential.md",
|
||||
"62": "es/contextual.md",
|
||||
"63": "es/direct.md",
|
||||
"64": "es/not_related.md",
|
||||
"65": "es/tangential.md",
|
||||
"66": "fr/contextual.md",
|
||||
"67": "fr/direct.md",
|
||||
"68": "fr/not_related.md",
|
||||
"69": "fr/tangential.md",
|
||||
"70": "it/contextual.md",
|
||||
"71": "it/direct.md",
|
||||
"72": "it/not_related.md",
|
||||
"73": "it/tangential.md",
|
||||
"74": "pt/contextual.md",
|
||||
"75": "pt/direct.md",
|
||||
"76": "pt/not_related.md",
|
||||
"77": "pt/tangential.md",
|
||||
"78": "tests/__init__.py",
|
||||
"79": "text-nlp-classifier"
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"0": "36bdb6f09c457f7c", "1": "8c5bf6244cf710c6", "2": "efbcc9c62a3ee78b", "3": "8599153989b07faa", "4": "38e871314ace14da", "5": "8261391869fcaafd", "6": "80f79e9e2011a3e3", "7": "4654167fd211d027", "8": "50acfa00fe353440", "9": "c6d2f770737823f1", "10": "44f2ca451aea24be", "11": "feaac5ab67a8c17a", "12": "b71bd92e5edbf2e0", "13": "219d65ba6d2689e4", "14": "8e30bb8112fd02d1", "15": "03906ab80b99db85", "16": "5d51c60ba1bc2be0", "17": "a1da914f522dcd21", "18": "fbad840891b90569", "19": "0686ff2d6fe29fb3", "20": "060baa9e1924b465", "21": "a5c8f2c3080b8243", "22": "0d76852f1d29eeb1", "23": "6ff68619f2d72924", "24": "3da11675eee7ec46", "25": "a6696589e9556f97", "26": "6c752999e8a4d4b6", "27": "2d4e13ea2111d750", "28": "4b60cb0ee1ac186a", "29": "f56fbca9bb8235ec", "30": "c7beed940704509f", "31": "38be2d254fb31ae8", "32": "ee5596fcf7e7c0b3", "33": "e4d4e0a440bc599f", "34": "c897e49c001acdae", "35": "3aad272a2cf5d495", "36": "0a197439d306b956", "37": "f43acf5c8b1329af", "38": "6775efafc9b33338", "39": "8176a164778526f9"}
|
||||
{"0": "36bdb6f09c457f7c", "1": "8c5bf6244cf710c6", "2": "efbcc9c62a3ee78b", "3": "8599153989b07faa", "4": "b5952a1f7fee9f20", "5": "b493e66e33005daa", "6": "80f79e9e2011a3e3", "7": "4654167fd211d027", "8": "50acfa00fe353440", "9": "c6d2f770737823f1", "10": "44f2ca451aea24be", "11": "feaac5ab67a8c17a", "12": "b71bd92e5edbf2e0", "13": "219d65ba6d2689e4", "14": "8e30bb8112fd02d1", "15": "03906ab80b99db85", "16": "5d51c60ba1bc2be0", "17": "a1da914f522dcd21", "18": "fbad840891b90569", "19": "0686ff2d6fe29fb3", "20": "060baa9e1924b465", "21": "a5c8f2c3080b8243", "22": "0d76852f1d29eeb1", "23": "6ff68619f2d72924", "24": "3da11675eee7ec46", "25": "a6696589e9556f97", "26": "6c752999e8a4d4b6", "27": "2d4e13ea2111d750", "28": "4b60cb0ee1ac186a", "29": "f56fbca9bb8235ec", "30": "c7beed940704509f", "31": "38be2d254fb31ae8", "32": "ee5596fcf7e7c0b3", "33": "e4d4e0a440bc599f", "34": "c897e49c001acdae", "35": "3aad272a2cf5d495", "36": "0a197439d306b956", "37": "f43acf5c8b1329af", "38": "6775efafc9b33338", "39": "8176a164778526f9", "40": "6aa00d5a83295f11", "41": "0322ff824966a4d8", "42": "784c9e3d336a7f53", "43": "4b8bb6c3f7b64856", "44": "18c0ff3e6225bcb2", "45": "635b0327b73603cf", "46": "aebae10575e16ffb", "47": "7f0025cb1cabb27d", "48": "cbb35e88e6b7e1ac", "49": "0d0f9f015921feef", "50": "8d0c81e5ca23e9a6", "51": "f79963571b9c15ee", "52": "5935824c825606cb", "53": "9685f9cbe158e50b", "54": "3d5ab759f350bc79", "55": "d549f24931a990e9", "56": "3cc031dcb648797c", "57": "a0ab88e6c629251d", "58": "76bd6412e2a22ecd", "59": "54827845564490c9", "60": "0a9736c416c0c6b9", "61": "77358620ac528153", "62": "3b0c585df09df48a", "63": "7e78cd3b28828c20", "64": "1c0c958231735f61", "65": "60b0f81225f62f69", "66": "920754c65cc94b88", "67": "df911472140a9b94", "68": "8e17bc11bcea91b9", "69": "7e905b75e4f28b95", "70": "a28424eca5d36c55", "71": "2cdb53d5b6051ab6", "72": "e42fbd3dc744e730", "73": "7fe2cac980de160c", "74": "2b1343a6a9db1487", "75": "54a1bb232f1d4ceb", "76": "442ba11d31ec0e0a", "77": "852a25b8b95bf8d1", "78": "1810ab370b9cd608", "79": "0fc5dca02a3f02f6"}
|
||||
@@ -0,0 +1,516 @@
|
||||
{
|
||||
"communities": {
|
||||
"0": [
|
||||
"specify_templates_tasks_template",
|
||||
"specify_templates_tasks_template_dependencies_execution_order",
|
||||
"specify_templates_tasks_template_format_id_p_story_description",
|
||||
"specify_templates_tasks_template_implementation_for_user_story_1",
|
||||
"specify_templates_tasks_template_implementation_for_user_story_2",
|
||||
"specify_templates_tasks_template_implementation_for_user_story_3",
|
||||
"specify_templates_tasks_template_implementation_strategy",
|
||||
"specify_templates_tasks_template_incremental_delivery",
|
||||
"specify_templates_tasks_template_mvp_first_user_story_1_only",
|
||||
"specify_templates_tasks_template_notes",
|
||||
"specify_templates_tasks_template_parallel_example_user_story_1",
|
||||
"specify_templates_tasks_template_parallel_opportunities",
|
||||
"specify_templates_tasks_template_parallel_team_strategy",
|
||||
"specify_templates_tasks_template_path_conventions",
|
||||
"specify_templates_tasks_template_phase_1_setup_shared_infrastructure",
|
||||
"specify_templates_tasks_template_phase_2_foundational_blocking_prerequisites",
|
||||
"specify_templates_tasks_template_phase_3_user_story_1_title_priority_p1_mvp",
|
||||
"specify_templates_tasks_template_phase_4_user_story_2_title_priority_p2",
|
||||
"specify_templates_tasks_template_phase_5_user_story_3_title_priority_p3",
|
||||
"specify_templates_tasks_template_phase_dependencies",
|
||||
"specify_templates_tasks_template_phase_n_polish_cross_cutting_concerns",
|
||||
"specify_templates_tasks_template_tasks_feature_name",
|
||||
"specify_templates_tasks_template_tests_for_user_story_1_optional_only_if_tests_requested",
|
||||
"specify_templates_tasks_template_tests_for_user_story_2_optional_only_if_tests_requested",
|
||||
"specify_templates_tasks_template_tests_for_user_story_3_optional_only_if_tests_requested",
|
||||
"specify_templates_tasks_template_user_story_dependencies",
|
||||
"specify_templates_tasks_template_within_each_user_story"
|
||||
],
|
||||
"1": [
|
||||
"agents_skills_speckit_converge_skill",
|
||||
"agents_skills_speckit_converge_skill_1_initialize_convergence_context",
|
||||
"agents_skills_speckit_converge_skill_2_load_artifacts_progressive_disclosure",
|
||||
"agents_skills_speckit_converge_skill_3_build_the_intent_inventory",
|
||||
"agents_skills_speckit_converge_skill_4_assess_the_codebase_and_classify_findings",
|
||||
"agents_skills_speckit_converge_skill_5_assign_severity",
|
||||
"agents_skills_speckit_converge_skill_6_present_the_in_session_findings_summary",
|
||||
"agents_skills_speckit_converge_skill_7_append_convergence_tasks_or_report_converged",
|
||||
"agents_skills_speckit_converge_skill_8_provide_next_actions_handoff",
|
||||
"agents_skills_speckit_converge_skill_9_check_for_extension_hooks",
|
||||
"agents_skills_speckit_converge_skill_convergence_findings",
|
||||
"agents_skills_speckit_converge_skill_execution_steps",
|
||||
"agents_skills_speckit_converge_skill_goal",
|
||||
"agents_skills_speckit_converge_skill_operating_constraints",
|
||||
"agents_skills_speckit_converge_skill_pre_execution_checks",
|
||||
"agents_skills_speckit_converge_skill_user_input"
|
||||
],
|
||||
"2": [
|
||||
"specify_scripts_powershell_common",
|
||||
"specify_scripts_powershell_common_find_specifyroot",
|
||||
"specify_scripts_powershell_common_format_speckitcommand",
|
||||
"specify_scripts_powershell_common_get_currentbranch",
|
||||
"specify_scripts_powershell_common_get_featurepathsenv",
|
||||
"specify_scripts_powershell_common_get_invokeseparator",
|
||||
"specify_scripts_powershell_common_get_normalizedpriority",
|
||||
"specify_scripts_powershell_common_get_python3command",
|
||||
"specify_scripts_powershell_common_get_reporoot",
|
||||
"specify_scripts_powershell_common_get_sortedextensionids",
|
||||
"specify_scripts_powershell_common_resolve_specifyinitdir",
|
||||
"specify_scripts_powershell_common_resolve_template",
|
||||
"specify_scripts_powershell_common_resolve_templatecontent",
|
||||
"specify_scripts_powershell_common_save_featurejson",
|
||||
"specify_scripts_powershell_common_test_dirhasfiles",
|
||||
"specify_scripts_powershell_common_test_fileexists"
|
||||
],
|
||||
"3": [
|
||||
"agents_skills_graphify_skill",
|
||||
"agents_skills_graphify_skill_for_graphify_add_and_watch",
|
||||
"agents_skills_graphify_skill_for_graphify_query",
|
||||
"agents_skills_graphify_skill_for_the_commit_hook_and_native_claude_md_integration",
|
||||
"agents_skills_graphify_skill_for_update_and_cluster_only",
|
||||
"agents_skills_graphify_skill_graphify",
|
||||
"agents_skills_graphify_skill_honesty_rules",
|
||||
"agents_skills_graphify_skill_interpreter_guard_for_subcommands",
|
||||
"agents_skills_graphify_skill_part_a_structural_extraction_for_code_files",
|
||||
"agents_skills_graphify_skill_part_b_semantic_extraction_parallel_subagents",
|
||||
"agents_skills_graphify_skill_part_c_merge_ast_semantic_into_final_extraction",
|
||||
"agents_skills_graphify_skill_step_0_github_repos_and_multi_path_merge_only_if_a_url_or_several_paths",
|
||||
"agents_skills_graphify_skill_step_1_ensure_graphify_is_installed",
|
||||
"agents_skills_graphify_skill_step_2_5_video_and_audio_only_if_video_files_detected",
|
||||
"agents_skills_graphify_skill_step_2_detect_files",
|
||||
"agents_skills_graphify_skill_step_3_extract_entities_and_relationships",
|
||||
"agents_skills_graphify_skill_step_4_5_graph_health_check_read_only_integrity_gate",
|
||||
"agents_skills_graphify_skill_step_4_build_graph_cluster_analyze_generate_outputs",
|
||||
"agents_skills_graphify_skill_step_5_label_communities",
|
||||
"agents_skills_graphify_skill_step_6_generate_obsidian_vault_opt_in_html",
|
||||
"agents_skills_graphify_skill_step_9_save_manifest_update_cost_tracker_clean_up_and_report",
|
||||
"agents_skills_graphify_skill_steps_6b_8_wiki_neo4j_falkordb_svg_graphml_mcp_benchmark_only_on_their_flags",
|
||||
"agents_skills_graphify_skill_usage",
|
||||
"agents_skills_graphify_skill_what_graphify_is_for",
|
||||
"agents_skills_graphify_skill_what_you_must_do_when_invoked"
|
||||
],
|
||||
"4": [
|
||||
"agents_skills_speckit_analyze_skill",
|
||||
"agents_skills_speckit_analyze_skill_7_provide_next_actions",
|
||||
"agents_skills_speckit_analyze_skill_8_offer_remediation",
|
||||
"agents_skills_speckit_analyze_skill_9_check_for_extension_hooks",
|
||||
"agents_skills_speckit_analyze_skill_analysis_guidelines",
|
||||
"agents_skills_speckit_analyze_skill_context",
|
||||
"agents_skills_speckit_analyze_skill_context_efficiency",
|
||||
"agents_skills_speckit_analyze_skill_goal",
|
||||
"agents_skills_speckit_analyze_skill_operating_constraints",
|
||||
"agents_skills_speckit_analyze_skill_operating_principles",
|
||||
"agents_skills_speckit_analyze_skill_pre_execution_checks",
|
||||
"agents_skills_speckit_analyze_skill_specification_analysis_report",
|
||||
"agents_skills_speckit_analyze_skill_user_input"
|
||||
],
|
||||
"5": [
|
||||
"agents_skills_speckit_analyze_skill_1_initialize_analysis_context",
|
||||
"agents_skills_speckit_analyze_skill_2_load_artifacts_progressive_disclosure",
|
||||
"agents_skills_speckit_analyze_skill_3_build_semantic_models",
|
||||
"agents_skills_speckit_analyze_skill_4_detection_passes_token_efficient_analysis",
|
||||
"agents_skills_speckit_analyze_skill_5_severity_assignment",
|
||||
"agents_skills_speckit_analyze_skill_6_produce_compact_analysis_report",
|
||||
"agents_skills_speckit_analyze_skill_a_duplication_detection",
|
||||
"agents_skills_speckit_analyze_skill_b_ambiguity_detection",
|
||||
"agents_skills_speckit_analyze_skill_c_underspecification",
|
||||
"agents_skills_speckit_analyze_skill_d_constitution_alignment",
|
||||
"agents_skills_speckit_analyze_skill_e_coverage_gaps",
|
||||
"agents_skills_speckit_analyze_skill_execution_steps",
|
||||
"agents_skills_speckit_analyze_skill_f_inconsistency"
|
||||
],
|
||||
"6": [
|
||||
"specify_templates_spec_template",
|
||||
"specify_templates_spec_template_assumptions",
|
||||
"specify_templates_spec_template_edge_cases",
|
||||
"specify_templates_spec_template_feature_specification_feature_name",
|
||||
"specify_templates_spec_template_functional_requirements",
|
||||
"specify_templates_spec_template_key_entities_include_if_feature_involves_data",
|
||||
"specify_templates_spec_template_measurable_outcomes",
|
||||
"specify_templates_spec_template_requirements_mandatory",
|
||||
"specify_templates_spec_template_success_criteria_mandatory",
|
||||
"specify_templates_spec_template_user_scenarios_testing_mandatory",
|
||||
"specify_templates_spec_template_user_story_1_brief_title_priority_p1",
|
||||
"specify_templates_spec_template_user_story_2_brief_title_priority_p2",
|
||||
"specify_templates_spec_template_user_story_3_brief_title_priority_p3"
|
||||
],
|
||||
"7": [
|
||||
"agents_rules_graphify",
|
||||
"agents_rules_graphify_graphify"
|
||||
],
|
||||
"8": [
|
||||
"agents_skills_speckit_plan_skill",
|
||||
"agents_skills_speckit_plan_skill_completion_report",
|
||||
"agents_skills_speckit_plan_skill_done_when",
|
||||
"agents_skills_speckit_plan_skill_key_rules",
|
||||
"agents_skills_speckit_plan_skill_mandatory_post_execution_hooks",
|
||||
"agents_skills_speckit_plan_skill_outline",
|
||||
"agents_skills_speckit_plan_skill_phase_0_outline_research",
|
||||
"agents_skills_speckit_plan_skill_phase_1_design_contracts",
|
||||
"agents_skills_speckit_plan_skill_phases",
|
||||
"agents_skills_speckit_plan_skill_pre_execution_checks",
|
||||
"agents_skills_speckit_plan_skill_user_input"
|
||||
],
|
||||
"9": [
|
||||
"agents_skills_speckit_specify_skill",
|
||||
"agents_skills_speckit_specify_skill_completion_report",
|
||||
"agents_skills_speckit_specify_skill_done_when",
|
||||
"agents_skills_speckit_specify_skill_for_ai_generation",
|
||||
"agents_skills_speckit_specify_skill_mandatory_post_execution_hooks",
|
||||
"agents_skills_speckit_specify_skill_outline",
|
||||
"agents_skills_speckit_specify_skill_pre_execution_checks",
|
||||
"agents_skills_speckit_specify_skill_quick_guidelines",
|
||||
"agents_skills_speckit_specify_skill_section_requirements",
|
||||
"agents_skills_speckit_specify_skill_success_criteria_guidelines",
|
||||
"agents_skills_speckit_specify_skill_user_input"
|
||||
],
|
||||
"10": [
|
||||
"agents_skills_speckit_tasks_skill",
|
||||
"agents_skills_speckit_tasks_skill_checklist_format_required",
|
||||
"agents_skills_speckit_tasks_skill_completion_report",
|
||||
"agents_skills_speckit_tasks_skill_done_when",
|
||||
"agents_skills_speckit_tasks_skill_mandatory_post_execution_hooks",
|
||||
"agents_skills_speckit_tasks_skill_outline",
|
||||
"agents_skills_speckit_tasks_skill_phase_structure",
|
||||
"agents_skills_speckit_tasks_skill_pre_execution_checks",
|
||||
"agents_skills_speckit_tasks_skill_task_generation_rules",
|
||||
"agents_skills_speckit_tasks_skill_task_organization",
|
||||
"agents_skills_speckit_tasks_skill_user_input"
|
||||
],
|
||||
"11": [
|
||||
"specify_memory_constitution",
|
||||
"specify_memory_constitution_core_principles",
|
||||
"specify_memory_constitution_governance",
|
||||
"specify_memory_constitution_principle_1_name",
|
||||
"specify_memory_constitution_principle_2_name",
|
||||
"specify_memory_constitution_principle_3_name",
|
||||
"specify_memory_constitution_principle_4_name",
|
||||
"specify_memory_constitution_principle_5_name",
|
||||
"specify_memory_constitution_project_name_constitution",
|
||||
"specify_memory_constitution_section_2_name",
|
||||
"specify_memory_constitution_section_3_name"
|
||||
],
|
||||
"12": [
|
||||
"specify_templates_constitution_template",
|
||||
"specify_templates_constitution_template_core_principles",
|
||||
"specify_templates_constitution_template_governance",
|
||||
"specify_templates_constitution_template_principle_1_name",
|
||||
"specify_templates_constitution_template_principle_2_name",
|
||||
"specify_templates_constitution_template_principle_3_name",
|
||||
"specify_templates_constitution_template_principle_4_name",
|
||||
"specify_templates_constitution_template_principle_5_name",
|
||||
"specify_templates_constitution_template_project_name_constitution",
|
||||
"specify_templates_constitution_template_section_2_name",
|
||||
"specify_templates_constitution_template_section_3_name"
|
||||
],
|
||||
"13": [
|
||||
"agents_skills_graphify_references_exports",
|
||||
"agents_skills_graphify_references_exports_graphify_reference_extra_exports_and_benchmark",
|
||||
"agents_skills_graphify_references_exports_step_6b_wiki_only_if_wiki_flag",
|
||||
"agents_skills_graphify_references_exports_step_7_neo4j_export_only_if_neo4j_or_neo4j_push_flag",
|
||||
"agents_skills_graphify_references_exports_step_7a_falkordb_export_only_if_falkordb_or_falkordb_push_flag",
|
||||
"agents_skills_graphify_references_exports_step_7b_svg_export_only_if_svg_flag",
|
||||
"agents_skills_graphify_references_exports_step_7c_graphml_export_only_if_graphml_flag",
|
||||
"agents_skills_graphify_references_exports_step_7d_mcp_server_only_if_mcp_flag",
|
||||
"agents_skills_graphify_references_exports_step_8_token_reduction_benchmark_only_if_total_words_5000"
|
||||
],
|
||||
"14": [
|
||||
"agents_skills_ponytail_skill",
|
||||
"agents_skills_ponytail_skill_boundaries",
|
||||
"agents_skills_ponytail_skill_intensity",
|
||||
"agents_skills_ponytail_skill_output",
|
||||
"agents_skills_ponytail_skill_persistence",
|
||||
"agents_skills_ponytail_skill_ponytail",
|
||||
"agents_skills_ponytail_skill_rules",
|
||||
"agents_skills_ponytail_skill_the_ladder",
|
||||
"agents_skills_ponytail_skill_when_not_to_be_lazy"
|
||||
],
|
||||
"15": [
|
||||
"specify_templates_plan_template",
|
||||
"specify_templates_plan_template_complexity_tracking",
|
||||
"specify_templates_plan_template_constitution_check",
|
||||
"specify_templates_plan_template_documentation_this_feature",
|
||||
"specify_templates_plan_template_implementation_plan_feature",
|
||||
"specify_templates_plan_template_project_structure",
|
||||
"specify_templates_plan_template_source_code_repository_root",
|
||||
"specify_templates_plan_template_summary",
|
||||
"specify_templates_plan_template_technical_context"
|
||||
],
|
||||
"16": [
|
||||
"agents_skills_ponytail_help_skill",
|
||||
"agents_skills_ponytail_help_skill_configure_default_mode",
|
||||
"agents_skills_ponytail_help_skill_deactivate",
|
||||
"agents_skills_ponytail_help_skill_levels",
|
||||
"agents_skills_ponytail_help_skill_more",
|
||||
"agents_skills_ponytail_help_skill_ponytail_help",
|
||||
"agents_skills_ponytail_help_skill_skills",
|
||||
"agents_skills_ponytail_help_skill_update"
|
||||
],
|
||||
"17": [
|
||||
"agents_skills_speckit_checklist_skill",
|
||||
"agents_skills_speckit_checklist_skill_anti_examples_what_not_to_do",
|
||||
"agents_skills_speckit_checklist_skill_checklist_purpose_unit_tests_for_english",
|
||||
"agents_skills_speckit_checklist_skill_example_checklist_types_sample_items",
|
||||
"agents_skills_speckit_checklist_skill_execution_steps",
|
||||
"agents_skills_speckit_checklist_skill_post_execution_checks",
|
||||
"agents_skills_speckit_checklist_skill_pre_execution_checks",
|
||||
"agents_skills_speckit_checklist_skill_user_input"
|
||||
],
|
||||
"18": [
|
||||
"agents_skills_speckit_clarify_skill",
|
||||
"agents_skills_speckit_clarify_skill_completion_report",
|
||||
"agents_skills_speckit_clarify_skill_done_when",
|
||||
"agents_skills_speckit_clarify_skill_mandatory_post_execution_hooks",
|
||||
"agents_skills_speckit_clarify_skill_outline",
|
||||
"agents_skills_speckit_clarify_skill_pre_execution_checks",
|
||||
"agents_skills_speckit_clarify_skill_user_input"
|
||||
],
|
||||
"19": [
|
||||
"agents_skills_speckit_implement_skill",
|
||||
"agents_skills_speckit_implement_skill_completion_report",
|
||||
"agents_skills_speckit_implement_skill_done_when",
|
||||
"agents_skills_speckit_implement_skill_mandatory_post_execution_hooks",
|
||||
"agents_skills_speckit_implement_skill_outline",
|
||||
"agents_skills_speckit_implement_skill_pre_execution_checks",
|
||||
"agents_skills_speckit_implement_skill_user_input"
|
||||
],
|
||||
"20": [
|
||||
"agents_skills_graphify_references_query",
|
||||
"agents_skills_graphify_references_query_for_graphify_explain",
|
||||
"agents_skills_graphify_references_query_for_graphify_path",
|
||||
"agents_skills_graphify_references_query_graphify_reference_query_path_explain",
|
||||
"agents_skills_graphify_references_query_step_0_constrained_query_expansion_required_before_traversal",
|
||||
"agents_skills_graphify_references_query_step_1_traversal"
|
||||
],
|
||||
"21": [
|
||||
"agents_skills_speckit_constitution_skill",
|
||||
"agents_skills_speckit_constitution_skill_outline",
|
||||
"agents_skills_speckit_constitution_skill_post_execution_checks",
|
||||
"agents_skills_speckit_constitution_skill_pre_execution_checks",
|
||||
"agents_skills_speckit_constitution_skill_scope_guard",
|
||||
"agents_skills_speckit_constitution_skill_user_input"
|
||||
],
|
||||
"22": [
|
||||
"specify_scripts_powershell_create_new_feature",
|
||||
"specify_scripts_powershell_create_new_feature_convertto_cleanbranchname",
|
||||
"specify_scripts_powershell_create_new_feature_get_branchname",
|
||||
"specify_scripts_powershell_create_new_feature_get_fittedbranchname",
|
||||
"specify_scripts_powershell_create_new_feature_get_highestnumberfromspecs",
|
||||
"specify_scripts_powershell_create_new_feature_test_specprefixinuse"
|
||||
],
|
||||
"23": [
|
||||
"agents_skills_ponytail_audit_skill",
|
||||
"agents_skills_ponytail_audit_skill_boundaries",
|
||||
"agents_skills_ponytail_audit_skill_hunt",
|
||||
"agents_skills_ponytail_audit_skill_output",
|
||||
"agents_skills_ponytail_audit_skill_tags"
|
||||
],
|
||||
"24": [
|
||||
"agents_skills_ponytail_gain_skill",
|
||||
"agents_skills_ponytail_gain_skill_boundaries",
|
||||
"agents_skills_ponytail_gain_skill_honesty_boundary",
|
||||
"agents_skills_ponytail_gain_skill_ponytail_gain",
|
||||
"agents_skills_ponytail_gain_skill_scoreboard"
|
||||
],
|
||||
"25": [
|
||||
"agents_skills_ponytail_review_skill",
|
||||
"agents_skills_ponytail_review_skill_boundaries",
|
||||
"agents_skills_ponytail_review_skill_examples",
|
||||
"agents_skills_ponytail_review_skill_format",
|
||||
"agents_skills_ponytail_review_skill_scoring"
|
||||
],
|
||||
"26": [
|
||||
"agents_skills_speckit_taskstoissues_skill",
|
||||
"agents_skills_speckit_taskstoissues_skill_outline",
|
||||
"agents_skills_speckit_taskstoissues_skill_post_execution_checks",
|
||||
"agents_skills_speckit_taskstoissues_skill_pre_execution_checks",
|
||||
"agents_skills_speckit_taskstoissues_skill_user_input"
|
||||
],
|
||||
"27": [
|
||||
"specify_templates_checklist_template",
|
||||
"specify_templates_checklist_template_category_1",
|
||||
"specify_templates_checklist_template_category_2",
|
||||
"specify_templates_checklist_template_checklist_type_checklist_feature_name",
|
||||
"specify_templates_checklist_template_notes"
|
||||
],
|
||||
"28": [
|
||||
"agents_skills_graphify_references_add_watch",
|
||||
"agents_skills_graphify_references_add_watch_for_graphify_add",
|
||||
"agents_skills_graphify_references_add_watch_for_watch",
|
||||
"agents_skills_graphify_references_add_watch_graphify_reference_add_a_url_and_watch_a_folder"
|
||||
],
|
||||
"29": [
|
||||
"agents_skills_graphify_references_hooks",
|
||||
"agents_skills_graphify_references_hooks_for_git_commit_hook",
|
||||
"agents_skills_graphify_references_hooks_for_native_claude_md_integration",
|
||||
"agents_skills_graphify_references_hooks_graphify_reference_commit_hook_and_native_claude_md_integration"
|
||||
],
|
||||
"30": [
|
||||
"agents_skills_graphify_references_update",
|
||||
"agents_skills_graphify_references_update_for_cluster_only",
|
||||
"agents_skills_graphify_references_update_for_update_incremental_re_extraction",
|
||||
"agents_skills_graphify_references_update_graphify_reference_incremental_update_and_cluster_only"
|
||||
],
|
||||
"31": [
|
||||
"agents_skills_ponytail_debt_skill",
|
||||
"agents_skills_ponytail_debt_skill_boundaries",
|
||||
"agents_skills_ponytail_debt_skill_output",
|
||||
"agents_skills_ponytail_debt_skill_scan"
|
||||
],
|
||||
"32": [
|
||||
"agents_skills_graphify_references_github_and_merge",
|
||||
"agents_skills_graphify_references_github_and_merge_graphify_reference_github_clone_and_cross_repo_merge",
|
||||
"agents_skills_graphify_references_github_and_merge_step_0_clone_github_repo_s_only_if_a_github_url_was_given"
|
||||
],
|
||||
"33": [
|
||||
"agents_skills_graphify_references_transcribe",
|
||||
"agents_skills_graphify_references_transcribe_graphify_reference_transcribe_video_and_audio",
|
||||
"agents_skills_graphify_references_transcribe_step_2_5_transcribe_video_audio_files_only_if_video_files_detected"
|
||||
],
|
||||
"34": [
|
||||
"agents_skills_graphify_references_extraction_spec",
|
||||
"agents_skills_graphify_references_extraction_spec_graphify_reference_extraction_subagent_prompt"
|
||||
],
|
||||
"35": [
|
||||
"specify_scripts_powershell_check_prerequisites"
|
||||
],
|
||||
"36": [
|
||||
"specify_scripts_powershell_resolve_template"
|
||||
],
|
||||
"37": [
|
||||
"specify_scripts_powershell_setup_plan"
|
||||
],
|
||||
"38": [
|
||||
"specify_scripts_powershell_setup_tasks"
|
||||
],
|
||||
"39": [
|
||||
"agents_workflows_graphify",
|
||||
"agents_workflows_graphify_workflow_graphify"
|
||||
]
|
||||
},
|
||||
"cohesion": {
|
||||
"0": 0.07407407407407407,
|
||||
"1": 0.125,
|
||||
"2": 0.225,
|
||||
"3": 0.08,
|
||||
"4": 0.15384615384615385,
|
||||
"5": 0.15384615384615385,
|
||||
"6": 0.15384615384615385,
|
||||
"7": 1.0,
|
||||
"8": 0.18181818181818182,
|
||||
"9": 0.18181818181818182,
|
||||
"10": 0.18181818181818182,
|
||||
"11": 0.18181818181818182,
|
||||
"12": 0.18181818181818182,
|
||||
"13": 0.2222222222222222,
|
||||
"14": 0.2222222222222222,
|
||||
"15": 0.2222222222222222,
|
||||
"16": 0.25,
|
||||
"17": 0.25,
|
||||
"18": 0.2857142857142857,
|
||||
"19": 0.2857142857142857,
|
||||
"20": 0.3333333333333333,
|
||||
"21": 0.3333333333333333,
|
||||
"22": 0.4,
|
||||
"23": 0.4,
|
||||
"24": 0.4,
|
||||
"25": 0.4,
|
||||
"26": 0.4,
|
||||
"27": 0.4,
|
||||
"28": 0.5,
|
||||
"29": 0.5,
|
||||
"30": 0.5,
|
||||
"31": 0.5,
|
||||
"32": 0.6666666666666666,
|
||||
"33": 0.6666666666666666,
|
||||
"34": 1.0,
|
||||
"35": 1.0,
|
||||
"36": 1.0,
|
||||
"37": 1.0,
|
||||
"38": 1.0,
|
||||
"39": 1.0
|
||||
},
|
||||
"gods": [
|
||||
{
|
||||
"id": "specify_templates_tasks_template_tasks_feature_name",
|
||||
"label": "Tasks: [FEATURE NAME]",
|
||||
"degree": 13
|
||||
},
|
||||
{
|
||||
"id": "agents_skills_graphify_skill_what_you_must_do_when_invoked",
|
||||
"label": "What You Must Do When Invoked",
|
||||
"degree": 12
|
||||
},
|
||||
{
|
||||
"id": "agents_skills_graphify_skill_graphify",
|
||||
"label": "/graphify",
|
||||
"degree": 10
|
||||
},
|
||||
{
|
||||
"id": "agents_skills_graphify_references_exports_graphify_reference_extra_exports_and_benchmark",
|
||||
"label": "graphify reference: extra exports and benchmark",
|
||||
"degree": 8
|
||||
},
|
||||
{
|
||||
"id": "agents_skills_ponytail_skill_ponytail",
|
||||
"label": "Ponytail",
|
||||
"degree": 8
|
||||
},
|
||||
{
|
||||
"id": "agents_skills_speckit_converge_skill_execution_steps",
|
||||
"label": "Execution Steps",
|
||||
"degree": 7
|
||||
},
|
||||
{
|
||||
"id": "agents_skills_ponytail_help_skill_ponytail_help",
|
||||
"label": "Ponytail Help",
|
||||
"degree": 7
|
||||
},
|
||||
{
|
||||
"id": "agents_skills_speckit_analyze_skill_4_detection_passes_token_efficient_analysis",
|
||||
"label": "4. Detection Passes (Token-Efficient Analysis)",
|
||||
"degree": 7
|
||||
},
|
||||
{
|
||||
"id": "agents_skills_speckit_analyze_skill_execution_steps",
|
||||
"label": "Execution Steps",
|
||||
"degree": 7
|
||||
},
|
||||
{
|
||||
"id": "specify_memory_constitution_core_principles",
|
||||
"label": "Core Principles",
|
||||
"degree": 6
|
||||
}
|
||||
],
|
||||
"surprises": [],
|
||||
"questions": [
|
||||
{
|
||||
"type": "bridge_node",
|
||||
"question": "Why does `Execution Steps` connect `Analysis Detection` to `Specification Analysis`?",
|
||||
"why": "High betweenness centrality (0.004) - this node is a cross-community bridge."
|
||||
},
|
||||
{
|
||||
"type": "isolated_nodes",
|
||||
"question": "What connects `Format: `[ID] [P?] [Story] Description``, `Implementation for User Story 1`, `Implementation for User Story 2` to the rest of the system?",
|
||||
"why": "212 weakly-connected nodes found - possible documentation gaps or missing edges."
|
||||
},
|
||||
{
|
||||
"type": "low_cohesion",
|
||||
"question": "Should `Task Planning` be split into smaller, more focused modules?",
|
||||
"why": "Cohesion score 0.07407407407407407 - nodes in this community are weakly interconnected."
|
||||
},
|
||||
{
|
||||
"type": "low_cohesion",
|
||||
"question": "Should `Convergence Workflow` be split into smaller, more focused modules?",
|
||||
"why": "Cohesion score 0.125 - nodes in this community are weakly interconnected."
|
||||
},
|
||||
{
|
||||
"type": "low_cohesion",
|
||||
"question": "Should `Graphify Commands` be split into smaller, more focused modules?",
|
||||
"why": "Cohesion score 0.08 - nodes in this community are weakly interconnected."
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,42 +1,47 @@
|
||||
{
|
||||
"0": "Tasks: [FEATURE NAME]",
|
||||
"1": "Execution Steps",
|
||||
"2": "common.ps1",
|
||||
"3": "What You Must Do When Invoked",
|
||||
"0": "Task Planning",
|
||||
"1": "Convergence Workflow",
|
||||
"2": "SpecKit Utilities",
|
||||
"3": "Graphify Commands",
|
||||
"4": "speckit-analyze/SKILL.md",
|
||||
"5": "4. Detection Passes (Token-Efficient Analysis)",
|
||||
"6": "Feature Specification: [FEATURE NAME]",
|
||||
"7": "rules/graphify.md",
|
||||
"8": "speckit-plan/SKILL.md",
|
||||
"9": "speckit-specify/SKILL.md",
|
||||
"10": "speckit-tasks/SKILL.md",
|
||||
"11": "Core Principles",
|
||||
"12": "Core Principles",
|
||||
"13": "graphify reference: extra exports and benchmark",
|
||||
"14": "Ponytail",
|
||||
"15": "Implementation Plan: [FEATURE]",
|
||||
"5": "Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC)",
|
||||
"6": "Feature Specification Template",
|
||||
"7": "Graphify Rules",
|
||||
"8": "Implementation Planning",
|
||||
"9": "Feature Specification",
|
||||
"10": "Task Generation",
|
||||
"11": "Project Constitution",
|
||||
"12": "Constitution Template",
|
||||
"13": "Graphify Exports",
|
||||
"14": "Ponytail Configuration",
|
||||
"15": "Implementation Planning Template",
|
||||
"16": "Ponytail Help",
|
||||
"17": "speckit-checklist/SKILL.md",
|
||||
"18": "speckit-clarify/SKILL.md",
|
||||
"19": "speckit-implement/SKILL.md",
|
||||
"20": "graphify reference: query, path, explain",
|
||||
"21": "speckit-constitution/SKILL.md",
|
||||
"22": "create-new-feature.ps1",
|
||||
"23": "ponytail-audit/SKILL.md",
|
||||
"24": "Ponytail Gain",
|
||||
"25": "ponytail-review/SKILL.md",
|
||||
"26": "speckit-taskstoissues/SKILL.md",
|
||||
"27": "[CHECKLIST TYPE] Checklist: [FEATURE NAME]",
|
||||
"28": "graphify reference: add a URL and watch a folder",
|
||||
"29": "graphify reference: commit hook and native CLAUDE.md integration",
|
||||
"30": "graphify reference: incremental update and cluster-only",
|
||||
"31": "ponytail-debt/SKILL.md",
|
||||
"32": "graphify reference: GitHub clone and cross-repo merge",
|
||||
"33": "graphify reference: transcribe video and audio",
|
||||
"34": "extraction-spec.md",
|
||||
"35": "check-prerequisites.ps1",
|
||||
"36": "resolve-template.ps1",
|
||||
"37": "setup-plan.ps1",
|
||||
"38": "setup-tasks.ps1",
|
||||
"39": "workflows/graphify.md"
|
||||
"17": "Checklist Generation",
|
||||
"18": "Clarification Workflow",
|
||||
"19": "Implementation Workflow",
|
||||
"20": "Graph Query",
|
||||
"21": "Constitution Workflow",
|
||||
"22": "Feature Branch Creation",
|
||||
"23": "Ponytail Audit",
|
||||
"24": "Ponytail Metrics",
|
||||
"25": "Ponytail Review",
|
||||
"26": "Task Issue Conversion",
|
||||
"27": "Checklist Template",
|
||||
"28": "Graphify Watch Mode",
|
||||
"29": "Graphify Hooks",
|
||||
"30": "Graphify Updates",
|
||||
"31": "Ponytail Debt",
|
||||
"32": "Repository Merge",
|
||||
"33": "Media Transcription",
|
||||
"34": "Extraction Specification",
|
||||
"35": "Prerequisite Checks",
|
||||
"36": "Template Resolution",
|
||||
"37": "Plan Setup",
|
||||
"38": "Task Setup",
|
||||
"39": "Graphify Workflows",
|
||||
"40": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)",
|
||||
"41": "1. Technical Decisions & Tradeoffs",
|
||||
"42": "1. Input Schemas",
|
||||
"43": "2. Basic CLI Usage Examples",
|
||||
"44": "2. Standard Streams & Exit Codes"
|
||||
}
|
||||
|
||||
@@ -1,51 +1,61 @@
|
||||
# Graph Report - TextNLPClassifierApp (2026-08-19)
|
||||
|
||||
## Corpus Check
|
||||
- 45 files · ~42,078 words
|
||||
- 52 files · ~46,168 words
|
||||
- Verdict: corpus is large enough that graph structure adds value.
|
||||
|
||||
## Summary
|
||||
- 310 nodes · 284 edges · 40 communities (34 shown, 6 thin omitted)
|
||||
- 372 nodes · 341 edges · 45 communities (39 shown, 6 thin omitted)
|
||||
- Extraction: 100% EXTRACTED · 0% INFERRED · 0% AMBIGUOUS
|
||||
- Token cost: 0 input · 0 output
|
||||
|
||||
## Graph Freshness
|
||||
- Built from commit: `d371b81a`
|
||||
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
|
||||
- Run `graphify update .` after code changes (no API cost).
|
||||
|
||||
## Community Hubs (Navigation)
|
||||
- Tasks: [FEATURE NAME]
|
||||
- Execution Steps
|
||||
- common.ps1
|
||||
- What You Must Do When Invoked
|
||||
- Task Planning
|
||||
- Convergence Workflow
|
||||
- SpecKit Utilities
|
||||
- Graphify Commands
|
||||
- speckit-analyze/SKILL.md
|
||||
- 4. Detection Passes (Token-Efficient Analysis)
|
||||
- Feature Specification: [FEATURE NAME]
|
||||
- rules/graphify.md
|
||||
- speckit-plan/SKILL.md
|
||||
- speckit-specify/SKILL.md
|
||||
- speckit-tasks/SKILL.md
|
||||
- Core Principles
|
||||
- Core Principles
|
||||
- graphify reference: extra exports and benchmark
|
||||
- Ponytail
|
||||
- Implementation Plan: [FEATURE]
|
||||
- Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC)
|
||||
- Feature Specification Template
|
||||
- Graphify Rules
|
||||
- Implementation Planning
|
||||
- Feature Specification
|
||||
- Task Generation
|
||||
- Project Constitution
|
||||
- Constitution Template
|
||||
- Graphify Exports
|
||||
- Ponytail Configuration
|
||||
- Implementation Planning Template
|
||||
- Ponytail Help
|
||||
- speckit-checklist/SKILL.md
|
||||
- speckit-clarify/SKILL.md
|
||||
- speckit-implement/SKILL.md
|
||||
- graphify reference: query, path, explain
|
||||
- speckit-constitution/SKILL.md
|
||||
- create-new-feature.ps1
|
||||
- ponytail-audit/SKILL.md
|
||||
- Ponytail Gain
|
||||
- ponytail-review/SKILL.md
|
||||
- speckit-taskstoissues/SKILL.md
|
||||
- [CHECKLIST TYPE] Checklist: [FEATURE NAME]
|
||||
- graphify reference: add a URL and watch a folder
|
||||
- graphify reference: commit hook and native CLAUDE.md integration
|
||||
- graphify reference: incremental update and cluster-only
|
||||
- ponytail-debt/SKILL.md
|
||||
- graphify reference: GitHub clone and cross-repo merge
|
||||
- graphify reference: transcribe video and audio
|
||||
- extraction-spec.md
|
||||
- workflows/graphify.md
|
||||
- Checklist Generation
|
||||
- Clarification Workflow
|
||||
- Implementation Workflow
|
||||
- Graph Query
|
||||
- Constitution Workflow
|
||||
- Feature Branch Creation
|
||||
- Ponytail Audit
|
||||
- Ponytail Metrics
|
||||
- Ponytail Review
|
||||
- Task Issue Conversion
|
||||
- Checklist Template
|
||||
- Graphify Watch Mode
|
||||
- Graphify Hooks
|
||||
- Graphify Updates
|
||||
- Ponytail Debt
|
||||
- Repository Merge
|
||||
- Media Transcription
|
||||
- Extraction Specification
|
||||
- Graphify Workflows
|
||||
- Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)
|
||||
- 1. Technical Decisions & Tradeoffs
|
||||
- 1. Input Schemas
|
||||
- 2. Basic CLI Usage Examples
|
||||
- 2. Standard Streams & Exit Codes
|
||||
|
||||
## God Nodes (most connected - your core abstractions)
|
||||
1. `Tasks: [FEATURE NAME]` - 13 edges
|
||||
@@ -65,65 +75,65 @@
|
||||
## Import Cycles
|
||||
- None detected.
|
||||
|
||||
## Communities (40 total, 6 thin omitted)
|
||||
## Communities (45 total, 6 thin omitted)
|
||||
|
||||
### Community 0 - "Tasks: [FEATURE NAME]"
|
||||
### Community 0 - "Task Planning"
|
||||
Cohesion: 0.07
|
||||
Nodes (26): Dependencies & Execution Order, Format: `[ID] [P?] [Story] Description`, Implementation for User Story 1, Implementation for User Story 2, Implementation for User Story 3, Implementation Strategy, Incremental Delivery, MVP First (User Story 1 Only) (+18 more)
|
||||
|
||||
### Community 1 - "Execution Steps"
|
||||
### Community 1 - "Convergence Workflow"
|
||||
Cohesion: 0.12
|
||||
Nodes (15): 1. Initialize Convergence Context, 2. Load Artifacts (Progressive Disclosure), 3. Build the Intent Inventory, 4. Assess the Codebase and Classify Findings, 5. Assign Severity, 6. Present the In-Session Findings Summary, 7. Append Convergence Tasks (or report converged), 8. Provide Next Actions (Handoff) (+7 more)
|
||||
|
||||
### Community 2 - "common.ps1"
|
||||
### Community 2 - "SpecKit Utilities"
|
||||
Cohesion: 0.23
|
||||
Nodes (13): Find-SpecifyRoot(), Format-SpecKitCommand(), Get-CurrentBranch(), Get-FeaturePathsEnv(), Get-InvokeSeparator(), Get-NormalizedPriority(), Get-Python3Command(), Get-RepoRoot() (+5 more)
|
||||
|
||||
### Community 3 - "What You Must Do When Invoked"
|
||||
### Community 3 - "Graphify Commands"
|
||||
Cohesion: 0.08
|
||||
Nodes (24): For /graphify add and --watch, For /graphify query, For the commit hook and native CLAUDE.md integration, For --update and --cluster-only, /graphify, Honesty Rules, Interpreter guard for subcommands, Part A - Structural extraction for code files (+16 more)
|
||||
|
||||
### Community 4 - "speckit-analyze/SKILL.md"
|
||||
Cohesion: 0.15
|
||||
Nodes (12): 7. Provide Next Actions, 8. Offer Remediation, 9. Check for extension hooks, Analysis Guidelines, Context, Context Efficiency, Goal, Operating Constraints (+4 more)
|
||||
Cohesion: 0.08
|
||||
Nodes (25): 1. Initialize Analysis Context, 2. Load Artifacts (Progressive Disclosure), 3. Build Semantic Models, 4. Detection Passes (Token-Efficient Analysis), 5. Severity Assignment, 6. Produce Compact Analysis Report, 7. Provide Next Actions, 8. Offer Remediation (+17 more)
|
||||
|
||||
### Community 5 - "4. Detection Passes (Token-Efficient Analysis)"
|
||||
Cohesion: 0.15
|
||||
Nodes (13): 1. Initialize Analysis Context, 2. Load Artifacts (Progressive Disclosure), 3. Build Semantic Models, 4. Detection Passes (Token-Efficient Analysis), 5. Severity Assignment, 6. Produce Compact Analysis Report, A. Duplication Detection, B. Ambiguity Detection (+5 more)
|
||||
### Community 5 - "Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC)"
|
||||
Cohesion: 0.12
|
||||
Nodes (13): Content Quality, Feature Readiness, Notes, Requirement Completeness, Specification Quality Checklist: Multilingual NLP Entity Inherence Classifier, Complexity Tracking, Constitution Check, Documentation (this feature) (+5 more)
|
||||
|
||||
### Community 6 - "Feature Specification: [FEATURE NAME]"
|
||||
### Community 6 - "Feature Specification Template"
|
||||
Cohesion: 0.15
|
||||
Nodes (12): Assumptions, Edge Cases, Feature Specification: [FEATURE NAME], Functional Requirements, Key Entities *(include if feature involves data)*, Measurable Outcomes, Requirements *(mandatory)*, Success Criteria *(mandatory)* (+4 more)
|
||||
|
||||
### Community 8 - "speckit-plan/SKILL.md"
|
||||
### Community 8 - "Implementation Planning"
|
||||
Cohesion: 0.18
|
||||
Nodes (10): Completion Report, Done When, Key rules, Mandatory Post-Execution Hooks, Outline, Phase 0: Outline & Research, Phase 1: Design & Contracts, Phases (+2 more)
|
||||
|
||||
### Community 9 - "speckit-specify/SKILL.md"
|
||||
### Community 9 - "Feature Specification"
|
||||
Cohesion: 0.18
|
||||
Nodes (10): Completion Report, Done When, For AI Generation, Mandatory Post-Execution Hooks, Outline, Pre-Execution Checks, Quick Guidelines, Section Requirements (+2 more)
|
||||
|
||||
### Community 10 - "speckit-tasks/SKILL.md"
|
||||
### Community 10 - "Task Generation"
|
||||
Cohesion: 0.18
|
||||
Nodes (10): Checklist Format (REQUIRED), Completion Report, Done When, Mandatory Post-Execution Hooks, Outline, Phase Structure, Pre-Execution Checks, Task Generation Rules (+2 more)
|
||||
|
||||
### Community 11 - "Core Principles"
|
||||
### Community 11 - "Project Constitution"
|
||||
Cohesion: 0.18
|
||||
Nodes (10): Core Principles, Governance, [PRINCIPLE_1_NAME], [PRINCIPLE_2_NAME], [PRINCIPLE_3_NAME], [PRINCIPLE_4_NAME], [PRINCIPLE_5_NAME], [PROJECT_NAME] Constitution (+2 more)
|
||||
|
||||
### Community 12 - "Core Principles"
|
||||
### Community 12 - "Constitution Template"
|
||||
Cohesion: 0.18
|
||||
Nodes (10): Core Principles, Governance, [PRINCIPLE_1_NAME], [PRINCIPLE_2_NAME], [PRINCIPLE_3_NAME], [PRINCIPLE_4_NAME], [PRINCIPLE_5_NAME], [PROJECT_NAME] Constitution (+2 more)
|
||||
|
||||
### Community 13 - "graphify reference: extra exports and benchmark"
|
||||
### Community 13 - "Graphify Exports"
|
||||
Cohesion: 0.22
|
||||
Nodes (8): graphify reference: extra exports and benchmark, Step 6b - Wiki (only if --wiki flag), Step 7 - Neo4j export (only if --neo4j or --neo4j-push flag), Step 7a - FalkorDB export (only if --falkordb or --falkordb-push flag), Step 7b - SVG export (only if --svg flag), Step 7c - GraphML export (only if --graphml flag), Step 7d - MCP server (only if --mcp flag), Step 8 - Token reduction benchmark (only if total_words > 5000)
|
||||
|
||||
### Community 14 - "Ponytail"
|
||||
### Community 14 - "Ponytail Configuration"
|
||||
Cohesion: 0.22
|
||||
Nodes (8): Boundaries, Intensity, Output, Persistence, Ponytail, Rules, The ladder, When NOT to be lazy
|
||||
|
||||
### Community 15 - "Implementation Plan: [FEATURE]"
|
||||
### Community 15 - "Implementation Planning Template"
|
||||
Cohesion: 0.22
|
||||
Nodes (8): Complexity Tracking, Constitution Check, Documentation (this feature), Implementation Plan: [FEATURE], Project Structure, Source Code (repository root), Summary, Technical Context
|
||||
|
||||
@@ -131,77 +141,101 @@ Nodes (8): Complexity Tracking, Constitution Check, Documentation (this feature)
|
||||
Cohesion: 0.25
|
||||
Nodes (7): Configure Default Mode, Deactivate, Levels, More, Ponytail Help, Skills, Update
|
||||
|
||||
### Community 17 - "speckit-checklist/SKILL.md"
|
||||
### Community 17 - "Checklist Generation"
|
||||
Cohesion: 0.25
|
||||
Nodes (7): Anti-Examples: What NOT To Do, Checklist Purpose: "Unit Tests for English", Example Checklist Types & Sample Items, Execution Steps, Post-Execution Checks, Pre-Execution Checks, User Input
|
||||
|
||||
### Community 18 - "speckit-clarify/SKILL.md"
|
||||
### Community 18 - "Clarification Workflow"
|
||||
Cohesion: 0.29
|
||||
Nodes (6): Completion Report, Done When, Mandatory Post-Execution Hooks, Outline, Pre-Execution Checks, User Input
|
||||
|
||||
### Community 19 - "speckit-implement/SKILL.md"
|
||||
### Community 19 - "Implementation Workflow"
|
||||
Cohesion: 0.29
|
||||
Nodes (6): Completion Report, Done When, Mandatory Post-Execution Hooks, Outline, Pre-Execution Checks, User Input
|
||||
|
||||
### Community 20 - "graphify reference: query, path, explain"
|
||||
### Community 20 - "Graph Query"
|
||||
Cohesion: 0.33
|
||||
Nodes (5): For /graphify explain, For /graphify path, graphify reference: query, path, explain, Step 0 — Constrained query expansion (REQUIRED before traversal), Step 1 — Traversal
|
||||
|
||||
### Community 21 - "speckit-constitution/SKILL.md"
|
||||
### Community 21 - "Constitution Workflow"
|
||||
Cohesion: 0.33
|
||||
Nodes (5): Outline, Post-Execution Checks, Pre-Execution Checks, Scope Guard, User Input
|
||||
|
||||
### Community 23 - "ponytail-audit/SKILL.md"
|
||||
### Community 23 - "Ponytail Audit"
|
||||
Cohesion: 0.40
|
||||
Nodes (4): Boundaries, Hunt, Output, Tags
|
||||
|
||||
### Community 24 - "Ponytail Gain"
|
||||
### Community 24 - "Ponytail Metrics"
|
||||
Cohesion: 0.40
|
||||
Nodes (4): Boundaries, Honesty boundary, Ponytail Gain, Scoreboard
|
||||
|
||||
### Community 25 - "ponytail-review/SKILL.md"
|
||||
### Community 25 - "Ponytail Review"
|
||||
Cohesion: 0.40
|
||||
Nodes (4): Boundaries, Examples, Format, Scoring
|
||||
|
||||
### Community 26 - "speckit-taskstoissues/SKILL.md"
|
||||
### Community 26 - "Task Issue Conversion"
|
||||
Cohesion: 0.40
|
||||
Nodes (4): Outline, Post-Execution Checks, Pre-Execution Checks, User Input
|
||||
|
||||
### Community 27 - "[CHECKLIST TYPE] Checklist: [FEATURE NAME]"
|
||||
### Community 27 - "Checklist Template"
|
||||
Cohesion: 0.40
|
||||
Nodes (4): [Category 1], [Category 2], [CHECKLIST TYPE] Checklist: [FEATURE NAME], Notes
|
||||
|
||||
### Community 28 - "graphify reference: add a URL and watch a folder"
|
||||
### Community 28 - "Graphify Watch Mode"
|
||||
Cohesion: 0.50
|
||||
Nodes (3): For /graphify add, For --watch, graphify reference: add a URL and watch a folder
|
||||
|
||||
### Community 29 - "graphify reference: commit hook and native CLAUDE.md integration"
|
||||
### Community 29 - "Graphify Hooks"
|
||||
Cohesion: 0.50
|
||||
Nodes (3): For git commit hook, For native CLAUDE.md integration, graphify reference: commit hook and native CLAUDE.md integration
|
||||
|
||||
### Community 30 - "graphify reference: incremental update and cluster-only"
|
||||
### Community 30 - "Graphify Updates"
|
||||
Cohesion: 0.50
|
||||
Nodes (3): For --cluster-only, For --update (incremental re-extraction), graphify reference: incremental update and cluster-only
|
||||
|
||||
### Community 31 - "ponytail-debt/SKILL.md"
|
||||
### Community 31 - "Ponytail Debt"
|
||||
Cohesion: 0.50
|
||||
Nodes (3): Boundaries, Output, Scan
|
||||
|
||||
### Community 40 - "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)"
|
||||
Cohesion: 0.14
|
||||
Nodes (14): Assumptions, Assumptions & Scope, Clarifications, Explicit Out of Scope (POC), Feature Specification: Multilingual NLP Entity Inherence Classifier (POC), Functional Requirements, Key Entities *(data models & domain entities)*, Measurable Outcomes (+6 more)
|
||||
|
||||
### Community 41 - "1. Technical Decisions & Tradeoffs"
|
||||
Cohesion: 0.22
|
||||
Nodes (8): 1. Technical Decisions & Tradeoffs, 2. Standardized Error Handling Strategy, Decision 1: Execution Engine & CLI Architecture, Decision 2: Multilingual Language Detection & Normalization (Tier 1 Core), Decision 3: Materialized ECP Snapshot Contract & Matching Logic, Decision 4: Tier 2 (Embeddings) & Tier 3 (LLM) Optional Adapters, Decision 5: Controlled 24-Case POC Benchmark Suite, Technical Research & Architecture Decisions (POC)
|
||||
|
||||
### Community 42 - "1. Input Schemas"
|
||||
Cohesion: 0.25
|
||||
Nodes (7): 1.1 ECP Snapshot Schema (`snapshot.json`), 1.2 Content Item Schema (`content.md`), 1. Input Schemas, 2.1 Classification Success Result Schema (`result.json`), 2.2 Error Result Schema, 2. Output Schemas, Data Models & Schemas (POC)
|
||||
|
||||
### Community 43 - "2. Basic CLI Usage Examples"
|
||||
Cohesion: 0.25
|
||||
Nodes (7): 1. Prerequisites & Installation, 2.1 Direct Inherence (Portuguese), 2.2 Contextual Inherence via Graph Snapshot (German), 2.3 Tangential Mention (Spanish), 2. Basic CLI Usage Examples, 3. Running the Controlled 24-Case Benchmark, Quickstart & Validation Guide (POC)
|
||||
|
||||
### Community 44 - "2. Standard Streams & Exit Codes"
|
||||
Cohesion: 0.29
|
||||
Nodes (6): 1.1 Arguments & Options, 1. Command Line Interface, 2.1 Exit Codes, 2.2 Standard Output (`stdout`) / Standard Error (`stderr`), 2. Standard Streams & Exit Codes, CLI Contract & Interface Specification (POC)
|
||||
|
||||
## Knowledge Gaps
|
||||
- **212 isolated node(s):** `graphify`, `Usage`, `What graphify is for`, `Step 0 - GitHub repos and multi-path merge (only if a URL or several paths)`, `Step 1 - Ensure graphify is installed` (+207 more)
|
||||
- **248 isolated node(s):** `graphify`, `Usage`, `What graphify is for`, `Step 0 - GitHub repos and multi-path merge (only if a URL or several paths)`, `Step 1 - Ensure graphify is installed` (+243 more)
|
||||
These have ≤1 connection - possible missing edges or undocumented components.
|
||||
- **6 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
||||
|
||||
## Suggested Questions
|
||||
_Questions this graph is uniquely positioned to answer:_
|
||||
|
||||
- **Why does `Execution Steps` connect `4. Detection Passes (Token-Efficient Analysis)` to `speckit-analyze/SKILL.md`?**
|
||||
- **Why does `Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)` connect `Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)` to `Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC)`?**
|
||||
_High betweenness centrality (0.004) - this node is a cross-community bridge._
|
||||
- **What connects `graphify`, `Usage`, `What graphify is for` to the rest of the system?**
|
||||
_212 weakly-connected nodes found - possible documentation gaps or missing edges._
|
||||
- **Should `Tasks: [FEATURE NAME]` be split into smaller, more focused modules?**
|
||||
_248 weakly-connected nodes found - possible documentation gaps or missing edges._
|
||||
- **Should `Task Planning` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.07407407407407407 - nodes in this community are weakly interconnected._
|
||||
- **Should `Execution Steps` be split into smaller, more focused modules?**
|
||||
- **Should `Convergence Workflow` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.125 - nodes in this community are weakly interconnected._
|
||||
- **Should `What You Must Do When Invoked` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.08 - nodes in this community are weakly interconnected._
|
||||
- **Should `Graphify Commands` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.08 - nodes in this community are weakly interconnected._
|
||||
- **Should `speckit-analyze/SKILL.md` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.07692307692307693 - nodes in this community are weakly interconnected._
|
||||
- **Should `Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC)` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.125 - nodes in this community are weakly interconnected._
|
||||
+1779
-407
File diff suppressed because it is too large
Load Diff
@@ -238,5 +238,47 @@
|
||||
"seen": 1787189352.7449548,
|
||||
"ast_hash": "a831cf3669f1e6ab85d8a80ebe655f99",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"specs/001-multilingual-entity-classifier/checklists/requirements.md": {
|
||||
"mtime": 1787193985.655018,
|
||||
"seen": 1787194003.0704188,
|
||||
"ast_hash": "13e007d6da3f275d34b1f67fda546b81",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"specs/001-multilingual-entity-classifier/spec.md": {
|
||||
"mtime": 1787193971.9050775,
|
||||
"seen": 1787194003.0704212,
|
||||
"ast_hash": "171361c07b725cd65229fda42af1752f",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"specs/001-multilingual-entity-classifier/contracts/cli-contract.md": {
|
||||
"mtime": 1787194605.824187,
|
||||
"seen": 1787194638.8537047,
|
||||
"ast_hash": "c4fdb88a5e3269fb10689a2940b9616f",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"specs/001-multilingual-entity-classifier/data-model.md": {
|
||||
"mtime": 1787194591.677816,
|
||||
"seen": 1787194638.853709,
|
||||
"ast_hash": "7ccdd584024c65f16364444e9df4d860",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"specs/001-multilingual-entity-classifier/plan.md": {
|
||||
"mtime": 1787194627.9709117,
|
||||
"seen": 1787194638.8537104,
|
||||
"ast_hash": "851ca9151f0b8ed11078c0173c26e5a2",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"specs/001-multilingual-entity-classifier/quickstart.md": {
|
||||
"mtime": 1787194615.8456347,
|
||||
"seen": 1787194638.8537116,
|
||||
"ast_hash": "47578d1d83a5a112a389992f2c0fb4a1",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"specs/001-multilingual-entity-classifier/research.md": {
|
||||
"mtime": 1787194581.004019,
|
||||
"seen": 1787194638.8537128,
|
||||
"ast_hash": "159b7eec565d477f15f2c683c082e40d",
|
||||
"semantic_hash": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,516 @@
|
||||
{
|
||||
"communities": {
|
||||
"0": [
|
||||
"specify_templates_tasks_template",
|
||||
"specify_templates_tasks_template_dependencies_execution_order",
|
||||
"specify_templates_tasks_template_format_id_p_story_description",
|
||||
"specify_templates_tasks_template_implementation_for_user_story_1",
|
||||
"specify_templates_tasks_template_implementation_for_user_story_2",
|
||||
"specify_templates_tasks_template_implementation_for_user_story_3",
|
||||
"specify_templates_tasks_template_implementation_strategy",
|
||||
"specify_templates_tasks_template_incremental_delivery",
|
||||
"specify_templates_tasks_template_mvp_first_user_story_1_only",
|
||||
"specify_templates_tasks_template_notes",
|
||||
"specify_templates_tasks_template_parallel_example_user_story_1",
|
||||
"specify_templates_tasks_template_parallel_opportunities",
|
||||
"specify_templates_tasks_template_parallel_team_strategy",
|
||||
"specify_templates_tasks_template_path_conventions",
|
||||
"specify_templates_tasks_template_phase_1_setup_shared_infrastructure",
|
||||
"specify_templates_tasks_template_phase_2_foundational_blocking_prerequisites",
|
||||
"specify_templates_tasks_template_phase_3_user_story_1_title_priority_p1_mvp",
|
||||
"specify_templates_tasks_template_phase_4_user_story_2_title_priority_p2",
|
||||
"specify_templates_tasks_template_phase_5_user_story_3_title_priority_p3",
|
||||
"specify_templates_tasks_template_phase_dependencies",
|
||||
"specify_templates_tasks_template_phase_n_polish_cross_cutting_concerns",
|
||||
"specify_templates_tasks_template_tasks_feature_name",
|
||||
"specify_templates_tasks_template_tests_for_user_story_1_optional_only_if_tests_requested",
|
||||
"specify_templates_tasks_template_tests_for_user_story_2_optional_only_if_tests_requested",
|
||||
"specify_templates_tasks_template_tests_for_user_story_3_optional_only_if_tests_requested",
|
||||
"specify_templates_tasks_template_user_story_dependencies",
|
||||
"specify_templates_tasks_template_within_each_user_story"
|
||||
],
|
||||
"1": [
|
||||
"agents_skills_speckit_converge_skill",
|
||||
"agents_skills_speckit_converge_skill_1_initialize_convergence_context",
|
||||
"agents_skills_speckit_converge_skill_2_load_artifacts_progressive_disclosure",
|
||||
"agents_skills_speckit_converge_skill_3_build_the_intent_inventory",
|
||||
"agents_skills_speckit_converge_skill_4_assess_the_codebase_and_classify_findings",
|
||||
"agents_skills_speckit_converge_skill_5_assign_severity",
|
||||
"agents_skills_speckit_converge_skill_6_present_the_in_session_findings_summary",
|
||||
"agents_skills_speckit_converge_skill_7_append_convergence_tasks_or_report_converged",
|
||||
"agents_skills_speckit_converge_skill_8_provide_next_actions_handoff",
|
||||
"agents_skills_speckit_converge_skill_9_check_for_extension_hooks",
|
||||
"agents_skills_speckit_converge_skill_convergence_findings",
|
||||
"agents_skills_speckit_converge_skill_execution_steps",
|
||||
"agents_skills_speckit_converge_skill_goal",
|
||||
"agents_skills_speckit_converge_skill_operating_constraints",
|
||||
"agents_skills_speckit_converge_skill_pre_execution_checks",
|
||||
"agents_skills_speckit_converge_skill_user_input"
|
||||
],
|
||||
"2": [
|
||||
"specify_scripts_powershell_common",
|
||||
"specify_scripts_powershell_common_find_specifyroot",
|
||||
"specify_scripts_powershell_common_format_speckitcommand",
|
||||
"specify_scripts_powershell_common_get_currentbranch",
|
||||
"specify_scripts_powershell_common_get_featurepathsenv",
|
||||
"specify_scripts_powershell_common_get_invokeseparator",
|
||||
"specify_scripts_powershell_common_get_normalizedpriority",
|
||||
"specify_scripts_powershell_common_get_python3command",
|
||||
"specify_scripts_powershell_common_get_reporoot",
|
||||
"specify_scripts_powershell_common_get_sortedextensionids",
|
||||
"specify_scripts_powershell_common_resolve_specifyinitdir",
|
||||
"specify_scripts_powershell_common_resolve_template",
|
||||
"specify_scripts_powershell_common_resolve_templatecontent",
|
||||
"specify_scripts_powershell_common_save_featurejson",
|
||||
"specify_scripts_powershell_common_test_dirhasfiles",
|
||||
"specify_scripts_powershell_common_test_fileexists"
|
||||
],
|
||||
"3": [
|
||||
"agents_skills_graphify_skill",
|
||||
"agents_skills_graphify_skill_for_graphify_add_and_watch",
|
||||
"agents_skills_graphify_skill_for_graphify_query",
|
||||
"agents_skills_graphify_skill_for_the_commit_hook_and_native_claude_md_integration",
|
||||
"agents_skills_graphify_skill_for_update_and_cluster_only",
|
||||
"agents_skills_graphify_skill_graphify",
|
||||
"agents_skills_graphify_skill_honesty_rules",
|
||||
"agents_skills_graphify_skill_interpreter_guard_for_subcommands",
|
||||
"agents_skills_graphify_skill_part_a_structural_extraction_for_code_files",
|
||||
"agents_skills_graphify_skill_part_b_semantic_extraction_parallel_subagents",
|
||||
"agents_skills_graphify_skill_part_c_merge_ast_semantic_into_final_extraction",
|
||||
"agents_skills_graphify_skill_step_0_github_repos_and_multi_path_merge_only_if_a_url_or_several_paths",
|
||||
"agents_skills_graphify_skill_step_1_ensure_graphify_is_installed",
|
||||
"agents_skills_graphify_skill_step_2_5_video_and_audio_only_if_video_files_detected",
|
||||
"agents_skills_graphify_skill_step_2_detect_files",
|
||||
"agents_skills_graphify_skill_step_3_extract_entities_and_relationships",
|
||||
"agents_skills_graphify_skill_step_4_5_graph_health_check_read_only_integrity_gate",
|
||||
"agents_skills_graphify_skill_step_4_build_graph_cluster_analyze_generate_outputs",
|
||||
"agents_skills_graphify_skill_step_5_label_communities",
|
||||
"agents_skills_graphify_skill_step_6_generate_obsidian_vault_opt_in_html",
|
||||
"agents_skills_graphify_skill_step_9_save_manifest_update_cost_tracker_clean_up_and_report",
|
||||
"agents_skills_graphify_skill_steps_6b_8_wiki_neo4j_falkordb_svg_graphml_mcp_benchmark_only_on_their_flags",
|
||||
"agents_skills_graphify_skill_usage",
|
||||
"agents_skills_graphify_skill_what_graphify_is_for",
|
||||
"agents_skills_graphify_skill_what_you_must_do_when_invoked"
|
||||
],
|
||||
"4": [
|
||||
"agents_skills_speckit_analyze_skill",
|
||||
"agents_skills_speckit_analyze_skill_7_provide_next_actions",
|
||||
"agents_skills_speckit_analyze_skill_8_offer_remediation",
|
||||
"agents_skills_speckit_analyze_skill_9_check_for_extension_hooks",
|
||||
"agents_skills_speckit_analyze_skill_analysis_guidelines",
|
||||
"agents_skills_speckit_analyze_skill_context",
|
||||
"agents_skills_speckit_analyze_skill_context_efficiency",
|
||||
"agents_skills_speckit_analyze_skill_goal",
|
||||
"agents_skills_speckit_analyze_skill_operating_constraints",
|
||||
"agents_skills_speckit_analyze_skill_operating_principles",
|
||||
"agents_skills_speckit_analyze_skill_pre_execution_checks",
|
||||
"agents_skills_speckit_analyze_skill_specification_analysis_report",
|
||||
"agents_skills_speckit_analyze_skill_user_input"
|
||||
],
|
||||
"5": [
|
||||
"agents_skills_speckit_analyze_skill_1_initialize_analysis_context",
|
||||
"agents_skills_speckit_analyze_skill_2_load_artifacts_progressive_disclosure",
|
||||
"agents_skills_speckit_analyze_skill_3_build_semantic_models",
|
||||
"agents_skills_speckit_analyze_skill_4_detection_passes_token_efficient_analysis",
|
||||
"agents_skills_speckit_analyze_skill_5_severity_assignment",
|
||||
"agents_skills_speckit_analyze_skill_6_produce_compact_analysis_report",
|
||||
"agents_skills_speckit_analyze_skill_a_duplication_detection",
|
||||
"agents_skills_speckit_analyze_skill_b_ambiguity_detection",
|
||||
"agents_skills_speckit_analyze_skill_c_underspecification",
|
||||
"agents_skills_speckit_analyze_skill_d_constitution_alignment",
|
||||
"agents_skills_speckit_analyze_skill_e_coverage_gaps",
|
||||
"agents_skills_speckit_analyze_skill_execution_steps",
|
||||
"agents_skills_speckit_analyze_skill_f_inconsistency"
|
||||
],
|
||||
"6": [
|
||||
"specify_templates_spec_template",
|
||||
"specify_templates_spec_template_assumptions",
|
||||
"specify_templates_spec_template_edge_cases",
|
||||
"specify_templates_spec_template_feature_specification_feature_name",
|
||||
"specify_templates_spec_template_functional_requirements",
|
||||
"specify_templates_spec_template_key_entities_include_if_feature_involves_data",
|
||||
"specify_templates_spec_template_measurable_outcomes",
|
||||
"specify_templates_spec_template_requirements_mandatory",
|
||||
"specify_templates_spec_template_success_criteria_mandatory",
|
||||
"specify_templates_spec_template_user_scenarios_testing_mandatory",
|
||||
"specify_templates_spec_template_user_story_1_brief_title_priority_p1",
|
||||
"specify_templates_spec_template_user_story_2_brief_title_priority_p2",
|
||||
"specify_templates_spec_template_user_story_3_brief_title_priority_p3"
|
||||
],
|
||||
"7": [
|
||||
"agents_rules_graphify",
|
||||
"agents_rules_graphify_graphify"
|
||||
],
|
||||
"8": [
|
||||
"agents_skills_speckit_plan_skill",
|
||||
"agents_skills_speckit_plan_skill_completion_report",
|
||||
"agents_skills_speckit_plan_skill_done_when",
|
||||
"agents_skills_speckit_plan_skill_key_rules",
|
||||
"agents_skills_speckit_plan_skill_mandatory_post_execution_hooks",
|
||||
"agents_skills_speckit_plan_skill_outline",
|
||||
"agents_skills_speckit_plan_skill_phase_0_outline_research",
|
||||
"agents_skills_speckit_plan_skill_phase_1_design_contracts",
|
||||
"agents_skills_speckit_plan_skill_phases",
|
||||
"agents_skills_speckit_plan_skill_pre_execution_checks",
|
||||
"agents_skills_speckit_plan_skill_user_input"
|
||||
],
|
||||
"9": [
|
||||
"agents_skills_speckit_specify_skill",
|
||||
"agents_skills_speckit_specify_skill_completion_report",
|
||||
"agents_skills_speckit_specify_skill_done_when",
|
||||
"agents_skills_speckit_specify_skill_for_ai_generation",
|
||||
"agents_skills_speckit_specify_skill_mandatory_post_execution_hooks",
|
||||
"agents_skills_speckit_specify_skill_outline",
|
||||
"agents_skills_speckit_specify_skill_pre_execution_checks",
|
||||
"agents_skills_speckit_specify_skill_quick_guidelines",
|
||||
"agents_skills_speckit_specify_skill_section_requirements",
|
||||
"agents_skills_speckit_specify_skill_success_criteria_guidelines",
|
||||
"agents_skills_speckit_specify_skill_user_input"
|
||||
],
|
||||
"10": [
|
||||
"agents_skills_speckit_tasks_skill",
|
||||
"agents_skills_speckit_tasks_skill_checklist_format_required",
|
||||
"agents_skills_speckit_tasks_skill_completion_report",
|
||||
"agents_skills_speckit_tasks_skill_done_when",
|
||||
"agents_skills_speckit_tasks_skill_mandatory_post_execution_hooks",
|
||||
"agents_skills_speckit_tasks_skill_outline",
|
||||
"agents_skills_speckit_tasks_skill_phase_structure",
|
||||
"agents_skills_speckit_tasks_skill_pre_execution_checks",
|
||||
"agents_skills_speckit_tasks_skill_task_generation_rules",
|
||||
"agents_skills_speckit_tasks_skill_task_organization",
|
||||
"agents_skills_speckit_tasks_skill_user_input"
|
||||
],
|
||||
"11": [
|
||||
"specify_memory_constitution",
|
||||
"specify_memory_constitution_core_principles",
|
||||
"specify_memory_constitution_governance",
|
||||
"specify_memory_constitution_principle_1_name",
|
||||
"specify_memory_constitution_principle_2_name",
|
||||
"specify_memory_constitution_principle_3_name",
|
||||
"specify_memory_constitution_principle_4_name",
|
||||
"specify_memory_constitution_principle_5_name",
|
||||
"specify_memory_constitution_project_name_constitution",
|
||||
"specify_memory_constitution_section_2_name",
|
||||
"specify_memory_constitution_section_3_name"
|
||||
],
|
||||
"12": [
|
||||
"specify_templates_constitution_template",
|
||||
"specify_templates_constitution_template_core_principles",
|
||||
"specify_templates_constitution_template_governance",
|
||||
"specify_templates_constitution_template_principle_1_name",
|
||||
"specify_templates_constitution_template_principle_2_name",
|
||||
"specify_templates_constitution_template_principle_3_name",
|
||||
"specify_templates_constitution_template_principle_4_name",
|
||||
"specify_templates_constitution_template_principle_5_name",
|
||||
"specify_templates_constitution_template_project_name_constitution",
|
||||
"specify_templates_constitution_template_section_2_name",
|
||||
"specify_templates_constitution_template_section_3_name"
|
||||
],
|
||||
"13": [
|
||||
"agents_skills_graphify_references_exports",
|
||||
"agents_skills_graphify_references_exports_graphify_reference_extra_exports_and_benchmark",
|
||||
"agents_skills_graphify_references_exports_step_6b_wiki_only_if_wiki_flag",
|
||||
"agents_skills_graphify_references_exports_step_7_neo4j_export_only_if_neo4j_or_neo4j_push_flag",
|
||||
"agents_skills_graphify_references_exports_step_7a_falkordb_export_only_if_falkordb_or_falkordb_push_flag",
|
||||
"agents_skills_graphify_references_exports_step_7b_svg_export_only_if_svg_flag",
|
||||
"agents_skills_graphify_references_exports_step_7c_graphml_export_only_if_graphml_flag",
|
||||
"agents_skills_graphify_references_exports_step_7d_mcp_server_only_if_mcp_flag",
|
||||
"agents_skills_graphify_references_exports_step_8_token_reduction_benchmark_only_if_total_words_5000"
|
||||
],
|
||||
"14": [
|
||||
"agents_skills_ponytail_skill",
|
||||
"agents_skills_ponytail_skill_boundaries",
|
||||
"agents_skills_ponytail_skill_intensity",
|
||||
"agents_skills_ponytail_skill_output",
|
||||
"agents_skills_ponytail_skill_persistence",
|
||||
"agents_skills_ponytail_skill_ponytail",
|
||||
"agents_skills_ponytail_skill_rules",
|
||||
"agents_skills_ponytail_skill_the_ladder",
|
||||
"agents_skills_ponytail_skill_when_not_to_be_lazy"
|
||||
],
|
||||
"15": [
|
||||
"specify_templates_plan_template",
|
||||
"specify_templates_plan_template_complexity_tracking",
|
||||
"specify_templates_plan_template_constitution_check",
|
||||
"specify_templates_plan_template_documentation_this_feature",
|
||||
"specify_templates_plan_template_implementation_plan_feature",
|
||||
"specify_templates_plan_template_project_structure",
|
||||
"specify_templates_plan_template_source_code_repository_root",
|
||||
"specify_templates_plan_template_summary",
|
||||
"specify_templates_plan_template_technical_context"
|
||||
],
|
||||
"16": [
|
||||
"agents_skills_ponytail_help_skill",
|
||||
"agents_skills_ponytail_help_skill_configure_default_mode",
|
||||
"agents_skills_ponytail_help_skill_deactivate",
|
||||
"agents_skills_ponytail_help_skill_levels",
|
||||
"agents_skills_ponytail_help_skill_more",
|
||||
"agents_skills_ponytail_help_skill_ponytail_help",
|
||||
"agents_skills_ponytail_help_skill_skills",
|
||||
"agents_skills_ponytail_help_skill_update"
|
||||
],
|
||||
"17": [
|
||||
"agents_skills_speckit_checklist_skill",
|
||||
"agents_skills_speckit_checklist_skill_anti_examples_what_not_to_do",
|
||||
"agents_skills_speckit_checklist_skill_checklist_purpose_unit_tests_for_english",
|
||||
"agents_skills_speckit_checklist_skill_example_checklist_types_sample_items",
|
||||
"agents_skills_speckit_checklist_skill_execution_steps",
|
||||
"agents_skills_speckit_checklist_skill_post_execution_checks",
|
||||
"agents_skills_speckit_checklist_skill_pre_execution_checks",
|
||||
"agents_skills_speckit_checklist_skill_user_input"
|
||||
],
|
||||
"18": [
|
||||
"agents_skills_speckit_clarify_skill",
|
||||
"agents_skills_speckit_clarify_skill_completion_report",
|
||||
"agents_skills_speckit_clarify_skill_done_when",
|
||||
"agents_skills_speckit_clarify_skill_mandatory_post_execution_hooks",
|
||||
"agents_skills_speckit_clarify_skill_outline",
|
||||
"agents_skills_speckit_clarify_skill_pre_execution_checks",
|
||||
"agents_skills_speckit_clarify_skill_user_input"
|
||||
],
|
||||
"19": [
|
||||
"agents_skills_speckit_implement_skill",
|
||||
"agents_skills_speckit_implement_skill_completion_report",
|
||||
"agents_skills_speckit_implement_skill_done_when",
|
||||
"agents_skills_speckit_implement_skill_mandatory_post_execution_hooks",
|
||||
"agents_skills_speckit_implement_skill_outline",
|
||||
"agents_skills_speckit_implement_skill_pre_execution_checks",
|
||||
"agents_skills_speckit_implement_skill_user_input"
|
||||
],
|
||||
"20": [
|
||||
"agents_skills_graphify_references_query",
|
||||
"agents_skills_graphify_references_query_for_graphify_explain",
|
||||
"agents_skills_graphify_references_query_for_graphify_path",
|
||||
"agents_skills_graphify_references_query_graphify_reference_query_path_explain",
|
||||
"agents_skills_graphify_references_query_step_0_constrained_query_expansion_required_before_traversal",
|
||||
"agents_skills_graphify_references_query_step_1_traversal"
|
||||
],
|
||||
"21": [
|
||||
"agents_skills_speckit_constitution_skill",
|
||||
"agents_skills_speckit_constitution_skill_outline",
|
||||
"agents_skills_speckit_constitution_skill_post_execution_checks",
|
||||
"agents_skills_speckit_constitution_skill_pre_execution_checks",
|
||||
"agents_skills_speckit_constitution_skill_scope_guard",
|
||||
"agents_skills_speckit_constitution_skill_user_input"
|
||||
],
|
||||
"22": [
|
||||
"specify_scripts_powershell_create_new_feature",
|
||||
"specify_scripts_powershell_create_new_feature_convertto_cleanbranchname",
|
||||
"specify_scripts_powershell_create_new_feature_get_branchname",
|
||||
"specify_scripts_powershell_create_new_feature_get_fittedbranchname",
|
||||
"specify_scripts_powershell_create_new_feature_get_highestnumberfromspecs",
|
||||
"specify_scripts_powershell_create_new_feature_test_specprefixinuse"
|
||||
],
|
||||
"23": [
|
||||
"agents_skills_ponytail_audit_skill",
|
||||
"agents_skills_ponytail_audit_skill_boundaries",
|
||||
"agents_skills_ponytail_audit_skill_hunt",
|
||||
"agents_skills_ponytail_audit_skill_output",
|
||||
"agents_skills_ponytail_audit_skill_tags"
|
||||
],
|
||||
"24": [
|
||||
"agents_skills_ponytail_gain_skill",
|
||||
"agents_skills_ponytail_gain_skill_boundaries",
|
||||
"agents_skills_ponytail_gain_skill_honesty_boundary",
|
||||
"agents_skills_ponytail_gain_skill_ponytail_gain",
|
||||
"agents_skills_ponytail_gain_skill_scoreboard"
|
||||
],
|
||||
"25": [
|
||||
"agents_skills_ponytail_review_skill",
|
||||
"agents_skills_ponytail_review_skill_boundaries",
|
||||
"agents_skills_ponytail_review_skill_examples",
|
||||
"agents_skills_ponytail_review_skill_format",
|
||||
"agents_skills_ponytail_review_skill_scoring"
|
||||
],
|
||||
"26": [
|
||||
"agents_skills_speckit_taskstoissues_skill",
|
||||
"agents_skills_speckit_taskstoissues_skill_outline",
|
||||
"agents_skills_speckit_taskstoissues_skill_post_execution_checks",
|
||||
"agents_skills_speckit_taskstoissues_skill_pre_execution_checks",
|
||||
"agents_skills_speckit_taskstoissues_skill_user_input"
|
||||
],
|
||||
"27": [
|
||||
"specify_templates_checklist_template",
|
||||
"specify_templates_checklist_template_category_1",
|
||||
"specify_templates_checklist_template_category_2",
|
||||
"specify_templates_checklist_template_checklist_type_checklist_feature_name",
|
||||
"specify_templates_checklist_template_notes"
|
||||
],
|
||||
"28": [
|
||||
"agents_skills_graphify_references_add_watch",
|
||||
"agents_skills_graphify_references_add_watch_for_graphify_add",
|
||||
"agents_skills_graphify_references_add_watch_for_watch",
|
||||
"agents_skills_graphify_references_add_watch_graphify_reference_add_a_url_and_watch_a_folder"
|
||||
],
|
||||
"29": [
|
||||
"agents_skills_graphify_references_hooks",
|
||||
"agents_skills_graphify_references_hooks_for_git_commit_hook",
|
||||
"agents_skills_graphify_references_hooks_for_native_claude_md_integration",
|
||||
"agents_skills_graphify_references_hooks_graphify_reference_commit_hook_and_native_claude_md_integration"
|
||||
],
|
||||
"30": [
|
||||
"agents_skills_graphify_references_update",
|
||||
"agents_skills_graphify_references_update_for_cluster_only",
|
||||
"agents_skills_graphify_references_update_for_update_incremental_re_extraction",
|
||||
"agents_skills_graphify_references_update_graphify_reference_incremental_update_and_cluster_only"
|
||||
],
|
||||
"31": [
|
||||
"agents_skills_ponytail_debt_skill",
|
||||
"agents_skills_ponytail_debt_skill_boundaries",
|
||||
"agents_skills_ponytail_debt_skill_output",
|
||||
"agents_skills_ponytail_debt_skill_scan"
|
||||
],
|
||||
"32": [
|
||||
"agents_skills_graphify_references_github_and_merge",
|
||||
"agents_skills_graphify_references_github_and_merge_graphify_reference_github_clone_and_cross_repo_merge",
|
||||
"agents_skills_graphify_references_github_and_merge_step_0_clone_github_repo_s_only_if_a_github_url_was_given"
|
||||
],
|
||||
"33": [
|
||||
"agents_skills_graphify_references_transcribe",
|
||||
"agents_skills_graphify_references_transcribe_graphify_reference_transcribe_video_and_audio",
|
||||
"agents_skills_graphify_references_transcribe_step_2_5_transcribe_video_audio_files_only_if_video_files_detected"
|
||||
],
|
||||
"34": [
|
||||
"agents_skills_graphify_references_extraction_spec",
|
||||
"agents_skills_graphify_references_extraction_spec_graphify_reference_extraction_subagent_prompt"
|
||||
],
|
||||
"35": [
|
||||
"specify_scripts_powershell_check_prerequisites"
|
||||
],
|
||||
"36": [
|
||||
"specify_scripts_powershell_resolve_template"
|
||||
],
|
||||
"37": [
|
||||
"specify_scripts_powershell_setup_plan"
|
||||
],
|
||||
"38": [
|
||||
"specify_scripts_powershell_setup_tasks"
|
||||
],
|
||||
"39": [
|
||||
"agents_workflows_graphify",
|
||||
"agents_workflows_graphify_workflow_graphify"
|
||||
]
|
||||
},
|
||||
"cohesion": {
|
||||
"0": 0.07407407407407407,
|
||||
"1": 0.125,
|
||||
"2": 0.225,
|
||||
"3": 0.08,
|
||||
"4": 0.15384615384615385,
|
||||
"5": 0.15384615384615385,
|
||||
"6": 0.15384615384615385,
|
||||
"7": 1.0,
|
||||
"8": 0.18181818181818182,
|
||||
"9": 0.18181818181818182,
|
||||
"10": 0.18181818181818182,
|
||||
"11": 0.18181818181818182,
|
||||
"12": 0.18181818181818182,
|
||||
"13": 0.2222222222222222,
|
||||
"14": 0.2222222222222222,
|
||||
"15": 0.2222222222222222,
|
||||
"16": 0.25,
|
||||
"17": 0.25,
|
||||
"18": 0.2857142857142857,
|
||||
"19": 0.2857142857142857,
|
||||
"20": 0.3333333333333333,
|
||||
"21": 0.3333333333333333,
|
||||
"22": 0.4,
|
||||
"23": 0.4,
|
||||
"24": 0.4,
|
||||
"25": 0.4,
|
||||
"26": 0.4,
|
||||
"27": 0.4,
|
||||
"28": 0.5,
|
||||
"29": 0.5,
|
||||
"30": 0.5,
|
||||
"31": 0.5,
|
||||
"32": 0.6666666666666666,
|
||||
"33": 0.6666666666666666,
|
||||
"34": 1.0,
|
||||
"35": 1.0,
|
||||
"36": 1.0,
|
||||
"37": 1.0,
|
||||
"38": 1.0,
|
||||
"39": 1.0
|
||||
},
|
||||
"gods": [
|
||||
{
|
||||
"id": "specify_templates_tasks_template_tasks_feature_name",
|
||||
"label": "Tasks: [FEATURE NAME]",
|
||||
"degree": 13
|
||||
},
|
||||
{
|
||||
"id": "agents_skills_graphify_skill_what_you_must_do_when_invoked",
|
||||
"label": "What You Must Do When Invoked",
|
||||
"degree": 12
|
||||
},
|
||||
{
|
||||
"id": "agents_skills_graphify_skill_graphify",
|
||||
"label": "/graphify",
|
||||
"degree": 10
|
||||
},
|
||||
{
|
||||
"id": "agents_skills_graphify_references_exports_graphify_reference_extra_exports_and_benchmark",
|
||||
"label": "graphify reference: extra exports and benchmark",
|
||||
"degree": 8
|
||||
},
|
||||
{
|
||||
"id": "agents_skills_ponytail_skill_ponytail",
|
||||
"label": "Ponytail",
|
||||
"degree": 8
|
||||
},
|
||||
{
|
||||
"id": "agents_skills_speckit_converge_skill_execution_steps",
|
||||
"label": "Execution Steps",
|
||||
"degree": 7
|
||||
},
|
||||
{
|
||||
"id": "agents_skills_ponytail_help_skill_ponytail_help",
|
||||
"label": "Ponytail Help",
|
||||
"degree": 7
|
||||
},
|
||||
{
|
||||
"id": "agents_skills_speckit_analyze_skill_4_detection_passes_token_efficient_analysis",
|
||||
"label": "4. Detection Passes (Token-Efficient Analysis)",
|
||||
"degree": 7
|
||||
},
|
||||
{
|
||||
"id": "agents_skills_speckit_analyze_skill_execution_steps",
|
||||
"label": "Execution Steps",
|
||||
"degree": 7
|
||||
},
|
||||
{
|
||||
"id": "specify_memory_constitution_core_principles",
|
||||
"label": "Core Principles",
|
||||
"degree": 6
|
||||
}
|
||||
],
|
||||
"surprises": [],
|
||||
"questions": [
|
||||
{
|
||||
"type": "bridge_node",
|
||||
"question": "Why does `Execution Steps` connect `Analysis Detection` to `Specification Analysis`?",
|
||||
"why": "High betweenness centrality (0.004) - this node is a cross-community bridge."
|
||||
},
|
||||
{
|
||||
"type": "isolated_nodes",
|
||||
"question": "What connects `Format: `[ID] [P?] [Story] Description``, `Implementation for User Story 1`, `Implementation for User Story 2` to the rest of the system?",
|
||||
"why": "212 weakly-connected nodes found - possible documentation gaps or missing edges."
|
||||
},
|
||||
{
|
||||
"type": "low_cohesion",
|
||||
"question": "Should `Task Planning` be split into smaller, more focused modules?",
|
||||
"why": "Cohesion score 0.07407407407407407 - nodes in this community are weakly interconnected."
|
||||
},
|
||||
{
|
||||
"type": "low_cohesion",
|
||||
"question": "Should `Convergence Workflow` be split into smaller, more focused modules?",
|
||||
"why": "Cohesion score 0.125 - nodes in this community are weakly interconnected."
|
||||
},
|
||||
{
|
||||
"type": "low_cohesion",
|
||||
"question": "Should `Graphify Commands` be split into smaller, more focused modules?",
|
||||
"why": "Cohesion score 0.08 - nodes in this community are weakly interconnected."
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
{
|
||||
"0": "Task Planning",
|
||||
"1": "Convergence Workflow",
|
||||
"2": "SpecKit Utilities",
|
||||
"3": "Graphify Commands",
|
||||
"4": "speckit-analyze/SKILL.md",
|
||||
"5": "Tasks: Multilingual NLP Entity Inherence Classifier (POC)",
|
||||
"6": "Feature Specification Template",
|
||||
"7": "Graphify Rules",
|
||||
"8": "Implementation Planning",
|
||||
"9": "Feature Specification",
|
||||
"10": "Task Generation",
|
||||
"11": "Project Constitution",
|
||||
"12": "Constitution Template",
|
||||
"13": "Graphify Exports",
|
||||
"14": "Ponytail Configuration",
|
||||
"15": "Implementation Planning Template",
|
||||
"16": "Ponytail Help",
|
||||
"17": "Checklist Generation",
|
||||
"18": "Clarification Workflow",
|
||||
"19": "Implementation Workflow",
|
||||
"20": "Graph Query",
|
||||
"21": "Constitution Workflow",
|
||||
"22": "Feature Branch Creation",
|
||||
"23": "Ponytail Audit",
|
||||
"24": "Ponytail Metrics",
|
||||
"25": "Ponytail Review",
|
||||
"26": "Task Issue Conversion",
|
||||
"27": "Checklist Template",
|
||||
"28": "Graphify Watch Mode",
|
||||
"29": "Graphify Hooks",
|
||||
"30": "Graphify Updates",
|
||||
"31": "Ponytail Debt",
|
||||
"32": "Repository Merge",
|
||||
"33": "Media Transcription",
|
||||
"34": "Extraction Specification",
|
||||
"35": "Prerequisite Checks",
|
||||
"36": "Template Resolution",
|
||||
"37": "Plan Setup",
|
||||
"38": "Task Setup",
|
||||
"39": "Graphify Workflows",
|
||||
"40": "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)",
|
||||
"41": "1. Technical Decisions & Tradeoffs",
|
||||
"42": "1. Input Schemas",
|
||||
"43": "2. Basic CLI Usage Examples",
|
||||
"44": "2. Standard Streams & Exit Codes",
|
||||
"45": "ECPSnapshot",
|
||||
"46": "classifier.py",
|
||||
"47": "detect_language",
|
||||
"48": "main",
|
||||
"49": "content_northvolt_de.md",
|
||||
"50": "content_presal_pt.md",
|
||||
"51": "content_tangential_es.md",
|
||||
"52": "adapters/__init__.py",
|
||||
"53": "src/__init__.py",
|
||||
"54": "de/contextual.md",
|
||||
"55": "de/direct.md",
|
||||
"56": "de/not_related.md",
|
||||
"57": "de/tangential.md",
|
||||
"58": "en/contextual.md",
|
||||
"59": "en/direct.md",
|
||||
"60": "en/not_related.md",
|
||||
"61": "en/tangential.md",
|
||||
"62": "es/contextual.md",
|
||||
"63": "es/direct.md",
|
||||
"64": "es/not_related.md",
|
||||
"65": "es/tangential.md",
|
||||
"66": "fr/contextual.md",
|
||||
"67": "fr/direct.md",
|
||||
"68": "fr/not_related.md",
|
||||
"69": "fr/tangential.md",
|
||||
"70": "it/contextual.md",
|
||||
"71": "it/direct.md",
|
||||
"72": "it/not_related.md",
|
||||
"73": "it/tangential.md",
|
||||
"74": "pt/contextual.md",
|
||||
"75": "pt/direct.md",
|
||||
"76": "pt/not_related.md",
|
||||
"77": "pt/tangential.md",
|
||||
"78": "tests/__init__.py",
|
||||
"79": "text-nlp-classifier"
|
||||
}
|
||||
@@ -0,0 +1,301 @@
|
||||
# Graph Report - TextNLPClassifierApp (2026-08-20)
|
||||
|
||||
## Corpus Check
|
||||
- 132 files · ~53,988 words
|
||||
- Verdict: corpus is large enough that graph structure adds value.
|
||||
|
||||
## Summary
|
||||
- 579 nodes · 674 edges · 80 communities (43 shown, 37 thin omitted)
|
||||
- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 28 edges (avg confidence: 0.95)
|
||||
- Token cost: 0 input · 0 output
|
||||
|
||||
## Graph Freshness
|
||||
- Built from commit: `d371b81a`
|
||||
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
|
||||
- Run `graphify update .` after code changes (no API cost).
|
||||
|
||||
## Community Hubs (Navigation)
|
||||
- Task Planning
|
||||
- Convergence Workflow
|
||||
- SpecKit Utilities
|
||||
- Graphify Commands
|
||||
- speckit-analyze/SKILL.md
|
||||
- Tasks: Multilingual NLP Entity Inherence Classifier (POC)
|
||||
- Feature Specification Template
|
||||
- Graphify Rules
|
||||
- Implementation Planning
|
||||
- Feature Specification
|
||||
- Task Generation
|
||||
- Project Constitution
|
||||
- Constitution Template
|
||||
- Graphify Exports
|
||||
- Ponytail Configuration
|
||||
- Implementation Planning Template
|
||||
- Ponytail Help
|
||||
- Checklist Generation
|
||||
- Clarification Workflow
|
||||
- Implementation Workflow
|
||||
- Graph Query
|
||||
- Constitution Workflow
|
||||
- Feature Branch Creation
|
||||
- Ponytail Audit
|
||||
- Ponytail Metrics
|
||||
- Ponytail Review
|
||||
- Task Issue Conversion
|
||||
- Checklist Template
|
||||
- Graphify Watch Mode
|
||||
- Graphify Hooks
|
||||
- Graphify Updates
|
||||
- Ponytail Debt
|
||||
- Repository Merge
|
||||
- Media Transcription
|
||||
- Extraction Specification
|
||||
- Graphify Workflows
|
||||
- Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)
|
||||
- 1. Technical Decisions & Tradeoffs
|
||||
- 1. Input Schemas
|
||||
- 2. Basic CLI Usage Examples
|
||||
- 2. Standard Streams & Exit Codes
|
||||
- ECPSnapshot
|
||||
- classifier.py
|
||||
- detect_language
|
||||
- main
|
||||
- content_northvolt_de.md
|
||||
- content_presal_pt.md
|
||||
- content_tangential_es.md
|
||||
- adapters/__init__.py
|
||||
- src/__init__.py
|
||||
- de/contextual.md
|
||||
- de/direct.md
|
||||
- de/not_related.md
|
||||
- de/tangential.md
|
||||
- en/contextual.md
|
||||
- en/direct.md
|
||||
- en/not_related.md
|
||||
- en/tangential.md
|
||||
- es/contextual.md
|
||||
- es/direct.md
|
||||
- es/not_related.md
|
||||
- es/tangential.md
|
||||
- fr/contextual.md
|
||||
- fr/direct.md
|
||||
- fr/not_related.md
|
||||
- fr/tangential.md
|
||||
- it/contextual.md
|
||||
- it/direct.md
|
||||
- it/not_related.md
|
||||
- it/tangential.md
|
||||
- pt/contextual.md
|
||||
- pt/direct.md
|
||||
- pt/not_related.md
|
||||
- pt/tangential.md
|
||||
- tests/__init__.py
|
||||
- text-nlp-classifier
|
||||
|
||||
## God Nodes (most connected - your core abstractions)
|
||||
1. `ECPSnapshot` - 27 edges
|
||||
2. `InherenceClassifier` - 21 edges
|
||||
3. `ClassificationResult` - 17 edges
|
||||
4. `LocalEmbeddingsAdapter` - 14 edges
|
||||
5. `LLMFallbackAdapter` - 14 edges
|
||||
6. `detect_language()` - 14 edges
|
||||
7. `DecisionCategory` - 14 edges
|
||||
8. `main()` - 13 edges
|
||||
9. `Tasks: [FEATURE NAME]` - 13 edges
|
||||
10. `BaseNLPAdapter` - 12 edges
|
||||
|
||||
## Surprising Connections (you probably didn't know these)
|
||||
- `main()` --uses--> `ECPSnapshot` [INFERRED]
|
||||
classify.py → src/models.py
|
||||
- `main()` --uses--> `ErrorCode` [INFERRED]
|
||||
classify.py → src/models.py
|
||||
- `test_classification_result_serialization()` --uses--> `DecisionCategory` [INFERRED]
|
||||
tests/test_models.py → src/models.py
|
||||
- `petrobras_ecp()` --uses--> `ECPSnapshot` [INFERRED]
|
||||
tests/test_classifier.py → src/models.py
|
||||
- `emit_error()` --uses--> `ErrorCode` [INFERRED]
|
||||
classify.py → src/models.py
|
||||
|
||||
## Import Cycles
|
||||
- None detected.
|
||||
|
||||
## Communities (80 total, 37 thin omitted)
|
||||
|
||||
### Community 0 - "Task Planning"
|
||||
Cohesion: 0.07
|
||||
Nodes (26): Dependencies & Execution Order, Format: `[ID] [P?] [Story] Description`, Implementation for User Story 1, Implementation for User Story 2, Implementation for User Story 3, Implementation Strategy, Incremental Delivery, MVP First (User Story 1 Only) (+18 more)
|
||||
|
||||
### Community 1 - "Convergence Workflow"
|
||||
Cohesion: 0.12
|
||||
Nodes (15): 1. Initialize Convergence Context, 2. Load Artifacts (Progressive Disclosure), 3. Build the Intent Inventory, 4. Assess the Codebase and Classify Findings, 5. Assign Severity, 6. Present the In-Session Findings Summary, 7. Append Convergence Tasks (or report converged), 8. Provide Next Actions (Handoff) (+7 more)
|
||||
|
||||
### Community 2 - "SpecKit Utilities"
|
||||
Cohesion: 0.23
|
||||
Nodes (13): Find-SpecifyRoot(), Format-SpecKitCommand(), Get-CurrentBranch(), Get-FeaturePathsEnv(), Get-InvokeSeparator(), Get-NormalizedPriority(), Get-Python3Command(), Get-RepoRoot() (+5 more)
|
||||
|
||||
### Community 3 - "Graphify Commands"
|
||||
Cohesion: 0.08
|
||||
Nodes (24): For /graphify add and --watch, For /graphify query, For the commit hook and native CLAUDE.md integration, For --update and --cluster-only, /graphify, Honesty Rules, Interpreter guard for subcommands, Part A - Structural extraction for code files (+16 more)
|
||||
|
||||
### Community 4 - "speckit-analyze/SKILL.md"
|
||||
Cohesion: 0.08
|
||||
Nodes (25): 1. Initialize Analysis Context, 2. Load Artifacts (Progressive Disclosure), 3. Build Semantic Models, 4. Detection Passes (Token-Efficient Analysis), 5. Severity Assignment, 6. Produce Compact Analysis Report, 7. Provide Next Actions, 8. Offer Remediation (+17 more)
|
||||
|
||||
### Community 5 - "Tasks: Multilingual NLP Entity Inherence Classifier (POC)"
|
||||
Cohesion: 0.06
|
||||
Nodes (33): 1. Requirement Completeness & Scope Boundaries, 2. Requirement Clarity & Decision Semantics, 3. Requirement Consistency & Alignment, 4. Acceptance Criteria & Measurability, 5. Scenario & Edge Case Coverage, Notes, POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier, Content Quality (+25 more)
|
||||
|
||||
### Community 6 - "Feature Specification Template"
|
||||
Cohesion: 0.15
|
||||
Nodes (12): Assumptions, Edge Cases, Feature Specification: [FEATURE NAME], Functional Requirements, Key Entities *(include if feature involves data)*, Measurable Outcomes, Requirements *(mandatory)*, Success Criteria *(mandatory)* (+4 more)
|
||||
|
||||
### Community 8 - "Implementation Planning"
|
||||
Cohesion: 0.18
|
||||
Nodes (10): Completion Report, Done When, Key rules, Mandatory Post-Execution Hooks, Outline, Phase 0: Outline & Research, Phase 1: Design & Contracts, Phases (+2 more)
|
||||
|
||||
### Community 9 - "Feature Specification"
|
||||
Cohesion: 0.18
|
||||
Nodes (10): Completion Report, Done When, For AI Generation, Mandatory Post-Execution Hooks, Outline, Pre-Execution Checks, Quick Guidelines, Section Requirements (+2 more)
|
||||
|
||||
### Community 10 - "Task Generation"
|
||||
Cohesion: 0.18
|
||||
Nodes (10): Checklist Format (REQUIRED), Completion Report, Done When, Mandatory Post-Execution Hooks, Outline, Phase Structure, Pre-Execution Checks, Task Generation Rules (+2 more)
|
||||
|
||||
### Community 11 - "Project Constitution"
|
||||
Cohesion: 0.18
|
||||
Nodes (10): Core Principles, Governance, [PRINCIPLE_1_NAME], [PRINCIPLE_2_NAME], [PRINCIPLE_3_NAME], [PRINCIPLE_4_NAME], [PRINCIPLE_5_NAME], [PROJECT_NAME] Constitution (+2 more)
|
||||
|
||||
### Community 12 - "Constitution Template"
|
||||
Cohesion: 0.18
|
||||
Nodes (10): Core Principles, Governance, [PRINCIPLE_1_NAME], [PRINCIPLE_2_NAME], [PRINCIPLE_3_NAME], [PRINCIPLE_4_NAME], [PRINCIPLE_5_NAME], [PROJECT_NAME] Constitution (+2 more)
|
||||
|
||||
### Community 13 - "Graphify Exports"
|
||||
Cohesion: 0.22
|
||||
Nodes (8): graphify reference: extra exports and benchmark, Step 6b - Wiki (only if --wiki flag), Step 7 - Neo4j export (only if --neo4j or --neo4j-push flag), Step 7a - FalkorDB export (only if --falkordb or --falkordb-push flag), Step 7b - SVG export (only if --svg flag), Step 7c - GraphML export (only if --graphml flag), Step 7d - MCP server (only if --mcp flag), Step 8 - Token reduction benchmark (only if total_words > 5000)
|
||||
|
||||
### Community 14 - "Ponytail Configuration"
|
||||
Cohesion: 0.22
|
||||
Nodes (8): Boundaries, Intensity, Output, Persistence, Ponytail, Rules, The ladder, When NOT to be lazy
|
||||
|
||||
### Community 15 - "Implementation Planning Template"
|
||||
Cohesion: 0.22
|
||||
Nodes (8): Complexity Tracking, Constitution Check, Documentation (this feature), Implementation Plan: [FEATURE], Project Structure, Source Code (repository root), Summary, Technical Context
|
||||
|
||||
### Community 16 - "Ponytail Help"
|
||||
Cohesion: 0.25
|
||||
Nodes (7): Configure Default Mode, Deactivate, Levels, More, Ponytail Help, Skills, Update
|
||||
|
||||
### Community 17 - "Checklist Generation"
|
||||
Cohesion: 0.25
|
||||
Nodes (7): Anti-Examples: What NOT To Do, Checklist Purpose: "Unit Tests for English", Example Checklist Types & Sample Items, Execution Steps, Post-Execution Checks, Pre-Execution Checks, User Input
|
||||
|
||||
### Community 18 - "Clarification Workflow"
|
||||
Cohesion: 0.29
|
||||
Nodes (6): Completion Report, Done When, Mandatory Post-Execution Hooks, Outline, Pre-Execution Checks, User Input
|
||||
|
||||
### Community 19 - "Implementation Workflow"
|
||||
Cohesion: 0.29
|
||||
Nodes (6): Completion Report, Done When, Mandatory Post-Execution Hooks, Outline, Pre-Execution Checks, User Input
|
||||
|
||||
### Community 20 - "Graph Query"
|
||||
Cohesion: 0.33
|
||||
Nodes (5): For /graphify explain, For /graphify path, graphify reference: query, path, explain, Step 0 — Constrained query expansion (REQUIRED before traversal), Step 1 — Traversal
|
||||
|
||||
### Community 21 - "Constitution Workflow"
|
||||
Cohesion: 0.33
|
||||
Nodes (5): Outline, Post-Execution Checks, Pre-Execution Checks, Scope Guard, User Input
|
||||
|
||||
### Community 23 - "Ponytail Audit"
|
||||
Cohesion: 0.40
|
||||
Nodes (4): Boundaries, Hunt, Output, Tags
|
||||
|
||||
### Community 24 - "Ponytail Metrics"
|
||||
Cohesion: 0.40
|
||||
Nodes (4): Boundaries, Honesty boundary, Ponytail Gain, Scoreboard
|
||||
|
||||
### Community 25 - "Ponytail Review"
|
||||
Cohesion: 0.40
|
||||
Nodes (4): Boundaries, Examples, Format, Scoring
|
||||
|
||||
### Community 26 - "Task Issue Conversion"
|
||||
Cohesion: 0.40
|
||||
Nodes (4): Outline, Post-Execution Checks, Pre-Execution Checks, User Input
|
||||
|
||||
### Community 27 - "Checklist Template"
|
||||
Cohesion: 0.40
|
||||
Nodes (4): [Category 1], [Category 2], [CHECKLIST TYPE] Checklist: [FEATURE NAME], Notes
|
||||
|
||||
### Community 28 - "Graphify Watch Mode"
|
||||
Cohesion: 0.50
|
||||
Nodes (3): For /graphify add, For --watch, graphify reference: add a URL and watch a folder
|
||||
|
||||
### Community 29 - "Graphify Hooks"
|
||||
Cohesion: 0.50
|
||||
Nodes (3): For git commit hook, For native CLAUDE.md integration, graphify reference: commit hook and native CLAUDE.md integration
|
||||
|
||||
### Community 30 - "Graphify Updates"
|
||||
Cohesion: 0.50
|
||||
Nodes (3): For --cluster-only, For --update (incremental re-extraction), graphify reference: incremental update and cluster-only
|
||||
|
||||
### Community 31 - "Ponytail Debt"
|
||||
Cohesion: 0.50
|
||||
Nodes (3): Boundaries, Output, Scan
|
||||
|
||||
### Community 40 - "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)"
|
||||
Cohesion: 0.14
|
||||
Nodes (14): Assumptions, Assumptions & Scope, Clarifications, Explicit Out of Scope (POC), Feature Specification: Multilingual NLP Entity Inherence Classifier (POC), Functional Requirements, Key Entities *(data models & domain entities)*, Measurable Outcomes (+6 more)
|
||||
|
||||
### Community 41 - "1. Technical Decisions & Tradeoffs"
|
||||
Cohesion: 0.22
|
||||
Nodes (8): 1. Technical Decisions & Tradeoffs, 2. Standardized Error Handling Strategy, Decision 1: Execution Engine & CLI Architecture, Decision 2: Multilingual Language Detection & Normalization (Tier 1 Core), Decision 3: Materialized ECP Snapshot Contract & Matching Logic, Decision 4: Tier 2 (Embeddings) & Tier 3 (LLM) Optional Adapters, Decision 5: Controlled 24-Case POC Benchmark Suite, Technical Research & Architecture Decisions (POC)
|
||||
|
||||
### Community 42 - "1. Input Schemas"
|
||||
Cohesion: 0.25
|
||||
Nodes (7): 1.1 ECP Snapshot Schema (`snapshot.json`), 1.2 Content Item Schema (`content.md`), 1. Input Schemas, 2.1 Classification Success Result Schema (`result.json`), 2.2 Error Result Schema, 2. Output Schemas, Data Models & Schemas (POC)
|
||||
|
||||
### Community 43 - "2. Basic CLI Usage Examples"
|
||||
Cohesion: 0.25
|
||||
Nodes (7): 1. Prerequisites & Installation, 2.1 Direct Inherence (Portuguese), 2.2 Contextual Inherence via Graph Snapshot (German), 2.3 Tangential Mention (Spanish), 2. Basic CLI Usage Examples, 3. Running the Controlled 24-Case Benchmark, Quickstart & Validation Guide (POC)
|
||||
|
||||
### Community 44 - "2. Standard Streams & Exit Codes"
|
||||
Cohesion: 0.29
|
||||
Nodes (6): 1.1 Arguments & Options, 1. Command Line Interface, 2.1 Exit Codes, 2.2 Standard Output (`stdout`) / Standard Error (`stderr`), 2. Standard Streams & Exit Codes, CLI Contract & Interface Specification (POC)
|
||||
|
||||
### Community 45 - "ECPSnapshot"
|
||||
Cohesion: 0.07
|
||||
Nodes (26): ABC, Any, parametrize, BaseNLPAdapter, Base abstract adapter interface for optional Tier 2 / Tier 3 NLP enhancers., Abstract interface for pluggable NLP classification adapters., Return True if the underlying provider or model is installed and configured., Compute semantic similarity score between text and a set of candidate terms. (+18 more)
|
||||
|
||||
### Community 46 - "classifier.py"
|
||||
Cohesion: 0.09
|
||||
Nodes (39): emit_error(), Enum, count_phrase_occurrences(), InherenceClassifier, match_phrase_in_text(), Core deterministic classification engine (Tier 1 core)., Check if a normalized phrase appears in normalized text with word boundary…, Count occurrences of a phrase in text. (+31 more)
|
||||
|
||||
### Community 47 - "detect_language"
|
||||
Cohesion: 0.19
|
||||
Nodes (16): detect_language(), extract_words(), normalize_text(), Lightweight multilingual language detection and text normalization., Normalize text by converting to lowercase and stripping combining diacritical…, Tokenize text into lowercase alphanumeric words., Detect the ISO-639-1 language code of text among supported languages (pt, en,…, Unit tests for language detection and text normalization. (+8 more)
|
||||
|
||||
### Community 48 - "main"
|
||||
Cohesion: 0.31
|
||||
Nodes (9): main(), parse_args(), Namespace, CLI execution tests covering flags, arguments, stdout, and error handling., test_cli_empty_content_file(), test_cli_missing_ecp_file(), test_cli_missing_required_ecp_field(), test_cli_output_file() (+1 more)
|
||||
|
||||
## Knowledge Gaps
|
||||
- **291 isolated node(s):** `text-nlp-classifier`, `MatchedGraphEntity`, `graphify`, `Usage`, `What graphify is for` (+286 more)
|
||||
These have ≤1 connection - possible missing edges or undocumented components.
|
||||
- **37 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
||||
|
||||
## Suggested Questions
|
||||
_Questions this graph is uniquely positioned to answer:_
|
||||
|
||||
- **Why does `ECPSnapshot` connect `ECPSnapshot` to `main`, `classifier.py`?**
|
||||
_High betweenness centrality (0.011) - this node is a cross-community bridge._
|
||||
- **Why does `detect_language()` connect `detect_language` to `classifier.py`?**
|
||||
_High betweenness centrality (0.007) - this node is a cross-community bridge._
|
||||
- **Why does `InherenceClassifier` connect `classifier.py` to `main`, `ECPSnapshot`?**
|
||||
_High betweenness centrality (0.006) - this node is a cross-community bridge._
|
||||
- **Are the 10 inferred relationships involving `ECPSnapshot` (e.g. with `main()` and `BaseNLPAdapter`) actually correct?**
|
||||
_`ECPSnapshot` has 10 INFERRED edges - model-reasoned connections that need verification._
|
||||
- **Are the 6 inferred relationships involving `InherenceClassifier` (e.g. with `LocalEmbeddingsAdapter` and `LLMFallbackAdapter`) actually correct?**
|
||||
_`InherenceClassifier` has 6 INFERRED edges - model-reasoned connections that need verification._
|
||||
- **Are the 4 inferred relationships involving `ClassificationResult` (e.g. with `BaseNLPAdapter` and `LocalEmbeddingsAdapter`) actually correct?**
|
||||
_`ClassificationResult` has 4 INFERRED edges - model-reasoned connections that need verification._
|
||||
- **Are the 3 inferred relationships involving `LocalEmbeddingsAdapter` (e.g. with `ClassificationResult` and `ECPSnapshot`) actually correct?**
|
||||
_`LocalEmbeddingsAdapter` has 3 INFERRED edges - model-reasoned connections that need verification._
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,572 @@
|
||||
{
|
||||
".specify/scripts/powershell/check-prerequisites.ps1": {
|
||||
"mtime": 1787189272.2023797,
|
||||
"seen": 1787189326.0933716,
|
||||
"ast_hash": "ab9d4c9d5772d28c6b2150b1f53ac638",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".specify/scripts/powershell/common.ps1": {
|
||||
"mtime": 1787189272.20638,
|
||||
"seen": 1787189326.0933838,
|
||||
"ast_hash": "6d1dc2322173d3cd13a3633d61324293",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".specify/scripts/powershell/create-new-feature.ps1": {
|
||||
"mtime": 1787189272.211369,
|
||||
"seen": 1787189326.0933893,
|
||||
"ast_hash": "fad051375e6dcd47030cc49188472fe1",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".specify/scripts/powershell/resolve-template.ps1": {
|
||||
"mtime": 1787189272.2143798,
|
||||
"seen": 1787189326.0933924,
|
||||
"ast_hash": "645ad018c6297df6e23949ac3e915749",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".specify/scripts/powershell/setup-plan.ps1": {
|
||||
"mtime": 1787189272.2183795,
|
||||
"seen": 1787189326.0933957,
|
||||
"ast_hash": "02abf0794256a7423782adc760f0e0ca",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".specify/scripts/powershell/setup-tasks.ps1": {
|
||||
"mtime": 1787189272.22138,
|
||||
"seen": 1787189326.093398,
|
||||
"ast_hash": "9aa2f52ce7abece8476845b1f21a0ced",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".agents/skills/graphify/SKILL.md": {
|
||||
"mtime": 1787189375.57439,
|
||||
"seen": 1787189383.8494325,
|
||||
"ast_hash": "1656a8a8e4a05bbe69f32cd15de81e87",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".agents/skills/graphify/references/add-watch.md": {
|
||||
"mtime": 1787176247.1083012,
|
||||
"seen": 1787189352.7428358,
|
||||
"ast_hash": "d59d027fe449f06aa03905a01184e779",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".agents/skills/graphify/references/exports.md": {
|
||||
"mtime": 1787176247.109326,
|
||||
"seen": 1787189352.742837,
|
||||
"ast_hash": "9da2a2152e60a22f07f05fed5158f287",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".agents/skills/graphify/references/extraction-spec.md": {
|
||||
"mtime": 1787176247.109326,
|
||||
"seen": 1787189352.7428386,
|
||||
"ast_hash": "42fef56a01698118f7fd722acdadea34",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".agents/skills/graphify/references/github-and-merge.md": {
|
||||
"mtime": 1787176247.1118312,
|
||||
"seen": 1787189352.7428403,
|
||||
"ast_hash": "cde13df085e4c492aeb7ba298a996d0d",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".agents/skills/graphify/references/hooks.md": {
|
||||
"mtime": 1787176247.1128435,
|
||||
"seen": 1787189352.7428415,
|
||||
"ast_hash": "3f545db6ce646650bb9de588f5512a27",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".agents/skills/graphify/references/query.md": {
|
||||
"mtime": 1787176247.1138976,
|
||||
"seen": 1787189352.742843,
|
||||
"ast_hash": "3c46f8ad006874260614ed8657d02307",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".agents/skills/graphify/references/transcribe.md": {
|
||||
"mtime": 1787176247.1138976,
|
||||
"seen": 1787189352.7428443,
|
||||
"ast_hash": "67b6a5fa6c0974e18f60db9f8932fbd8",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".agents/skills/graphify/references/update.md": {
|
||||
"mtime": 1787176247.11542,
|
||||
"seen": 1787189352.7428463,
|
||||
"ast_hash": "9378bd03d56baaf78bd738ab3848f142",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".agents/skills/ponytail-audit/SKILL.md": {
|
||||
"mtime": 1786995804.1528327,
|
||||
"seen": 1787189326.0934196,
|
||||
"ast_hash": "741076540e91247a0bace7b89c27ac6b",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".agents/skills/ponytail-debt/SKILL.md": {
|
||||
"mtime": 1786995804.1528327,
|
||||
"seen": 1787189326.0934212,
|
||||
"ast_hash": "19c1eef33c9b109abb5805a762a545c8",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".agents/skills/ponytail-gain/SKILL.md": {
|
||||
"mtime": 1786995804.1542277,
|
||||
"seen": 1787189326.0934231,
|
||||
"ast_hash": "8f9cd980326238785d2fc23a9cfddc96",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".agents/skills/ponytail-help/SKILL.md": {
|
||||
"mtime": 1786995804.1542277,
|
||||
"seen": 1787189326.0934246,
|
||||
"ast_hash": "25b3214341fdc2f0805d2f8a5da6fefd",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".agents/skills/ponytail-review/SKILL.md": {
|
||||
"mtime": 1786995804.1552386,
|
||||
"seen": 1787189326.0934267,
|
||||
"ast_hash": "52f93e973047baa9a906c6dc5879a4a6",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".agents/skills/ponytail/SKILL.md": {
|
||||
"mtime": 1786995804.1562397,
|
||||
"seen": 1787189326.0934284,
|
||||
"ast_hash": "33f013ce03c8c66a6002ef941a433b81",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".agents/skills/speckit-analyze/SKILL.md": {
|
||||
"mtime": 1787189272.133064,
|
||||
"seen": 1787189326.0934305,
|
||||
"ast_hash": "d0496db1f414b10bb0c8d57d5009f378",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".agents/skills/speckit-checklist/SKILL.md": {
|
||||
"mtime": 1787189272.1603796,
|
||||
"seen": 1787189326.0934336,
|
||||
"ast_hash": "94a6ee97b010344e446c25798ad7779b",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".agents/skills/speckit-clarify/SKILL.md": {
|
||||
"mtime": 1787189272.137533,
|
||||
"seen": 1787189326.0934358,
|
||||
"ast_hash": "9ed49f88546289c1f40df65c485ace1a",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".agents/skills/speckit-constitution/SKILL.md": {
|
||||
"mtime": 1787189272.1413815,
|
||||
"seen": 1787189326.0934374,
|
||||
"ast_hash": "146185078e43d2e95014fda5b36f7461",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".agents/skills/speckit-converge/SKILL.md": {
|
||||
"mtime": 1787189272.1503813,
|
||||
"seen": 1787189326.0934393,
|
||||
"ast_hash": "6857bd3f30fc0c52352a450a8c2c0591",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".agents/skills/speckit-implement/SKILL.md": {
|
||||
"mtime": 1787189272.146373,
|
||||
"seen": 1787189326.0934412,
|
||||
"ast_hash": "562d500cddb51ca6d5f23971f7539341",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".agents/skills/speckit-plan/SKILL.md": {
|
||||
"mtime": 1787189272.15438,
|
||||
"seen": 1787189326.0934432,
|
||||
"ast_hash": "aba2d03c1b88c8f928ac22f7e3d75a25",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".agents/skills/speckit-specify/SKILL.md": {
|
||||
"mtime": 1787189272.165381,
|
||||
"seen": 1787189326.093445,
|
||||
"ast_hash": "a9dd8232755de1ac099f67ae212978b9",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".agents/skills/speckit-tasks/SKILL.md": {
|
||||
"mtime": 1787189272.1693797,
|
||||
"seen": 1787189326.0934472,
|
||||
"ast_hash": "faba87885d7a9309af89e1ad27d08e10",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".agents/skills/speckit-taskstoissues/SKILL.md": {
|
||||
"mtime": 1787189272.172365,
|
||||
"seen": 1787189326.093449,
|
||||
"ast_hash": "b99619d8bd31aac390a0ff96943d165c",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".specify/memory/constitution.md": {
|
||||
"mtime": 1787189272.25438,
|
||||
"seen": 1787189326.0934513,
|
||||
"ast_hash": "dcefb6b60e7cb3db2e966977b6f02f18",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".specify/templates/checklist-template.md": {
|
||||
"mtime": 1787189272.2233796,
|
||||
"seen": 1787189326.0934534,
|
||||
"ast_hash": "5af23404f7e1314e93fab2bcfcfa5c23",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".specify/templates/constitution-template.md": {
|
||||
"mtime": 1787189272.2263799,
|
||||
"seen": 1787189326.093455,
|
||||
"ast_hash": "dcefb6b60e7cb3db2e966977b6f02f18",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".specify/templates/plan-template.md": {
|
||||
"mtime": 1787189272.2293687,
|
||||
"seen": 1787189326.0934572,
|
||||
"ast_hash": "311db0670c3d19d2f5b781de97529b79",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".specify/templates/spec-template.md": {
|
||||
"mtime": 1787189272.2313685,
|
||||
"seen": 1787189326.0934594,
|
||||
"ast_hash": "45ac8538bc1220324c9f0d610145b53f",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".specify/templates/tasks-template.md": {
|
||||
"mtime": 1787189272.2343798,
|
||||
"seen": 1787189326.0934615,
|
||||
"ast_hash": "f8b4f62d384defa0a559bdbbaacb0540",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".specify/workflows/speckit/workflow.yml": {
|
||||
"mtime": 1787160407.4626267,
|
||||
"seen": 1787189326.0934637,
|
||||
"ast_hash": "06fd89e478bb8e0e668917a5f02f9055",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".agents/rules/graphify.md": {
|
||||
"mtime": 1787189347.4441817,
|
||||
"seen": 1787189352.7428298,
|
||||
"ast_hash": "a0e4d192b9e2e17256124dbfc8e24e6a",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
".agents/workflows/graphify.md": {
|
||||
"mtime": 1787189347.4441817,
|
||||
"seen": 1787189352.7449548,
|
||||
"ast_hash": "a831cf3669f1e6ab85d8a80ebe655f99",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"specs/001-multilingual-entity-classifier/checklists/requirements.md": {
|
||||
"mtime": 1787193985.655018,
|
||||
"seen": 1787194003.0704188,
|
||||
"ast_hash": "13e007d6da3f275d34b1f67fda546b81",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"specs/001-multilingual-entity-classifier/spec.md": {
|
||||
"mtime": 1787194850.5106893,
|
||||
"seen": 1787194931.113662,
|
||||
"ast_hash": "41587427964956662ffb8f0dffea1027",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"specs/001-multilingual-entity-classifier/contracts/cli-contract.md": {
|
||||
"mtime": 1787194605.824187,
|
||||
"seen": 1787194638.8537047,
|
||||
"ast_hash": "c4fdb88a5e3269fb10689a2940b9616f",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"specs/001-multilingual-entity-classifier/data-model.md": {
|
||||
"mtime": 1787194591.677816,
|
||||
"seen": 1787194638.853709,
|
||||
"ast_hash": "7ccdd584024c65f16364444e9df4d860",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"specs/001-multilingual-entity-classifier/plan.md": {
|
||||
"mtime": 1787194897.8541067,
|
||||
"seen": 1787194931.1135547,
|
||||
"ast_hash": "edcaea62d445dbb073ff30166115788e",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"specs/001-multilingual-entity-classifier/quickstart.md": {
|
||||
"mtime": 1787194877.439851,
|
||||
"seen": 1787194931.113557,
|
||||
"ast_hash": "d630b7592e1ee761f1d36cfd0079771d",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"specs/001-multilingual-entity-classifier/research.md": {
|
||||
"mtime": 1787194581.004019,
|
||||
"seen": 1787194638.8537128,
|
||||
"ast_hash": "159b7eec565d477f15f2c683c082e40d",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"specs/001-multilingual-entity-classifier/tasks.md": {
|
||||
"mtime": 1787196452.595599,
|
||||
"seen": 1787196463.1030743,
|
||||
"ast_hash": "132f38dcd33d45eec9a8ca22ec4de880",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"specs/001-multilingual-entity-classifier/checklists/poc-readiness.md": {
|
||||
"mtime": 1787195218.2475252,
|
||||
"seen": 1787195225.042909,
|
||||
"ast_hash": "f8488016a8e749938d2086d34999a91c",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"classify.py": {
|
||||
"mtime": 1787195933.7872643,
|
||||
"seen": 1787196463.095295,
|
||||
"ast_hash": "5fa90ecfb87bdf15ee99165a3be7c63b",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"pyproject.toml": {
|
||||
"mtime": 1787195827.3305018,
|
||||
"seen": 1787196463.0953014,
|
||||
"ast_hash": "f2503e96d08f5a4e41b13352e81709c6",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/__init__.py": {
|
||||
"mtime": 1787195832.559486,
|
||||
"seen": 1787196463.0953057,
|
||||
"ast_hash": "13284e9b9f10de535dba5f461ecd7c7c",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/adapters/__init__.py": {
|
||||
"mtime": 1787195842.2716768,
|
||||
"seen": 1787196463.0953088,
|
||||
"ast_hash": "541577ed019347ac3864002f85c116f1",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/adapters/base.py": {
|
||||
"mtime": 1787196396.6199949,
|
||||
"seen": 1787196463.0953116,
|
||||
"ast_hash": "40dc6e175c8708467748c1f42a0e064a",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/adapters/embeddings.py": {
|
||||
"mtime": 1787196402.7484262,
|
||||
"seen": 1787196463.0953145,
|
||||
"ast_hash": "0444823bb05720d4c4ca1662a00b2c01",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/adapters/llm.py": {
|
||||
"mtime": 1787196408.180451,
|
||||
"seen": 1787196463.0953166,
|
||||
"ast_hash": "3d95d98625df3fcd343f2fecb78707c5",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/classifier.py": {
|
||||
"mtime": 1787196413.3774571,
|
||||
"seen": 1787196463.095319,
|
||||
"ast_hash": "d7bab620ae29badf0d3779fab44552bc",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/language.py": {
|
||||
"mtime": 1787196384.5545745,
|
||||
"seen": 1787196463.0953217,
|
||||
"ast_hash": "985619013e58a7f55af2e955817f223c",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/models.py": {
|
||||
"mtime": 1787195855.3266282,
|
||||
"seen": 1787196463.0953236,
|
||||
"ast_hash": "ce73bfe85eb54f907e2052c80636ecaf",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/parser.py": {
|
||||
"mtime": 1787195873.9119804,
|
||||
"seen": 1787196463.0953257,
|
||||
"ast_hash": "0a1d64ee7088b266125af071f85f3826",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/__init__.py": {
|
||||
"mtime": 1787195847.5186412,
|
||||
"seen": 1787196463.095328,
|
||||
"ast_hash": "42d67f813e6eeac2ffca24fe6206aa9b",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/test_adapters.py": {
|
||||
"mtime": 1787196418.6328156,
|
||||
"seen": 1787196463.09533,
|
||||
"ast_hash": "5caf95327ea030dbcc37a99bd9052ebd",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/test_benchmark_24.py": {
|
||||
"mtime": 1787196325.5409796,
|
||||
"seen": 1787196463.0953324,
|
||||
"ast_hash": "487d30d6de2dee529fa91b86a1d62c0a",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/test_classifier.py": {
|
||||
"mtime": 1787196364.7195728,
|
||||
"seen": 1787196463.0953343,
|
||||
"ast_hash": "4350a5b11a08d12ccb85a3f332d71e87",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/test_cli.py": {
|
||||
"mtime": 1787195939.567137,
|
||||
"seen": 1787196463.0953364,
|
||||
"ast_hash": "90b0131d43cfc64a76e499c7a65d95de",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/test_language.py": {
|
||||
"mtime": 1787195891.3329668,
|
||||
"seen": 1787196463.0953388,
|
||||
"ast_hash": "66191b43fcd7aef47c07cd20d5a8f03c",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/test_models.py": {
|
||||
"mtime": 1787195886.5009987,
|
||||
"seen": 1787196463.095341,
|
||||
"ast_hash": "1fd725c8ca0f52e52f56c7223e9574d0",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"examples/content_northvolt_de.md": {
|
||||
"mtime": 1787195963.813741,
|
||||
"seen": 1787196463.1020777,
|
||||
"ast_hash": "9033a8bdde7f2caba952eb0f50af8ba6",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"examples/content_presal_pt.md": {
|
||||
"mtime": 1787195950.0247998,
|
||||
"seen": 1787196463.10208,
|
||||
"ast_hash": "d08c26af041b833fbc9e6673aec4ee80",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"examples/content_tangential_es.md": {
|
||||
"mtime": 1787195975.5271506,
|
||||
"seen": 1787196463.1020815,
|
||||
"ast_hash": "55f37cf83b54926e1f5751a4ba6335a9",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"requirements.txt": {
|
||||
"mtime": 1787195817.4782183,
|
||||
"seen": 1787196463.1020837,
|
||||
"ast_hash": "5612073a1e7034d7c25765379baa5da4",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/de/contextual.md": {
|
||||
"mtime": 1787196180.7794595,
|
||||
"seen": 1787196463.103077,
|
||||
"ast_hash": "1e78706552a34512ac2a2b772ec2ecd1",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/de/direct.md": {
|
||||
"mtime": 1787196169.5728126,
|
||||
"seen": 1787196463.1030784,
|
||||
"ast_hash": "25f60b38e35c96356d7ecbabdd6de545",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/de/not_related.md": {
|
||||
"mtime": 1787196204.0937815,
|
||||
"seen": 1787196463.1030807,
|
||||
"ast_hash": "6d6165d5279cda9cde833a6aa2d71164",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/de/tangential.md": {
|
||||
"mtime": 1787196193.1870873,
|
||||
"seen": 1787196463.1030822,
|
||||
"ast_hash": "3f5ddf01ca728aa2d0116882604718cf",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/en/contextual.md": {
|
||||
"mtime": 1787196066.4274058,
|
||||
"seen": 1787196463.1030838,
|
||||
"ast_hash": "89114901dc8579adafa4fb503afbc761",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/en/direct.md": {
|
||||
"mtime": 1787196054.1496131,
|
||||
"seen": 1787196463.1030855,
|
||||
"ast_hash": "dd15e4f08c2757ee499da0bea578c04c",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/en/not_related.md": {
|
||||
"mtime": 1787196350.3334656,
|
||||
"seen": 1787196463.103087,
|
||||
"ast_hash": "9e2c91a29282eac5d4c21c38bef9767e",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/en/tangential.md": {
|
||||
"mtime": 1787196082.7302663,
|
||||
"seen": 1787196463.1030884,
|
||||
"ast_hash": "fe681417b697406ea16e0e78f2df8ce4",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/es/contextual.md": {
|
||||
"mtime": 1787196129.959492,
|
||||
"seen": 1787196463.1030898,
|
||||
"ast_hash": "8668670e9a018ba879fb256dbe5bd2fa",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/es/direct.md": {
|
||||
"mtime": 1787196118.6405888,
|
||||
"seen": 1787196463.103091,
|
||||
"ast_hash": "d01aa9c2cda827336558b993098fa4a1",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/es/not_related.md": {
|
||||
"mtime": 1787196152.6110358,
|
||||
"seen": 1787196463.1030927,
|
||||
"ast_hash": "720215fd2a9ec45f745564869b20a19d",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/es/tangential.md": {
|
||||
"mtime": 1787196141.436479,
|
||||
"seen": 1787196463.1030943,
|
||||
"ast_hash": "ef16422876c7925ea0b2631483468f12",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/fr/contextual.md": {
|
||||
"mtime": 1787196288.4152596,
|
||||
"seen": 1787196463.1030955,
|
||||
"ast_hash": "bf01dc91dc0a8abe21eca424fb44d0c4",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/fr/direct.md": {
|
||||
"mtime": 1787196277.0201283,
|
||||
"seen": 1787196463.1030967,
|
||||
"ast_hash": "772cc74cec96c666c7e348f600720e14",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/fr/not_related.md": {
|
||||
"mtime": 1787196312.47212,
|
||||
"seen": 1787196463.1030984,
|
||||
"ast_hash": "da5869eda42812d47e82a4cabf77f984",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/fr/tangential.md": {
|
||||
"mtime": 1787196301.2256103,
|
||||
"seen": 1787196463.103103,
|
||||
"ast_hash": "6926ee30a0f12424c3c4f6691daeb1fd",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/it/contextual.md": {
|
||||
"mtime": 1787196234.462201,
|
||||
"seen": 1787196463.1031046,
|
||||
"ast_hash": "53dfa9859257d99d54b3479702abbd11",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/it/direct.md": {
|
||||
"mtime": 1787196221.6644733,
|
||||
"seen": 1787196463.1031058,
|
||||
"ast_hash": "493cbc253516b219d6b0d745bf6c750f",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/it/not_related.md": {
|
||||
"mtime": 1787196259.3629923,
|
||||
"seen": 1787196463.1031072,
|
||||
"ast_hash": "3fbc57bc9b9c78af4b6eb93343cc4634",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/it/tangential.md": {
|
||||
"mtime": 1787196245.9183564,
|
||||
"seen": 1787196463.1031086,
|
||||
"ast_hash": "43f800646fc2a4060528e7ef851e8d77",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/pt/contextual.md": {
|
||||
"mtime": 1787196014.2010715,
|
||||
"seen": 1787196463.10311,
|
||||
"ast_hash": "2e5b837c09ac05daae5007235e2a85b5",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/pt/direct.md": {
|
||||
"mtime": 1787196003.236562,
|
||||
"seen": 1787196463.1031117,
|
||||
"ast_hash": "f7e5ca68966f5e2b805fde6d46b90f7e",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/pt/not_related.md": {
|
||||
"mtime": 1787196036.7240841,
|
||||
"seen": 1787196463.103113,
|
||||
"ast_hash": "980a58ca0db93f8dbb6c43e1c9108baf",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/pt/tangential.md": {
|
||||
"mtime": 1787196024.9788618,
|
||||
"seen": 1787196463.1031141,
|
||||
"ast_hash": "e05ab20a5190cfb5b9d41da64d5273cf",
|
||||
"semantic_hash": ""
|
||||
}
|
||||
}
|
||||
+132
-37
@@ -1,20 +1,26 @@
|
||||
# Graph Report - TextNLPClassifierApp (2026-08-19)
|
||||
# Graph Report - TextNLPClassifierApp (2026-08-20)
|
||||
|
||||
## Corpus Check
|
||||
- cluster-only mode — file stats not available
|
||||
- 133 files · ~54,759 words
|
||||
- Verdict: corpus is large enough that graph structure adds value.
|
||||
|
||||
## Summary
|
||||
- 310 nodes · 284 edges · 40 communities (34 shown, 6 thin omitted)
|
||||
- Extraction: 100% EXTRACTED · 0% INFERRED · 0% AMBIGUOUS
|
||||
- Token cost: 1,734 input · 302 output
|
||||
- 595 nodes · 704 edges · 80 communities (43 shown, 37 thin omitted)
|
||||
- Extraction: 96% EXTRACTED · 4% INFERRED · 0% AMBIGUOUS · INFERRED: 31 edges (avg confidence: 0.95)
|
||||
- Token cost: 0 input · 0 output
|
||||
|
||||
## Graph Freshness
|
||||
- Built from commit: `d371b81a`
|
||||
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
|
||||
- Run `graphify update .` after code changes (no API cost).
|
||||
|
||||
## Community Hubs (Navigation)
|
||||
- Task Planning
|
||||
- Convergence Workflow
|
||||
- SpecKit Utilities
|
||||
- Graphify Commands
|
||||
- Specification Analysis
|
||||
- Analysis Detection
|
||||
- speckit-analyze/SKILL.md
|
||||
- Tasks: Multilingual NLP Entity Inherence Classifier (POC)
|
||||
- Feature Specification Template
|
||||
- Graphify Rules
|
||||
- Implementation Planning
|
||||
@@ -45,26 +51,75 @@
|
||||
- Media Transcription
|
||||
- Extraction Specification
|
||||
- Graphify Workflows
|
||||
- Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)
|
||||
- 1. Technical Decisions & Tradeoffs
|
||||
- 1. Input Schemas
|
||||
- 2. Basic CLI Usage Examples
|
||||
- 2. Standard Streams & Exit Codes
|
||||
- ECPSnapshot
|
||||
- test_models.py
|
||||
- detect_language
|
||||
- main
|
||||
- content_northvolt_de.md
|
||||
- content_presal_pt.md
|
||||
- content_tangential_es.md
|
||||
- adapters/__init__.py
|
||||
- src/__init__.py
|
||||
- de/contextual.md
|
||||
- de/direct.md
|
||||
- de/not_related.md
|
||||
- de/tangential.md
|
||||
- en/contextual.md
|
||||
- en/direct.md
|
||||
- en/not_related.md
|
||||
- en/tangential.md
|
||||
- es/contextual.md
|
||||
- es/direct.md
|
||||
- es/not_related.md
|
||||
- es/tangential.md
|
||||
- fr/contextual.md
|
||||
- fr/direct.md
|
||||
- fr/not_related.md
|
||||
- fr/tangential.md
|
||||
- it/contextual.md
|
||||
- it/direct.md
|
||||
- it/not_related.md
|
||||
- it/tangential.md
|
||||
- pt/contextual.md
|
||||
- pt/direct.md
|
||||
- pt/not_related.md
|
||||
- pt/tangential.md
|
||||
- tests/__init__.py
|
||||
- text-nlp-classifier
|
||||
|
||||
## God Nodes (most connected - your core abstractions)
|
||||
1. `Tasks: [FEATURE NAME]` - 13 edges
|
||||
2. `What You Must Do When Invoked` - 12 edges
|
||||
3. `/graphify` - 10 edges
|
||||
4. `graphify reference: extra exports and benchmark` - 8 edges
|
||||
5. `Ponytail` - 8 edges
|
||||
6. `Execution Steps` - 7 edges
|
||||
7. `Ponytail Help` - 7 edges
|
||||
8. `4. Detection Passes (Token-Efficient Analysis)` - 7 edges
|
||||
9. `Execution Steps` - 7 edges
|
||||
10. `Core Principles` - 6 edges
|
||||
1. `ECPSnapshot` - 31 edges
|
||||
2. `InherenceClassifier` - 25 edges
|
||||
3. `DecisionCategory` - 18 edges
|
||||
4. `ClassificationResult` - 17 edges
|
||||
5. `LocalEmbeddingsAdapter` - 14 edges
|
||||
6. `LLMFallbackAdapter` - 14 edges
|
||||
7. `detect_language()` - 14 edges
|
||||
8. `main()` - 13 edges
|
||||
9. `Tasks: [FEATURE NAME]` - 13 edges
|
||||
10. `BaseNLPAdapter` - 12 edges
|
||||
|
||||
## Surprising Connections (you probably didn't know these)
|
||||
- None detected - all connections are within the same source files.
|
||||
- `emit_error()` --uses--> `ErrorCode` [INFERRED]
|
||||
classify.py → src/models.py
|
||||
- `main()` --uses--> `ECPSnapshot` [INFERRED]
|
||||
classify.py → src/models.py
|
||||
- `main()` --uses--> `ErrorCode` [INFERRED]
|
||||
classify.py → src/models.py
|
||||
- `test_classification_error_serialization()` --uses--> `ErrorCode` [INFERRED]
|
||||
tests/test_models.py → src/models.py
|
||||
- `test_ecp_snapshot_defaults()` --uses--> `ECPSnapshot` [INFERRED]
|
||||
tests/test_models.py → src/models.py
|
||||
|
||||
## Import Cycles
|
||||
- None detected.
|
||||
|
||||
## Communities (40 total, 6 thin omitted)
|
||||
## Communities (80 total, 37 thin omitted)
|
||||
|
||||
### Community 0 - "Task Planning"
|
||||
Cohesion: 0.07
|
||||
@@ -82,13 +137,13 @@ Nodes (13): Find-SpecifyRoot(), Format-SpecKitCommand(), Get-CurrentBranch(), Ge
|
||||
Cohesion: 0.08
|
||||
Nodes (24): For /graphify add and --watch, For /graphify query, For the commit hook and native CLAUDE.md integration, For --update and --cluster-only, /graphify, Honesty Rules, Interpreter guard for subcommands, Part A - Structural extraction for code files (+16 more)
|
||||
|
||||
### Community 4 - "Specification Analysis"
|
||||
Cohesion: 0.15
|
||||
Nodes (12): 7. Provide Next Actions, 8. Offer Remediation, 9. Check for extension hooks, Analysis Guidelines, Context, Context Efficiency, Goal, Operating Constraints (+4 more)
|
||||
### Community 4 - "speckit-analyze/SKILL.md"
|
||||
Cohesion: 0.08
|
||||
Nodes (25): 1. Initialize Analysis Context, 2. Load Artifacts (Progressive Disclosure), 3. Build Semantic Models, 4. Detection Passes (Token-Efficient Analysis), 5. Severity Assignment, 6. Produce Compact Analysis Report, 7. Provide Next Actions, 8. Offer Remediation (+17 more)
|
||||
|
||||
### Community 5 - "Analysis Detection"
|
||||
Cohesion: 0.15
|
||||
Nodes (13): 1. Initialize Analysis Context, 2. Load Artifacts (Progressive Disclosure), 3. Build Semantic Models, 4. Detection Passes (Token-Efficient Analysis), 5. Severity Assignment, 6. Produce Compact Analysis Report, A. Duplication Detection, B. Ambiguity Detection (+5 more)
|
||||
### Community 5 - "Tasks: Multilingual NLP Entity Inherence Classifier (POC)"
|
||||
Cohesion: 0.06
|
||||
Nodes (33): 1. Requirement Completeness & Scope Boundaries, 2. Requirement Clarity & Decision Semantics, 3. Requirement Consistency & Alignment, 4. Acceptance Criteria & Measurability, 5. Scenario & Edge Case Coverage, Notes, POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier, Content Quality (+25 more)
|
||||
|
||||
### Community 6 - "Feature Specification Template"
|
||||
Cohesion: 0.15
|
||||
@@ -186,21 +241,61 @@ Nodes (3): For --cluster-only, For --update (incremental re-extraction), graphif
|
||||
Cohesion: 0.50
|
||||
Nodes (3): Boundaries, Output, Scan
|
||||
|
||||
### Community 40 - "Feature Specification: Multilingual NLP Entity Inherence Classifier (POC)"
|
||||
Cohesion: 0.14
|
||||
Nodes (14): Assumptions, Assumptions & Scope, Clarifications, Explicit Out of Scope (POC), Feature Specification: Multilingual NLP Entity Inherence Classifier (POC), Functional Requirements, Key Entities *(data models & domain entities)*, Measurable Outcomes (+6 more)
|
||||
|
||||
### Community 41 - "1. Technical Decisions & Tradeoffs"
|
||||
Cohesion: 0.22
|
||||
Nodes (8): 1. Technical Decisions & Tradeoffs, 2. Standardized Error Handling Strategy, Decision 1: Execution Engine & CLI Architecture, Decision 2: Multilingual Language Detection & Normalization (Tier 1 Core), Decision 3: Materialized ECP Snapshot Contract & Matching Logic, Decision 4: Tier 2 (Embeddings) & Tier 3 (LLM) Optional Adapters, Decision 5: Controlled 24-Case POC Benchmark Suite, Technical Research & Architecture Decisions (POC)
|
||||
|
||||
### Community 42 - "1. Input Schemas"
|
||||
Cohesion: 0.25
|
||||
Nodes (7): 1.1 ECP Snapshot Schema (`snapshot.json`), 1.2 Content Item Schema (`content.md`), 1. Input Schemas, 2.1 Classification Success Result Schema (`result.json`), 2.2 Error Result Schema, 2. Output Schemas, Data Models & Schemas (POC)
|
||||
|
||||
### Community 43 - "2. Basic CLI Usage Examples"
|
||||
Cohesion: 0.25
|
||||
Nodes (7): 1. Prerequisites & Installation, 2.1 Direct Inherence (Portuguese), 2.2 Contextual Inherence via Graph Snapshot (German), 2.3 Tangential Mention (Spanish), 2. Basic CLI Usage Examples, 3. Running the Controlled 24-Case Benchmark, Quickstart & Validation Guide (POC)
|
||||
|
||||
### Community 44 - "2. Standard Streams & Exit Codes"
|
||||
Cohesion: 0.29
|
||||
Nodes (6): 1.1 Arguments & Options, 1. Command Line Interface, 2.1 Exit Codes, 2.2 Standard Output (`stdout`) / Standard Error (`stderr`), 2. Standard Streams & Exit Codes, CLI Contract & Interface Specification (POC)
|
||||
|
||||
### Community 45 - "ECPSnapshot"
|
||||
Cohesion: 0.05
|
||||
Nodes (63): ABC, Enum, parametrize, BaseNLPAdapter, Base abstract adapter interface for optional Tier 2 / Tier 3 NLP enhancers., Abstract interface for pluggable NLP classification adapters., Return True if the underlying provider or model is installed and configured., Compute semantic similarity score between text and a set of candidate terms. (+55 more)
|
||||
|
||||
### Community 46 - "test_models.py"
|
||||
Cohesion: 0.12
|
||||
Nodes (17): Any, emit_error(), ClassificationError, extract_evidence_snippets(), extract_sentences(), Markdown content parser and excerpt extraction utilities., Remove markdown syntax markers (headers, bold, italics, links, code blocks) to…, Split text into individual sentences. (+9 more)
|
||||
|
||||
### Community 47 - "detect_language"
|
||||
Cohesion: 0.19
|
||||
Nodes (16): detect_language(), extract_words(), normalize_text(), Lightweight multilingual language detection and text normalization., Normalize text by converting to lowercase and stripping combining diacritical…, Tokenize text into lowercase alphanumeric words., Detect the ISO-639-1 language code of text among supported languages (pt, en,…, Unit tests for language detection and text normalization. (+8 more)
|
||||
|
||||
### Community 48 - "main"
|
||||
Cohesion: 0.31
|
||||
Nodes (9): main(), parse_args(), Namespace, CLI execution tests covering flags, arguments, stdout, and error handling., test_cli_empty_content_file(), test_cli_missing_ecp_file(), test_cli_missing_required_ecp_field(), test_cli_output_file() (+1 more)
|
||||
|
||||
## Knowledge Gaps
|
||||
- **212 isolated node(s):** `Format: `[ID] [P?] [Story] Description``, `Implementation for User Story 1`, `Implementation for User Story 2`, `Implementation for User Story 3`, `Incremental Delivery` (+207 more)
|
||||
- **291 isolated node(s):** `text-nlp-classifier`, `MatchedGraphEntity`, `graphify`, `Usage`, `What graphify is for` (+286 more)
|
||||
These have ≤1 connection - possible missing edges or undocumented components.
|
||||
- **6 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
||||
- **37 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
||||
|
||||
## Suggested Questions
|
||||
_Questions this graph is uniquely positioned to answer:_
|
||||
|
||||
- **Why does `Execution Steps` connect `Analysis Detection` to `Specification Analysis`?**
|
||||
_High betweenness centrality (0.004) - this node is a cross-community bridge._
|
||||
- **What connects `Format: `[ID] [P?] [Story] Description``, `Implementation for User Story 1`, `Implementation for User Story 2` to the rest of the system?**
|
||||
_212 weakly-connected nodes found - possible documentation gaps or missing edges._
|
||||
- **Should `Task Planning` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.07407407407407407 - nodes in this community are weakly interconnected._
|
||||
- **Should `Convergence Workflow` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.125 - nodes in this community are weakly interconnected._
|
||||
- **Should `Graphify Commands` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.08 - nodes in this community are weakly interconnected._
|
||||
- **Why does `ECPSnapshot` connect `ECPSnapshot` to `main`, `test_models.py`?**
|
||||
_High betweenness centrality (0.015) - this node is a cross-community bridge._
|
||||
- **Why does `InherenceClassifier` connect `ECPSnapshot` to `main`?**
|
||||
_High betweenness centrality (0.008) - this node is a cross-community bridge._
|
||||
- **Why does `detect_language()` connect `detect_language` to `ECPSnapshot`?**
|
||||
_High betweenness centrality (0.007) - this node is a cross-community bridge._
|
||||
- **Are the 10 inferred relationships involving `ECPSnapshot` (e.g. with `main()` and `BaseNLPAdapter`) actually correct?**
|
||||
_`ECPSnapshot` has 10 INFERRED edges - model-reasoned connections that need verification._
|
||||
- **Are the 6 inferred relationships involving `InherenceClassifier` (e.g. with `LocalEmbeddingsAdapter` and `LLMFallbackAdapter`) actually correct?**
|
||||
_`InherenceClassifier` has 6 INFERRED edges - model-reasoned connections that need verification._
|
||||
- **Are the 10 inferred relationships involving `DecisionCategory` (e.g. with `InherenceClassifier` and `test_adversarial_apple_fruit_recipe()`) actually correct?**
|
||||
_`DecisionCategory` has 10 INFERRED edges - model-reasoned connections that need verification._
|
||||
- **Are the 4 inferred relationships involving `ClassificationResult` (e.g. with `BaseNLPAdapter` and `LocalEmbeddingsAdapter`) actually correct?**
|
||||
_`ClassificationResult` has 4 INFERRED edges - model-reasoned connections that need verification._
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_tests_fixtures_benchmark_24_it_contextual_md", "label": "contextual.md", "file_type": "document", "node_kind": "page", "source_file": "tests/fixtures/benchmark_24/it/contextual.md", "source_location": "L1"}, {"id": "$graphify-root$_tests_fixtures_benchmark_24_it_contextual_innovazione_negli_impianti_frenanti", "label": "Innovazione negli Impianti Frenanti", "file_type": "document", "node_kind": "heading", "source_file": "tests/fixtures/benchmark_24/it/contextual.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_fixtures_benchmark_24_it_contextual_md", "target": "$graphify-root$_tests_fixtures_benchmark_24_it_contextual_innovazione_negli_impianti_frenanti", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/fixtures/benchmark_24/it/contextual.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_tests_fixtures_benchmark_24_pt_direct_md", "label": "direct.md", "file_type": "document", "node_kind": "page", "source_file": "tests/fixtures/benchmark_24/pt/direct.md", "source_location": "L1"}, {"id": "$graphify-root$_tests_fixtures_benchmark_24_pt_direct_produ\u00e7\u00e3o_de_petr\u00f3leo_no_brasil", "label": "Produ\u00e7\u00e3o de Petr\u00f3leo no Brasil", "file_type": "document", "node_kind": "heading", "source_file": "tests/fixtures/benchmark_24/pt/direct.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_fixtures_benchmark_24_pt_direct_md", "target": "$graphify-root$_tests_fixtures_benchmark_24_pt_direct_produ\u00e7\u00e3o_de_petr\u00f3leo_no_brasil", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/fixtures/benchmark_24/pt/direct.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_tests_fixtures_benchmark_24_es_not_related_md", "label": "not_related.md", "file_type": "document", "node_kind": "page", "source_file": "tests/fixtures/benchmark_24/es/not_related.md", "source_location": "L1"}, {"id": "$graphify-root$_tests_fixtures_benchmark_24_es_not_related_turismo_en_la_costa_norte", "label": "Turismo en la Costa Norte", "file_type": "document", "node_kind": "heading", "source_file": "tests/fixtures/benchmark_24/es/not_related.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_fixtures_benchmark_24_es_not_related_md", "target": "$graphify-root$_tests_fixtures_benchmark_24_es_not_related_turismo_en_la_costa_norte", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/fixtures/benchmark_24/es/not_related.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_tests_fixtures_benchmark_24_en_contextual_md", "label": "contextual.md", "file_type": "document", "node_kind": "page", "source_file": "tests/fixtures/benchmark_24/en/contextual.md", "source_location": "L1"}, {"id": "$graphify-root$_tests_fixtures_benchmark_24_en_contextual_electronics_assembly_expansion", "label": "Electronics Assembly Expansion", "file_type": "document", "node_kind": "heading", "source_file": "tests/fixtures/benchmark_24/en/contextual.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_fixtures_benchmark_24_en_contextual_md", "target": "$graphify-root$_tests_fixtures_benchmark_24_en_contextual_electronics_assembly_expansion", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/fixtures/benchmark_24/en/contextual.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_md", "label": "requirements.md", "file_type": "document", "node_kind": "page", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", "label": "Specification Quality Checklist: Multilingual NLP Entity Inherence Classifier", "file_type": "document", "node_kind": "heading", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_content_quality", "label": "Content Quality", "file_type": "document", "node_kind": "heading", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L7"}, {"id": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_requirement_completeness", "label": "Requirement Completeness", "file_type": "document", "node_kind": "heading", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L14"}, {"id": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_feature_readiness", "label": "Feature Readiness", "file_type": "document", "node_kind": "heading", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L25"}, {"id": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_notes", "label": "Notes", "file_type": "document", "node_kind": "heading", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L32"}], "edges": [{"source": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_md", "target": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_md", "target": "$graphify-root$_specs_001_multilingual_entity_classifier_spec_md", "relation": "references", "confidence": "EXTRACTED", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L5", "weight": 1.0, "target_file": "$graphify-root$/specs/001-multilingual-entity-classifier/spec.md"}, {"source": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", "target": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_content_quality", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", "target": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_requirement_completeness", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", "target": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_feature_readiness", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", "target": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_notes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L32", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_md", "label": "requirements.md", "file_type": "document", "node_kind": "page", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", "label": "Specification Quality Checklist: Multilingual NLP Entity Inherence Classifier", "file_type": "document", "node_kind": "heading", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_content_quality", "label": "Content Quality", "file_type": "document", "node_kind": "heading", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L7"}, {"id": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_requirement_completeness", "label": "Requirement Completeness", "file_type": "document", "node_kind": "heading", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L14"}, {"id": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_feature_readiness", "label": "Feature Readiness", "file_type": "document", "node_kind": "heading", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L25"}, {"id": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_notes", "label": "Notes", "file_type": "document", "node_kind": "heading", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L32"}], "edges": [{"source": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_md", "target": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_md", "target": "$graphify-root$_specs_001_multilingual_entity_classifier_spec_md", "relation": "references", "confidence": "EXTRACTED", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L5", "weight": 1.0, "target_file": "$graphify-root$/specs/001-multilingual-entity-classifier/spec.md"}, {"source": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", "target": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_content_quality", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", "target": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_requirement_completeness", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", "target": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_feature_readiness", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", "target": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_notes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L32", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_tests_init_py", "label": "__init__.py", "file_type": "code", "source_file": "tests/__init__.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_init_rationale_1", "label": "Test package for Multilingual NLP Entity Inherence Classifier.", "file_type": "rationale", "source_file": "tests/__init__.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_init_rationale_1", "target": "$graphify-root$_tests_init_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/__init__.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []}
|
||||
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_tests_fixtures_benchmark_24_en_not_related_md", "label": "not_related.md", "file_type": "document", "node_kind": "page", "source_file": "tests/fixtures/benchmark_24/en/not_related.md", "source_location": "L1"}, {"id": "$graphify-root$_tests_fixtures_benchmark_24_en_not_related_classic_apple_pie_baking_guide", "label": "Classic Apple Pie Baking Guide", "file_type": "document", "node_kind": "heading", "source_file": "tests/fixtures/benchmark_24/en/not_related.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_fixtures_benchmark_24_en_not_related_md", "target": "$graphify-root$_tests_fixtures_benchmark_24_en_not_related_classic_apple_pie_baking_guide", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/fixtures/benchmark_24/en/not_related.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_tests_fixtures_benchmark_24_pt_not_related_md", "label": "not_related.md", "file_type": "document", "node_kind": "page", "source_file": "tests/fixtures/benchmark_24/pt/not_related.md", "source_location": "L1"}, {"id": "$graphify-root$_tests_fixtures_benchmark_24_pt_not_related_dicas_de_jardinagem", "label": "Dicas de Jardinagem", "file_type": "document", "node_kind": "heading", "source_file": "tests/fixtures/benchmark_24/pt/not_related.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_fixtures_benchmark_24_pt_not_related_md", "target": "$graphify-root$_tests_fixtures_benchmark_24_pt_not_related_dicas_de_jardinagem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/fixtures/benchmark_24/pt/not_related.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_tests_fixtures_benchmark_24_es_tangential_md", "label": "tangential.md", "file_type": "document", "node_kind": "page", "source_file": "tests/fixtures/benchmark_24/es/tangential.md", "source_location": "L1"}, {"id": "$graphify-root$_tests_fixtures_benchmark_24_es_tangential_gu\u00eda_cultural_de_la_ciudad", "label": "Gu\u00eda Cultural de la Ciudad", "file_type": "document", "node_kind": "heading", "source_file": "tests/fixtures/benchmark_24/es/tangential.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_fixtures_benchmark_24_es_tangential_md", "target": "$graphify-root$_tests_fixtures_benchmark_24_es_tangential_gu\u00eda_cultural_de_la_ciudad", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/fixtures/benchmark_24/es/tangential.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_tests_fixtures_benchmark_24_fr_not_related_md", "label": "not_related.md", "file_type": "document", "node_kind": "page", "source_file": "tests/fixtures/benchmark_24/fr/not_related.md", "source_location": "L1"}, {"id": "$graphify-root$_tests_fixtures_benchmark_24_fr_not_related_recette_traditionnelle_de_la_quiche_lorraine", "label": "Recette Traditionnelle de la Quiche Lorraine", "file_type": "document", "node_kind": "heading", "source_file": "tests/fixtures/benchmark_24/fr/not_related.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_fixtures_benchmark_24_fr_not_related_md", "target": "$graphify-root$_tests_fixtures_benchmark_24_fr_not_related_recette_traditionnelle_de_la_quiche_lorraine", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/fixtures/benchmark_24/fr/not_related.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_tests_fixtures_benchmark_24_de_not_related_md", "label": "not_related.md", "file_type": "document", "node_kind": "page", "source_file": "tests/fixtures/benchmark_24/de/not_related.md", "source_location": "L1"}, {"id": "$graphify-root$_tests_fixtures_benchmark_24_de_not_related_backrezept_f\u00fcr_apfelstrudel", "label": "Backrezept f\u00fcr Apfelstrudel", "file_type": "document", "node_kind": "heading", "source_file": "tests/fixtures/benchmark_24/de/not_related.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_fixtures_benchmark_24_de_not_related_md", "target": "$graphify-root$_tests_fixtures_benchmark_24_de_not_related_backrezept_f\u00fcr_apfelstrudel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/fixtures/benchmark_24/de/not_related.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_examples_content_northvolt_de_md", "label": "content_northvolt_de.md", "file_type": "document", "node_kind": "page", "source_file": "examples/content_northvolt_de.md", "source_location": "L1"}, {"id": "$graphify-root$_examples_content_northvolt_de_batteriezellproduktion_f\u00fcr_europ\u00e4ische_elektrofahrzeuge", "label": "Batteriezellproduktion f\u00fcr europ\u00e4ische Elektrofahrzeuge", "file_type": "document", "node_kind": "heading", "source_file": "examples/content_northvolt_de.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_examples_content_northvolt_de_md", "target": "$graphify-root$_examples_content_northvolt_de_batteriezellproduktion_f\u00fcr_europ\u00e4ische_elektrofahrzeuge", "relation": "contains", "confidence": "EXTRACTED", "source_file": "examples/content_northvolt_de.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_tests_fixtures_benchmark_24_de_direct_md", "label": "direct.md", "file_type": "document", "node_kind": "page", "source_file": "tests/fixtures/benchmark_24/de/direct.md", "source_location": "L1"}, {"id": "$graphify-root$_tests_fixtures_benchmark_24_de_direct_investitionsoffensive_in_wolfsburg", "label": "Investitionsoffensive in Wolfsburg", "file_type": "document", "node_kind": "heading", "source_file": "tests/fixtures/benchmark_24/de/direct.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_fixtures_benchmark_24_de_direct_md", "target": "$graphify-root$_tests_fixtures_benchmark_24_de_direct_investitionsoffensive_in_wolfsburg", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/fixtures/benchmark_24/de/direct.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_tests_fixtures_benchmark_24_pt_tangential_md", "label": "tangential.md", "file_type": "document", "node_kind": "page", "source_file": "tests/fixtures/benchmark_24/pt/tangential.md", "source_location": "L1"}, {"id": "$graphify-root$_tests_fixtures_benchmark_24_pt_tangential_turismo_no_rio_de_janeiro", "label": "Turismo no Rio de Janeiro", "file_type": "document", "node_kind": "heading", "source_file": "tests/fixtures/benchmark_24/pt/tangential.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_fixtures_benchmark_24_pt_tangential_md", "target": "$graphify-root$_tests_fixtures_benchmark_24_pt_tangential_turismo_no_rio_de_janeiro", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/fixtures/benchmark_24/pt/tangential.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_tests_fixtures_benchmark_24_en_tangential_md", "label": "tangential.md", "file_type": "document", "node_kind": "page", "source_file": "tests/fixtures/benchmark_24/en/tangential.md", "source_location": "L1"}, {"id": "$graphify-root$_tests_fixtures_benchmark_24_en_tangential_morning_city_walk", "label": "Morning City Walk", "file_type": "document", "node_kind": "heading", "source_file": "tests/fixtures/benchmark_24/en/tangential.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_fixtures_benchmark_24_en_tangential_md", "target": "$graphify-root$_tests_fixtures_benchmark_24_en_tangential_morning_city_walk", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/fixtures/benchmark_24/en/tangential.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_tests_fixtures_benchmark_24_fr_tangential_md", "label": "tangential.md", "file_type": "document", "node_kind": "page", "source_file": "tests/fixtures/benchmark_24/fr/tangential.md", "source_location": "L1"}, {"id": "$graphify-root$_tests_fixtures_benchmark_24_fr_tangential_promenade_dans_paris", "label": "Promenade dans Paris", "file_type": "document", "node_kind": "heading", "source_file": "tests/fixtures/benchmark_24/fr/tangential.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_fixtures_benchmark_24_fr_tangential_md", "target": "$graphify-root$_tests_fixtures_benchmark_24_fr_tangential_promenade_dans_paris", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/fixtures/benchmark_24/fr/tangential.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_src_init_py", "label": "__init__.py", "file_type": "code", "source_file": "src/__init__.py", "source_location": "L1"}, {"id": "$graphify-root$_src_init_rationale_1", "label": "Multilingual NLP Entity Inherence Classifier package.", "file_type": "rationale", "source_file": "src/__init__.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_src_init_rationale_1", "target": "$graphify-root$_src_init_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/__init__.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_tests_fixtures_benchmark_24_de_tangential_md", "label": "tangential.md", "file_type": "document", "node_kind": "page", "source_file": "tests/fixtures/benchmark_24/de/tangential.md", "source_location": "L1"}, {"id": "$graphify-root$_tests_fixtures_benchmark_24_de_tangential_reisebericht_aus_niedersachsen", "label": "Reisebericht aus Niedersachsen", "file_type": "document", "node_kind": "heading", "source_file": "tests/fixtures/benchmark_24/de/tangential.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_fixtures_benchmark_24_de_tangential_md", "target": "$graphify-root$_tests_fixtures_benchmark_24_de_tangential_reisebericht_aus_niedersachsen", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/fixtures/benchmark_24/de/tangential.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_specs_001_multilingual_entity_classifier_contracts_cli_contract_md", "label": "cli-contract.md", "file_type": "document", "node_kind": "page", "source_file": "specs/001-multilingual-entity-classifier/contracts/cli-contract.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_001_multilingual_entity_classifier_contracts_cli_contract_cli_contract_interface_specification_poc", "label": "CLI Contract & Interface Specification (POC)", "file_type": "document", "node_kind": "heading", "source_file": "specs/001-multilingual-entity-classifier/contracts/cli-contract.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_001_multilingual_entity_classifier_contracts_cli_contract_1_command_line_interface", "label": "1. Command Line Interface", "file_type": "document", "node_kind": "heading", "source_file": "specs/001-multilingual-entity-classifier/contracts/cli-contract.md", "source_location": "L8"}, {"id": "$graphify-root$_specs_001_multilingual_entity_classifier_contracts_cli_contract_1_1_arguments_options", "label": "1.1 Arguments & Options", "file_type": "document", "node_kind": "heading", "source_file": "specs/001-multilingual-entity-classifier/contracts/cli-contract.md", "source_location": "L14"}, {"id": "$graphify-root$_specs_001_multilingual_entity_classifier_contracts_cli_contract_2_standard_streams_exit_codes", "label": "2. Standard Streams & Exit Codes", "file_type": "document", "node_kind": "heading", "source_file": "specs/001-multilingual-entity-classifier/contracts/cli-contract.md", "source_location": "L28"}, {"id": "$graphify-root$_specs_001_multilingual_entity_classifier_contracts_cli_contract_2_1_exit_codes", "label": "2.1 Exit Codes", "file_type": "document", "node_kind": "heading", "source_file": "specs/001-multilingual-entity-classifier/contracts/cli-contract.md", "source_location": "L30"}, {"id": "$graphify-root$_specs_001_multilingual_entity_classifier_contracts_cli_contract_2_2_standard_output_stdout_standard_error_stderr", "label": "2.2 Standard Output (`stdout`) / Standard Error (`stderr`)", "file_type": "document", "node_kind": "heading", "source_file": "specs/001-multilingual-entity-classifier/contracts/cli-contract.md", "source_location": "L35"}], "edges": [{"source": "$graphify-root$_specs_001_multilingual_entity_classifier_contracts_cli_contract_md", "target": "$graphify-root$_specs_001_multilingual_entity_classifier_contracts_cli_contract_cli_contract_interface_specification_poc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/001-multilingual-entity-classifier/contracts/cli-contract.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_001_multilingual_entity_classifier_contracts_cli_contract_cli_contract_interface_specification_poc", "target": "$graphify-root$_specs_001_multilingual_entity_classifier_contracts_cli_contract_1_command_line_interface", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/001-multilingual-entity-classifier/contracts/cli-contract.md", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_specs_001_multilingual_entity_classifier_contracts_cli_contract_1_command_line_interface", "target": "$graphify-root$_specs_001_multilingual_entity_classifier_contracts_cli_contract_1_1_arguments_options", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/001-multilingual-entity-classifier/contracts/cli-contract.md", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_specs_001_multilingual_entity_classifier_contracts_cli_contract_cli_contract_interface_specification_poc", "target": "$graphify-root$_specs_001_multilingual_entity_classifier_contracts_cli_contract_2_standard_streams_exit_codes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/001-multilingual-entity-classifier/contracts/cli-contract.md", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_specs_001_multilingual_entity_classifier_contracts_cli_contract_2_standard_streams_exit_codes", "target": "$graphify-root$_specs_001_multilingual_entity_classifier_contracts_cli_contract_2_1_exit_codes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/001-multilingual-entity-classifier/contracts/cli-contract.md", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_specs_001_multilingual_entity_classifier_contracts_cli_contract_2_standard_streams_exit_codes", "target": "$graphify-root$_specs_001_multilingual_entity_classifier_contracts_cli_contract_2_2_standard_output_stdout_standard_error_stderr", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/001-multilingual-entity-classifier/contracts/cli-contract.md", "source_location": "L35", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_tests_fixtures_benchmark_24_fr_contextual_md", "label": "contextual.md", "file_type": "document", "node_kind": "page", "source_file": "tests/fixtures/benchmark_24/fr/contextual.md", "source_location": "L1"}, {"id": "$graphify-root$_tests_fixtures_benchmark_24_fr_contextual_batteries_industrielles_de_pointe", "label": "Batteries Industrielles de Pointe", "file_type": "document", "node_kind": "heading", "source_file": "tests/fixtures/benchmark_24/fr/contextual.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_fixtures_benchmark_24_fr_contextual_md", "target": "$graphify-root$_tests_fixtures_benchmark_24_fr_contextual_batteries_industrielles_de_pointe", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/fixtures/benchmark_24/fr/contextual.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_md", "label": "requirements.md", "file_type": "document", "node_kind": "page", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", "label": "Specification Quality Checklist: Multilingual NLP Entity Inherence Classifier", "file_type": "document", "node_kind": "heading", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L1"}, {"id": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_content_quality", "label": "Content Quality", "file_type": "document", "node_kind": "heading", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L7"}, {"id": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_requirement_completeness", "label": "Requirement Completeness", "file_type": "document", "node_kind": "heading", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L14"}, {"id": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_feature_readiness", "label": "Feature Readiness", "file_type": "document", "node_kind": "heading", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L25"}, {"id": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_notes", "label": "Notes", "file_type": "document", "node_kind": "heading", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L32"}], "edges": [{"source": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_md", "target": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_md", "target": "$graphify-root$_specs_001_multilingual_entity_classifier_spec_md", "relation": "references", "confidence": "EXTRACTED", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L5", "weight": 1.0, "target_file": "$graphify-root$/specs/001-multilingual-entity-classifier/spec.md"}, {"source": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", "target": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_content_quality", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", "target": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_requirement_completeness", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", "target": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_feature_readiness", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_specification_quality_checklist_multilingual_nlp_entity_inherence_classifier", "target": "$graphify-root$_specs_001_multilingual_entity_classifier_checklists_requirements_notes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "specs/001-multilingual-entity-classifier/checklists/requirements.md", "source_location": "L32", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_tests_fixtures_benchmark_24_it_tangential_md", "label": "tangential.md", "file_type": "document", "node_kind": "page", "source_file": "tests/fixtures/benchmark_24/it/tangential.md", "source_location": "L1"}, {"id": "$graphify-root$_tests_fixtures_benchmark_24_it_tangential_passeggiata_pomeridiana_a_modena", "label": "Passeggiata Pomeridiana a Modena", "file_type": "document", "node_kind": "heading", "source_file": "tests/fixtures/benchmark_24/it/tangential.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_fixtures_benchmark_24_it_tangential_md", "target": "$graphify-root$_tests_fixtures_benchmark_24_it_tangential_passeggiata_pomeridiana_a_modena", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/fixtures/benchmark_24/it/tangential.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_tests_fixtures_benchmark_24_de_contextual_md", "label": "contextual.md", "file_type": "document", "node_kind": "page", "source_file": "tests/fixtures/benchmark_24/de/contextual.md", "source_location": "L1"}, {"id": "$graphify-root$_tests_fixtures_benchmark_24_de_contextual_batteriefabrik_in_europa", "label": "Batteriefabrik in Europa", "file_type": "document", "node_kind": "heading", "source_file": "tests/fixtures/benchmark_24/de/contextual.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_fixtures_benchmark_24_de_contextual_md", "target": "$graphify-root$_tests_fixtures_benchmark_24_de_contextual_batteriefabrik_in_europa", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/fixtures/benchmark_24/de/contextual.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_tests_fixtures_benchmark_24_it_not_related_md", "label": "not_related.md", "file_type": "document", "node_kind": "page", "source_file": "tests/fixtures/benchmark_24/it/not_related.md", "source_location": "L1"}, {"id": "$graphify-root$_tests_fixtures_benchmark_24_it_not_related_ricetta_tradizionale_del_risotto", "label": "Ricetta Tradizionale del Risotto", "file_type": "document", "node_kind": "heading", "source_file": "tests/fixtures/benchmark_24/it/not_related.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_fixtures_benchmark_24_it_not_related_md", "target": "$graphify-root$_tests_fixtures_benchmark_24_it_not_related_ricetta_tradizionale_del_risotto", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/fixtures/benchmark_24/it/not_related.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_tests_fixtures_benchmark_24_en_direct_md", "label": "direct.md", "file_type": "document", "node_kind": "page", "source_file": "tests/fixtures/benchmark_24/en/direct.md", "source_location": "L1"}, {"id": "$graphify-root$_tests_fixtures_benchmark_24_en_direct_apple_unveils_next_generation_iphone", "label": "Apple Unveils Next-Generation iPhone", "file_type": "document", "node_kind": "heading", "source_file": "tests/fixtures/benchmark_24/en/direct.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_fixtures_benchmark_24_en_direct_md", "target": "$graphify-root$_tests_fixtures_benchmark_24_en_direct_apple_unveils_next_generation_iphone", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/fixtures/benchmark_24/en/direct.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "pkg_text_nlp_classifier", "label": "text-nlp-classifier", "file_type": "code", "type": "package", "ecosystem": "python", "source_file": "pyproject.toml", "source_location": "L1", "version": "0.1.0"}], "edges": []}
|
||||
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_examples_content_tangential_es_md", "label": "content_tangential_es.md", "file_type": "document", "node_kind": "page", "source_file": "examples/content_tangential_es.md", "source_location": "L1"}, {"id": "$graphify-root$_examples_content_tangential_es_reflexiones_sobre_el_debate_pol\u00edtico_y_la_diplomacia_regional", "label": "Reflexiones sobre el debate pol\u00edtico y la diplomacia regional", "file_type": "document", "node_kind": "heading", "source_file": "examples/content_tangential_es.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_examples_content_tangential_es_md", "target": "$graphify-root$_examples_content_tangential_es_reflexiones_sobre_el_debate_pol\u00edtico_y_la_diplomacia_regional", "relation": "contains", "confidence": "EXTRACTED", "source_file": "examples/content_tangential_es.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
+1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_tests_fixtures_benchmark_24_es_contextual_md", "label": "contextual.md", "file_type": "document", "node_kind": "page", "source_file": "tests/fixtures/benchmark_24/es/contextual.md", "source_location": "L1"}, {"id": "$graphify-root$_tests_fixtures_benchmark_24_es_contextual_nuevas_soluciones_de_pagos_electr\u00f3nicos", "label": "Nuevas Soluciones de Pagos Electr\u00f3nicos", "file_type": "document", "node_kind": "heading", "source_file": "tests/fixtures/benchmark_24/es/contextual.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_fixtures_benchmark_24_es_contextual_md", "target": "$graphify-root$_tests_fixtures_benchmark_24_es_contextual_nuevas_soluciones_de_pagos_electr\u00f3nicos", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/fixtures/benchmark_24/es/contextual.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_tests_fixtures_benchmark_24_it_direct_md", "label": "direct.md", "file_type": "document", "node_kind": "page", "source_file": "tests/fixtures/benchmark_24/it/direct.md", "source_location": "L1"}, {"id": "$graphify-root$_tests_fixtures_benchmark_24_it_direct_nuova_monoposto_a_maranello", "label": "Nuova Monoposto a Maranello", "file_type": "document", "node_kind": "heading", "source_file": "tests/fixtures/benchmark_24/it/direct.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_fixtures_benchmark_24_it_direct_md", "target": "$graphify-root$_tests_fixtures_benchmark_24_it_direct_nuova_monoposto_a_maranello", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/fixtures/benchmark_24/it/direct.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_tests_fixtures_benchmark_24_pt_contextual_md", "label": "contextual.md", "file_type": "document", "node_kind": "page", "source_file": "tests/fixtures/benchmark_24/pt/contextual.md", "source_location": "L1"}, {"id": "$graphify-root$_tests_fixtures_benchmark_24_pt_contextual_log\u00edstica_de_derivados", "label": "Log\u00edstica de Derivados", "file_type": "document", "node_kind": "heading", "source_file": "tests/fixtures/benchmark_24/pt/contextual.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_fixtures_benchmark_24_pt_contextual_md", "target": "$graphify-root$_tests_fixtures_benchmark_24_pt_contextual_log\u00edstica_de_derivados", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/fixtures/benchmark_24/pt/contextual.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_examples_content_presal_pt_md", "label": "content_presal_pt.md", "file_type": "document", "node_kind": "page", "source_file": "examples/content_presal_pt.md", "source_location": "L1"}, {"id": "$graphify-root$_examples_content_presal_pt_petrobras_bate_recorde_hist\u00f3rico_de_produ\u00e7\u00e3o_no_pr\u00e9_sal", "label": "Petrobras bate recorde hist\u00f3rico de produ\u00e7\u00e3o no pr\u00e9-sal", "file_type": "document", "node_kind": "heading", "source_file": "examples/content_presal_pt.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_examples_content_presal_pt_md", "target": "$graphify-root$_examples_content_presal_pt_petrobras_bate_recorde_hist\u00f3rico_de_produ\u00e7\u00e3o_no_pr\u00e9_sal", "relation": "contains", "confidence": "EXTRACTED", "source_file": "examples/content_presal_pt.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_tests_fixtures_benchmark_24_fr_direct_md", "label": "direct.md", "file_type": "document", "node_kind": "page", "source_file": "tests/fixtures/benchmark_24/fr/direct.md", "source_location": "L1"}, {"id": "$graphify-root$_tests_fixtures_benchmark_24_fr_direct_d\u00e9veloppement_\u00e9nerg\u00e9tique_en_france", "label": "D\u00e9veloppement \u00c9nerg\u00e9tique en France", "file_type": "document", "node_kind": "heading", "source_file": "tests/fixtures/benchmark_24/fr/direct.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_fixtures_benchmark_24_fr_direct_md", "target": "$graphify-root$_tests_fixtures_benchmark_24_fr_direct_d\u00e9veloppement_\u00e9nerg\u00e9tique_en_france", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/fixtures/benchmark_24/fr/direct.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_src_adapters_init_py", "label": "__init__.py", "file_type": "code", "source_file": "src/adapters/__init__.py", "source_location": "L1"}, {"id": "$graphify-root$_src_adapters_init_rationale_1", "label": "Adapters package for optional vector embeddings and LLM providers.", "file_type": "rationale", "source_file": "src/adapters/__init__.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_src_adapters_init_rationale_1", "target": "$graphify-root$_src_adapters_init_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/adapters/__init__.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []}
|
||||
+1
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "$graphify-root$_tests_fixtures_benchmark_24_es_direct_md", "label": "direct.md", "file_type": "document", "node_kind": "page", "source_file": "tests/fixtures/benchmark_24/es/direct.md", "source_location": "L1"}, {"id": "$graphify-root$_tests_fixtures_benchmark_24_es_direct_expansi\u00f3n_de_servicios_financieros_en_espa\u00f1a", "label": "Expansi\u00f3n de Servicios Financieros en Espa\u00f1a", "file_type": "document", "node_kind": "heading", "source_file": "tests/fixtures/benchmark_24/es/direct.md", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_fixtures_benchmark_24_es_direct_md", "target": "$graphify-root$_tests_fixtures_benchmark_24_es_direct_expansi\u00f3n_de_servicios_financieros_en_espa\u00f1a", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/fixtures/benchmark_24/es/direct.md", "source_location": "L1", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0}
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+8281
-138
File diff suppressed because it is too large
Load Diff
@@ -238,5 +238,341 @@
|
||||
"seen": 1787189352.7449548,
|
||||
"ast_hash": "a831cf3669f1e6ab85d8a80ebe655f99",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"specs/001-multilingual-entity-classifier/checklists/requirements.md": {
|
||||
"mtime": 1787193985.655018,
|
||||
"seen": 1787194003.0704188,
|
||||
"ast_hash": "13e007d6da3f275d34b1f67fda546b81",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"specs/001-multilingual-entity-classifier/spec.md": {
|
||||
"mtime": 1787194850.5106893,
|
||||
"seen": 1787194931.113662,
|
||||
"ast_hash": "41587427964956662ffb8f0dffea1027",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"specs/001-multilingual-entity-classifier/contracts/cli-contract.md": {
|
||||
"mtime": 1787194605.824187,
|
||||
"seen": 1787194638.8537047,
|
||||
"ast_hash": "c4fdb88a5e3269fb10689a2940b9616f",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"specs/001-multilingual-entity-classifier/data-model.md": {
|
||||
"mtime": 1787194591.677816,
|
||||
"seen": 1787194638.853709,
|
||||
"ast_hash": "7ccdd584024c65f16364444e9df4d860",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"specs/001-multilingual-entity-classifier/plan.md": {
|
||||
"mtime": 1787194897.8541067,
|
||||
"seen": 1787194931.1135547,
|
||||
"ast_hash": "edcaea62d445dbb073ff30166115788e",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"specs/001-multilingual-entity-classifier/quickstart.md": {
|
||||
"mtime": 1787194877.439851,
|
||||
"seen": 1787194931.113557,
|
||||
"ast_hash": "d630b7592e1ee761f1d36cfd0079771d",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"specs/001-multilingual-entity-classifier/research.md": {
|
||||
"mtime": 1787194581.004019,
|
||||
"seen": 1787194638.8537128,
|
||||
"ast_hash": "159b7eec565d477f15f2c683c082e40d",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"specs/001-multilingual-entity-classifier/tasks.md": {
|
||||
"mtime": 1787196452.595599,
|
||||
"seen": 1787196463.1030743,
|
||||
"ast_hash": "132f38dcd33d45eec9a8ca22ec4de880",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"specs/001-multilingual-entity-classifier/checklists/poc-readiness.md": {
|
||||
"mtime": 1787195218.2475252,
|
||||
"seen": 1787195225.042909,
|
||||
"ast_hash": "f8488016a8e749938d2086d34999a91c",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"classify.py": {
|
||||
"mtime": 1787197110.3753626,
|
||||
"seen": 1787197159.9828603,
|
||||
"ast_hash": "d09a35a5e25d42f6ecc537d5b67bef8e",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"pyproject.toml": {
|
||||
"mtime": 1787195827.3305018,
|
||||
"seen": 1787196463.0953014,
|
||||
"ast_hash": "f2503e96d08f5a4e41b13352e81709c6",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/__init__.py": {
|
||||
"mtime": 1787195832.559486,
|
||||
"seen": 1787196463.0953057,
|
||||
"ast_hash": "13284e9b9f10de535dba5f461ecd7c7c",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/adapters/__init__.py": {
|
||||
"mtime": 1787195842.2716768,
|
||||
"seen": 1787196463.0953088,
|
||||
"ast_hash": "541577ed019347ac3864002f85c116f1",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/adapters/base.py": {
|
||||
"mtime": 1787196396.6199949,
|
||||
"seen": 1787196463.0953116,
|
||||
"ast_hash": "40dc6e175c8708467748c1f42a0e064a",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/adapters/embeddings.py": {
|
||||
"mtime": 1787196402.7484262,
|
||||
"seen": 1787196463.0953145,
|
||||
"ast_hash": "0444823bb05720d4c4ca1662a00b2c01",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/adapters/llm.py": {
|
||||
"mtime": 1787196408.180451,
|
||||
"seen": 1787196463.0953166,
|
||||
"ast_hash": "3d95d98625df3fcd343f2fecb78707c5",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/classifier.py": {
|
||||
"mtime": 1787197085.0250447,
|
||||
"seen": 1787197159.985785,
|
||||
"ast_hash": "a2e70f968109d213fdab0ae81ac819ff",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/language.py": {
|
||||
"mtime": 1787196384.5545745,
|
||||
"seen": 1787196463.0953217,
|
||||
"ast_hash": "985619013e58a7f55af2e955817f223c",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/models.py": {
|
||||
"mtime": 1787195855.3266282,
|
||||
"seen": 1787196463.0953236,
|
||||
"ast_hash": "ce73bfe85eb54f907e2052c80636ecaf",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/parser.py": {
|
||||
"mtime": 1787195873.9119804,
|
||||
"seen": 1787196463.0953257,
|
||||
"ast_hash": "0a1d64ee7088b266125af071f85f3826",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/__init__.py": {
|
||||
"mtime": 1787195847.5186412,
|
||||
"seen": 1787196463.095328,
|
||||
"ast_hash": "42d67f813e6eeac2ffca24fe6206aa9b",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/test_adapters.py": {
|
||||
"mtime": 1787196418.6328156,
|
||||
"seen": 1787196463.09533,
|
||||
"ast_hash": "5caf95327ea030dbcc37a99bd9052ebd",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/test_benchmark_24.py": {
|
||||
"mtime": 1787196325.5409796,
|
||||
"seen": 1787196463.0953324,
|
||||
"ast_hash": "487d30d6de2dee529fa91b86a1d62c0a",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/test_classifier.py": {
|
||||
"mtime": 1787196364.7195728,
|
||||
"seen": 1787196463.0953343,
|
||||
"ast_hash": "4350a5b11a08d12ccb85a3f332d71e87",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/test_cli.py": {
|
||||
"mtime": 1787195939.567137,
|
||||
"seen": 1787196463.0953364,
|
||||
"ast_hash": "90b0131d43cfc64a76e499c7a65d95de",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/test_language.py": {
|
||||
"mtime": 1787195891.3329668,
|
||||
"seen": 1787196463.0953388,
|
||||
"ast_hash": "66191b43fcd7aef47c07cd20d5a8f03c",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/test_models.py": {
|
||||
"mtime": 1787195886.5009987,
|
||||
"seen": 1787196463.095341,
|
||||
"ast_hash": "1fd725c8ca0f52e52f56c7223e9574d0",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"examples/content_northvolt_de.md": {
|
||||
"mtime": 1787195963.813741,
|
||||
"seen": 1787196463.1020777,
|
||||
"ast_hash": "9033a8bdde7f2caba952eb0f50af8ba6",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"examples/content_presal_pt.md": {
|
||||
"mtime": 1787195950.0247998,
|
||||
"seen": 1787196463.10208,
|
||||
"ast_hash": "d08c26af041b833fbc9e6673aec4ee80",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"examples/content_tangential_es.md": {
|
||||
"mtime": 1787195975.5271506,
|
||||
"seen": 1787196463.1020815,
|
||||
"ast_hash": "55f37cf83b54926e1f5751a4ba6335a9",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"requirements.txt": {
|
||||
"mtime": 1787195817.4782183,
|
||||
"seen": 1787196463.1020837,
|
||||
"ast_hash": "5612073a1e7034d7c25765379baa5da4",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/de/contextual.md": {
|
||||
"mtime": 1787196180.7794595,
|
||||
"seen": 1787196463.103077,
|
||||
"ast_hash": "1e78706552a34512ac2a2b772ec2ecd1",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/de/direct.md": {
|
||||
"mtime": 1787196169.5728126,
|
||||
"seen": 1787196463.1030784,
|
||||
"ast_hash": "25f60b38e35c96356d7ecbabdd6de545",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/de/not_related.md": {
|
||||
"mtime": 1787196204.0937815,
|
||||
"seen": 1787196463.1030807,
|
||||
"ast_hash": "6d6165d5279cda9cde833a6aa2d71164",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/de/tangential.md": {
|
||||
"mtime": 1787196193.1870873,
|
||||
"seen": 1787196463.1030822,
|
||||
"ast_hash": "3f5ddf01ca728aa2d0116882604718cf",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/en/contextual.md": {
|
||||
"mtime": 1787196066.4274058,
|
||||
"seen": 1787196463.1030838,
|
||||
"ast_hash": "89114901dc8579adafa4fb503afbc761",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/en/direct.md": {
|
||||
"mtime": 1787196054.1496131,
|
||||
"seen": 1787196463.1030855,
|
||||
"ast_hash": "dd15e4f08c2757ee499da0bea578c04c",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/en/not_related.md": {
|
||||
"mtime": 1787196350.3334656,
|
||||
"seen": 1787196463.103087,
|
||||
"ast_hash": "9e2c91a29282eac5d4c21c38bef9767e",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/en/tangential.md": {
|
||||
"mtime": 1787196082.7302663,
|
||||
"seen": 1787196463.1030884,
|
||||
"ast_hash": "fe681417b697406ea16e0e78f2df8ce4",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/es/contextual.md": {
|
||||
"mtime": 1787196129.959492,
|
||||
"seen": 1787196463.1030898,
|
||||
"ast_hash": "8668670e9a018ba879fb256dbe5bd2fa",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/es/direct.md": {
|
||||
"mtime": 1787196118.6405888,
|
||||
"seen": 1787196463.103091,
|
||||
"ast_hash": "d01aa9c2cda827336558b993098fa4a1",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/es/not_related.md": {
|
||||
"mtime": 1787196152.6110358,
|
||||
"seen": 1787196463.1030927,
|
||||
"ast_hash": "720215fd2a9ec45f745564869b20a19d",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/es/tangential.md": {
|
||||
"mtime": 1787196141.436479,
|
||||
"seen": 1787196463.1030943,
|
||||
"ast_hash": "ef16422876c7925ea0b2631483468f12",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/fr/contextual.md": {
|
||||
"mtime": 1787196288.4152596,
|
||||
"seen": 1787196463.1030955,
|
||||
"ast_hash": "bf01dc91dc0a8abe21eca424fb44d0c4",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/fr/direct.md": {
|
||||
"mtime": 1787196277.0201283,
|
||||
"seen": 1787196463.1030967,
|
||||
"ast_hash": "772cc74cec96c666c7e348f600720e14",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/fr/not_related.md": {
|
||||
"mtime": 1787196312.47212,
|
||||
"seen": 1787196463.1030984,
|
||||
"ast_hash": "da5869eda42812d47e82a4cabf77f984",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/fr/tangential.md": {
|
||||
"mtime": 1787196301.2256103,
|
||||
"seen": 1787196463.103103,
|
||||
"ast_hash": "6926ee30a0f12424c3c4f6691daeb1fd",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/it/contextual.md": {
|
||||
"mtime": 1787196234.462201,
|
||||
"seen": 1787196463.1031046,
|
||||
"ast_hash": "53dfa9859257d99d54b3479702abbd11",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/it/direct.md": {
|
||||
"mtime": 1787196221.6644733,
|
||||
"seen": 1787196463.1031058,
|
||||
"ast_hash": "493cbc253516b219d6b0d745bf6c750f",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/it/not_related.md": {
|
||||
"mtime": 1787196259.3629923,
|
||||
"seen": 1787196463.1031072,
|
||||
"ast_hash": "3fbc57bc9b9c78af4b6eb93343cc4634",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/it/tangential.md": {
|
||||
"mtime": 1787196245.9183564,
|
||||
"seen": 1787196463.1031086,
|
||||
"ast_hash": "43f800646fc2a4060528e7ef851e8d77",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/pt/contextual.md": {
|
||||
"mtime": 1787196014.2010715,
|
||||
"seen": 1787196463.10311,
|
||||
"ast_hash": "2e5b837c09ac05daae5007235e2a85b5",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/pt/direct.md": {
|
||||
"mtime": 1787196003.236562,
|
||||
"seen": 1787196463.1031117,
|
||||
"ast_hash": "f7e5ca68966f5e2b805fde6d46b90f7e",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/pt/not_related.md": {
|
||||
"mtime": 1787196036.7240841,
|
||||
"seen": 1787196463.103113,
|
||||
"ast_hash": "980a58ca0db93f8dbb6c43e1c9108baf",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/fixtures/benchmark_24/pt/tangential.md": {
|
||||
"mtime": 1787196024.9788618,
|
||||
"seen": 1787196463.1031141,
|
||||
"ast_hash": "e05ab20a5190cfb5b9d41da64d5273cf",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/test_adversarial.py": {
|
||||
"mtime": 1787197141.2340336,
|
||||
"seen": 1787197159.9881344,
|
||||
"ast_hash": "5e8daf517ee32c261617d96264ef0473",
|
||||
"semantic_hash": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
[build-system]
|
||||
requires = ["setuptools>=61.0"]
|
||||
build-backend = "setuptools.build_meta"
|
||||
|
||||
[project]
|
||||
name = "text-nlp-classifier"
|
||||
version = "0.1.0"
|
||||
description = "Multilingual NLP Entity Inherence Classifier (POC)"
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.10"
|
||||
dependencies = []
|
||||
|
||||
[project.optional-dependencies]
|
||||
test = [
|
||||
"pytest>=7.0.0",
|
||||
]
|
||||
|
||||
[tool.pytest.ini_options]
|
||||
testpaths = ["tests"]
|
||||
python_files = ["test_*.py"]
|
||||
python_classes = ["Test*"]
|
||||
python_functions = ["test_*"]
|
||||
@@ -0,0 +1,5 @@
|
||||
pytest>=7.0.0
|
||||
# Optional Tier 2 / Tier 3 dependencies (not required for POC core execution)
|
||||
# sentence-transformers>=2.2.0
|
||||
# httpx>=0.24.0
|
||||
# openai>=1.0.0
|
||||
@@ -0,0 +1,61 @@
|
||||
# POC Readiness & Requirements Quality Checklist: Multilingual NLP Entity Inherence Classifier
|
||||
|
||||
**Purpose**: Validate requirement quality, clarity, and completeness for the POC implementation before code execution
|
||||
**Created**: 2026-08-20
|
||||
**Feature**: [spec.md](../spec.md) | [plan.md](../plan.md)
|
||||
|
||||
**Note**: This custom checklist is generated by the `/speckit-checklist` command based on feature context and requirements.
|
||||
**Review Ownership**: This checklist is a reviewer-owned requirements-quality review artifact. Mark an item `[x]` only when the reviewer determines the requirements-quality criterion is satisfied.
|
||||
**Marker Semantics**: `[x]` means the criterion has been reviewed and satisfied for requirements quality. It does not mean implementation work is complete.
|
||||
|
||||
---
|
||||
|
||||
## 1. Requirement Completeness & Scope Boundaries
|
||||
|
||||
- [x] CHK001 Are the required and optional fields of the ECP Snapshot explicitly specified with defaults? [Completeness, Spec §FR-003]
|
||||
- [x] CHK002 Is the CLI execution contract completely specified with argument names, flags, and file path requirements? [Completeness, Spec §FR-002]
|
||||
- [x] CHK003 Are explicit out-of-scope boundaries (no REST API, no live Neo4j, no worker queues) clearly stated to prevent scope creep? [Scope, Spec §Assumptions & Scope]
|
||||
- [x] CHK004 Is the behavior for missing `--output` (printing to stdout) explicitly defined? [Completeness, Spec §FR-002]
|
||||
|
||||
---
|
||||
|
||||
## 2. Requirement Clarity & Decision Semantics
|
||||
|
||||
- [x] CHK005 Are the 4 decision categories (`DIRECT_INHERENT`, `CONTEXTUAL_INHERENT`, `TANGENTIAL`, `NOT_RELATED`) defined with unambiguous conditions? [Clarity, Spec §FR-005]
|
||||
- [x] CHK006 Is the deterministic derivation rule for `is_inherent` (`true` for DIRECT/CONTEXTUAL, `false` for TANGENTIAL/NOT_RELATED) mathematically unambiguous? [Clarity, Spec §FR-006]
|
||||
- [x] CHK007 Is the 3-tier hybrid execution order explicitly defined such that clear cases never invoke Tier 2/Tier 3? [Clarity, Spec §FR-004]
|
||||
- [x] CHK008 Are all standardized error codes (`invalid_ecp_json`, `invalid_markdown`, `unsupported_language`, `empty_content`, `missing_required_field`) enumerated? [Clarity, Spec §FR-008]
|
||||
|
||||
---
|
||||
|
||||
## 3. Requirement Consistency & Alignment
|
||||
|
||||
- [x] CHK009 Do the example filenames in `spec.md`, `plan.md`, `quickstart.md`, and `tasks.md` align consistently without discrepancies? [Consistency, Plan §Project Structure]
|
||||
- [x] CHK010 Is the benchmark test file name (`tests/test_benchmark_24.py`) consistent across all documentation artifacts? [Consistency, Quickstart §3]
|
||||
- [x] CHK011 Are dependencies strictly limited to `pytest` without mandatory external AI/cloud packages? [Consistency, Plan §Technical Context]
|
||||
|
||||
---
|
||||
|
||||
## 4. Acceptance Criteria & Measurability
|
||||
|
||||
- [x] CHK012 Is the POC benchmark suite quantified with an explicit test count (24 cases = 6 languages × 4 decision types)? [Measurability, Spec §SC-002]
|
||||
- [x] CHK013 Is the accuracy target (≥ 90% precision) bounded specifically to the controlled 24-case benchmark suite? [Measurability, Spec §SC-002]
|
||||
- [x] CHK014 Is the execution latency target (< 200ms for Tier 1) testable and quantified? [Measurability, Spec §SC-004]
|
||||
|
||||
---
|
||||
|
||||
## 5. Scenario & Edge Case Coverage
|
||||
|
||||
- [x] CHK015 Are requirements specified for malformed Markdown or empty content files? [Edge Cases, Spec §FR-008]
|
||||
- [x] CHK016 Are requirements specified for corrupted JSON or missing required ECP fields? [Edge Cases, Spec §FR-008]
|
||||
- [x] CHK017 Are negative anchor suppression rules specified for homonym disambiguation? [Coverage, Spec §FR-005]
|
||||
- [x] CHK018 Are graph snapshot relationship matches (weight, scope, relation_type) accounted for in contextual inherence decisions? [Coverage, Spec §FR-003, §FR-005]
|
||||
|
||||
---
|
||||
|
||||
## Notes
|
||||
|
||||
- Mark items `[x]` only after review confirms the requirement-quality criterion is satisfied.
|
||||
- Leave items unchecked when they still require clarification, correction, or reviewer evaluation.
|
||||
- `/speckit-implement` reads checklist checkbox state as a gate and must not modify markers.
|
||||
- `checklists/requirements.md` has a separate built-in lifecycle maintained by `/speckit-specify` and `/speckit-clarify`.
|
||||
@@ -0,0 +1,40 @@
|
||||
# Specification Quality Checklist: Multilingual NLP Entity Inherence Classifier
|
||||
|
||||
**Purpose**: Validate specification completeness and quality before proceeding to planning
|
||||
**Created**: 2026-08-19
|
||||
**Feature**: [spec.md](../spec.md)
|
||||
|
||||
## Content Quality
|
||||
|
||||
- [x] No implementation details (languages, frameworks, APIs)
|
||||
- [x] Focused on user value and business needs
|
||||
- [x] Written for non-technical stakeholders
|
||||
- [x] All mandatory sections completed
|
||||
|
||||
## Requirement Completeness
|
||||
|
||||
- [x] No [NEEDS CLARIFICATION] markers remain
|
||||
- [x] Requirements are testable and unambiguous
|
||||
- [x] Success criteria are measurable
|
||||
- [x] Success criteria are technology-agnostic (no implementation details)
|
||||
- [x] All acceptance scenarios are defined
|
||||
- [x] Edge cases are identified
|
||||
- [x] Scope is clearly bounded
|
||||
- [x] Dependencies and assumptions identified
|
||||
|
||||
## Feature Readiness
|
||||
|
||||
- [x] All functional requirements have clear acceptance criteria
|
||||
- [x] User scenarios cover primary flows
|
||||
- [x] Feature meets measurable outcomes defined in Success Criteria
|
||||
- [x] No implementation details leak into specification
|
||||
|
||||
## Notes
|
||||
|
||||
- Initial requirements documented from user audio brief and refined with POC constraints.
|
||||
- ECP defined as Entity Context Profile with materialized JSON snapshots.
|
||||
- Tier 1 (deterministic rules) defined as mandatory core; Tier 2 (embeddings) and Tier 3 (LLM) defined as optional/configurable (LLM off by default, no API key required).
|
||||
- Decision rules explicitly codified for all 4 categories and derived `is_inherent` boolean.
|
||||
- Success criteria scoped to a controlled 24-case POC benchmark suite (6 languages × 4 decision types).
|
||||
- Structured error codes defined (`invalid_ecp_json`, `invalid_markdown`, `unsupported_language`, `empty_content`, `missing_required_field`).
|
||||
- Explicit out-of-scope declarations enforced (No REST API, No package publishing, No queues/workers, No runtime DB/Neo4j).
|
||||
@@ -0,0 +1,42 @@
|
||||
# CLI Contract & Interface Specification (POC)
|
||||
|
||||
**Feature**: `001-multilingual-entity-classifier`
|
||||
**Status**: Completed
|
||||
|
||||
---
|
||||
|
||||
## 1. Command Line Interface
|
||||
|
||||
```bash
|
||||
python classify.py --ecp <path-to-ecp.json> --content <path-to-content.md> [--output <path-to-result.json>] [--enable-embeddings] [--enable-llm]
|
||||
```
|
||||
|
||||
### 1.1 Arguments & Options
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|---|---|---|---|
|
||||
| `--ecp` | Path (`string`) | **Yes** | Absolute or relative path to the ECP Snapshot JSON file |
|
||||
| `--content` | Path (`string`) | **Yes** | Absolute or relative path to the Markdown content file |
|
||||
| `--output`, `-o` | Path (`string`) | No | Destination path to write result JSON. If omitted, prints JSON to `stdout`. |
|
||||
| `--enable-embeddings` | Flag (`bool`) | No | Enables Tier 2 local multilingual vector similarity adapter (default: false). |
|
||||
| `--enable-llm` | Flag (`bool`) | No | Enables Tier 3 LLM fallback adapter for ambiguous cases (default: false). |
|
||||
| `--version`, `-v` | Flag (`bool`) | No | Displays version and exits. |
|
||||
| `--help`, `-h` | Flag (`bool`) | No | Displays help message. |
|
||||
|
||||
---
|
||||
|
||||
## 2. Standard Streams & Exit Codes
|
||||
|
||||
### 2.1 Exit Codes
|
||||
|
||||
- `0`: Success (classification completed normally, result JSON written to file or stdout).
|
||||
- `1`: Validation / Processing Error (invalid arguments, malformed input, missing fields, structured error JSON printed to stderr or output file).
|
||||
|
||||
### 2.2 Standard Output (`stdout`) / Standard Error (`stderr`)
|
||||
|
||||
- If `--output` is provided:
|
||||
- Success result is saved to the specified file.
|
||||
- On error, error JSON is written to the output file (if accessible) and emitted to `stderr`.
|
||||
- If `--output` is NOT provided:
|
||||
- On success: formatted JSON is printed directly to `stdout`.
|
||||
- On error: structured error JSON is printed to `stderr`.
|
||||
@@ -0,0 +1,205 @@
|
||||
# Data Models & Schemas (POC)
|
||||
|
||||
**Feature**: `001-multilingual-entity-classifier`
|
||||
**Status**: Completed
|
||||
|
||||
---
|
||||
|
||||
## 1. Input Schemas
|
||||
|
||||
### 1.1 ECP Snapshot Schema (`snapshot.json`)
|
||||
|
||||
```json
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "ECPSnapshot",
|
||||
"type": "object",
|
||||
"required": [
|
||||
"target_entity_id",
|
||||
"target_name",
|
||||
"aliases",
|
||||
"domain",
|
||||
"anchors"
|
||||
],
|
||||
"properties": {
|
||||
"target_entity_id": {
|
||||
"type": "string",
|
||||
"description": "Unique identifier of the entity"
|
||||
},
|
||||
"target_name": {
|
||||
"type": "string",
|
||||
"description": "Canonical name of the entity"
|
||||
},
|
||||
"aliases": {
|
||||
"type": "array",
|
||||
"items": { "type": "string" },
|
||||
"description": "Multilingual aliases, acronyms, and trade names"
|
||||
},
|
||||
"domain": {
|
||||
"type": "string",
|
||||
"description": "Primary industry, category, or domain of the entity"
|
||||
},
|
||||
"anchors": {
|
||||
"type": "array",
|
||||
"items": { "type": "string" },
|
||||
"description": "Key domain concepts, topics, and contextual keywords"
|
||||
},
|
||||
"negative_anchors": {
|
||||
"type": "array",
|
||||
"items": { "type": "string" },
|
||||
"default": [],
|
||||
"description": "Homonym disambiguators or exclusion terms"
|
||||
},
|
||||
"graph_version": {
|
||||
"type": "string",
|
||||
"default": "1.0.0",
|
||||
"description": "Version timestamp or hash of the source graph"
|
||||
},
|
||||
"related_entities": {
|
||||
"type": "array",
|
||||
"default": [],
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["entity_id", "name", "relation_type", "weight"],
|
||||
"properties": {
|
||||
"entity_id": { "type": "string" },
|
||||
"name": { "type": "string" },
|
||||
"aliases": { "type": "array", "items": { "type": "string" }, "default": [] },
|
||||
"relation_type": { "type": "string" },
|
||||
"weight": { "type": "number", "minimum": 0.0, "maximum": 1.0 },
|
||||
"scope": { "type": "string", "default": "general" },
|
||||
"confidence": { "type": "number", "minimum": 0.0, "maximum": 1.0, "default": 1.0 }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 1.2 Content Item Schema (`content.md`)
|
||||
|
||||
- **Format**: Plain Markdown document (`.md` or `.txt`).
|
||||
- **Validation Rules**:
|
||||
- Must not be empty (minimum 5 non-whitespace characters).
|
||||
- Must contain readable text in UTF-8 encoding.
|
||||
|
||||
---
|
||||
|
||||
## 2. Output Schemas
|
||||
|
||||
### 2.1 Classification Success Result Schema (`result.json`)
|
||||
|
||||
```json
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "ClassificationResult",
|
||||
"type": "object",
|
||||
"required": [
|
||||
"decision",
|
||||
"is_inherent",
|
||||
"confidence",
|
||||
"detected_language",
|
||||
"matched_anchors",
|
||||
"negative_matches",
|
||||
"graph_matches",
|
||||
"evidence",
|
||||
"rationale",
|
||||
"warnings"
|
||||
],
|
||||
"properties": {
|
||||
"decision": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"DIRECT_INHERENT",
|
||||
"CONTEXTUAL_INHERENT",
|
||||
"TANGENTIAL",
|
||||
"NOT_RELATED"
|
||||
]
|
||||
},
|
||||
"is_inherent": {
|
||||
"type": "boolean",
|
||||
"description": "Derived: true if DIRECT_INHERENT or CONTEXTUAL_INHERENT; false if TANGENTIAL or NOT_RELATED"
|
||||
},
|
||||
"confidence": {
|
||||
"type": "number",
|
||||
"minimum": 0.0,
|
||||
"maximum": 1.0,
|
||||
"description": "Normalized confidence score of the classification"
|
||||
},
|
||||
"detected_language": {
|
||||
"type": "string",
|
||||
"description": "Detected ISO-639-1 code (pt, en, es, de, it, fr, etc.)"
|
||||
},
|
||||
"matched_anchors": {
|
||||
"type": "array",
|
||||
"items": { "type": "string" },
|
||||
"description": "Entity aliases and direct anchors identified in text"
|
||||
},
|
||||
"negative_matches": {
|
||||
"type": "array",
|
||||
"items": { "type": "string" },
|
||||
"description": "Negative anchors found in text"
|
||||
},
|
||||
"graph_matches": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"entity_id": { "type": "string" },
|
||||
"name": { "type": "string" },
|
||||
"relation_type": { "type": "string" },
|
||||
"weight": { "type": "number" }
|
||||
}
|
||||
},
|
||||
"description": "Related entities from snapshot matched in text"
|
||||
},
|
||||
"evidence": {
|
||||
"type": "array",
|
||||
"items": { "type": "string" },
|
||||
"description": "Extracted textual snippets from Markdown justifying the decision"
|
||||
},
|
||||
"rationale": {
|
||||
"type": "string",
|
||||
"description": "Concise explanation of the classification verdict"
|
||||
},
|
||||
"warnings": {
|
||||
"type": "array",
|
||||
"items": { "type": "string" },
|
||||
"description": "Non-fatal warnings encountered during processing"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 2.2 Error Result Schema
|
||||
|
||||
```json
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "ClassificationError",
|
||||
"type": "object",
|
||||
"required": [
|
||||
"error_code",
|
||||
"message",
|
||||
"details"
|
||||
],
|
||||
"properties": {
|
||||
"error_code": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"invalid_ecp_json",
|
||||
"invalid_markdown",
|
||||
"unsupported_language",
|
||||
"empty_content",
|
||||
"missing_required_field"
|
||||
]
|
||||
},
|
||||
"message": {
|
||||
"type": "string"
|
||||
},
|
||||
"details": {
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
@@ -0,0 +1,128 @@
|
||||
# Implementation Plan: Multilingual NLP Entity Inherence Classifier (POC)
|
||||
|
||||
**Branch**: `001-multilingual-entity-classifier` | **Date**: 2026-08-19 | **Spec**: [spec.md](./spec.md)
|
||||
|
||||
**Input**: Feature specification from `specs/001-multilingual-entity-classifier/spec.md`
|
||||
|
||||
---
|
||||
|
||||
## Summary
|
||||
|
||||
Implement a lightweight, standalone Python CLI tool (`classify.py`) that evaluates whether a Markdown document is inherent to a target entity defined by an Entity Context Profile (ECP Snapshot JSON). The architecture implements a Tier 1 deterministic matching engine for 6 core languages (PT, EN, ES, DE, IT, FR), with clean optional adapter hooks for Tier 2 (embeddings) and Tier 3 (LLM fallback), fully validated against a controlled 24-case benchmark suite.
|
||||
|
||||
---
|
||||
|
||||
## Technical Context
|
||||
|
||||
**Language/Version**: Python 3.10+ (standard library for Tier 1 core execution).
|
||||
|
||||
**Primary Dependencies**:
|
||||
- Core: standard library (`json`, `re`, `argparse`, `pathlib`, `typing`).
|
||||
- Testing & Validation (mandatory): `pytest>=7.0` (only required dependency in `requirements.txt`).
|
||||
- Optional (Tier 2 / Tier 3 adapters): `sentence-transformers`, `httpx` / `openai` (strictly optional, disabled by default).
|
||||
|
||||
**Storage**: None (file-in / file-out via CLI, no database).
|
||||
|
||||
**Testing**: `pytest` running unit tests and the 24-case controlled benchmark suite (`6 languages × 4 decision types`) via `tests/test_benchmark_24.py`.
|
||||
|
||||
**Target Platform**: Cross-platform (Windows / Linux / macOS).
|
||||
|
||||
**Project Type**: Standalone CLI script & modular core library (`classify.py` + `src/`).
|
||||
|
||||
**Performance Goals**: < 200ms execution time for Tier 1 deterministic evaluation on documents < 2,000 words.
|
||||
|
||||
**Constraints**:
|
||||
- Zero mandatory external network calls or cloud API keys required to execute the POC or pass tests.
|
||||
- Zero server/API dependencies (no FastAPI, no workers, no queues).
|
||||
- Decoupled from live graph databases (consumes pre-materialized ECP JSON snapshots).
|
||||
|
||||
**Scale/Scope**: POC scope with minimum 24 explicit benchmark test fixtures.
|
||||
|
||||
---
|
||||
|
||||
## Constitution Check
|
||||
|
||||
*GATE: Must pass before Phase 0 research. Re-check after Phase 1 design.*
|
||||
|
||||
| Principle / Gate | Status | Notes |
|
||||
|---|---|---|
|
||||
| **I. Library / Script First** | **PASS** | Standalone Python module structure, easily importable and script-callable. |
|
||||
| **II. CLI Interface** | **PASS** | Clean standard CLI: `python classify.py --ecp <json> --content <md> --output <json>`, supports file paths and stdout output. |
|
||||
| **III. Test-First (TDD)** | **PASS** | 24-case controlled benchmark matrix defined before code implementation. |
|
||||
| **IV. Simplicity & YAGNI** | **PASS** | No premature REST API, no DB, no worker queues, no heavy frameworks. |
|
||||
|
||||
---
|
||||
|
||||
## Project Structure
|
||||
|
||||
### Documentation (this feature)
|
||||
|
||||
```text
|
||||
specs/001-multilingual-entity-classifier/
|
||||
├── spec.md # Feature specification
|
||||
├── plan.md # Implementation plan (this file)
|
||||
├── research.md # Technical research & decisions
|
||||
├── data-model.md # Schemas & data contracts
|
||||
├── quickstart.md # Validation & usage guide
|
||||
├── checklists/
|
||||
│ └── requirements.md # Quality checklist
|
||||
├── contracts/
|
||||
│ └── cli-contract.md # CLI input/output contract
|
||||
└── tasks.md # Implementation tasks (/speckit-tasks command)
|
||||
```
|
||||
|
||||
### Source Code (repository root)
|
||||
|
||||
```text
|
||||
classify.py # Main CLI entrypoint script
|
||||
|
||||
src/
|
||||
├── __init__.py
|
||||
├── models.py # Dataclasses & schema validators (ECPSnapshot, Result, Error)
|
||||
├── language.py # Lightweight multilingual detector & normalizer (6 languages)
|
||||
├── parser.py # Markdown content parser & excerpt extractor
|
||||
├── classifier.py # Core classification engine & decision logic (Tier 1 core)
|
||||
└── adapters/
|
||||
├── __init__.py
|
||||
├── base.py # Base abstract adapter interfaces
|
||||
├── embeddings.py # Optional Tier 2 embeddings adapter (disabled by default)
|
||||
└── llm.py # Optional Tier 3 LLM fallback adapter (disabled by default)
|
||||
|
||||
examples/
|
||||
├── ecp_petrobras.json # Example ECP Snapshot (PT)
|
||||
├── ecp_volkswagen.json # Example ECP Snapshot (DE)
|
||||
├── ecp_apple.json # Example ECP Snapshot (ES/EN)
|
||||
├── content_presal_pt.md # Example Markdown Content (PT)
|
||||
├── content_northvolt_de.md # Example Markdown Content (DE)
|
||||
└── content_tangential_es.md # Example Markdown Content (ES)
|
||||
|
||||
tests/
|
||||
├── __init__.py
|
||||
├── test_cli.py # CLI argument parsing, flags, file I/O, stdout emission, exit codes
|
||||
├── test_models.py # ECP snapshot parsing and structured error handling
|
||||
├── test_language.py # Language detection and text normalization tests
|
||||
├── test_classifier.py # Unit tests for decision rules (DIRECT, CONTEXTUAL, TANGENTIAL, NOT_RELATED)
|
||||
├── test_benchmark_24.py # Controlled 24-case benchmark runner (6 languages x 4 decisions)
|
||||
└── fixtures/
|
||||
└── benchmark_24/ # 24 paired test cases (ecp_*.json + content_*.md + expected_*.json)
|
||||
├── pt/
|
||||
├── en/
|
||||
├── es/
|
||||
├── de/
|
||||
├── it/
|
||||
└── fr/
|
||||
```
|
||||
|
||||
**Structure Decision**: Single modular project with root CLI `classify.py` and clear separation of models, language normalization, deterministic classification, and optional adapter stubs under `src/`.
|
||||
|
||||
---
|
||||
|
||||
## Complexity Tracking
|
||||
|
||||
> No constitution violations detected. Design enforces absolute simplicity and strict POC constraints.
|
||||
|
||||
| Component | Choice | Simpler Alternative Rejected Because |
|
||||
|---|---|---|
|
||||
| CLI vs REST API | Standalone CLI | REST API adds unnecessary network latency, FastAPI dependencies, and server management for a POC. |
|
||||
| Deterministic Core vs Pure LLM | Deterministic Tier 1 Core | Pure LLM is expensive, non-deterministic, slow, and requires mandatory external API keys. |
|
||||
| In-Memory Snapshot vs Live Graph Query | Materialized JSON Snapshot | Live Neo4j queries couple classifier runtime to external infrastructure and break test reproducibility. |
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user