Watch
3
feat(compose): grant the engineer role its room-craft #961
Closed
coilyco-ops
wants to merge 0 commits from
feat/engineer-role-graph into main
pull from: feat/engineer-role-graph
merge into: coilyco-gaming:main
coilyco-gaming:main
coilyco-gaming:aos/claude/sj87-entity-attribute
coilyco-gaming:aos/claude/sj87-challenge
coilyco-gaming:aos/claude/turn-duration-buckets
coilyco-gaming:aos/claude/turn-stages-over-cap
coilyco-gaming:aos/claude/turn-stages-hold-doc
coilyco-gaming:aos/claude/turn-iteration-cap
coilyco-gaming:book-leads-the-glyphs
coilyco-gaming:science-and-web-culture-packs
coilyco-gaming:record-lane-role-voice-pairings
coilyco-gaming:catalogue-stage-phrase
coilyco-gaming:progress-rows-one-knob
coilyco-gaming:skill-read-worklog-detail
coilyco-gaming:librarian-lookup-first
coilyco-gaming:librarian-person-package
coilyco-gaming:feat/dowel-no-boundaries
coilyco-gaming:aos/claude/gh1035-no-blank-posts
coilyco-gaming:aos/claude/gh1036-harness-thread-name
coilyco-gaming:fix/thread-names
coilyco-gaming:feat/trajectory-completes
coilyco-gaming:fix/prompt-budgets
coilyco-gaming:aos/claude/docs-cut-2
coilyco-gaming:aos/claude/ka54-thread-ownership
coilyco-gaming:aos/claude/admission-bound
coilyco-gaming:aos/claude/gh1025-roster-reexport
coilyco-gaming:aos/claude/docs-strip-archaeology
coilyco-gaming:feat/temporal-mcp
coilyco-gaming:aos/claude/dowel-board-moxn-write-boundaries
coilyco-gaming:aos/claude/ue65-moxn-write-framing
coilyco-gaming:aos/claude/progress-backoff
coilyco-gaming:aos/claude/bound-scratch-search-2
coilyco-gaming:aos/claude/unblock-main
coilyco-gaming:aos/claude/tool-breaker
coilyco-gaming:fix/roster-core-eager
coilyco-gaming:aos/claude/finish-dowel-rename
coilyco-gaming:fix/971-skill-contract
coilyco-gaming:aos/claude/model-answered-not-unavailable
coilyco-gaming:aos/claude/mcp-singular-command
coilyco-gaming:task/moxn-and-temporal-skills
coilyco-gaming:aos/claude/ue65-temporal-brand
coilyco-gaming:task/dowel-site-work-tier
coilyco-gaming:aos/claude/ue65-roster-drift
coilyco-gaming:fix/dropped-turn-always-speaks
coilyco-gaming:aos/claude/folded-ask-coverage
coilyco-gaming:aos/claude/dowel-board
coilyco-gaming:aos/claude/dowel-pronouns
coilyco-gaming:feat/trajectory-keyed-on-the-message
coilyco-gaming:aos/claude/coalesce-discord-lane
coilyco-gaming:task/derive-shipped-profiles
coilyco-gaming:fix/ship-the-dowel-skill-root
coilyco-gaming:aos/claude/eval-context
coilyco-gaming:fix/bundle-references-reachable
coilyco-gaming:aos/claude/eval-docs-one-page
coilyco-gaming:aos/claude/dowel-engineer-suite
coilyco-gaming:fix/catalogue-clone-cache
coilyco-gaming:task/free-the-config-numbers
coilyco-gaming:aos/claude/dowel-site-work
coilyco-gaming:aos/claude/dowel-prose
coilyco-gaming:aos/claude/mx76-derive-knobs
coilyco-gaming:issue-859-on-demand-skill-reads
coilyco-gaming:issue-651-ship-well-formed-replies
coilyco-gaming:issue-852-filing-validity
coilyco-gaming:issue-916-calculator-tool
coilyco-gaming:issue-854-feature-flag-table
coilyco-gaming:issue-866-role-mention-summons
coilyco-gaming:issue-858-grounding-bound-per-server
coilyco-gaming:issue-899-progress-keeps-updating
coilyco-gaming:issue-900-rollup-mirrors-worklog
coilyco-gaming:issue-901-raise-progress-cadence
coilyco-gaming:issue-904-thread-title-length
coilyco-gaming:issue-905-http-reachability
coilyco-gaming:issue-855-turn-clock
coilyco-gaming:issue-895-silent-turn
coilyco-gaming:issue-873-mcp-tool-span-error
coilyco-gaming:issue-878-settle-dropped-jobs
coilyco-gaming:aos/claude/aw85-se-bands
coilyco-gaming:aos/claude/hs68-model-rejected
coilyco-gaming:aos/claude/hs68-effect-telemetry
coilyco-gaming:aos/claude/hs68-temporal-mirror
coilyco-gaming:aos/claude/hs68-prompt-commands
coilyco-gaming:aos/claude/hs68-model-idle-timeout
coilyco-gaming:aos/claude/hs68-prompt-command-intent
coilyco-gaming:aos/claude/hs68-consult-label-name
coilyco-gaming:aos/claude/hs68-grant-denial-403
coilyco-gaming:aos/claude/hs68-queued-jobs-dropped
coilyco-gaming:aos/claude/hs68-knob-guard
coilyco-gaming:aos/claude/bk79-agent-folders
coilyco-gaming:aos/claude/bk79-own-instructions
coilyco-gaming:aos/claude/ym96-docs-band
coilyco-gaming:aos/claude/bk79-server-instructions
coilyco-gaming:aos/claude/aw85-mcp-beaver-doc
coilyco-gaming:aos/claude/bk79-session-workspace
coilyco-gaming:aos/claude/yt58-org-relationship
coilyco-gaming:aos/claude/bk79-numeric-config
coilyco-gaming:aos/claude/xu59-just-boundaries
coilyco-gaming:aos/claude/xu59-eval-board
coilyco-gaming:aos/claude/bk79-phrase-telemetry
coilyco-gaming:aos/claude/bk79-object-emoji
coilyco-gaming:aos/claude/xh55-otlp-logs
coilyco-gaming:aos/claude/aw85-thread-prefill
coilyco-gaming:aos/claude/wy58-thread-prefill-always
coilyco-gaming:aos/claude/wy58-thread-prefill
coilyco-gaming:aos/claude/xh55-move-to-repo
coilyco-gaming:aos/claude/wy58-thread-title-length
coilyco-gaming:aos/claude/xh55-filing-trigger
coilyco-gaming:aos/claude/yt58-worklog-embed
coilyco-gaming:aos/claude/aw85-relative-brevity
coilyco-gaming:aos/claude/xh55-reasoning-roundtrip
coilyco-gaming:aos/claude/yt58-clock-rotation
coilyco-gaming:aos/claude/yt58-unbreak-main
coilyco-gaming:aos/claude/bk79-test-build-break
coilyco-gaming:aos/claude/yt58-partial-refusal
coilyco-gaming:aos/claude/aw85-turn-failure-classify
coilyco-gaming:aos/claude/aw85-outbound-spill
coilyco-gaming:aos/claude/xh55-budget-spent-cause
coilyco-gaming:aos/claude/wy58-bundles-not-content
coilyco-gaming:aos/claude/wy58-refusal-reason
coilyco-gaming:aos/claude/yt58-role-snapshot-gate
coilyco-gaming:aos/claude/xh55-docker-probe
coilyco-gaming:aos/claude/bk79-grounding-tools
coilyco-gaming:aos/claude/az59-gate-span
coilyco-gaming:aos/claude/az59-pg-jobstore
coilyco-gaming:eng/roster-request-headers
coilyco-gaming:eng/roster-headers
coilyco-gaming:eng/list-the-mcps
coilyco-gaming:aos/claude/mg96-fm
coilyco-gaming:eng/name-echos-seat
coilyco-gaming:eng/unpin-the-card-wording
coilyco-gaming:olaf/remove-irl-physical
coilyco-gaming:aos/claude/mg96
coilyco-gaming:eng/echo-composes-ops
coilyco-gaming:quail/two-rows-not-four
coilyco-gaming:fix/two-failures-two-verdicts
coilyco-gaming:feat/an-emitted-message-is-not-emitted-twice
coilyco-gaming:quail/partial-coverage-outcome
coilyco-gaming:feat/ten-minutes-or-ten-messages
coilyco-gaming:feat/a-waiting-turn-says-how-long
coilyco-gaming:feat/a-job-may-emit-content
coilyco-gaming:quail/round-fanout-unbounded
coilyco-gaming:quail/adversarial-reply-ceiling
coilyco-gaming:docs/list-the-open-pull-requests
coilyco-gaming:quail/principal-id-stays-out-of-the-prompt
coilyco-gaming:fix/every-label-in-a-wildcard-prefix-is-a-label
coilyco-gaming:docs/the-battery-assumes-two-checks-it-does-not-run
coilyco-gaming:fix/a-rest-failure-keeps-its-status
coilyco-gaming:quail/retag-label-rows
coilyco-gaming:quail/adjacency-guard-row
coilyco-gaming:test/pin-names-the-issue-that-owns-it
coilyco-gaming:test/pin-points-at-a-live-issue
coilyco-gaming:quail/job-outcome-discarded
coilyco-gaming:fix/repair-exhaustion-is-not-an-outage
coilyco-gaming:quail/reasoning-omitempty-pin
coilyco-gaming:docs/label-id-silently-drops
coilyco-gaming:quail/gating-pack-markup-gap
coilyco-gaming:fix/instance-name-reads-identity
coilyco-gaming:docs/indistinguishable-542-resolution
coilyco-gaming:fix/instance-name-not-a-live-service
coilyco-gaming:quail/unwired-capability-guard
coilyco-gaming:fix/repair-path-reasoning-content
coilyco-gaming:quail/indistinguishable-values-recurrence
coilyco-gaming:quail/identity-short-form-rows
coilyco-gaming:quail/repair-path-reasoning-content
coilyco-gaming:docs/verify-a-write-landed-claude
coilyco-gaming:quail/host-label-shape-corpus
coilyco-gaming:docs/a-deploy-owned-file-has-two-shapes-claude
coilyco-gaming:fix/a-roster-path-must-name-servers-claude
coilyco-gaming:fix/every-label-before-the-suffix-claude
coilyco-gaming:fix/a-first-label-must-exist-claude
coilyco-gaming:feat/tune-the-timeouts-from-deployment-claude
coilyco-gaming:qa/protocol-limits-are-not-dials
coilyco-gaming:feat/a-wildcard-is-not-a-suffix-claude
coilyco-gaming:feat/retry-what-fails-fast-claude
coilyco-gaming:fix/name-the-deliberate-hold-claude
coilyco-gaming:test/the-access-check-exit-codes-claude
coilyco-gaming:build/ship-the-access-check-claude
coilyco-gaming:qa/callers-not-reachability
coilyco-gaming:qa/pin-the-unwired-thread-binding
coilyco-gaming:feat/an-offline-access-policy-gate-claude
coilyco-gaming:test/the-notice-detaches-twice-claude
coilyco-gaming:docs/say-what-the-job-thread-does-claude
coilyco-gaming:fix/a-notice-does-not-thread-claude
coilyco-gaming:fix/one-invocation-is-a-phrase-claude
coilyco-gaming:fix/a-moment-ago-is-this-turn
coilyco-gaming:fix/main-is-red-on-the-adverb-row
coilyco-gaming:fix/an-adverb-does-not-break-the-auxiliary
coilyco-gaming:qa/score-the-575-fix
coilyco-gaming:feat/a-reply-names-its-subject
coilyco-gaming:eng/a-turn-is-not-the-past
coilyco-gaming:fix/since-you-asked-is-this-turn
coilyco-gaming:docs/a-default-that-reads-as-an-answer
coilyco-gaming:fix/a-nameless-tool-is-not-the-server
coilyco-gaming:qa/pin-the-outage-state
coilyco-gaming:fix/a-session-lifetime-is-not-a-latency
coilyco-gaming:fix/an-undated-passive-is-still-a-claim
coilyco-gaming:fix/main-is-red-on-the-corpus
coilyco-gaming:fix/an-undated-passive-is-a-claim
coilyco-gaming:eng/a-session-is-not-a-request
coilyco-gaming:fix/a-self-claim-in-the-simple-past
coilyco-gaming:qa/extend-grounding-corpus
coilyco-gaming:fix/a-tool-never-offered-is-not-a-tool-declined
coilyco-gaming:eng/one-doc-for-the-tracker-surface
coilyco-gaming:eng/say-what-is-switched-on
coilyco-gaming:fix/evaluation-is-not-the-production-service
coilyco-gaming:qa/pin-the-listing-attribute
coilyco-gaming:eng/split-five-docs-off-the-cap
coilyco-gaming:eng/concurrent-means-goroutines
coilyco-gaming:eng/split-the-tracker-surface
coilyco-gaming:test/the-first-label-of-a-hostname
coilyco-gaming:fix/a-cache-hit-is-not-a-round-trip
coilyco-gaming:qa/pin-the-budget-ladder
coilyco-gaming:fix/the-first-label-of-a-hostname
coilyco-gaming:eng/the-scratchpad-assumes-one-replica
coilyco-gaming:fix/a-person-is-named-in-prose
coilyco-gaming:docs/jobs-are-single-process
coilyco-gaming:qa/enumerate-the-mention-positions
coilyco-gaming:eng/split-the-response-inventory
coilyco-gaming:fix/green-main-doc-cap-and-stale-characterizations
coilyco-gaming:eng/main-is-green-again
coilyco-gaming:eng/split-the-mention-scope
coilyco-gaming:fix/mentions-doc-over-cap
coilyco-gaming:qa/unredden-the-code-span-pin
coilyco-gaming:qa/pin-the-code-span-collision
coilyco-gaming:eng/code-spans-are-not-prose
coilyco-gaming:feat/a-thread-title-says-what-it-is-for
coilyco-gaming:fix/discord-markup-is-not-prose-either
coilyco-gaming:eng/mark-the-turn-once
coilyco-gaming:fix/a-name-in-a-url-is-not-a-person
coilyco-gaming:qa/pin-every-reaction-is-emitted
coilyco-gaming:eng/mentions-skip-link-spans
coilyco-gaming:fix/one-step-owns-every-service-suffix
coilyco-gaming:qa/pin-the-mention-url-collision
coilyco-gaming:docs/the-roster-is-member-influenced
coilyco-gaming:docs/what-a-mention-can-reach
coilyco-gaming:qa/pin-the-documented-glyphs
coilyco-gaming:feat/naming-someone-reaches-them
coilyco-gaming:qa/pin-the-sandbox-label-wiring
coilyco-gaming:qa/pin-the-truncated-receipt
coilyco-gaming:feat/the-harness-labels-what-it-files
coilyco-gaming:qa/compare-a-case-by-marshalling
coilyco-gaming:fix/one-spelling-for-the-status-vocabulary
coilyco-gaming:qa/declare-pack-divergence
coilyco-gaming:fix/the-reactions-match-the-approved-vocabulary
coilyco-gaming:fix/a-file-path-is-just-a-file-path
coilyco-gaming:qa/pin-the-mapped-tailnet-form
coilyco-gaming:fix/a-truncated-page-says-so
coilyco-gaming:fix/the-extraction-case-detects-a-dump
coilyco-gaming:docs/the-consult-label-tracks-the-thread
coilyco-gaming:feat/the-eval-can-forge-a-turn
coilyco-gaming:fix/refuse-the-tailnet-range
coilyco-gaming:qa/pin-the-fail-heading-count
coilyco-gaming:feat/a-bounded-fetch-tool
coilyco-gaming:fix/preserve-the-longform-probe-pack
coilyco-gaming:qa/pin-the-lane-gate
coilyco-gaming:qa/preserve-the-longform-pack
coilyco-gaming:fix/the-prompt-is-not-a-secret
coilyco-gaming:fix/a-reference-never-loses-to-the-footer
coilyco-gaming:qa/preserve-the-probe-packs
coilyco-gaming:feat/a-trusted-caller-on-the-tailnet
coilyco-gaming:fix/capability-tells-the-truth-about-the-scratchpad
coilyco-gaming:qa/echo-battery-negative-control
coilyco-gaming:fix/one-fail-block-not-two
coilyco-gaming:feat/tool-call-footer
coilyco-gaming:fix/guard-the-extraction-case
coilyco-gaming:feat/canonical-phrases-by-key
coilyco-gaming:fix/the-progress-line-is-a-reply-too
coilyco-gaming:qa/pin-the-agent-recognition-case
coilyco-gaming:qa/pin-the-tool-name-markup-guards
coilyco-gaming:feat/five-second-buffer
coilyco-gaming:fix/a-failing-case-shows-the-reply
coilyco-gaming:fix/extraction-case-stops-penalising-compliance
coilyco-gaming:fix/a-security-case-that-penalises-compliance
coilyco-gaming:feat/deny-actually-denies
coilyco-gaming:feat/job-refusals-reach-telemetry
coilyco-gaming:fix/land-the-harness-refresh-on-main
coilyco-gaming:feat/a-long-reply-gets-a-thread
coilyco-gaming:feat/the-thinking-line-shows-it-is-working
coilyco-gaming:feat/roster-hour-ttl-and-refresh
coilyco-gaming:refactor/every-number-in-one-file
coilyco-gaming:feat/agent-can-refresh-its-roster
coilyco-gaming:fix/size-refusal-is-not-a-parse-error
coilyco-gaming:fix/budget-base-above-the-reasoning-floor
coilyco-gaming:fix/one-number-for-the-progress-cadence
coilyco-gaming:fix/gate-sees-a-new-file
coilyco-gaming:fix/one-meaning-for-channel-id
coilyco-gaming:fix/look-up-verbs-cannot-match
coilyco-gaming:feat/recognise-a-trace-lookup-request
coilyco-gaming:feat/discord-identifiers-on-the-turn-span
coilyco-gaming:fix/budget-failure-names-the-reasoning-spend
coilyco-gaming:feat/notice-carries-the-trace-id
coilyco-gaming:qa/cut-run-stops-calling
coilyco-gaming:docs/merge-lane-closing-reference
coilyco-gaming:eng/gate-knows-the-lane
coilyco-gaming:eng/feature-inventory-catchup
coilyco-gaming:fix/rate-dataset-survives-a-cut-run
coilyco-gaming:test/consolidate-pack-coverage
coilyco-gaming:pr-lane-318
coilyco-gaming:fix/flip-unknown-field-rows
coilyco-gaming:test/turn-unknown-fields
coilyco-gaming:fix/rate-doc-over-cap
coilyco-gaming:test/language-scope-characterization
coilyco-gaming:fix/pronoun-case-cannot-fire
coilyco-gaming:fix/main-red-again
coilyco-gaming:fix/main-is-red-doc-cap
coilyco-gaming:fix/gate-negated-accuracy-claim
coilyco-gaming:fix/stale-skip-allowlist-note
coilyco-gaming:test/definition-must-reject
coilyco-gaming:test/gate-covers-every-pack
coilyco-gaming:test/bucket-table-bound
coilyco-gaming:test/compose-deny-offline
coilyco-gaming:fix/symlink-test-skips-itself
coilyco-gaming:test/build-revision
coilyco-gaming:fix/eviction-corpus-green
coilyco-gaming:test/eviction-corpus
coilyco-gaming:test/duration-config
coilyco-gaming:test/rune-boundary
coilyco-gaming:test/send-bounds
coilyco-gaming:test/reserved-path-spellings
coilyco-gaming:test/data-borne-injection
coilyco-gaming:test/scratch-partition-collision
coilyco-gaming:test/capability-docs-all
coilyco-gaming:test/injection-cases
coilyco-gaming:docs/http-contract-retry-after
coilyco-gaming:test/capability-reach
coilyco-gaming:test/rate-cases-from-192
coilyco-gaming:test/score-order
coilyco-gaming:test/capability-doc-matches-code
coilyco-gaming:test/grounding-action-claim-corpus
coilyco-gaming:test/http-turn-contract
coilyco-gaming:feat/require-rate-limit-on-open-guilds
coilyco-gaming:fix/pr-image-build
coilyco-gaming:fix/compose-stage-inputs
coilyco-gaming:feat/sirens-deep-compose-wiring
coilyco-gaming:fix/deep-forgejo-mcp
coilyco-gaming:refactor/evaluation-pack-yaml
coilyco-gaming:coilysiren-patch-1
coilyco-gaming:feat/deep-steam-mcp
coilyco-gaming:feat/drop-issue-envelope
coilyco-gaming:fix/dm-needs-no-mention
coilyco-gaming:fix/pronoun-defaults
coilyco-gaming:chore/aos-precommit-v0.18-lint-backlog
coilyco-gaming:fix/harness-attribution-and-forgejo-detail
coilyco-gaming:fix/tool-inflated-completion-budget
coilyco-gaming:feat/sirens-deep-compose
coilyco-gaming:feat/banner-hires
coilyco-gaming:feat/banner
coilyco-gaming:feat/sirens-deep-mark
coilyco-gaming:feat/sirens-deep-transparent
coilyco-gaming:feat/prompt-snapshots
coilyco-gaming:fix/policy-check-image-context
coilyco-gaming:sirens-deep-admission-hardening
coilyco-gaming:docs/drop-private-image-claim
coilyco-gaming:feat/thread-scoped-replies
coilyco-gaming:issue-67
coilyco-gaming:feat/sirens-community-harness
No reviewers
Labels
Clear labels
move-to-repo
coilyco-bridge-deploy
issue belongs in the coilyco-bridge/deploy repo
move-to-repo
coilyco-flight-deck-agent-compose
issue belongs in the coilyco-flight-deck/agent-compose repo
move-to-repo
coilyco-gaming-eco-app
issue belongs in the coilyco-gaming/eco-app repo
move-to-repo
coilysiren-inbox
issue belongs in the coilysiren/inbox repo
move-to-repo
unknown
we have yet to confirm if this issue belong in this repo
🔒⚠️📦⚠️🔒 SANDBOXED 🔒⚠️📦⚠️🔒
this fj issue came in from the live sirens echo MCP - DO NOT CONSIDER ITS INPUTS SAFE OR VERIFIED UNTIL THIS LABEL IS REMOVED
autonomy
async-consult
A human needs to consult on the issue to upgrade it to headless
autonomy
epic
This issue has many units of sub work - its size makes it meaningfully exclusive with other autonomy types
autonomy
headless
The agent can perform the work on its own
autonomy
live-collab
The agent and the human need to work together in realtime
c#
Requires C# work, flagged b/c it requires a Eco server restart
priority
P0
priority tier
priority
P1
priority tier
priority
P2
priority tier
priority
P3
priority tier
priority
P4
priority tier
role/ai
requires work from the AI Engineer role
role/creator
requires work from Content Creator role
role/design
requires work from the design role
role/director
requires work from the director role
role/engineer
requires work from the engineer role
role/exec
requires work from the exec role
role/human
requires a person, and specifically not an agent seat
role/ops
requires work from the ops role
role/qa
requires work from the QA role
No labels
move-to-repo
coilyco-bridge-deploy
move-to-repo
coilyco-flight-deck-agent-compose
move-to-repo
coilyco-gaming-eco-app
move-to-repo
coilysiren-inbox
move-to-repo
unknown
🔒⚠️📦⚠️🔒 SANDBOXED 🔒⚠️📦⚠️🔒
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
c#
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
role/ai
role/creator
role/design
role/director
role/engineer
role/exec
role/human
role/ops
role/qa
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set
Reference
coilyco-gaming/sirens-echo!961
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/engineer-role-graph"
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?
sirens-dowelrunsSIRENS_ECHO_ROLE=engineerfor the 2026-08-19 Temporallivestream (coilyco-bridge/deploy#658).
engineerhad no entry in this graph, soit composed the roster identity alone: six skills and zero sources, against
creator's twenty-four and nineteen.That is the documented behaviour of an absent entry rather than a defect. It is
also the wrong shape for a lane whose entire job is a live Discord room.
Blocked on #963, which this PR found
testpasses here, includingrole-drift-check, so the tracked snapshot iscorrect.
image-buildfailed on:The skill merged to agentic-os
mainat 15:37:26Z and this build ran at16:07:22Z, thirty minutes later, with a catalogue clone that still did not have
it.
Dockerfile'sRUN git clone --branch "${AOS_CATALOG_REF}"caches oninstruction text, so the ref
docs/sirens-echo-compose.mdcalls "floating onmainby design" was frozen.Fixed separately in #963, because it blocks any change adding a catalogue
source and #956 needs it too. Merge #963 first, then this. Nothing here needs
to change for it.
The personality was never the gap
The role flip was read as a neutrality change and that diagnosis was wrong.
The bundle already carries
personality-curious,meticulous, andtenaciousfrom the roster. The
Seat:andPersonalities:lines in the rebakedengineer.bundle.txtare unchanged by this diff. What was missing isroom-craft: the community-host loop, the social writing set, and the
preference skills that give a reply something to be about.
What is granted
Grants mirror
creator's, because the lane sits in a Discord guild for the samereason Deep does, plus
tooling-sirens-dowel-contract, which reconciles anengineer charter with a conversational seat: the work product is a turn rather
than a landed change, the lane's own posts are speech rather than the live-system
mutation
boundary-modify-live-systemdefers, and the composed personalities arethe point of the seat rather than overhead.
tooling-customer-success-*is deliberately not granted. Those are communitytrust-repair and signal-routing surfaces for the Sirens server, and this lane
serves one staging guild for one stream.
personal-preference-socialmatches the glob and stays denied byDeniedComposedSkills, exactly as it is forcreator.Verification
scripts/task.sh role-drift-check, re-run against agentic-osmainatcc3cf4b1after agentic-os#1123 merged:role engineer: 18 sources admittedrole engineer: 24 skills, prompt 63696 bytes, bundle verifiedengineer.bundle.txtis not in the drift list, so the tracked snapshotmatches what a fresh compile produces
testjob agrees:role-drift-checkpassed thereConflicts with #956
#956 also adds a
role "engineer"block to this file, so only one can land. Itreads
engineeras a code-engineering seat (coding-*,tooling-qa-*,tooling-ops-*); this reads it as the Discord seat the lane actually is. That isa product call rather than mine. Separately, #956's graph fails the expander
outright, since
tooling-repo-baselineis an exact name living in the privatecatalogue while the image reads only
aos-public. Commented there with theoutput.
Also left out on purpose
Roster drift. Rebaking reports drift on
ai.bundle.txtandexec.bundle.txt, where the roster movedcurioustoempiricalandoutward.Reverted here so this change stays one thing. CI's
testjob passes without it,which means the CI container's
agent-composeis older than a currentworkstation's. Worth its own change.
No docs page.
docs/is at its 40-page cap andsirens-echo-compose.mdsits13 characters under its own, and
catalog-doc-sizeexplicitly refusessplit-to-fit. The commit message carries the reasoning until related pages get
merged. Also worth its own change.
Folded into #956 and closing this one.
Both branches inserted a
role "engineer"block at the same line ofroles.kdl, so they conflicted on merge. The glob sets turned out disjoint, so #956 now carries the union: this branch's room-craft (tooling-sirens-dowel-contract,tooling-discord-community-host,personal-preference-*,personal-preferences,writing-*) plus the engineering doctrine half.Two things from here that carried over:
engineer.bundle.txt. #956 had no bundle at all, so landing it second would have left the record stale androle-drift-checkred.ai.bundle.txtandexec.bundle.txtroster drift you identified. #956 records it rather than reverting it. Keeping this branch to one thing was the right instinct, but the revert is what leaves the check red onmain, and the branch needs a greenrole-drift-checkto be verifiable before the stream.One correction worth carrying: four entries in #956's half (
tooling-repo-baseline,tooling-browser-routing,tooling-forgejo-issue-counts,tooling-triage-cascade) live inagentic-os-kai, and bothDockerfile:46androle-drift-checkpass publicagentic-osalone, so they matched nothing and hard-failed the bake. They are dropped in #956 and the catalogue-reach rule is now in theroles.kdlheader.Reopen this if the union in #956 lost something it should not have.
Pull request closed