feat BREAKING path feat/kn-work-path-list-b #4 / 4
aaronrene · 15 days ago · Aug 18, 2026 · Diff

feat(path): persist learning_paths[] with gated list/get (KN-WORK-PATH-LIST-b)

Store structured paths in hub_flow_store.json, expose Hub list/get, and keep writes Review-before-write with PATH_WRITES_ENABLED default off so Scooling can later harvest real Path rows without a second ledger.

sha256:f75b3897cb07487612e139e6a2ac8ab585dc857fa3f03665b7ff201aff1ba860 sha
+81 ~22 −5 symbols
sha256:a0471af55ca0e453e9aff421a8cbc63a3c98efa0b2d2e132ee680d0efdcfcc19 snapshot
+81
symbols added
~22
symbols modified
−5
symbols removed
0
dead code introduced
Semantic Changes 108 symbols
+ Build verification — KN-WORK-PATH-LIST-b round 1 section Build verification — KN-WORK-PATH-LIST-b round 1 L1–34
+ Checklist section Checklist L14–27
+ table section table L16–26
+ Evidence section Evidence L8–14
+ table section table L10–13
+ Findings section Findings L27–31
+ Honest summary section Honest summary L31–34
~ hub/bridge/path-routes.mjs .mjs 7 symbols added
+ createProposal function async_function createProposal L91–106
+ hostedCreateProposal function function hostedCreateProposal L90–107
+ pathHandlerContext function async_function pathHandlerContext L61–67
+ registerBridgePathRoutes function function registerBridgePathRoutes L40–245
+ sendRouteError function function sendRouteError L113–119
+ sessionBoundFromReq function function sessionBoundFromReq L73–80
+ vaultContext function async_function vaultContext L54–56
~ hub/gateway/path-approve-hosted.mjs .mjs 2 symbols added
+ maybeApplyHostedPathAfterApprove function async_function maybeApplyHostedPathAfterApprove L33–90
+ mergePathApplyIntoApproveResponse function function mergePathApplyIntoApproveResponse L99–116
~ lib/path/path-handlers.mjs .mjs 3 symbols added
+ handlePathGetRequest function function handlePathGetRequest L118–150
+ handlePathListRequest function function handlePathListRequest L56–104
+ parsePathListLimit function function parsePathListLimit L31–38
~ lib/path/path-hosted-proposal.mjs .mjs 7 symbols added
+ applyApprovedPathProposalFromCanister function async_function applyApprovedPathProposalFromCanister L265–306
+ createPathProposalOnCanister function async_function createPathProposalOnCanister L138–214
+ fetchCanisterProposalForPath function async_function fetchCanisterProposalForPath L225–252
+ isPathProposalForHostedApply function function isPathProposalForHostedApply L109–126
+ normalizeCanisterProposalForPathPrecheck function function normalizeCanisterProposalForPathPrecheck L62–101
+ parseProposalFrontmatter function function parseProposalFrontmatter L29–45
+ readProposalKind function function readProposalKind L51–53
~ lib/path/path-store.mjs .mjs 17 symbols added
+ ensureLearningPathBucket function function ensureLearningPathBucket L386–390
+ ensureVaultInStore function function ensureVaultInStore L396–413
+ getLearningPath function function getLearningPath L515–524
+ hasControlChars function function hasControlChars L117–119
+ isPathScope function function isPathScope L77–79
+ isPathStatus function function isPathStatus L85–87
+ learningPathForClient function function learningPathForClient L357–381
+ learningPathSummaryForClient function function learningPathSummaryForClient L335–350
+ listLearningPaths function function listLearningPaths L462–504
+ loadLearningPaths function function loadLearningPaths L420–426
+ mintPathId function function mintPathId L94–96
+ mintUniquePathId function function mintUniquePathId L104–111
+ pathGetEffectiveScope function function pathGetEffectiveScope L530–532
+ upsertLearningPath function function upsertLearningPath L436–447
+ validateLearningPathRecord function function validateLearningPathRecord L223–328
+ validateNotePath function function validateNotePath L127–153
+ validateSteps function function validateSteps L159–217
~ lib/path/path-write.mjs .mjs 17 symbols added
+ applyApprovedPathProposal function function applyApprovedPathProposal L674–688
+ commonProposeGate function function commonProposeGate L155–167
+ createProposalRecord function async_function createProposalRecord L104–110
+ envTriState function function envTriState L49–53
+ getPathWritesEnabled function function getPathWritesEnabled L60–62
+ handlePathArchivePropose function async_function handlePathArchivePropose L479–531
+ handlePathCreatePropose function async_function handlePathCreatePropose L221–345
+ handlePathProposeRequest function async_function handlePathProposeRequest L191–214
+ handlePathUpdatePropose function async_function handlePathUpdatePropose L352–472
+ pathProposalMirrorPath function function pathProposalMirrorPath L96–98
+ precheckApprovedPathProposal function function precheckApprovedPathProposal L539–587
+ reconcileApprovedPathProposal function function reconcileApprovedPathProposal L595–666
+ refuse function function refuse L69–71
+ resolvePathExternalRef function function resolvePathExternalRef L174–184
+ resolvePathWriteAuthority function function resolvePathWriteAuthority L77–91
+ trimTextField function function trimTextField L130–150
+ updateProposalPath function function updateProposalPath L116–125
+ sampleRecord function function sampleRecord L19–39
~ test/path-list-e2e.test.mjs .mjs 2 symbols added
+ fakeCreateProposal function function fakeCreateProposal L25–33
+ sampleSteps function function sampleSteps L21–23
~ test/path-list-integration.test.mjs .mjs 3 symbols added
+ fakeCreateProposal function function fakeCreateProposal L52–60
+ samplePath function function samplePath L29–50
+ sampleSteps function function sampleSteps L22–27
~ test/path-list-performance.test.mjs .mjs 1 symbol added
+ p95 function function p95 L18–22
~ test/path-list-security.test.mjs .mjs 4 symbols added
+ preFixGetStub function function preFixGetStub L57–61
+ preFixListJson function function preFixListJson L67–69
+ preFixProposeWhenUnset function function preFixProposeWhenUnset L63–65
+ samplePath function function samplePath L32–52
~ test/path-list-stress.test.mjs .mjs 1 symbol added
+ makePath function function makePath L23–43
~ test/path-list-unit.test.mjs .mjs 2 symbols added
+ samplePath function function samplePath L38–61
+ sampleSteps function function sampleSteps L30–36
~ .env.example .example
~ docs/HUB-API.md .md 1 symbol added, 2 symbols modified
+ 1 Learning paths (KN-WORK-PATH-LIST — gated writes default off) section 3.4.1 Learning paths (KN-WORK-PATH-LIST — gated writes default off) L244–253
~ docs/OVERSEER-HANDOVER.md .md 6 symbols added, 5 symbols removed, 7 symbols modified
PRODUCT RELAY — KN-WORK-PATH-LIST-b (PRIMARY lives on the Scooling board) section PRODUCT RELAY — KN-WORK-PATH-LIST-b (PRIMARY lives on the Scooling board) L21–72
Paste-ready prompt — Auto KN-WORK-PATH-LIST-b section Paste-ready prompt — Auto KN-WORK-PATH-LIST-b L48–58
code[text] variable variable code[text] L50–57
THE ONE NEXT STEP — Model: Auto KN-WORK-PATH-LIST-b section THE ONE NEXT STEP — Model: Auto KN-WORK-PATH-LIST-b L43–48
This session — KN-WORK-PATH-LIST-a freeze-review pass (2026-08-18) section This session — KN-WORK-PATH-LIST-a freeze-review pass (2026-08-18) L58–62
+ PRODUCT RELAY — AGENT-WORK-CHAT-HOME-BIND (PRIMARY lives on the Scooling board) section PRODUCT RELAY — AGENT-WORK-CHAT-HOME-BIND (PRIMARY lives on the Scooling board) L21–73
+ Paste-ready prompt — Thinking AGENT-WORK-CHAT-HOME-BIND (Scooling) section Paste-ready prompt — Thinking AGENT-WORK-CHAT-HOME-BIND (Scooling) L45–55
+ code[text] variable variable code[text] L47–54
+ THE ONE NEXT STEP — Model: Thinking AGENT-WORK-CHAT-HOME-BIND (Scooling) section THE ONE NEXT STEP — Model: Thinking AGENT-WORK-CHAT-HOME-BIND (Scooling) L40–45
+ This session — KN-WORK-PATH-LIST-a freeze-review pass (2026-08-18) section This session — KN-WORK-PATH-LIST-a freeze-review pass (2026-08-18) L59–63
+ This session — KN-WORK-PATH-LIST-b DONE (2026-08-18) section This session — KN-WORK-PATH-LIST-b DONE (2026-08-18) L55–59
~ table
~ table
~ hub/gateway/server.mjs .mjs 1 symbol modified
~ lib/flow/flow-store.mjs .mjs 1 symbol modified

0 comments

No comments yet. Be the first to start the discussion.

To add a comment, use the Muse CLI: muse hub commit comment sha256:f75b3897cb07487612e139e6a2ac8ab585dc857fa3f03665b7ff201aff1ba860 --body "your comment"