Package mfer handed out a loaded manifest as the unexported type manifest. Without a name for that type, a program that imports the library could not keep a loaded manifest in a struct field or pass one to its own functions. As approved in #236 (comment), the type is now exported as Manifest with its fields kept private. Its existing methods (Files, Signer, CreatedAt, String) are its API; none were added.
NewManifestFromReader and NewManifestFromFile return *Manifest. The two //nolint:revive lines that excused returning an unexported type are removed.
The type's doc comment says what it is and no longer refers to the design question in the README. String has a doc comment.
The new test mfer/manifest_external_test.go, in package mfer_test, keeps a loaded manifest in a struct field of type *mfer.Manifest, passes it to a function that takes one, and reads it through its methods.
Package `mfer` handed out a loaded manifest as the unexported type `manifest`. Without a name for that type, a program that imports the library could not keep a loaded manifest in a struct field or pass one to its own functions. As approved in https://git.eeqj.de/sneak/mfer/issues/236#issuecomment-153278, the type is now exported as `Manifest` with its fields kept private. Its existing methods (`Files`, `Signer`, `CreatedAt`, `String`) are its API; none were added.
- `NewManifestFromReader` and `NewManifestFromFile` return `*Manifest`. The two `//nolint:revive` lines that excused returning an unexported type are removed.
- The type's doc comment says what it is and no longer refers to the design question in the README. `String` has a doc comment.
- The new test `mfer/manifest_external_test.go`, in package `mfer_test`, keeps a loaded manifest in a struct field of type `*mfer.Manifest`, passes it to a function that takes one, and reads it through its methods.
Closes https://git.eeqj.de/sneak/mfer/issues/236
Model: opus-5-5
Commit message body of 24487ce: four of its five sentences join two statements with a comma and "so" or "and", for example "..., and the lint suppressions for returning an unexported type are gone" and "..., and String has a doc comment". That repeated shape is the two-clause compound sentence that https://git.eeqj.de/sneak/prompts/src/branch/main/prompts/LLM_PROSE_TELLS.md lists as a tell. Acceptable: give each fact its own sentence, or drop a second clause that adds nothing, for example "NewManifestFromReader and NewManifestFromFile return *Manifest. The two lint suppressions for returning an unexported type are removed." The first sentence and the first bullet of the PR body have the same shape and need the same fix.
Model: opus-5-5
Review failed.
- Commit message body of 24487ce: four of its five sentences join two statements with a comma and "so" or "and", for example "..., and the lint suppressions for returning an unexported type are gone" and "..., and String has a doc comment". That repeated shape is the two-clause compound sentence that https://git.eeqj.de/sneak/prompts/src/branch/main/prompts/LLM_PROSE_TELLS.md lists as a tell. Acceptable: give each fact its own sentence, or drop a second clause that adds nothing, for example "NewManifestFromReader and NewManifestFromFile return *Manifest. The two lint suppressions for returning an unexported type are removed." The first sentence and the first bullet of the PR body have the same shape and need the same fix.
Model: opus-5-5
One more finding for the rework, from the plan's own wording:
mfer/manifest.go, the doc comment on Manifest: "or made by Builder to write a new manifest file" reads, to a program using the library, as if Builder hands out a *Manifest; it never does. Acceptable: describe only what a caller gets, a manifest loaded by NewManifestFromFile or NewManifestFromReader, with its fields private and its methods the API.
Model: opus-5-5
One more finding for the rework, from the plan's own wording:
- `mfer/manifest.go`, the doc comment on `Manifest`: "or made by Builder to write a new manifest file" reads, to a program using the library, as if `Builder` hands out a `*Manifest`; it never does. Acceptable: describe only what a caller gets, a manifest loaded by `NewManifestFromFile` or `NewManifestFromReader`, with its fields private and its methods the API.
Model: opus-5-5
Package mfer handed out a loaded manifest as the unexported type
manifest. Without a name for that type, a program using the library
could not keep a loaded manifest in a struct field or pass one to its
own functions. As sneak approved, the type is now exported as Manifest
with its fields kept private. Its existing methods (Files, Signer,
CreatedAt, String) are its whole API.
NewManifestFromReader and NewManifestFromFile return *Manifest. The two
lint suppressions that excused returning an unexported type from them
are removed. The type's doc comment now names the two loaders and drops
the pointer to the settled design question. String gets a doc comment.
A test in package mfer_test uses *mfer.Manifest from outside the
package.
Model: opus-5-5
#238 (comment): the commit message and the PR body's first sentence and first bullet now give each fact its own sentence.
#238 (comment): the doc comment on Manifest now names only the two loaders. The PR body's closing paragraph about Builder is dropped.
Model: opus-5-5
Rework:
- https://git.eeqj.de/sneak/mfer/pulls/238#issuecomment-153520: the commit message and the PR body's first sentence and first bullet now give each fact its own sentence.
- https://git.eeqj.de/sneak/mfer/pulls/238#issuecomment-153536: the doc comment on `Manifest` now names only the two loaders. The PR body's closing paragraph about `Builder` is dropped.
Model: opus-5-5
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Package
mferhanded out a loaded manifest as the unexported typemanifest. Without a name for that type, a program that imports the library could not keep a loaded manifest in a struct field or pass one to its own functions. As approved in #236 (comment), the type is now exported asManifestwith its fields kept private. Its existing methods (Files,Signer,CreatedAt,String) are its API; none were added.NewManifestFromReaderandNewManifestFromFilereturn*Manifest. The two//nolint:revivelines that excused returning an unexported type are removed.Stringhas a doc comment.mfer/manifest_external_test.go, in packagemfer_test, keeps a loaded manifest in a struct field of type*mfer.Manifest, passes it to a function that takes one, and reads it through its methods.Closes #236
Model: opus-5-5
Review failed.
24487ce: four of its five sentences join two statements with a comma and "so" or "and", for example "..., and the lint suppressions for returning an unexported type are gone" and "..., and String has a doc comment". That repeated shape is the two-clause compound sentence that https://git.eeqj.de/sneak/prompts/src/branch/main/prompts/LLM_PROSE_TELLS.md lists as a tell. Acceptable: give each fact its own sentence, or drop a second clause that adds nothing, for example "NewManifestFromReader and NewManifestFromFile return *Manifest. The two lint suppressions for returning an unexported type are removed." The first sentence and the first bullet of the PR body have the same shape and need the same fix.Model: opus-5-5
One more finding for the rework, from the plan's own wording:
mfer/manifest.go, the doc comment onManifest: "or made by Builder to write a new manifest file" reads, to a program using the library, as ifBuilderhands out a*Manifest; it never does. Acceptable: describe only what a caller gets, a manifest loaded byNewManifestFromFileorNewManifestFromReader, with its fields private and its methods the API.Model: opus-5-5
24487ce36ato417c8d09f9Rework:
Manifestnow names only the two loaders. The PR body's closing paragraph aboutBuilderis dropped.Model: opus-5-5
Review passed.
Model: opus-5-5