Skip to content

OKF Forward Task Graph (S448) — ID-132 / 133 / 135 / 136

Prepared for the team lead. Context: ID-131 is mid-endgame (legacy content_items retirement onto the OKF L-records model); ID-138 (corpus byte-transport / writer-fence) is integrated with an owner-gated tail. All reads are slice reads.


Q1 — Start-readiness of ID-132, ID-133, ID-135

Section titled “Q1 — Start-readiness of ID-132, ID-133, ID-135”
TaskTitleStatusSpec chainLedger depsThemeCan START next session?Blocker
132OKF L-concepts layer + 2-pass producerin_progress{132.1 PRODUCT}✓ {132.2 TECH}✓ {132.3 PLAN}✓ — impl {132.4-17} all pending[“131”] (hard)1 (KB foundations)PARTIALHard dep on 131. Identity-neutral prep can start; record-coupled + publish-gated work blocked.
133OKF ontology three-layer pass + semantic linterin_progress{133.1 TECH}✓ {133.2 PLAN}✓ (no RESEARCH/PRODUCT stage — started at TECH); impl mixed[] none1PARTIAL — most startableNo ledger dep, but content_items-coupled items gated on 131.
135Human search/browse + SD provenance UIpending{135.1 RESEARCH}✓ {135.2 PRODUCT}✓ {135.3 TECH}✓ {135.4 PLAN}✓ + {135.19 SPEC-RECONCILE}✓ — impl {135.5-22} pending[] none (but DR-012 = Task-level 131 dep)1Spec-complete; impl blocked on 131Reads hybrid_search + source_documents + q_a_pairs — needs 131’s L-records read surface live.

Detail per task:

  • ID-132 — Spec chain fully authored (PRODUCT/TECH/PLAN done); 14 implementation subtasks {132.4-17} pending. Hard ledger dep on 131. The description itself allows parallel start of the ADK→Anthropic agent-loop port and scaffolding. So identity-neutral work CAN start: {132.5} G-LOOP (Anthropic tool-use loop port), {132.6} G-PASS1a (resource_uri builder), {132.14} G-VIEWER (viewer lift-and-shift). BLOCKED: {132.4} G-SOURCE (L-records Source adapter needs a stable SEED-CONTRACT + record uuids + EMB-STORE from 131); {132.13} G-PUBLISH-GATE first-publish (BI-20/21) blocks on 138’s promotion-boundary + identity contract, per DR-024 clause (i) + DR-026 (encoded in {138.3}). Also gated by 133’s concept linter (concept-frontmatter validator) and sequenced AFTER 133 per the corpus-reframe path (§7 step 3). No dependency on 138’s UPLOAD leg specifically — the 138 coupling is the promotion-boundary/identity contract, not byte transport.

  • ID-133 — No RESEARCH/PRODUCT stage (task opened at TECH); {133.1 TECH}+{133.2 PLAN} done. Done: {133.3} (README + 3-layer CV), {133.7} (entity/relationship CVs docs), {133.10} (retire loader.ts), {133.11} (baseline schema + parity, code). STARTABLE now (131-independent, and 132-gating): {133.8} 37-concept-type CV + {133.12} concept-schema.ts ConceptFrontmatterSchema — these ARE the concept linter that gates 132’s concept writes; building them unblocks 132. BLOCKED on 131’s content_items retirement: {133.4} BI-3 decompose 04-content-type (coordinate Task B), {133.5}/{133.6} BI-4 re-home column CVs, {133.9} content_items prose sweep, {133.13} content_type fixture trim. Description confirms: “homes-dependent items (3,4,8) after B.” Verdict: the concept-linter half can and should start; the re-home/decompose half waits on 131.

  • ID-135 — Status pending but spec chain is COMPLETE and reconciled: RESEARCH, PRODUCT, TECH, PLAN all done, plus {135.19} SPEC-RECONCILE re-verified against S436/S437 platform truth (a deliberate pre-impl dispatch gate). 17 implementation subtasks pending. Per DR-012, {135.11} was dropped and the source-documents route re-point + the derived_pairs contract are a Task-level id-131 dependency — so implementation reads the L-records surface (hybrid_search + source_documents + q_a_pairs) that 131’s content_items elimination produces. Per DR-013 the surfaces are net-new-by-design (leaf/pattern reuse only). Corpus-reframe path sequences 135 LAST in the concept-layer chain (§7 step 3: 133→132→134→135). No 138 upload-leg dep. Verdict: dispatch-ready on spec, but implementation should wait for 131 to land the q_a_pairs/source_documents read surface.

Cross-task sequencing (from corpus-reframe §7 + DRs): 131 (content_items kill) → 133 linter → 132 producer/first-bundle → 134 gate → 135 search/browse. 138’s promotion-boundary contract gates 132’s first publish.


Verdict: NOT yet on the ledger’s own terms — but very close. All work is done and the PR is merged; only the deferred end-of-task verification wave remains, and it is light.

(a) All subtasks done? YES. Subtasks {136.3-11} are all status=done (there are no {136.1}/{136.2} — the task opened at TECH {136.3}). Each carries an S442 executor-commit journal + a Checker PASS / PASS_WITH_NOTES per-subtask verdict.

PR status: MERGED. PR #113 (“ID-136: Retire the corpus forms route”) merged to main 2026-07-03T21:07:14Z (head e311fe47, 8 commits). The S442 merge-gate is closed. The constraint “re-walk corpus ONLY after merge” is now satisfiable — confirm operationally that the post-merge re-walk ran (not a subtask gate; not evidenced in the ledger).

(b) code-simplification (Executor) + quality-review (Checker) end-of-task passes? NO — explicitly DEFERRED. {136.10} journal: “end-of-task simplification + quality-review passes DEFERRED per parent close-out steer (per-subtask gates already run).” status_note: “Simplification+quality passes deferred (light).” Per-subtask Checker gates DID run; the two END-OF-TASK wave passes did not.

(c) Curator triage of out-of-scope findings? None run, and likely none needed. No out-of-scope findings were parked. {136.11} was an IN-SCOPE post-hoc subtask (a T1-T23 touch-point undercount found at the {136.10} gate), not a curator item. DR-021 governs disposition; nothing indicates an out-of-scope finding surfaced.

Minimal wave to close 136 (the owner is right that it is straightforward): The diff is overwhelmingly DELETIONS (RouteKind forms, flow.py fork, form_extractors/ 2,235 LOC, 2 vendored binaries, ~23 test touch-points). The only NON-deletion edit surface — the sole thing a quality/simplification pass can act on — is small:

  1. scripts/cocoindex_pipeline/workspace_resolver.py (RouteKind narrowing + docstrings)
  2. scripts/cocoindex_pipeline/flow.py (fork collapse + BranchCounter shape)
  3. scripts/seed-synthetic-corpus.ts (buildManifest → {schema_version:1,mappings:[]} + --emit-manifest simplification)
  4. re-pointed/extended tests: 4 Python routing/gate files + platform-corpus-shape.test.ts

Recommended MINIMAL close: ONE task-checker (variant=quality-review) pass scoped to PR #113’s edited (non-deleted) files above; the code-simplification Executor pass over the same 3–4 edited files is near-empty (parent already judged it “light” — a deletion PR has almost no simplification surface). Dispatch a Curator ONLY if quality-review surfaces an out-of-scope finding (DR-021); else no-action. Also confirm the post-merge corpus re-walk happened. If quality-review is clean → flip {136} to done. Caveat: #113 is already merged, so any simplification edit would be a follow-up PR — the owner may reasonably judge a merged deletion PR does not warrant a retroactive edit pass and close on a clean quality-review read alone.


Q3 — Retro signal (S444 / S445 / S446, canonical-pipeline)

Section titled “Q3 — Retro signal (S444 / S445 / S446, canonical-pipeline)”

Bearing on 131/132/133/135/136 or on how to run the next session:

  • Deletion-heavy merges need dangerouslyDisableSandbox (S446 failed-assumption). “ff-merge just works” is FALSE under sandbox — file DELETES hit “Operation not permitted”, leaving a half-applied merge (HEAD unchanged, tree mutated); recovery = reset --hard + retry with bypass. Directly relevant to 136 (already deletion-heavy, merged) and to any 131/133 content_items-deletion merges next session.
  • Idle-without-report recurring (S444/S445/S446 — 3rd/4th session). Dispatched agents idle after finishing without surfacing work; the SendMessage nudge is normalised, not root-caused (Agent-tool wake-on-inbox / report-before-idle still missing). Plan for manual nudges when running the 132/133/135 implementation waves.
  • Worktree isolation still broken (id-137 unbuilt) (S444/S446). DR-031 subo-launch recipe doesn’t cleanly compose; {137.1} auto-wiring unbuilt → S446 hand-rolled launch. S444: executors direct-to-main (serialized single-writer, no worktree) worked cleanly — the proven pattern while isolation is broken. Choose dispatch topology accordingly for next-session waves.
  • Parent can’t rescue a subo’s sub-executors (S446). A stuck/long executor can only be rescued by its owning subo; no parent-side primitive. Affects deep dispatch trees.
  • Post-apply full-surface verification should be a standing GO-gate (S445 workflow-improvement). The 63-table public-vs-api diff caught a live break the scoped audit missed, and caught the id138 re-break before prod push. Relevant to the 131/138 migration endgame.
  • Migration-authored ≠ client-reachable; api exposure is separate ownable work (S445 → DR-032). id138 fns were PostgREST-unreachable (no api wrappers). Relevant to any new 132 RPC (EMB-STORE / concept embeddings) and 131/138 endgame.
  • DR-032 enforcement is documentation-only (S445 unresolved). Should a CI check / migration-linter gate the companion-migration rule mechanically? Open.
  • Deploy-provenance gap (S445 unresolved). Who applied 20260703160000/170000 to prod before S445? No ledger/diary record; owner eyeball requested.
  • test:integration masked-red cadence (S444/S445 unresolved). Weeks between runs → a per-GO triage tax (12 reds; 4 were rate-limit flakes). Needs a cadence decision + rate-limit-aware runner.
  • ledger-cli budget papercuts (S444 unresolved). description ≤250 / testStrategy ≤300 rejected 4+ add-subtask attempts. Relevant to authoring 132/133/135 impl subtasks.
  • Continue-the-agent beats fresh-spawn when the follow-on builds on the trace (S444 workflow-improvement). Reuse the executor via SendMessage for chained subtasks.
  • Capture full test output to a scratchpad FILE, tail the file (S445 lesson). Bounding a background run with tail -30 lost 10 of 12 failures.

(workflow_improvements treated as observations, not ratified rules.)


Q4 — In-force decision-register entries + corpus-reframe direction

Section titled “Q4 — In-force decision-register entries + corpus-reframe direction”

In-force (accepted, non-superseded) DRs relevant to 131/132/133/135/136:

DRRuling (one line)Bears on
DR-014 (S434)Forms are manual-upload; the corpus forms-route is retired.136 charter
DR-013 (S434)id-135 surfaces are net-new-by-design, not id-111/117 reuse.135
DR-012 (S434)id-135’s source-document route re-point belongs to id-131; {135.11} dropped; derived_pairs = Task-level 131 dep.135 / 131
DR-016 (S436)OKF bundle medium = client-owned git repo; human edits are producer overrides re-applied on regen.132
DR-018 (S436)OKF producer trigger chained off a successful walk ({132.16}), not scheduled.132
DR-019 (S436)OKF conformance = documented deliberate superset of OKF v0.1; keep the name/extensions.132
DR-020 (S436, restated by DR-025)Corpus admission = two-tier gate; id-133 owns ONLY the semantic tier (linter over extraction + concept writes); document gate = {131.24}.133 / 131
DR-021 (S438)Finding disposition: an active ID-N owns its in-scope findings (subtask/journal); backlog only if unowned.136 curator triage
DR-023 (S440, refined by DR-025)Corpus durable home = source-binding model; per-binding retention classes. Impl = ID-138.138
DR-024 (S440; clause (ii) superseded by DR-026, clause (i) stands)Record identity minted at admission (not path-derived); first bundle publication (132 BI-20/21) blocks on the identity contract.132 / 138
DR-025 (S441)The corpus reframe: sources are evidence; authority is earned at promotion. Two gates (light binding + knowledge-admission).strategic / all
DR-026 (S441)Promotion boundary replaces the record-curation RETAIN store; pipeline writes stop at staging; changes to promoted records arrive as proposals; encoded in {138.3}.138 / 131 / 132
DR-027 (S441)Ontology CVs: effective ontology ships in the bundle; base source-of-truth moves to the canonical repo; id-133 owns the register-medium change.133
DR-029 (S443)Won-bid KB integration HYBRID RETIRE; the 4 non-QA content types re-enter only as id-132 CONCEPT-proposals ({132.17}), never a content_items rebuild.132 / 131
DR-030 (S444)api.* views MUST be regenerated on any base-column rename.131 endgame
DR-032 (S445)Every api-surface change ships its companion exposure migration in the SAME batch.131 / 138
DR-031 (S444, retired — superseded by the S497 WorktreeCreate hook: nested .claude/worktrees/ is the provisioned default) / DR-033 (S446, retired but hazard live — see the gitnexus-refactoring skill)Parallel worktree isolation needs a top-level sibling worktree; non-dry-run gitnexus mutations banned from agent worktrees.dispatch topology

Corpus-reframe review (.lavish/corpus-reframe-review.html, S441 pre-wave strategy) — what it says is in-flight + direction of travel, cross-referenced to the graph:

  • The reframe (ratified as DR-025/026/027): “source file” conflated three things now separated — evidence (bytes; kept/discarded per retention class), the provenance register (source_documents rows, never deleted; citations degrade to it, never orphan), and authoritative artefacts (promoted records + OKF bundle = platform OUTPUTS, durable via DB backups + bundle changelog). The gate MOVED from the front door (which files may enter) to the sign-off desk (promotion): a light binding gate + the real knowledge-admission gate. Authority is earned at promotion, not inherited from a folder.
  • Two loops: ingestion (evidence→sieve→proposals→promoted records) + curation (records→concept producer→OKF bundle). Push-back ①: the bundle is NEVER pipeline input — a separate consumption indexer reads it (id-132’s EMB-STORE). Push-back ②: ingest-once needs a deliberate “what survives the engine” contract per record class — the load-bearing ID-138 TECH decision (→ DR-026).
  • “Most pieces almost in place” — confirmed as a reframing + spec-steering exercise, not a rebuild. Inventory maps: cocoindex incremental walk (live), q_a_extractions staging (live), id-59 promotion loop (built), id-120 dedup (built), id-134 confidence gate (in flight), id-131 L-records refactor (in flight — “the wave ready to dispatch today”), id-132 producer (spec’d), id-133 linter (in flight), id-59 write-back (built).
  • Direction of travel (§7 path): step 0 ratify + amend DR-023/024 + re-brief 138 (done — DR-025/026/027 landed S441); step 1 dispatch the “unaffected” waves 131 + 136 in parallel (136 DONE/merged; 131 mid-endgame); step 2 ID-138 TECH under the corrected model (source-binding register, promotion-boundary contract, what-survives-the-engine, citation degradation, erasure cascade, demoted bucket) — this spec blocks first bundle publication, the point of no return (138 integrated, owner-gated tail); step 3 the concept layer: id-133 linter → id-132 producer + first bundle → id-134 gate → id-135 search/browse + bundle consumption indexer; step 4 first-client onboarding ingest (id-45) reframed as one-time ingest-once; step 5 post-v1 the refinery grows inlets (roadmap themes 15/16 — connectors, discovery agent, PDF quick-win, guides+coverage).

Net cross-reference: the review’s §7 is the authoritative sequencing for the forward graph — after 131/138, run 133 → 132 → 134 → 135, with 138’s promotion-boundary contract gating 132’s first publish. This confirms the Q1 read: 133’s concept-linter half should lead, 132 follows (record-coupled parts gated on 131 + publish gated on 138), and 135 is last.

  • [status-changed] ID-136 is done (S448 reconcile; ledgers/tasks/ID-136.md) — the Q2 “NOT yet on the ledger’s own terms” verdict was actioned and the deferred close-out wave resolved.
  • [status-changed] {133.8} (37-concept-type CV) and {133.12} (ConceptFrontmatterSchema) are done (S449; ledgers/tasks/ID-133.md) — the Q1 “startable now, 132-gating” items have landed; the concept-linter gate on ID-132’s concept writes is in place.
  • [status-changed] The ID-131 endgame advanced past the Q1 snapshot: {131.17} final shipped (gate green rg==0), {131.21}/{131.24}/{131.38} done, {131.19} GO addendum (detect_reupload DROP), and {138.18} done (S449; ledgers/tasks/ID-131.md, ledgers/tasks/ID-138.md).
  • [status-changed] The first Platform OKF bundle has published (11/07/2026 — repo canonical-okf-showcase (pre-rename: canonical-okf-platform), first commit 3f66483, 18 concepts) via {132.15} (done; ledgers/tasks/ID-132.md). The Q1 detail (“{132.13} G-PUBLISH-GATE first-publish … blocks on 138”), the Q1 cross-task line (“138’s promotion-boundary contract gates 132’s first publish”), and the Q4 §7-path framing (“this spec blocks first bundle publication, the point of no return”) all describe 132’s first publish as a still-future gate — for the Platform bundle that first-publish has now occurred. Task id-132 itself remains in_progress ({132.15} publish finale being finalised in a parallel session), and client bundles remain future, so the sequencing frame is only partially overtaken.
  • [status-changed] id-134 (promotion-confidence gate — the “134 gate” step in the Q4 §7 concept-layer chain 133 → 132 → 134 → 135) is done (closed S452, validated live-green on Platform; ledgers/tasks/ID-134.md). The graph carries it as an unbuilt downstream gate.
  • [status-changed] ID-131 is done (CLOSED S451, 07/07/2026, commit 3bfd644f, ledgers/tasks/ID-131.md). The 11/07 drift bullet above listed ID-131 subtask completions ({131.17}/{131.21}/{131.24}/{131.38}/{131.19}) but predates — and did not note — the parent task close; Q1’s “ID-131 is mid-endgame” framing (line 25) is now fully overtaken (39/39 subtasks, M6 GO applied both envs S450, simplification pass + quality-review PASS_WITH_NOTES).
  • [status-changed] ID-138 is done (CLOSED S452, 08/07/2026, commit d915778e, ledgers/tasks/ID-138.md). The 11/07 drift bullet noted {138.18} done but not the parent close; Q1’s “integrated with an owner-gated tail” framing (line 26) is overtaken — the tail is resolved, 18/18 subtasks, full regression green. DR-026’s promotion-boundary contract remains in force (ratified) and still gates 132’s first client bundle publish per {45.9}.
  • [status-changed] ID-133 is done (CLOSED S452, 08/07/2026, commit d915778e, ledgers/tasks/ID-133.md). The 11/07 drift bullet covered subtasks {133.8}/{133.12} done but not the parent close; Q1’s row for ID-133 still shows in_progress (line 35) — 14/14 subtasks, vitest 11853.
  • [status-changed] ID-135 is done (CLOSED S485, 17/07/2026, commit 3af440e6, ledgers/tasks/ID-135.md). The 11/07 drift section did not cover ID-135 at all; Q1’s row for ID-135 still shows pending (line 36) — long overtaken (flipped pendingin_progress 11/07, then in_progressdone 17/07; 31 subtasks done, {135.21} deferred+re-homed to id-162 per owner Option 2).
  • [status-changed] {132.48} G-PUBLISH-TRANSPORT and {132.49} G-CONCEPT-GRAPH-UNION are done (S488, commit 37536da0 / 666d74ad; ledgers/tasks/ID-132.md) — the first live publish-lane verification landed (commit fe4e3542) and the deployment- level union concept graph is in. ID-132 itself remains in_progress (unchanged since the 11/07 drift), but the Q1/Q4 framing of “first bundle publication” as a still-future gate is further overtaken for the Platform lane.