remediation: backfill v0.1.0/v0.2.0 gaps (P0+P1)

- vault: add vault-get-secret/vault-set-secret wrappers
- programming-org: implement org-modify (text search-replace) and org-ast-render (AST to Org text)
- programming-literate: implement literate-block-balance-check (paren validation) and literate-tangle-sync-check (org→lisp diff)
- system-self-improve: replace stubs with surgical text editing and error diagnosis; remove dead first defskill
- system-event-orchestrator: implement orchestrator-bootstrap (scan Org files for HOOK/CRON)
- system-archivist: implement Scribe distillation (daily logs→atomic notes) and Gardener link/orphan repair
- system-memory: implement memory-inspect with type/todo/orphan statistics
- core-skills, core-context: fix path relic (skills/ → lisp/, org/)
- docs: add Token Economics section to DESIGN_DECISIONS, remediation roadmap entries
This commit is contained in:
2026-05-03 10:43:14 -04:00
parent 299f72c2bb
commit 5a0d1b1c38
22 changed files with 1686 additions and 122 deletions

View File

@@ -184,6 +184,116 @@ Unified control plane and Human-in-the-Loop state management.
** Tasks
*** Remediation: Backfill v0.1.0/v0.2.0 Gaps
These features were marked DONE in prior versions but are stubs, no-ops, or
missing. They must be completed before v0.3.0 feature work proceeds.
**** TODO P0: Add vault-get-secret / vault-set-secret wrappers :backfill:
:PROPERTIES:
:ID: id-vault-secret-wrappers
:CREATED: [2026-05-03 Sun]
:END:
=vault-get-secret= and =vault-set-secret= are exported from =core-defpackage=
and called from =gateway-manager.org= (lines 36, 86, 180) but never defined.
=gateway-link= crashes at runtime. Add one-line wrappers in =security-vault.org=
that delegate to the existing =vault-get=/=vault-set= with ~:type :secret~.
**** TODO P0: system-archivist — Scribe + Gardener :backfill:
:PROPERTIES:
:ID: id-archivist-distillation
:CREATED: [2026-05-03 Sun]
:END:
Scribe: distill daily Org logs into atomic Zettelkasten notes with backlinks.
Gardener: scan for broken =[[file:]]= links and orphaned =memory-object= entries.
Wire both as cron jobs via =system-event-orchestrator=.
Depends on: orchestrator bootstrap (P1 item below).
**** TODO P0: system-self-improve — surgical edit + error fix :backfill:
:PROPERTIES:
:ID: id-self-improve-real
:CREATED: [2026-05-03 Sun]
:END:
= self-improve-edit=: =org-read-file= → text replace → =snapshot-memory= →
=org-write-file= → =literate-block-balance-check= → tangle → reload.
=self-improve-fix=: parse error log → =lisp-structural-check= →
=lisp-extract= → surgical repair → =repl-eval= verify.
Remove the dead first =defskill= registration (trigger nil, overwritten by second).
Depends on: =programming-org=, =programming-literate= (P0 items below).
**** TODO P0: programming-org — fix org-modify + org-ast-render :backfill:
:PROPERTIES:
:ID: id-org-modify-render
:CREATED: [2026-05-03 Sun]
:END:
=org-modify(filepath, id, changes)= ignores ~changes~ and only logs. Should locate
node by ID in file and apply changes to its content.
=org-ast-render(ast)= returns a hardcoded placeholder. Should convert plist AST
back to Org text.
**** TODO P0: programming-literate — fix both stubs :backfill:
:PROPERTIES:
:ID: id-literate-real
:CREATED: [2026-05-03 Sun]
:END:
=literate-block-balance-check=: verify all =#+begin_src lisp= blocks in an Org file
have balanced parentheses. Returns T if all balanced, error message otherwise.
=literate-tangle-sync-check=: verify =.lisp= file matches tangled output of =.org= file.
**** TODO P1: system-event-orchestrator — bootstrap implementation :backfill:
:PROPERTIES:
:ID: id-orchestrator-bootstrap
:CREATED: [2026-05-03 Sun]
:END:
=orchestrator-bootstrap= currently only logs. Should scan Org files for =#+HOOK:=
and =#+CRON:= properties and register them via the existing registries.
Prerequisite for archivist cron jobs.
**** TODO P1: system-memory — memory introspection :backfill:
:PROPERTIES:
:ID: id-memory-inspect
:CREATED: [2026-05-03 Sun]
:END:
=memory-inspect= only logs. Should return structured statistics: object count
by type, TODO state distribution, orphan count, snapshot list. Trigger on
=:INTROSPECTION= sensor type.
**** TODO P1: Path relic — skills/ → lisp/ in skill-initialize-all :backfill:
:PROPERTIES:
:ID: id-path-relic
:CREATED: [2026-05-03 Sun]
:END:
=skill-initialize-all= and =context-skill-source= resolve against =skills/=
under =$PASSEPARTOUT_DATA_DIR=. Core and skills were merged into =lisp/=.
Update both functions to point at =lisp/=.
**** TODO P2: core-context — semantic retrieval (embeddings) :backfill:
:PROPERTIES:
:ID: id-embeddings
:CREATED: [2026-05-03 Sun]
:END:
=org-object-vector= is never populated; all similarities are 0.0. Generate
embeddings via Ollama =nomic-embed-text= at ingest time. Store in
=memory-object.vector=. Fallback: TF-IDF bag-of-words.
**** TODO P2: core-context — subtree-based skill source loading :backfill:
:PROPERTIES:
:ID: id-skill-subtree
:CREATED: [2026-05-03 Sun]
:END:
=context-skill-source= reads entire Org files. Add =context-skill-subtree=
for targeted retrieval of specific function docs or test blocks by heading name.
**** TODO P3: Variable name drift normalization (out of scope for now) :backfill:
:PROPERTIES:
:ID: id-name-normalization
:CREATED: [2026-05-03 Sun]
:END:
=*memory*= (context) vs =*memory-store*= (memory). =*skills-registry*= with
underscore (reason/context) vs =*skill-registry*= with hyphen (defpackage).
Normalization pass across all modules. Touches every file — do after P0-P2
are stable. Do not mix with functional changes.
*** DONE Project Renaming (Bouncer → Dispatcher)
:PROPERTIES:
:ID: id-9e779580-287b-b3d1-37b9-bcefd750bf9e