Extract dependency register (Dependencies.csv v3.1) from deliverable source documents using Anchor x Execution edge typing with evidence-first provenance. Setup-pipeline skill dispatched by ORCHESTRATOR during project setup.
Extract typed knowledge-graph edges from a deliverable's source documents, producing a deliverable-local dependency register (Dependencies.csv v3.1 + _DEPENDENCIES.md) that downstream workflows (aggregation, reconciliation, estimating, scheduling) can merge into larger graphs.
The skill performs two-pass extraction to preserve Tree x DAG knowledge-graph integrity:
DependencyClass=ANCHOR rows that connect this deliverable to an existing definition node (WBS/SSOW/objective) and optionally to requirement IDs.DependencyClass=EXECUTION rows between deliverables (and other entities) needed to execute the work (prerequisites, handovers, constraints, interfaces).This skill does not build project-level graphs. It produces only deliverable-local registers that downstream aggregation agents can merge.
TASK (generic shell mode, no profile)Typical dispatcher: ORCHESTRATOR dispatches TASK with TaskSkill: dependency-extract during project setup, or later for explicit refresh runs during the tier control loop. Runs straight-through; never blocks on human decisions.
SCOPE — deliverable(s) / package(s) / all deliverables under the current run rootRUN_ROOT — path to run workspace (if available to the invoker)DECOMPOSITION_PATH — explicit path to the latest decomposition markdown (preferred)
RUN_ROOT exists: locate the most recent decomposition file under {RUN_ROOT}/_Decomposition/ and record the chosen path in Run Notes.SOURCE_DOCS: AUTO (default) | explicit list of filenames/paths to scan per deliverable
AUTO means: scan the deliverable folder for candidate source documents, excluding dependency artifacts and obvious generated files.DOC_ROLE_MAP: DEFAULT (default) | explicit mapping of doc roles to filenames/patterns
ANCHOR_DOC (definition/traceability signal) and EXECUTION_DOCS (workflow/execution signal).datasheet, definition, requirements, scope, trace, specprocedure, method, plan, workflow, guidance, runbookANCHOR_DOC: AUTO (default) | explicit filename/path
AUTO means: choose the highest-confidence match from DOC_ROLE_MAP + SOURCE_DOCS; otherwise the first doc in SOURCE_DOCS.EXECUTION_DOC_ORDER: AUTO (default) | ordered list of filenames/paths
AUTO means: order execution docs by likely workflow clarity (per DOC_ROLE_MAP) and then the remaining docs.MODE: UPDATE (default) | RESET_EXTRACTEDSTRICTNESS: CONSERVATIVE (default) | AGGRESSIVECONSUMER_CONTEXT: NONE (default) | TASK_ESTIMATING | AGGREGATION | RECONCILIATIONDefaults and chosen paths MUST be recorded in _DEPENDENCIES.md Run Notes.
_REFERENCES.md — used to resolve document pointers/paths for TargetType=DOCUMENT rows and to populate TargetLocation conservatively.| Key | Meaning | Default | Allowed values |
|---|---|---|---|
SCOPE | Deliverables in scope for this run | Required | deliverable ID(s) / package ID(s) / ALL |
RUN_ROOT | Path to run workspace | (invoker context) | Absolute path |
DECOMPOSITION_PATH | Path to decomposition markdown | auto-discover under {RUN_ROOT}/_Decomposition/ | Absolute path |
SOURCE_DOCS | Documents to scan per deliverable | AUTO | AUTO / explicit list |
DOC_ROLE_MAP | Role-to-filename mapping | DEFAULT | DEFAULT / explicit mapping |
ANCHOR_DOC | Primary anchor doc | AUTO | AUTO / filename |
EXECUTION_DOC_ORDER | Execution doc ordering | AUTO | AUTO / ordered list |
MODE | Update vs reset behavior | UPDATE | UPDATE / RESET_EXTRACTED |
STRICTNESS | Extraction posture | CONSERVATIVE | CONSERVATIVE / AGGRESSIVE |
CONSUMER_CONTEXT | Downstream consumer hint | NONE | NONE / TASK_ESTIMATING / AGGREGATION / RECONCILIATION |
Preferred deterministic helpers (called during Function 5 local quality checks):
python3 tools/validation/validate_dependencies_schema.py {deliverable_folder}/Dependencies.csv — confirms all 29 required v3.1 columns are present and CSV is parseable.python3 tools/validation/validate_enum.py {ENUM_NAME} {value} — normalizes and validates enum field values (DEPENDENCY_CLASS, ANCHOR_TYPE, DIRECTION, DEPENDENCY_TYPE, TARGET_TYPE, EXPLICITNESS, CONFIDENCE, ORIGIN, STATUS, SATISFACTION_STATUS).tools/validation/validate_id_format.sh {TYPE} {value} — validates deliverable/package/WBS ID formats.Disallowed behavior:
_REFERENCES.md.{deliverable}/_DEPENDENCIES.md, {deliverable}/Dependencies.csv).Reads are limited to the current deliverable folder plus the decomposition document (if available):
| File | Read scope | Purpose |
|---|---|---|
{deliverable}/_REFERENCES.md | Full (if present) | Resolve document pointers for TargetType=DOCUMENT rows |
| Source documents in scope | Full | Evidence extraction (anchors + execution edges) |
{deliverable}/Dependencies.csv | Full (if present) | Match/merge with existing rows |
{deliverable}/_DEPENDENCIES.md | Full (if present) | Preserve declared lists + Run History |
{DECOMPOSITION_PATH} | Read-only | Validate anchors + resolve canonical labels |
Writes are limited to dependency artifacts only:
{deliverable}/_DEPENDENCIES.md{deliverable}/Dependencies.csvNo other files may be created or modified.
Dependency extraction MUST be performed in two passes to preserve Tree x DAG integrity.
Primary source: {ANCHOR_DOC}.
Goal: Emit:
DependencyClass=ANCHOR, AnchorType=IMPLEMENTS_NODE)DependencyClass=ANCHOR, AnchorType=TRACES_TO_REQUIREMENT)Signals to look for (examples):
Row rules (ANCHOR):
DependencyClass=ANCHORDirection=UPSTREAM (anchors point "up" to definition)AnchorType:
IMPLEMENTS_NODE for the single parent definition nodeTRACES_TO_REQUIREMENT for requirement trace linksDependencyType=OTHER (do not overload execution dependency types; use AnchorType for meaning)TargetType:
WBS_NODE for parent anchors (or the project's canonical "definition node" type)REQUIREMENT for requirement trace anchorsUNKNOWN if you cannot resolve the target kind confidentlyUsing the decomposition document (preferred, if available):
TargetName,[WARNING] MISSING_DECOMPOSITION and skip validation/label resolution rather than guessing.STRICTNESS handling:
CONSERVATIVE: emit ANCHOR rows only when identifiers appear explicitly.AGGRESSIVE: you MAY emit a plausible anchor if strongly implied, but must mark it as ASSUMPTION in Notes and set Confidence=LOW.Primary sources: {EXECUTION_DOC_ORDER}.
Goal: Emit DependencyClass=EXECUTION rows capturing prerequisites, handoffs, constraints, and explicit information transfer.
Signals to look for:
Row rules (EXECUTION):
DependencyClass=EXECUTIONAnchorType=NOT_APPLICABLEDependencyType uses canonical execution enums (PREREQUISITE, INTERFACE, HANDOVER, CONSTRAINT, ENABLES, OTHER)Direction indicates flow relative to this deliverable (UPSTREAM inputs; DOWNSTREAM outputs/consumers)Using _REFERENCES.md (preferred, if available):
TargetLocation._REFERENCES.md unless the source explicitly states it is required.Dependency evidence must include:
EvidenceFile (which source document)SourceRef (path + heading; else location TBD)EvidenceQuote (<= 30 words)Deliverable targets (preferred):
TargetType=UNKNOWN.Anchors:
If uncertain:
TargetType=UNKNOWN,TargetName and/or Statement,PROPOSAL in Notes (never upgrade uncertainty into FACT).Normalize legacy values on write:
Direction: INBOUND -> UPSTREAM, OUTBOUND -> DOWNSTREAMDependencies.csv)Dependencies.csv if missing.RegisterSchemaVersion column exists; set to v3.1 for all rows.DependencyID for matchable rows.LastSeen, set Status=ACTIVE when found.RETIRED (do not delete).Origin=DECLARED).FromDeliverableID matches the host deliverable identity.DependencyID uniqueness within the deliverable register.WBS_NODE, REQUIREMENT, DOCUMENT, EXTERNAL), TargetDeliverableID MUST be empty; use TargetRefID (if a stable ID exists) and TargetName.TargetType=DELIVERABLE, TargetDeliverableID MUST contain the deliverable stable ID.Match/merge precedence for extracted rows (in order):
DependencyID exact matchDependencyClass + AnchorType + Direction + DependencyType + TargetType + target identifiers + near-equivalent StatementDependencyID_DEPENDENCIES.md indexKeep declared lists and add/refresh:
## Extracted Dependency Register (counts + compact table)## Run Notes (defaults + assumptions + paths used + warnings)## Run History (append-only; one entry per run: timestamp, mode, strictness, decomposition path/status, warnings, ACTIVE counts)## Lifecycle Summary (ACTIVE/RETIRED counts + closure-state breakdown)## Downstream Handoff Notes (only when CONSUMER_CONTEXT is not NONE)Do not rename the declared dependency sections.
Before finalizing files, run these checks using deterministic tools where available:
Schema validation
python3 tools/validation/validate_dependencies_schema.py {deliverable_folder}/Dependencies.csv
Confirms all 29 required v3.1 columns are present and CSV is parseable.DependencyID is present and unique within the file.Enum validation
python3 tools/validation/validate_enum.py:
DEPENDENCY_CLASS, ANCHOR_TYPE, DIRECTION, DEPENDENCY_TYPE, TARGET_TYPE, EXPLICITNESS, CONFIDENCE, ORIGIN, STATUS, SATISFACTION_STATUSINBOUND -> UPSTREAM, OUTBOUND -> DOWNSTREAM on write.ID format validation
tools/validation/validate_id_format.sh DEL {FromDeliverableID}, tools/validation/validate_id_format.sh PKG {FromPackageID}, etc.Evidence & provenance checks
EvidenceFile and SourceRef (or explicit location TBD)._DEPENDENCIES.md counts do not contradict Dependencies.csv.Notes.Tree x DAG integrity checks
Status=ACTIVE, DependencyClass=ANCHOR, AnchorType=IMPLEMENTS_NODE.[WARNING] FLOATING_NODE: No parent anchor (IMPLEMENTS_NODE) found. to Run Notes.[WARNING] AMBIGUOUS_ANCHOR: Multiple parent anchors found. to Run Notes.If checks fail and cannot be auto-repaired conservatively:
TBD/UNKNOWN rather than inventing values.Purpose: Dependencies capture information flow / artifact transfer and explicit constraints stated in sources. They do not represent:
Stages (optional):
What to Extract (high signal):
What NOT to Extract (low signal / out of scope):
Direction semantics (relative to this deliverable):
Dependencies.csv with stable IDs.LastSeen; unseen extracted rows become RETIRED.FirstSeen, LastSeen, Status (ACTIVE or RETIRED).RequiredMaturity, ProposedMaturity, SatisfactionStatus.Status tracks whether the dependency relationship is currently observed in source text.
SatisfactionStatus tracks whether the dependency has been fulfilled or remains open.
Dependencies.csv (v3.1 schema)RegisterSchemaVersion, DependencyID, FromPackageID, FromDeliverableID, FromDeliverableName, DependencyClass, AnchorType, Direction, DependencyType, TargetType, TargetPackageID, TargetDeliverableID, TargetRefID, TargetName, TargetLocation, Statement, EvidenceFile, SourceRef, EvidenceQuote, Explicitness, RequiredMaturity, ProposedMaturity, SatisfactionStatus, Confidence, Origin, FirstSeen, LastSeen, Status, Notes
DependencyClass: ANCHOR | EXECUTIONAnchorType: IMPLEMENTS_NODE | TRACES_TO_REQUIREMENT | NOT_APPLICABLEDirection: UPSTREAM | DOWNSTREAMDependencyType:
PREREQUISITE | INTERFACE | HANDOVER | CONSTRAINT | ENABLES | OTHERCOORDINATION | INFORMATIONTargetType: DELIVERABLE | PACKAGE | WBS_NODE | REQUIREMENT | DOCUMENT | EQUIPMENT | EXTERNAL | UNKNOWNExplicitness: EXPLICIT | IMPLICITSatisfactionStatus: TBD | PENDING | IN_PROGRESS | SATISFIED | WAIVED | NOT_APPLICABLEConfidence: HIGH | MEDIUM | LOWOrigin: DECLARED | EXTRACTEDStatus: ACTIVE | RETIREDLegacy read compatibility:
INBOUND/OUTBOUND MAY appear in older files; normalize to UPSTREAM/DOWNSTREAM on write.RegisterSchemaVersion is missing, add it on write and set to v3.1.If you can infer these reliably from text, you MAY add them (do not break older files if absent):
EstimateImpactClass (BLOCKING|ADVISORY|INFO|TBD)ConsumerHint (TASK_ESTIMATING|AGGREGATION|RECONCILIATION|TBD)Rules:
TBD.Estimating-oriented guidance (when CONSUMER_CONTEXT=TASK_ESTIMATING):
ConsumerHint and EstimateImpactClass for DependencyClass=EXECUTION rows when evidence supports it.ConsumerHint=TASK_ESTIMATING when the dependency plausibly affects estimating readiness or scope.EstimateImpactClass conservatively:
BLOCKING: explicit prerequisite/constraint/approval/input that gates meaningful estimating (scope or key quantities unknown without it).ADVISORY: interface/handover likely to change quantities/specs or procurement approach, but not a hard gate.INFO: informational context; low likelihood of changing totals.TBD (do not guess)._DEPENDENCIES.mdMust contain:
{deliverable}/Dependencies.csv — canonical structured register (v3.1 schema, 29 required columns){deliverable}/_DEPENDENCIES.md — human-readable index with declared lists, extracted summary, run notes, run history, lifecycle summaryEvidenceFile + SourceRef) or explicitly state location TBD._REFERENCES.md, or decomposition outputs.{deliverable}/_DEPENDENCIES.md and {deliverable}/Dependencies.csv.TargetType=UNKNOWN and preserve the raw reference text.Notes.Dependencies.csv must remain parseable and include all 29 canonical required columns.FirstSeen/LastSeen/Status) and closure lifecycle (RequiredMaturity/ProposedMaturity/SatisfactionStatus).FromDeliverableID must match the current deliverable; preserve unresolved targets as UNKNOWN/TBD rather than guessing.See QA_CHECKS.md for the authoritative invariant list. Summary:
Dependencies.csv exists (created if missing) and is parseable with all 29 required columns.EvidenceFile and SourceRef (or location TBD).UNKNOWN permitted).RETIRED).DependencyID values are unique within each deliverable register.INBOUND/OUTBOUND normalized)._DEPENDENCIES.md summary/lifecycle counts are consistent with Dependencies.csv.[WARNING] FLOATING_NODE (no parent anchor), [WARNING] AMBIGUOUS_ANCHOR (multiple parent anchors), [WARNING] MISSING_DECOMPOSITION.This skill produces deliverable-local registers only. Downstream workflows (AGGREGATION for project-level graphs, RECONCILIATION for cross-deliverable consistency, TASK_ESTIMATING for estimating readiness, AUDIT_DEP_CLOSURE for closure-level audit via tools/coordination/analyze_dep_closure.py) consume these registers. This skill does not build project-level graphs.