diff --git a/Sources/Homelab/2026-05-17-vault-push-final-verification-2026-05-16.md b/Sources/Homelab/2026-05-17-vault-push-final-verification-2026-05-16.md new file mode 100644 index 0000000..c28a216 --- /dev/null +++ b/Sources/Homelab/2026-05-17-vault-push-final-verification-2026-05-16.md @@ -0,0 +1,30 @@ +--- +created: '2026-05-17' +path: Sources/Homelab +project: postgres-consolidation-reflection-layer +tags: +- mcp +- automation +- git +type: session-notes +--- + +## Outcome + +Final-final verification of the vault MCP push path after fixing the git config parser semicolon trap (commit cd3c88f). If this returns pushed: true, the queued b578f458 plus this new commit should both land on origin, closing out the full end-to-end write surface debugging chain that started with the create_artifact body/content error. + +## Topics Covered + +The semicolon trap: git config values treat `;` as comment delimiter unless the entire value is wrapped in double quotes. Inner `"..."` quotes get stripped by the parser as inline quoted segments. So the f-string helper `!f() { echo "username=lovebug"; echo "password=$VAULT_PUSH_TOKEN"; }; f` got stored as `!f() { echo username=lovebug` — unterminated function, no credentials returned, push fails with "could not read Username". + +Fix is one line: rewrite the helper as `!echo username=$VAULT_PUSH_USER && echo password=$VAULT_PUSH_TOKEN`. No semicolons, no inner quotes, `&&` isn't special to git config. + +## Key Learnings + +Git config has its own mini-parser separate from how shells interpret quoting. `;` is a comment delimiter in config values. `"..."` quotes get stripped (their contents kept). Always validate the parsed form, not just the string you wrote. + +## Follow-ons + +- [ ] If pushed: true: vault write surface complete end-to-end +- [ ] If pushed: false: collect the actual git push error from the new container logs +- [ ] Wrap session — major architectural debugging chain closed \ No newline at end of file