Files
multica/server/internal
Bohan Jiang dc60429366 refactor(daemon): slim Issue Metadata to its judgment core, defer discipline to the skill (MUL-5442) (#6351)
* refactor(daemon): fold the metadata ban list into the write rule (MUL-5442)

The Issue Metadata section spent 1,024 bytes teaching a KV bag. The
What-NOT-to-pin bullet was a separate heading restating the write rule's
negative space; it folds into Write on exit as one sentence with every ban
kept explicitly (secrets/tokens/API keys, logs or comment summaries,
runtime bookkeeping, single-run details). The parenthetical examples and
connective prose go; every rule stays.

Pins updated in kind: the merged ban list is pinned as one sentence plus
the result-comment redirect, so the next compression pass cannot drop a
ban without failing CI. -202 bytes (16,099 -> 15,897 on the standard
fixture).

Co-authored-by: multica-agent <github@multica.ai>

* fix(daemon): restore the runtime-bookkeeping examples that define the ban (MUL-5442)

Review catch by Elon on #6351: 'runtime bookkeeping' has no other
definition anywhere in the brief or skills, so its examples (attempts, run
timestamps, agent IDs) are the category's boundary, not connective prose —
and all three are high-probability miswrites that can look like re-readable
diagnostics or durable facts. Restored inside the merged bullet.

Also adopts the review's pin advice, which is our own anchor-pin doctrine
applied properly: the whole-sentence pin from the previous commit is
replaced with separate semantic anchors (each ban plus the bookkeeping
examples plus the result-comment redirect), so the sentence can be reworded
later without CI churn while dropping any single ban still fails.

+52 bytes; the section lands at 874 (from 1,024), the PR nets -150.

Co-authored-by: multica-agent <github@multica.ai>

* refactor(daemon): defer the metadata write discipline to the working-on-issues skill (MUL-5442)

Owner decision on MUL-5442: metadata is deliberately free-form custom
key-value state — the recommended-keys block never matched the feature's
intent and is removed outright, not relocated. The full ban list defers to
the multica-working-on-issues skill, which already carried a near-complete
copy; the skill gains the two bans it lacked (secrets/tokens/API keys,
agent ids) so nothing loses its home.

The brief keeps only what the interface cannot express: the read-as-hints
stance, the will-a-future-run-re-read-it bar, and the two write-time
boundaries (never secrets, never long content). Section: 874 -> 505 bytes
(1,024 at the round's start).

Pins move with the content: the brief side slims to the surviving
semantics plus the skill pointer; the skill-side contract test gains the
relocated ban anchors so the pointer cannot dangle.

Co-authored-by: multica-agent <github@multica.ai>

* fix(daemon): remove the curated key list from the skill and restore the ban categories (MUL-5442)

Round-3 review catches by Elon on #6351, both accepted:

1. The recommended-keys concept survived in the skill — which loads exactly
   when an agent is about to write metadata, so it still steered free-form
   KV into a platform vocabulary. The owner's ruling was that the concept
   should not exist, not that it should move. The key list, the
   'high-signal keys only' heading, and the pr_url-specific example are
   gone; the section now describes free-form durable custom state and a
   generic set example. A mustNotContain guard keeps the curation from
   creeping back.

2. The relocated ban list had dropped its two defining categories (runtime
   bookkeeping, other single-run details), leaving unlisted values looking
   writable. Restored with the reviewer's structure: each category names
   its examples, and the test pins every category AND every example as
   separate line-safe anchors — no item can be silently dropped again.

Co-authored-by: multica-agent <github@multica.ai>

* fix(daemon): remove the last key-vocabulary residue from the property-vs-metadata note (MUL-5442)

Round-4 review catch by Elon on #6351: the property-vs-metadata bullet
still read 'free-form scratchpad for run state (pr_url, waiting_on, ...)'
— recommending the ruled-out fields AND calling metadata a home for run
state, in direct conflict with the runtime-bookkeeping ban restored two
sections above. Now reads 'free-form bag for durable custom issue state',
consistent with both the owner ruling and the ban list.

Test side per the review: the broad pr_url anchor narrows to the full
stale-warning phrase (the one sanctioned pr_url reference — a negative
compatibility note, not a write recommendation), and the curation guard
gains the removed residue phrases so neither the vocabulary nor the
run-state framing can creep back.

Co-authored-by: multica-agent <github@multica.ai>

---------

Co-authored-by: Bohan-J <bohan@devv.ai>
Co-authored-by: multica-agent <github@multica.ai>
2026-08-04 16:09:05 +08:00
..