Landmark Internals
Landmark Internals
Landmark (@forwardimpact/landmark) is a read-only CLI
analysis layer over Map's activity schema. It mirrors
Summit's package layout and CLI conventions.
Package Layout
products/landmark/
bin/fit-landmark.js CLI entry point
src/
index.js Public API re-exports
lib/ Shared helpers
cli.js resolveDataDir, loadMapData, resolveFormat
supabase.js createLandmarkClient factory
context.js buildContext for command handlers
empty-state.js Central registry of empty-state messages
evidence-helpers.js Shared evidence join/grouping logic
initiative-helpers.js Initiative impact computation (pure)
summit.js Dynamic import wrapper for Summit's growth function
commands/ One file per top-level command
formatters/ One file per command (toText, toJson, toMarkdown)
test/ node:test with stub queries, no network
Data Contracts
Landmark consumes Map's activity queries via subpath imports:
| Import | Query functions |
|---|---|
@forwardimpact/map/activity/queries/org |
getOrganization, getTeam,
getPerson
|
@forwardimpact/map/activity/queries/snapshots
|
listSnapshots, getSnapshotScores,
getItemTrend, getSnapshotComparison
|
@forwardimpact/map/activity/queries/evidence
|
getEvidence, getPracticePatterns
|
@forwardimpact/map/activity/queries/artifacts
|
getArtifacts, getUnscoredArtifacts
|
@forwardimpact/map/activity/queries/comments
|
getSnapshotComments |
@forwardimpact/map/activity/queries/initiatives
|
listInitiatives, getInitiative
|
Framework data is loaded via
@forwardimpact/map/loader
(createDataLoader).
Join Contracts
item_id ↔ driver.id
The getdx_snapshot_team_scores.item_id field must match
a driver.id in drivers.yaml. Unknown items
produce warnings in the health view. Installations must align their
GetDX scorecard item IDs with driver definitions.
scorecard_id ↔ driver.id
Initiatives link to drivers via
getdx_initiatives.scorecard_id. The impact command uses
this to compute before/after score deltas.
Summit Import Pattern
src/lib/summit.js wraps
@forwardimpact/summit's
computeGrowthAlignment via dynamic
import(). This provides:
- Optional runtime: if Summit is absent, health degrades to driver scores + evidence + comments without growth recommendations.
-
Test injection:
__setSummitForTests()allows unit tests to stub Summit without touchingnode_modules. -
GrowthContractErrorhandling: framework data violations become health view warnings, not crashes.
Comments and Initiatives Pipeline
Both follow the same ELT pattern:
-
Extract —
products/map/supabase/functions/_shared/activity/extract/getdx.jsfetches from GetDX API and stores raw JSON to Supabase Storage. -
Transform —
.../transform/getdx.jsreads raw documents and upserts structured rows into the activity schema. -
Query —
products/map/src/activity/queries/{comments,initiatives}.jsexport thin SELECT wrappers. - Landmark — commands import query modules and present the data.
Testing Strategy
All command tests use injectable queries parameters to
avoid network calls. Fixtures are in-memory objects. The pattern:
const result = await runHealthCommand({
options: { manager: "alice@example.com" },
mapData: MAP_DATA_FIXTURE,
supabase: {},
format: "text",
queries: stubQueries(), // injected stubs
summitFn: summitPresent, // injected Summit stub
});
Behaviour Rendering — Non-Goal
Drivers declare contributingBehaviours, but Landmark
does not render behaviour evidence in the health view. Behaviours
are maturity profiles (derived from discipline + level + track), not
artifact-level markers. The spec's health view mock-up shows
skills only.