Backfill granularity.domain_scope across 158 catalog tools (5 blade catalogs) #35
Labels
No labels
boundary:crosses
boundary:none
bug
devfu
documentation
duplicate
enhancement
epic
good first issue
help wanted
invalid
needs-info
needs-triage
question
ready-for-agent
ready-for-human
svd:fire
svd:go
svd:hold
svd:respec
svd:skip
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Stallari/plugins#35
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Migrated from the vault DEVFU register by the DD-422 sweep (frozen-index entry [232], DEVFU-2026-05-23-dd338-a2-dom-c-catalog-domain-scope-sweep).
Context (register entry, verbatim)
DEVFU-2026-05-23-dd338-a2-dom-c-catalog-domain-scope-sweep — Catalog-side
granularity.domain_scope:declarations across 158 tools installari-plugins/plugins/tools/{gmail,home-assistant,mastodon,tailscale,syncthing}-blade-mcp.json(21+36+45+18+38). Optional at pack-spec v4.4.0 per CHANGELOG line 25 ("promotion to required-not-optional lands as F.4.b after the DD-338 A.2.dom blade backfill completes"). Fix shape: per-blade classification —multifor list-emitters returning user-domain-bearing records (gmail_search/snippets/thread/changes, ha_states/states_by_domain/history/devices/entities, mastodon timelines/search/notifications/account_statuses/conversations, ts_devices/users/audit_log, syncthing_list_folders/list_devices/replication_report);singlefor single-entity tools (gmail_read/send/reply/draft, ha_state/call_service, mastodon_status/account, ts_device/key, syncthing_folder_status);non-conforming-explicitderivation vianon_conformance_rationale.domain_scope_unspecifiedfor system-info tools that don't return user content (gmail_info/state, ha_info/config, mastodon_info/verify, ts_info, syncthing_system_status). After flips:npm run validate+node scripts/build-catalog.js+ commit + PR + merge. Effort: ~30-45min architect-direct OR ~1h coding-subagent with classification rubric. Affects: assembler-side verdict logic (DD-338 Phase F.5) consumingdomain_scope— currently has no machine-readable surface to read. Related: DD-338 A.2.dom.c shipped 2026-05-23; pack-spec v4.4.0 CHANGELOG line 19 + line 25; F.4.b activation trigger.Acceptance criteria
plugins/tools/{gmail,home-assistant,mastodon,tailscale,syncthing}-blade-mcp.json; 21+36+45+18+38) carrygranularity.domain_scope, classified per the rubric in Context:multifor user-domain-bearing list-emitters,singlefor single-entity tools,non-conforming-explicitvianon_conformance_rationale.domain_scope_unspecifiedfor system-info tools returning no user content.npm run validategreen;node scripts/build-catalog.jsrebuilds; the catalog diff contains onlydomain_scope(+rationale) additions.domain_scopeoptional → required at the next pack-spec major/minor per CHANGELOG line 25).Blocked by
None - can start immediately
🛑 SVD architect gate: gh#35 backfill-granularity-domain-scope-across-158-catalog-tools-5
Status: NEEDS ARCHITECT JUDGEMENT after 2 rework round(s) · 1 blocking defect(s) · complexity
substrate· dispatch efforthighOpen risks:
Blocking defects (verbatim, with evidence):
Evidence: Every attempted read/grep process failed before execution with
Too many open files (os error 24), including a minimalpwd/true. A subsequent request to run the read-only audit outside the sandbox was rejected. Therefore none of the spec’s invariant or root-cause claims could be independently confirmed or contradicted.Change: Mirror enforceDomainScope() at scripts/build-catalog.js:167-237 and pluginToCatalogEntry() at :420-473. Add domain-only rationales for all 21 Gmail rows, 23 ambiguous Home Assistant rows, and all Mastodon/Tailscale/Syncthing rows; declare single only on the 13 Home Assistant handlers protected by _write_gate(instance). Project post-derivation tools[] into generated catalog entries.
Files:
plugins/tools/gmail-blade-mcp.json·plugins/tools/home-assistant-blade-mcp.json·plugins/tools/mastodon-blade-mcp.json·plugins/tools/tailscale-blade-mcp.json·plugins/tools/syncthing-blade-mcp.json·schemas/catalog-entry.schema.json·scripts/build-catalog.js·scripts/catalog-entry.schema.test.js·scripts/domain-scope.test.jsYour call (when this issue is held by flow-drain via
svd:hold):svd:go— approve; the next tick dispatches exactly this spec (open risks accepted)svd:skip— park it; the drain drops it and the issue stays for a humansvd:respec— discard this spec; the next tick re-runs Half-A fresh with this record as prior-attempt contextSpec:
/Users/piers/master-ai/atlas/utilities/agent-harness/specs/2026-07-16-backfill-granularity-domain-scope-across-158-catalog-tools-5.md— next:codex-svd dispatch --args '<same-json>' --approved-spec-path /Users/piers/master-ai/atlas/utilities/agent-harness/specs/2026-07-16-backfill-granularity-domain-scope-across-158-catalog-tools-5.mdspec-verify-dispatch Half B for gh#35 Backfill granularity.domain_scope across 158 catalog tools (5 blade catalogs) completed integration verify.
npm testremains red only from pre-existing missingscripts/generated/declared-services.jsimports in validate-packs tests; scoped tests passed 96/96.domain_scopein GranularityDeclaration; this audited downstream F.5 gap is explicitly owned by stallari-harness#247.⏸ SVD architect gate: gh#35 Backfill granularity.domain_scope across 158 catalog tools (5 blade catalogs)
Status: CLEAN after 0 rework round(s) · 0 blocking defect(s) · complexity
substrate· dispatch efforthighHeld because: CLEAN but 2 open risk(s) (1 verification · 1 decision) — HOLD-ALL parks everything; sequencing-only risks with merged deps get REC-GO in the drain ping. The risks, verbatim:
Open risks:
Change: Retain enforceDomainScope() at scripts/build-catalog.js:190-242 as the sole 5th-axis derivation seam; branch non_conformance_rationale in schemas/catalog-entry.schema.json:154-198 (required:["reason"] + dependentRequired quartet-triangle + anyOf[affected_tools|domain_scope_unspecified] + minItems:1) so a domain-only rationale is expressible without falsely asserting scope_filtering_off; declare domain_scope:"single" on exactly the 13 HA handlers with live _write_gate(instance) call sites (ha server.py:906-1331), list the other 145 tools (21 Gmail + 23 HA + 45 Mastodon + 18 Tailscale + 38 Syncthing) in per-file domain_scope_unspecified for derived non-conforming-explicit (zero multi — no blad…
Files:
plugins/tools/gmail-blade-mcp.json·plugins/tools/home-assistant-blade-mcp.json·plugins/tools/mastodon-blade-mcp.json·plugins/tools/tailscale-blade-mcp.json·plugins/tools/syncthing-blade-mcp.json·schemas/catalog-entry.schema.json·scripts/build-catalog.js·scripts/catalog-entry.schema.test.js·scripts/domain-scope.test.jsYour call (when this issue is held by flow-drain via
svd:hold):svd:go— approve; the next tick dispatches exactly this spec (open risks accepted)svd:skip— park it; the drain drops it and the issue stays for a humansvd:respec— discard this spec; the next tick re-runs Half-A fresh with this record as prior-attempt contextSpec:
/Users/piers/master-ai/atlas/utilities/agent-harness/specs/2026-07-17-backfill-granularity-domain-scope-across-158-catalog-tools.md— resume withapprovedSpecPathset to it.Shipped: PR #38 squash-merged as
4b21440e. Effective domain_scope distribution 13single/ 145non-conforming-explicitacross the 5 blade catalogs, per the approved spec. Cross-repo consumer gap (harnessGranularityDeclaration.domainScope) tracked at Groupthink-dev/stallari-harness#247.