Skip to content

Build Toward the Whole: noteforge - #4

Merged
DaveHomeAssist merged 3 commits into
mainfrom
law/build-toward-the-whole
Sep 10, 2026
Merged

DaveHomeAssist merged 3 commits into
mainfrom
law/build-toward-the-whole

Conversation

@DaveHomeAssist

Copy link
Copy Markdown
Owner

Applies the Build Toward the Whole patch series.

Commits

  • Record folder export mappings so reconciliation can identify exported notes
  • Make frontmatter aliases the single alias authority instead of a blind union
  • Enforce the initial shell byte ceiling with a computed gate

Gate

npm test — passing locally on this branch.

Not for merge yet.

… notes

The folder reconciliation contract (docs/architecture/folder_reconciliation.md)
resolves a file without noteforge_id through a prior export mapping, but the
only producer of config.folderMappings was reconciliation apply itself. Save
all notes to a folder wrote bare Markdown and recorded nothing, so every
exported note came back from the planner as a title Conflict and the documented
export, edit, reconcile round trip could not complete for existing notes.

exportVaultToDir now returns the written files, folderMappingsAfterExport
records one mapping per file through the same folderMapping shape the
reconciliation service uses, and saveVaultToFolder wires both together from the
lazy vault chunk so the initial shell stays inside its byte budget. A Node test
covers the unedited, external only, internal only, and two sided cases.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01656XvdqNAVojSPQBtLZAAt
…d union

The alias contract (docs/architecture/alias_link_integrity.md and
frontmatter_properties.md) says leading YAML aliases become the Markdown source
of truth after Phase 5 and that runtime resolution never keeps two
independently editable alias stores. Phase5Controller instead unioned
frontmatter aliases with note.aliases metadata on every reconcile, so an alias
removed through Link tools alias repair, removed from the YAML in the editor,
or dropped by deleting the frontmatter block was written straight back from the
other store. The repair UI reported success while [[Old Name]] kept resolving.

The reconcile now keeps the previous content and metadata signature per note
and applies one rule: a Markdown only change makes frontmatter authoritative, a
metadata only change (rename, alias repair) is mirrored into frontmatter, and
first sight or a coordinated write keeps the documented merge so the legacy
alias migration and the properties editor behave exactly as before. An emptied
aliases list is removed from the YAML rather than left as a stale key.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01656XvdqNAVojSPQBtLZAAt
docs/implementation/performance_budgets.md declares a hard 257,180 byte
ceiling for the initial shell, but every phase satisfied it by hand recording
wc -c output in prose. Nothing in the repo or CI failed when the shell grew
past the ceiling, which is exactly what happened during this audit when a
small orchestration change landed in main.js and pushed the shell to 257,335
bytes with no signal.

test/bundle-budget.mjs computes the same measurement the doc defines (index.html
plus directly referenced CSS and JavaScript from dist/) and exits non zero above
the ceiling. It runs as npm run test:budget, in test:all, and as a CI step after
the build.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01656XvdqNAVojSPQBtLZAAt
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

@DaveHomeAssist
DaveHomeAssist merged commit 9625ecc into main Sep 10, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants