Rename meld to boundary: name the removed behavior, require a counterpart #254

Closed
opened 2026-08-08 23:50:47 +00:00 by coilyco-ops · 3 comments
Member

Problem

meld names the wrong thing, and the name has been letting incoherent members into the set.

Reviewing #231, #248, and #249 produced two structural rules:

  • A body every role declares is an AGENTS.md rule, not shared doctrine. Bindings must be argued per role.
  • A shared body needs a role holding the other side. Without one, it is the same rule with uneven emphasis.

Together they define the primitive precisely:

One behavior removed from several roles and allocated to exactly one owner.

That definition explains every part that already works. The owner is required because the removed behavior has to go somewhere. The slug should name the behavior, because the behavior is what moves. And meld describes none of that, while both existing bodies already title themselves correctly: "Communication ownership boundary" and "Live operations boundary".

Rename the primitive

meld becomes boundary across the KDL keyword, loader, catalog, manifest, decision trace, evaluation packs, docs, and the external package contract. This also clears the overload flagged in #231, where meld already meant the three-personality blend and its derived favorite color, which keeps that meaning.

Measured cost against 7b92339, not estimated: 17 files reference the keyword or a slug, and three sites emit meld:<id> into the decision trace and bundle manifest (internal/person/person.go, internal/bundle/verify.go, internal/resolver/resolver.go).

Rename the slugs to the removed behavior

  • comms becomes suggest-human-comms, owner creator
  • live-ops becomes modify-live-system, owner ops
  • evidence becomes seek-external-validation, owner exec

Invert the third one

evidence as shipped in #249 fails the definition. It removes nothing and allocates nothing, it adds an obligation to the roles that declare it. Inverting it fixes that. The behavior removed is seeking validation from outside your own frame, and the roles that lose it lose it for two distinct reasons:

  • Design stays localized to Kai's supplied preferences, because external normalization is how a specific voice becomes generic.
  • QA, Ops, Engineer, and AI Engineer stay grounded in locally observed evidence.
  • Director assigns evidence gathering rather than performing it.

Seven or six roles declare it, depending on the creator question below, and exec holds it. The count stops being a smell once an owner is required: "everyone except the owner" is an allocation, while "everyone, full stop" is a rule.

Split the #249 body

Half of meld-evidence is not about external anything and must not move into the new boundary:

  • Local grounding - read the diff rather than the commit subject, the code rather than the issue describing it, the file rather than its metadata. QA and Ops must keep doing exactly this, and it applies to every role. This half goes to AGENTS.md, carrying the #248 fixes that made it bind: a trigger on any consequential claim rather than on an edit, and a checkable stopping condition.
  • External seeking - going outside your own frame for confirmation or data. This half becomes the boundary body, rewritten as a removal.

Exec's positive duty to actually go and look then lives in role-exec, the way creator's charter carries the positive side of communication ownership.

One caveat to record: a bundle shipped to a seat without Kai's AGENTS base loses the local-grounding half. That is a real dependency, not a free move.

Owner verification against live main

Checked against 7b92339 rather than from memory. The test an owner must pass is that its own charter contradicts the boundary body, since that is what proves something was allocated rather than merely emphasized.

Holds.

  • suggest-human-comms and creator - "You exclusively own every recommendation about communication to a human, including wording, tone, framing, timing, channel, reply strategy, and editorial fitness."
  • modify-live-system and ops - "You own the running-system loop through before-state, controlled change, rollback readiness, and after-state verification."

Declarer reasoning holds too, each with charter text already pointing inward: qa "The selected repository and task define the product, user, and acceptance boundary", ops "Repository and observed runtime evidence define the estate", engineer "turn repository evidence into working code", ai "Never recommend a model, runtime, or hardware configuration without representative measured evidence", director "You assign evidence gathering to the appropriate execution role", design "Mark missing mechanics unresolved rather than inventing users, routes, data, timing, behavior, validation, or research".

Two problems found.

  1. Exec does not claim the behavior. Its strongest line is "Rest a portfolio claim on measured audience, reach, cost, and effort rather than assumed values", which landed in #249. That is an obligation on exec, not an ownership claim, so it does not contradict the boundary body the way creator's and ops's charters do. Resolved by two-sided bodies below: the claim goes in the boundary's owner section rather than into role-exec.

  2. Creator's charter contradicts the proposed binding. Creator is chartered to go outside: its purpose is "Turn real portfolio work and audience evidence into accurate content", and it owns "research within accepted strategy" plus "discovery and decision-criteria preparation" inside the audience loop. Binding creator to a boundary that removes external seeking sets its charter against its boundary. Worse, if creator legitimately goes outside as well, then the behavior is not owned by exactly one role and the boundary fails the definition again.

    Three ways out, needing a decision:

    • Exclude creator, leaving six declarers and exec as owner. Creator neither declares nor owns it, the position design already holds on modify-live-system. Kai's stated reason for creator, staying localized to her own preferences, is about taste rather than evidence, and belongs in role-creator as a style rule.
    • Narrow the boundary to taste and style normalization rather than external evidence generally. Then creator and design fit, and qa, ops, engineer, and ai stop fitting, since their reason is observed evidence rather than voice.
    • Reconsider the owner. If both exec and creator legitimately reach outside, the single owner may be wrong and the behavior may need splitting.

    Decided: exclude creator. Six roles declare seek-external-validation, exec owns it, creator neither declares nor owns it. Creator's voice concern becomes a style rule in role-creator.

Two-sided bodies

A boundary body currently addresses only the roles losing the behavior, which is why the owner's half lives in its charter and drifted from it. The body carries both halves. The reader is always one role, so the headings are conditional and the reader self-selects before reading a word of prose:

# Boundary: live system modification

Who changes running systems, and who hands that change to the role that owns it.

## If you own this boundary

You own the running-system loop through before-state, controlled change,
rollback readiness, and after-state verification...

## If you defer this boundary

Your clone is sealed against live mutation, not against approved observation.
You may inspect logs, traces, metrics, health, events, and rollout status...
  • Nothing parses the headings. The KDL already records who owns and who declares, so delivery and the identity card key off that. Headings are for human reading only and are written for the glance.
  • The conditional matters. A deferring role scanning a bare ## Own reads a sentence that is false for them before working out it was addressed to someone else.
  • The owner section comes first, so the deferral reads as the consequence of the allocation rather than as a bare prohibition.
  • The gloss line under the H1 is the summary already declared in KDL, not new prose to maintain.
  • The owner receives the boundary skill without declaring it. Load-time validation still rejects an owner that declares its own boundary, since that would place one role on both sides.
  • The whole file is delivered to both sides. Splitting it per side would recreate the drift inside the delivery layer, and each side benefits from reading what the other was told.
  • Sections identify by relationship, never by role name. A role list in prose beside the same list in KDL is the exact drift this redesign exists to remove.
  • Each section carries its own 400-word ceiling, following the #231 precedent where meld bodies got a cap separate from role bodies. Measured against 7b92339, a combined cap would squeeze modify-live-system immediately: live-ops is 320 words and the ops paragraph it would absorb is 51.
  • The owner's half is delivered doctrine, so it enters the evaluation pack and the pack digest. This reverses the choice in #253 to keep the relationship out of both.

Owner paragraphs leave the charters that hold them today, which retires the duplication behind this whole thread. Creator sheds 56 words and comes off the 400 cap it currently sits one word under at 399. Ops sheds 51.

Vocabulary

counterpart was a hedge chosen when the field did nothing but force an evaluation case, where naming it owner would have implied authority it did not grant. Two-sided bodies retire that hedge, since the owner section now states the ownership outright. The vocabulary comes from the bodies rather than being imposed on them: boundary appears 4 times in the comms body and 5 in live-ops, comms already uses own, owner, and ownership 7 times and defer twice, and authority-boundary and human-communication-ownership are existing evaluation scenario kinds.

  • primitive: boundary
  • field: owner
  • sides: own and defer

Rejected along the way: held and withheld share a root, so the entire inversion of meaning rides on a prefix and the two headings are near-identical to scan. restrained and encouraged scan cleanly but understate the owner side, which is exclusive ownership rather than encouragement.

Remove the eval-role methods

eval-role-comms and eval-role-live-ops were the prerequisite scaffolding for this work: single-role procedures for evaluating the two cross-role concerns that are now boundaries with owners and roster-derived coverage. They are redundant on arrival and get deleted here.

Fallout, measured against 9764756:

  • internal/person/roles/ai/skills/eval-role-comms/ and eval-role-live-ops/ are deleted, with both method lines removed from 08-ai.kdl.
  • internal/person/person_test.go:20 asserts the exact method list, and line 300 asserts the AI role has methods at all. The first is configuration restated in a test and simply goes. The second should assert the rule that only the AI role may declare methods, not the fact that it currently does.
  • internal/compose/compose_test.go:159 names both methods.
  • docs/role-methods.md uses them as its only worked example and its entire catalog list, and docs/person-contract.md uses one in its external-package example. Both need a generic example instead.

The method primitive itself stays, with zero users. Retiring it is a contract change for external packages, which is out of scope here. A role having no methods is already the normal case for seven of eight roles, so nothing fails validation. If nothing has claimed it within a release or two, retire it then.

Also in scope

The identity card prints a Shared doctrine heading and lists entries under Active doctrine. With behavior-named slugs an engineer's card would read "Active doctrine: modify-live-system", which states the opposite of what it means. The card sections flip with the rename, to something like "Boundaries: modify-live-system, owned by DevOps".

Evaluation scenario kinds follow their boundary names, and the coverage gate keeps deriving from the roster rather than a second list of role names.

Sequencing

PR #253 is open and green. It adds the two-sided field as counterpart, its load-time validation, and the comms rescope to design, exec, and ops. This issue renames that field to owner. Recommend merging it first, since this work builds directly on the counterpart mechanism, and landing the rename on top keeps both diffs readable. The alternative is closing #253 and folding it in, which produces one large unreviewable change.

Evaluation records move again for all eight roles. #240 still owns re-earning them and gains the renamed scenario kinds. No evaluation is run as part of this work.

Done when

  • boundary replaces meld across the keyword, loader, manifest, trace, packs, docs, and package contract, with the personality meld and melded color untouched.
  • All three slugs name the removed behavior, and every boundary declares an owner, enforced at load time.
  • The third boundary is inverted, creator excluded, and exec's claim carried by the boundary's owner section rather than by role-exec.
  • Every boundary body carries an owner and a defer section under conditional headings, each under its own ceiling, and the owner receives the body without declaring it.
  • Owner paragraphs are gone from role-creator and role-ops, with no doctrine lost.
  • The local-grounding half is in AGENTS.md with its trigger and stopping condition intact, and is gone from the roster.
  • Identity card sections read correctly for a withheld behavior.
  • No role description budget regresses.
## Problem `meld` names the wrong thing, and the name has been letting incoherent members into the set. Reviewing #231, #248, and #249 produced two structural rules: * A body every role declares is an AGENTS.md rule, not shared doctrine. Bindings must be argued per role. * A shared body needs a role holding the other side. Without one, it is the same rule with uneven emphasis. Together they define the primitive precisely: **One behavior removed from several roles and allocated to exactly one owner.** That definition explains every part that already works. The owner is required because the removed behavior has to go somewhere. The slug should name the behavior, because the behavior is what moves. And `meld` describes none of that, while both existing bodies already title themselves correctly: "Communication ownership boundary" and "Live operations boundary". ## Rename the primitive `meld` becomes `boundary` across the KDL keyword, loader, catalog, manifest, decision trace, evaluation packs, docs, and the external package contract. This also clears the overload flagged in #231, where `meld` already meant the three-personality blend and its derived favorite color, which keeps that meaning. Measured cost against `7b92339`, not estimated: 17 files reference the keyword or a slug, and three sites emit `meld:<id>` into the decision trace and bundle manifest (`internal/person/person.go`, `internal/bundle/verify.go`, `internal/resolver/resolver.go`). ## Rename the slugs to the removed behavior * `comms` becomes `suggest-human-comms`, owner `creator` * `live-ops` becomes `modify-live-system`, owner `ops` * `evidence` becomes `seek-external-validation`, owner `exec` ## Invert the third one `evidence` as shipped in #249 fails the definition. It removes nothing and allocates nothing, it adds an obligation to the roles that declare it. Inverting it fixes that. The behavior removed is seeking validation from outside your own frame, and the roles that lose it lose it for two distinct reasons: * Design stays localized to Kai's supplied preferences, because external normalization is how a specific voice becomes generic. * QA, Ops, Engineer, and AI Engineer stay grounded in locally observed evidence. * Director assigns evidence gathering rather than performing it. Seven or six roles declare it, depending on the creator question below, and exec holds it. The count stops being a smell once an owner is required: "everyone except the owner" is an allocation, while "everyone, full stop" is a rule. ## Split the #249 body Half of `meld-evidence` is not about external anything and must not move into the new boundary: * **Local grounding** - read the diff rather than the commit subject, the code rather than the issue describing it, the file rather than its metadata. QA and Ops must keep doing exactly this, and it applies to every role. This half goes to AGENTS.md, carrying the #248 fixes that made it bind: a trigger on any consequential claim rather than on an edit, and a checkable stopping condition. * **External seeking** - going outside your own frame for confirmation or data. This half becomes the boundary body, rewritten as a removal. Exec's positive duty to actually go and look then lives in `role-exec`, the way creator's charter carries the positive side of communication ownership. One caveat to record: a bundle shipped to a seat without Kai's AGENTS base loses the local-grounding half. That is a real dependency, not a free move. ## Owner verification against live main Checked against `7b92339` rather than from memory. The test an owner must pass is that its own charter contradicts the boundary body, since that is what proves something was allocated rather than merely emphasized. **Holds.** * `suggest-human-comms` and `creator` - "You exclusively own every recommendation about communication to a human, including wording, tone, framing, timing, channel, reply strategy, and editorial fitness." * `modify-live-system` and `ops` - "You own the running-system loop through before-state, controlled change, rollback readiness, and after-state verification." **Declarer reasoning holds too**, each with charter text already pointing inward: qa "The selected repository and task define the product, user, and acceptance boundary", ops "Repository and observed runtime evidence define the estate", engineer "turn repository evidence into working code", ai "Never recommend a model, runtime, or hardware configuration without representative measured evidence", director "You assign evidence gathering to the appropriate execution role", design "Mark missing mechanics unresolved rather than inventing users, routes, data, timing, behavior, validation, or research". **Two problems found.** 1. **Exec does not claim the behavior.** Its strongest line is "Rest a portfolio claim on measured audience, reach, cost, and effort rather than assumed values", which landed in #249. That is an obligation on exec, not an ownership claim, so it does not contradict the boundary body the way creator's and ops's charters do. Resolved by two-sided bodies below: the claim goes in the boundary's owner section rather than into `role-exec`. 2. **Creator's charter contradicts the proposed binding.** Creator is chartered to go outside: its purpose is "Turn real portfolio work and audience evidence into accurate content", and it owns "research within accepted strategy" plus "discovery and decision-criteria preparation" inside the audience loop. Binding creator to a boundary that removes external seeking sets its charter against its boundary. Worse, if creator legitimately goes outside as well, then the behavior is not owned by exactly one role and the boundary fails the definition again. Three ways out, needing a decision: * **Exclude creator**, leaving six declarers and exec as owner. Creator neither declares nor owns it, the position design already holds on `modify-live-system`. Kai's stated reason for creator, staying localized to her own preferences, is about taste rather than evidence, and belongs in `role-creator` as a style rule. * **Narrow the boundary to taste and style normalization** rather than external evidence generally. Then creator and design fit, and qa, ops, engineer, and ai stop fitting, since their reason is observed evidence rather than voice. * **Reconsider the owner.** If both exec and creator legitimately reach outside, the single owner may be wrong and the behavior may need splitting. **Decided: exclude creator.** Six roles declare `seek-external-validation`, exec owns it, creator neither declares nor owns it. Creator's voice concern becomes a style rule in `role-creator`. ## Two-sided bodies A boundary body currently addresses only the roles losing the behavior, which is why the owner's half lives in its charter and drifted from it. The body carries both halves. The reader is always one role, so the headings are conditional and the reader self-selects before reading a word of prose: ```markdown # Boundary: live system modification Who changes running systems, and who hands that change to the role that owns it. ## If you own this boundary You own the running-system loop through before-state, controlled change, rollback readiness, and after-state verification... ## If you defer this boundary Your clone is sealed against live mutation, not against approved observation. You may inspect logs, traces, metrics, health, events, and rollout status... ``` * **Nothing parses the headings.** The KDL already records who owns and who declares, so delivery and the identity card key off that. Headings are for human reading only and are written for the glance. * The conditional matters. A deferring role scanning a bare `## Own` reads a sentence that is false for them before working out it was addressed to someone else. * The **owner section comes first**, so the deferral reads as the consequence of the allocation rather than as a bare prohibition. * The gloss line under the H1 is the `summary` already declared in KDL, not new prose to maintain. * The **owner receives** the boundary skill without declaring it. Load-time validation still rejects an owner that declares its own boundary, since that would place one role on both sides. * The **whole file** is delivered to both sides. Splitting it per side would recreate the drift inside the delivery layer, and each side benefits from reading what the other was told. * Sections identify **by relationship, never by role name**. A role list in prose beside the same list in KDL is the exact drift this redesign exists to remove. * Each section carries **its own 400-word ceiling**, following the #231 precedent where meld bodies got a cap separate from role bodies. Measured against `7b92339`, a combined cap would squeeze `modify-live-system` immediately: `live-ops` is 320 words and the ops paragraph it would absorb is 51. * The owner's half is delivered doctrine, so it enters the evaluation pack and the pack digest. This reverses the choice in #253 to keep the relationship out of both. Owner paragraphs leave the charters that hold them today, which retires the duplication behind this whole thread. Creator sheds 56 words and comes off the 400 cap it currently sits one word under at 399. Ops sheds 51. ## Vocabulary `counterpart` was a hedge chosen when the field did nothing but force an evaluation case, where naming it `owner` would have implied authority it did not grant. Two-sided bodies retire that hedge, since the owner section now states the ownership outright. The vocabulary comes from the bodies rather than being imposed on them: `boundary` appears 4 times in the comms body and 5 in live-ops, comms already uses own, owner, and ownership 7 times and defer twice, and `authority-boundary` and `human-communication-ownership` are existing evaluation scenario kinds. * primitive: `boundary` * field: `owner` * sides: own and defer Rejected along the way: `held` and `withheld` share a root, so the entire inversion of meaning rides on a prefix and the two headings are near-identical to scan. `restrained` and `encouraged` scan cleanly but understate the owner side, which is exclusive ownership rather than encouragement. ## Remove the eval-role methods `eval-role-comms` and `eval-role-live-ops` were the prerequisite scaffolding for this work: single-role procedures for evaluating the two cross-role concerns that are now boundaries with owners and roster-derived coverage. They are redundant on arrival and get deleted here. Fallout, measured against `9764756`: * `internal/person/roles/ai/skills/eval-role-comms/` and `eval-role-live-ops/` are deleted, with both `method` lines removed from `08-ai.kdl`. * `internal/person/person_test.go:20` asserts the exact method list, and line 300 asserts the AI role has methods at all. The first is configuration restated in a test and simply goes. The second should assert the rule that only the AI role may declare methods, not the fact that it currently does. * `internal/compose/compose_test.go:159` names both methods. * `docs/role-methods.md` uses them as its only worked example and its entire catalog list, and `docs/person-contract.md` uses one in its external-package example. Both need a generic example instead. **The `method` primitive itself stays, with zero users.** Retiring it is a contract change for external packages, which is out of scope here. A role having no methods is already the normal case for seven of eight roles, so nothing fails validation. If nothing has claimed it within a release or two, retire it then. ## Also in scope The identity card prints a `Shared doctrine` heading and lists entries under `Active doctrine`. With behavior-named slugs an engineer's card would read "Active doctrine: modify-live-system", which states the opposite of what it means. The card sections flip with the rename, to something like "Boundaries: modify-live-system, owned by DevOps". Evaluation scenario kinds follow their boundary names, and the coverage gate keeps deriving from the roster rather than a second list of role names. ## Sequencing PR #253 is open and green. It adds the two-sided field as `counterpart`, its load-time validation, and the comms rescope to design, exec, and ops. This issue renames that field to `owner`. Recommend merging it first, since this work builds directly on the counterpart mechanism, and landing the rename on top keeps both diffs readable. The alternative is closing #253 and folding it in, which produces one large unreviewable change. Evaluation records move again for all eight roles. #240 still owns re-earning them and gains the renamed scenario kinds. No evaluation is run as part of this work. ## Done when * `boundary` replaces `meld` across the keyword, loader, manifest, trace, packs, docs, and package contract, with the personality meld and melded color untouched. * All three slugs name the removed behavior, and every boundary declares an owner, enforced at load time. * The third boundary is inverted, creator excluded, and exec's claim carried by the boundary's owner section rather than by `role-exec`. * Every boundary body carries an owner and a defer section under conditional headings, each under its own ceiling, and the owner receives the body without declaring it. * Owner paragraphs are gone from `role-creator` and `role-ops`, with no doctrine lost. * The local-grounding half is in AGENTS.md with its trigger and stopping condition intact, and is gone from the roster. * Identity card sections read correctly for a withheld behavior. * No role description budget regresses.
Author
Member

The AGENTS.md half is filed as coilyco-flight-deck/agentic-os#977. It carries the local-grounding rule with the corrected trigger and the stopping condition, rewriting the existing Front-load the context you know you need section in place, and explicitly leaves external validation here as a role-allocated boundary.

Land order: #977 first or alongside, since this issue removes that half from the roster and a bundle on a seat without the AGENTS base would otherwise carry no version of the rule.

The AGENTS.md half is filed as `coilyco-flight-deck/agentic-os#977`. It carries the local-grounding rule with the corrected trigger and the stopping condition, rewriting the existing `Front-load the context you know you need` section in place, and explicitly leaves external validation here as a role-allocated boundary. Land order: #977 first or alongside, since this issue removes that half from the roster and a bundle on a seat without the AGENTS base would otherwise carry no version of the rule.
Author
Member

Sequencing against the issues filed since this was written

Order: #253, then this, then #255, then #256, then #257.

#255 (move prose into data/) lands after this one. Measured overlap against 9764756: #255 moves 62 entity data files and 30 of them are files this issue must edit. Two large mechanical diffs over the same set, so order matters. This one is mostly file contents, the keyword, the slugs, and the prose. #255 is purely paths. Whichever runs second rebases cheaply, but this issue's spec names paths throughout and would need respecifying if the tree reshuffles first, while #255 carries no semantics to invalidate. #255's own sketch already anticipates the rename with data/boundary-french-fries/.

#256 (min and max length per prose entry) generalizes the per-section ceiling proposed here. Do not build a bespoke cap mechanism that #256 then has to unpick. Flag for whoever takes #256: owner sections derive from paragraphs of 56 words (creator) and 51 (ops), so a minimum tuned for role bodies would trip them on arrival.

#257 (first person prose) does not apply to this work. Land in second person, matching all three existing bodies and the zero first-person pronouns currently in the roster, and let #257 sweep whole artifact classes at once if it lands. A roster with first-person charters and second-person boundaries is worse than either.

Watch item: coilyco-flight-deck/agentic-os#959 proposes injecting the acompose role instruction into the system prompt for claude and codex. If role instruction moves there, boundary delivery plausibly follows, which would touch the delivery section here. Not a blocker.

## Sequencing against the issues filed since this was written Order: #253, then this, then #255, then #256, then #257. **#255 (move prose into `data/`) lands after this one.** Measured overlap against `9764756`: #255 moves 62 entity data files and 30 of them are files this issue must edit. Two large mechanical diffs over the same set, so order matters. This one is mostly file *contents*, the keyword, the slugs, and the prose. #255 is purely *paths*. Whichever runs second rebases cheaply, but this issue's spec names paths throughout and would need respecifying if the tree reshuffles first, while #255 carries no semantics to invalidate. #255's own sketch already anticipates the rename with `data/boundary-french-fries/`. **#256 (min and max length per prose entry) generalizes the per-section ceiling proposed here.** Do not build a bespoke cap mechanism that #256 then has to unpick. Flag for whoever takes #256: owner sections derive from paragraphs of 56 words (creator) and 51 (ops), so a minimum tuned for role bodies would trip them on arrival. **#257 (first person prose) does not apply to this work.** Land in second person, matching all three existing bodies and the zero first-person pronouns currently in the roster, and let #257 sweep whole artifact classes at once if it lands. A roster with first-person charters and second-person boundaries is worse than either. **Watch item:** `coilyco-flight-deck/agentic-os#959` proposes injecting the acompose role instruction into the system prompt for claude and codex. If role instruction moves there, boundary delivery plausibly follows, which would touch the delivery section here. Not a blocker.
Author
Member

Implemented on boundary/254-primitive-rename, PR #259, mergeable.

Landed on main already: #253 merged as 4ce2537, which is what #259 builds on. The PR stayed open because the merge went through a local merge and push, so I closed it against the evidence that its head is an ancestor of main.

Two commits, split as the goal asked. d09e97d renames the primitive with no semantics touched. fb94739 does the slugs, the inverted third boundary, the two-sided bodies, the required owner, the charter trims, the card fix, and the method deletion.

Owner is enforced, not optional. Loading rejects a boundary without one, an owner that does not exist, and an owner that declares its own boundary. Both body sections are required and each is bounded separately at 400 words. Measured: own 112 defer 234, own 111 defer 141, own 157 defer 178.

The duplication this thread opened on is gone. Content Creator falls from 399 words to 318, DevOps 262 to 252, Executive Strategist 244 to 220.

Step 5 was already done by someone else. agentic-os#980 landed the front-load rule and the principal-scoped pronouns, closing #977 and #979. I read that text on its main rather than assuming: it carries the claim trigger, the stopping condition, and the bounds, and correctly says nothing about external validation, which is the split this issue specified.

One seam that split leaves behind is filed as coilyco-flight-deck/agentic-os#983. The base now grants unqualified reach while a boundary narrows it for six roles, and the base gives no hint the narrowing exists.

No evaluation was run and evaluations/latest is untouched. The digest gate stays red for all eight packs, the release train stays blocked, and #240 owns it.

Implemented on `boundary/254-primitive-rename`, PR #259, mergeable. **Landed on main already:** #253 merged as `4ce2537`, which is what #259 builds on. The PR stayed open because the merge went through a local merge and push, so I closed it against the evidence that its head is an ancestor of main. **Two commits, split as the goal asked.** `d09e97d` renames the primitive with no semantics touched. `fb94739` does the slugs, the inverted third boundary, the two-sided bodies, the required owner, the charter trims, the card fix, and the method deletion. **Owner is enforced, not optional.** Loading rejects a boundary without one, an owner that does not exist, and an owner that declares its own boundary. Both body sections are required and each is bounded separately at 400 words. Measured: own 112 defer 234, own 111 defer 141, own 157 defer 178. **The duplication this thread opened on is gone.** Content Creator falls from 399 words to 318, DevOps 262 to 252, Executive Strategist 244 to 220. **Step 5 was already done by someone else.** `agentic-os#980` landed the front-load rule and the principal-scoped pronouns, closing #977 and #979. I read that text on its `main` rather than assuming: it carries the claim trigger, the stopping condition, and the bounds, and correctly says nothing about external validation, which is the split this issue specified. One seam that split leaves behind is filed as `coilyco-flight-deck/agentic-os#983`. The base now grants unqualified reach while a boundary narrows it for six roles, and the base gives no hint the narrowing exists. No evaluation was run and `evaluations/latest` is untouched. The digest gate stays red for all eight packs, the release train stays blocked, and #240 owns it.
Sign in to join this conversation.
No milestone
No project
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-flight-deck/agent-compose#254
No description provided.