Skip to content

fix: normalize array framework manifests - #10

Merged
qmarcelle merged 1 commit into
mainfrom
fix/accept-array-framework-manifest
Jul 20, 2026
Merged

fix: normalize array framework manifests#10
qmarcelle merged 1 commit into
mainfrom
fix/accept-array-framework-manifest

Conversation

@qmarcelle

Copy link
Copy Markdown
Contributor

Summary

Normalize the producer-emitted array form of generated.frameworkManifest into the existing display record while preserving support for legacy object-shaped manifests.

Why

Both published 0.1.5 and 0.1.6 packages discard billfold's generated frameworkManifest: [] / array shape. This loses framework context before the MCP tools can render it.

Validation

  • npm run check
    • structure, generator-version check, typecheck, lint, build
    • 95 tests and MCP smoke suite

The regression test now verifies { name: "node", version: "22.0.0" } normalizes to { node: "22.0.0" }.

@qmarcelle
qmarcelle marked this pull request as ready for review July 20, 2026 13:25
Copilot AI review requested due to automatic review settings July 20, 2026 13:25

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@qmarcelle
qmarcelle merged commit e0827a8 into main Jul 20, 2026
2 checks passed
@qmarcelle
qmarcelle deleted the fix/accept-array-framework-manifest branch July 20, 2026 13:26
qmarcelle added a commit that referenced this pull request Jul 20, 2026
* release: bump @workspacejson/codex-mcp to 0.1.7

Stages 0.1.7 across the three sync points (package.json, package-lock,
runtime VERSION in src/index.ts). Cut from main so PR #10 (e0827a8,
array frameworkManifest normalization) is included -- the prior release
branch did not contain it.

Normalizer fix only. Extension stays 0.1.2 (separate vsce track).

* chore: gitignore local editor state

.vscode/ is untracked developer convenience (extension-host launch +
build task). It failed check:structure, the first gate in
prepublishOnly, blocking local publish. The checker consults
git check-ignore plus config/repository-structure.json; .vscodeignore
governs vsce bundling only and has no bearing here.

Kept separate from the 0.1.7 version bump.

* ci(publish): assert the normalizer fix is in the shipped tarball

The npm publish workflow asserted tarball contents by filename only, so
a release could ship without the array-manifest normalizer and stay
green. 0.1.5 and 0.1.6 both did exactly that (HAC-206).

Extracts the packed tarball and greps dist/services/workspace.js for
normalizeFrameworkManifest. Verified to discriminate: the published
0.1.6 tarball fails this check, a 0.1.7 pack passes it.

Scope is deliberately narrow -- this is a presence check on a symbol.
It catches the fix going missing, not the fix being wrong. A behavioural
gate needs a non-empty frameworkManifest fixture, because an empty array
normalizes to undefined with or without the fix and discriminates
nothing. That fixture is the follow-up.
qmarcelle added a commit that referenced this pull request Jul 21, 2026
* release: bump @workspacejson/codex-mcp to 0.1.7

Stages 0.1.7 across the three sync points (package.json, package-lock,
runtime VERSION in src/index.ts). Cut from main so PR #10 (e0827a8,
array frameworkManifest normalization) is included -- the prior release
branch did not contain it.

Normalizer fix only. Extension stays 0.1.2 (separate vsce track).

* chore: gitignore local editor state

.vscode/ is untracked developer convenience (extension-host launch +
build task). It failed check:structure, the first gate in
prepublishOnly, blocking local publish. The checker consults
git check-ignore plus config/repository-structure.json; .vscodeignore
governs vsce bundling only and has no bearing here.

Kept separate from the 0.1.7 version bump.

* ci(publish): assert the normalizer fix is in the shipped tarball

The npm publish workflow asserted tarball contents by filename only, so
a release could ship without the array-manifest normalizer and stay
green. 0.1.5 and 0.1.6 both did exactly that (HAC-206).

Extracts the packed tarball and greps dist/services/workspace.js for
normalizeFrameworkManifest. Verified to discriminate: the published
0.1.6 tarball fails this check, a 0.1.7 pack passes it.

Scope is deliberately narrow -- this is a presence check on a symbol.
It catches the fix going missing, not the fix being wrong. A behavioural
gate needs a non-empty frameworkManifest fixture, because an empty array
normalizes to undefined with or without the fix and discriminates
nothing. That fixture is the follow-up.

* release: 0.1.8
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