Skip to content

feat(site): an older label file keeps building; abcd adds only the labels it lacks (TG1) - #764

Merged
REPPL merged 3 commits into
mainfrom
feat/site-add-missing-labels
Sep 30, 2026
Merged

REPPL merged 3 commits into
mainfrom
feat/site-add-missing-labels

Conversation

@REPPL

@REPPL REPPL commented Sep 30, 2026

Copy link
Copy Markdown
Collaborator

An older website label file keeps building: when a repository's site-src/ui.json was written before a label existed, abcd site setup and abcd site build add only the labels it lacks, with abcd's default words, and leave everything the project wrote exactly as it was.

This applies the product thinker's ruling TG1 of 2026-09-30, verbatim: "(b) ABCD ADDS THE MISSING LABELS: on the next site setup or site build, abcd adds only the missing required labels (with the default words); the project's own wording elsewhere in ui.json is never changed. No failure, no manual step; both intents stay impact: additive."

What changes

  • addMissingLabels (internal/core/site/uiadd.go) adds each label the allowlist declares and the file does not carry. Existing values stay byte for byte, new members go at the end of their block in its own indentation, a whole missing block is added whole, and the file is written atomically keeping its mode. A symlinked or non-regular ui.json is refused as the site's other reads refuse it.
  • A blank declared label is the project's own and is still refused by name. A file carrying a key abcd does not declare is left untouched and still refused by the closed allowlist.
  • site build runs it before the labels are loaded; site setup runs it after the repository stage, reports the file written and names it in the commit step. Both print one stderr line per added label and carry added_labels and labels_file in the JSON result.
  • The site gate's own render (abcd lint site on an empty output directory) does not complete the file, so the gate still writes only inside its output directory.

The record

  • adr-2609301720596683 records TG1 and the one exception to "a file the repository owns once it exists is kept"; it refines adr-47 and leaves decision 2's closed allowlist untouched.
  • The site brief chapter and commands/site.md state the behaviour; one DECISIONS.md line is appended; itd-2609212103568351 and itd-2609212103572513 keep impact: additive, each with an Audit Notes line citing TG1.

Assisted-by: Claude:claude-opus-5-5

Record the product thinker's ruling TG1 of 2026-09-30 as
adr-2609301720596683: `site setup` and `site build` add to an existing
site-src/ui.json each label the allowlist declares and the file lacks,
with abcd's default words, and change nothing else. It is the one
exception to "a file the repository owns once it exists is kept", and it
refines adr-47 without touching decision 2's closed allowlist.

Both intents that declared new required labels keep impact additive; each
gains an Audit Notes line citing TG1. One DECISIONS.md line appended.

Assisted-by: Claude:claude-opus-5-5
A site-src/ui.json written before a label existed made `site build`
refuse ("no text for status.target") until it was edited by hand.
addMissingLabels now adds each label the allowlist declares and the file
does not carry, with the words abcd's bundled ui.json gives it, and
nothing else: existing values stay byte for byte, the added members go
at the end of their block in its own indentation, a whole missing block
is added whole, and the file is written atomically keeping its mode.

- A blank declared label is the project's and is still refused by name.
- A file that does not decode against the allowlist (an unknown key) is
  left untouched and refused as before; adding applies to declared keys.
- A symlinked or non-regular ui.json is refused, as LoadUI refuses it.
- `site build` runs it before LoadUI; `site setup` runs it after the
  repository stage and reports the file written, naming it in the commit
  step. Both print one stderr line per added label and carry
  added_labels and labels_file in the result.
- The site gate's own render (`lint site` on an empty directory) passes
  LeaveUI, so the gate still writes only inside its output directory.

The brief's site chapter and commands/site.md state the exception
(adr-2609301720596683, ruling TG1).

Assisted-by: Claude:claude-opus-5-5
@REPPL
REPPL enabled auto-merge September 30, 2026 18:13
@REPPL
REPPL added this pull request to the merge queue Sep 30, 2026
Merged via the queue into main with commit df8815a Sep 30, 2026
14 checks passed
@REPPL
REPPL deleted the feat/site-add-missing-labels branch September 30, 2026 18:57
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.

1 participant