feat(features): standard feature bundles — categories installed by harness init, not removable #162
No reviewers
Labels
No labels
bug
enhancement
needs-triage
ready-for-agent
ready-for-human
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Cloonar/deckle!162
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "afk/157"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #157
What
Standard bundles.
feature.yamlacceptsstandard: true(still strictly decoded).categoriessets it;newsstays optional.harness initinstalls every standard bundle after the starter site, in name order, throughaddcmd.Run: files,hugo.tomledits, allowances and receipt. Its output gains anInstalled standard features:section. A failed install exits 1 naming the feature, with no rollback. The install lives incmd/harness(initSite), notinitcmd, because addcmd's tests import initcmd.harness featuresputs"standard": <bool>on every--jsonentry, with and without--site, andformatVersionstays 1. The text form appends[standard].harness removeon an installed standard feature returnsremovecmd.StandardFeatureErrorbefore anything is read or written, with or without--purge. It exits 1 with statuserrorand the messagefeature "categories" is a standard feature and cannot be removed. A site without the receipt still getsnot-installed(exit 0). A feature this harness doesn't ship is never standard.Remove JSON shape. Early failures, the refusal among them, now emit the full
removeOutputshape with empty arrays (this replacesremoveFailureOutput). Sousage.categoriesRemovedFromis present, and[], in everyharness remove --jsonobject. The change only adds fields.Deleted the code that only removing categories used, with its tests:
categoryChanges,CategoriesRemovedFrominContentUsage/PurgeReport);disableKinds/taxonomies/outputs, withrevertContextandtaxonomiesAfterRevert.The apply halves, step IDs and receipt format stay.
RevertConfigreports a recorded edit whose step has no revert askept.pageops.Deleteand the editor's category handling are untouched.harness add newsno longer tells the user to runharness add categories.Docs: README and
scaffold/site/AGENTS.mddescribe standard features, categories on every new site, the refusal, and thestandardfield. They no longer describe removing categories.Tests
cmd/harness;/categories/.make testpasses (npm test: 1860 tests;go test ./...), and the Hugo tests ran against Hugo 0.163.3 extended.go vetis clean.gofmtflags onlyinternal/theme/icon_test.go, which was already unformatted before this branch.add news+remove newsrestores the post-init tree exactly, andhugowritespublic/categories/index.html.Notes
harness init's "Created:" list now also includes top-level entries the standard install adds (layouts/).harness add categories…harness remove categoriesis driven by it", even when init wrote it, because the header is part of the receipt bytes.standard, its new-site dialog, Features page and real-binary tests break in the ways the issue lists.🤖 Generated with Claude Code
[autoland] verdict: pass
PASS — validated against #157.
ci / build-and-testgreen on the head (10m38s), not re-run. The head contains all ofmain, so there is no conflict.Closes #157present.standard: trueis strictly decoded.initSiteinstalls standard bundles in name order throughaddcmd.Run.standardappears on everyfeatures --jsonentry.removecmd.Runrefuses an installed standard feature after reading the receipt and before any other read or write, so a site without the receipt still getsnot-installed.removeOutputshape, withcategoriesRemovedFrom: [].RevertConfigreports an edit with no revert as kept.harness add categories.scaffold/site/AGENTS.mdare updated as CLAUDE.md requires.pageops.DeleteandDeletePlan, which the editor's server still uses. Old news receipts with taxonomy edits are still kept as unknown steps, the same as onmain.standard, its new-site Categories checkbox, its Remove action for Categories, and its real-binary tests break as the issue lists.