Skip to content

Latest commit

 

History

History
130 lines (96 loc) · 11.3 KB

File metadata and controls

130 lines (96 loc) · 11.3 KB

Closure Ledger — ContextCore

The project's brain. One table of every open loop, one law (WIP=1), one honest maturity number. Seeded 2026-07-15 by a grounded four-gate closure scan of the Python core (src/contextcore) + docs. TS plugins (contextcore-owl/-rabbit), helm/k8s, and dashboards were out of scope for this pass. See the DEV-OS docs at dev/dev-os/.

Maturity of this repo: L2set by the lowest open loop (dead CLI sync stubs / un-wired a2a gate). The lessons + comms core is L4/L5-live and notably self-aware. No rounding up. Loops in flight: 0 — WIP=1: pick one, close or park it, before opening another. Last grounded: 2026-07-15 — core lessons-recall path grounded to the querier; INERT-2/3/4 NOT re-grounded (see caveat).


Provenance & caveat (read before trusting the INERT rows)

ContextCore is more self-aware than most repos — it already carries a fresh, formal closure analysis of its lessons core: docs/design/LESSONS_ENHANCEMENTS_BACKLOG.md (2026-07-03) + docs/design/LESSONS_INERT_GAPS_REQUIREMENTS.md (2026-07-09, "Ready to implement"). Those define INERT-1…4. This ledger does not duplicate them — it cites them.

But grounding INERT-1 against the code flipped it from open to closed (see Recently Closed): the querier does rank by effectiveness; the requirements doc is the stale artifact. INERT-2/3/4 were NOT re-grounded (re-check declined). Because INERT-1 was over-reported, treat INERT-2/3/4 as unverified hypotheses, not confirmed debt — ground each against code before working it. The map here has already lagged the territory once.


The four maturity gates (cost DECREASES down the list)

Level Gate Meaning Cost
L0 idea not started
L1 drafted spec/design exists, no code
L2 un-wired code doesn't exist / isn't called anywhere highest
L3 un-validated wired, but never proven correct run a check
L4 un-enabled wired + valid, behind a default-off flag/config flip a flag
L5 un-recorded → done wired, valid, enabled — only a stale doc says otherwise fix a comment

Ground before you trust a level. Every row is a hypothesis. Grep the whole-codebase consumers before believing "dormant/missing"; and read the implementation, not the requirements-doc status field — the map drifts in both directions (INERT-1 proved it).


Open loops

ID Artifact What it is Now Gate to next level Value if closed
CL-1 storage/base.py (420 LOC), storage/file.py (341 LOC) Core persistence protocol + file backend for handoffs/sessions/insights — zero tests L3 Unit tests for the file backend + protocol conformance → L5. Highest real risk — this is production data, and it's NOT covered by the inert-gaps doc. Core persistence proven, not assumed
CL-2 cli/{task,install,skill,dashboards,review}.py CLI command handlers (task routing, install/health, dashboard provisioning, PR review) — no integration tests L3 Integration tests per handler Setup / provisioning / review flows exercised
CL-3 cli/sync.py:20,34jira() / github() Registered CLI commands that parse args then print "not yet implemented" L2 Implement the sync or remove the registered commands (don't ship surfaces that only error) No dead/lying CLI surface
CL-4 contracts/a2a/content_verification.py Gate-3 content verifiers (verify_schema_fields etc.). Grounded: internally composed (:713/:782), NOT 3 dead functions — but integration into the live gate pipeline is unverified L2? Grep whether the gate runner invokes this module; wire it, or record it as an available-but-unwired library Gate-3 verification actually runs, or is honestly parked
CL-5 contracts/capability/otel.py:32,65emit_capability_result / _chain_result Capability-boundary span emitters; exported but only a test calls them L2 Wire into the capability tracking flow, or mark as an opt-in emitter Capability crossings observable
CL-6 graph/builder.py:332,354 TODO: implement K8s watching + TODO: context removal — placeholder graph-mutation seams L2 Implement CRD watching + node/edge removal, or document as deferred Live knowledge-graph updates
CL-7 state.py:212, tracker.py:152transport=None default Task-state → comms emission (REQ-STU-001) is wired but off unless transport is passed; lifecycle events never surface to comms list --kind task_state L4 Decide the default (pass a transport at the composition root) + smoke test Task lifecycle observable by default
CL-8 23 data-model inconsistencies areas-of-improvemet-2026-0115.md: 4 status enums, 3 priority systems, label/event drift — esp. LabelName.TASK_ID="task" vs "task.id" L2 Adopt a single source of truth (contracts/types.py); the label mismatch is a live query-break risk — fix first Query paths stop silently missing rows
CL-12 src/contextcore/weaver/retail_conventions.yaml Pre-Weaver prototype artifact — a retail.crm.* schema in the OLD ad-hoc format (models:/name/inline enum:) living in src/, outside the governed registry (not in registry_manifest.yaml, not validated by weaver check vs contracts/types.py). Superseded by the canonical semconv/registry/ pattern. L1 Retire it — or, if the retail.* conventions are still wanted, re-author them as a canonical semconv/registry/retail.yaml group (prefix + attribute_group + requirement_level + members mirroring a types.py enum). Don't leave a second, ungoverned semconv format. Owner: the Weaver-effort / retail lane. One governed source of truth for semconv; no pre-Weaver shadow schema. Flagged 2026-08-19 while grounding the incoming business.* registry work (BI-1).

INERT-2/3/4 — from ContextCore's own backlog (UNVERIFIED here — see caveat)

ID Item Source Status per doc Grounding status
CL-9 INERT-2 — no CI gates the ~2007-test suite LESSONS_INERT_GAPS_REQUIREMENTS.md ready-to-implement UNVERIFIED — check for a CI workflow before believing it's open
CL-10 INERT-3 — lessons don't reach Loki (store path is Tempo-span-only) same ready-to-implement PARTIAL — the store path has no Loki push (grounded); the capture-lessons skill wrapper does push. Confirm which layer the requirement means.
CL-11 INERT-4 — agentLessons CRD stanza unpopulated same ready-to-implement UNVERIFIED — grep whether anything populates AgentLessonsSpec

Incoming design specs (authored in startd8-sdk, ContextCore-bound — NOT started)

Cross-repo design specs whose build lands in ContextCore but whose design home is startd8-sdk/docs/design/business-context-propagation/. Listed here for discoverability (the "no all-requests index" gap, 2026-08-19). Not in-flight — queued behind the Weaver registry effort (docs/design/weaver/WEAVER_REGISTRY_REQUIREMENTS.md, Phase 1 not started) which they extend, so WIP=1 is unaffected. Ground each against its design doc before starting.

ID Spec (design home in startd8-sdk) What it is Depends on / extends State
BI-1 REQ-business-semconv-registry-group.md Author the business.* Weaver registry group — the dynamic axis (business.flow + business.flow.criticality) + the two-validator seam extends WEAVER_REGISTRY_REQUIREMENTS §4.5 (static business.*, Phase 2) spec, not started
BI-2 REQ-business-flow-and-flow-criticality.md The carrier — seed/propagate/materialize business.flow via W3C baggage + OTTL BI-1 (schema); mesh header rule + OTel Operator CRD spec, not started
BI-3 map-fidelity gate (BI-2 FR-9) weaver registry live-check reconciling the declared route→flow map vs live traffic — closes confidently-wrong-RCA same class as REQ_FIDELITY_VERDICT_REFINEMENT (bound_no_data) — reuse its binding_coverage vocab spec, not started

Not to be confused with the shipped BUSINESS_OBSERVABILITY capability (OKR/revenue pacing, contextcore business pace) — a different sense of "business" (metrics observed), not business instrumentation (declared context as a dimension on telemetry). Adjacent, not the same.


Parked — intentional, NOT defects (do not "fix")

ID Artifact Why it's parked, not broken Revisit when
P-1 Default-off OTel flags: CONTEXTCORE_MESSAGING_EMIT, _CICD_EMIT, EMIT_MODE=dual Fully wired; intentionally opt-in for back-compat during the OTel-semconv migration. Not dormant. Per-flag: graduate to default-on once the semconv migration completes
P-2 compat/otel_genai.py:701TestDualEmitLayer A test class living in a src/ module (name starts with Test) — a misfile, harmless Housekeeping: move to the test tree or rename

Recently closed (keep for the burn-down record)

ID Artifact Closed how Level reached
INERT-1 — effectiveness ranking Closed in code, not recorded. LessonQuerier.recall (learning/querier.py:343) ranks by a composite relevance + effectiveness_score + recency score and cites INERT-1/FR-I1.2; query_detailed has the rank={recency,effectiveness} param (:277). The LessonsAPI.recall docstring ("effectiveness-ranked") is accurate. Only the requirements doc still says "Ready to implement" → un-recorded (L5): mark the doc done. L5

Recorded finding — a live instance of the drift this ledger guards against

During this very scan I first reported INERT-1 as an open gap and claimed the recall docstring was "ahead of the code" — because I read the requirements doc's "Ready to implement" status field instead of the querier implementation. Grounding the code reversed it: INERT-1 is closed in code; the doc is the stale artifact. The map lagged the territory in the closed-looks-open direction, and the audit itself fell for it before catching it. Standard reaffirmed: read the implementation, never the status field.


Ledger discipline (the WIP rule)

  • One loop in flight. Close (or park with a dated gate) before opening a new one.
  • Close top-down by value × readiness. Next up: CL-1 (storage-layer tests — highest real risk, fully ready, no external gate). Then CL-8's LabelName.TASK_ID label mismatch (live query-break, tiny fix).
  • Every new dormant path lands here the moment it's built-but-unwired.
  • Advertise honestly. Repo maturity = its lowest open loop (currently L2).
  • Ground, don't inflate — and don't trust a status field. A docs/req-derived ledger over-reports; grounding deflates it (INERT-1 went open→closed on grounding). Re-ground INERT-2/3/4 before working them.

Seeded from dev/dev-os/templates/CLOSURE-LEDGER.template.md. Canonical assets are single-source — cite them, don't copy (dev/dev-os/REQUIREMENTS-PIPELINE.md §2).