Skip to content

feat: add fail-closed stack update protocol - #99

Merged
erinepshovel-code merged 9 commits into
mainfrom
feat/stack-update-skill
Sep 12, 2026
Merged

erinepshovel-code merged 9 commits into
mainfrom
feat/stack-update-skill

Conversation

@erinepshovel-code

@erinepshovel-code erinepshovel-code commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

Adds stack-update, a procedural skill for structural changes to The-Interdependency/stack.

It specializes interdependent-work-graph and makes participant, authority, relation, lifecycle, placement, manifest, and BASE changes one fail-closed transaction. The skill requires deterministic work-graph digest validation plus stack-side consistency enforcement before merge.

Distribution is complete in this PR: canonical stack-update/SKILL.md, skills.json, README, ORG distribution, AGENTS/CLAUDE guidance, and the generated Codex adapter are synchronized.

First regression target: English Gonol separation must remove stale EDCM text-construction authority while preserving explicit source identities and non-transfer boundaries.

Validation: hygiene PASS; full skill-lib-ci PASS, including unit, drift, compliance, and generated-adapter gates.

hmmm: stack becomes an active vendoring consumer after the paired stack PR lands with an exact source-commit receipt.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 12, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-12T07:01:30.883814Z 00a7347 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b0769cc7c8

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread skills.json Outdated
{"name":"a0p-instancing","path":"a0p-instancing/SKILL.md","kind":"procedural","description":"Methodology for instancing agents in a0-betatest (the a0p research instrument), whose model diverges from canonical a0. Load this when adding or changing an AgentInstance / CharacterSheet CRUD path, a per-instance native ZFAE weight bank or its training/distillation loop, a ZFAE inference mode, a sentinel evaluation or pending-override gate, a per-agent safetensors checkpoint, or volatile sub-context memory — anywhere under a0-betatest `backend/`. Use it before writing code that creates, addresses, trains, runs, governs, or persists an a0p agent, so the code follows a0p's per-user CRUD + native-ZFAE + sentinel model instead of a0's spawn/fork/merge model. For canonical a0 and its mirror a0ucns, use `agent-instantiation` instead — a0p does NOT have `sub_agent_spawn`, a spawn executor, or `InstanceMerge`."},
{"name":"plain-lens","path":"plain-lens/SKILL.md","kind":"procedural","description":"Building a plain-language, multi-lens companion view of dense canonical text — an easier on-ramp that does not replace or talk down to the source. Load this when you are asked to make an informationally dense document (canon, spec, articles, legal/normative text) easier to approach for newcomers; when building an \"explain it through the lens of X\" selector (domain, audience, or role); when designing progressive-disclosure or layered ELI-not-stupid reading UX; when a dynamic, data-driven site must keep its existing static page as a graceful fallback; or when you need an EDCM-style two-speaker tension reading between a body text and its footnotes/caveats. Use this when the risk is either drowning readers in density or insulting them with oversimplification."},
{"name":"thought-lens","path":"thought-lens/SKILL.md","kind":"procedural","description":"Translate raw, context-heavy, recursive, fragmentary, coined, or private-language thought into audience-legible language without changing the underlying claim. Load this when a user says people do not understand what they mean; asks to make a thought understandable to strangers, the public, a specific audience, or a platform; supplies dense notes rather than finished prose; needs jargon or coined terms introduced only after their ordinary-language meaning lands; or wants multiple audience/surface renderings from one thought. Do not load merely to polish finished prose or to simplify an already-stable canonical document; use ordinary editing for the former and plain-lens for the latter."},
{"name":"thought-lens","path":"thought-lens/SKILL.md","kind":"procedural","description":"Translate raw, context-heavy, recursive, fragmentary, coined, or private-language thought into audience-legible language without changing the underlying claim. Load this when a user says people do not understand what they mean; asks to make a thought understandable to strangers, the public, a specific audience, or a platform; supplies dense notes rather than finished prose; needs jargon or coined terms introduced only after their ordinary meaning lands; or wants multiple audience/surface renderings from one thought. Do not load merely to polish finished prose or to simplify an already-stable canonical document; use ordinary editing for the former and plain-lens for the latter."},

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Keep the thought-lens description synchronized

This changes only the indexed thought-lens description from “ordinary-language meaning” to “ordinary meaning,” while its canonical thought-lens/SKILL.md frontmatter remains unchanged. The exact-equality assertion in test_index_descriptions_match_canonical_frontmatter and the CI drift checker therefore fail on every run; restore the canonical text here or update both authoritative surfaces together.

AGENTS.md reference: AGENTS.md:L66-L67

Useful? React with 👍 / 👎.

Comment thread skills.json Outdated
{"name":"epac-selection-display","path":"epac-selection-display/SKILL.md","kind":"procedural","description":"Evidence-bound EPAC target selection and display for WebMCP handoffs and other human-facing surfaces. Load this when choosing an EPAC element, molecule, construction receipt, comparison result, or available visualization to present; when preparing a receipt-backed EPAC display packet; when exposing the EPAC workflow as a selectable WebMCP skill; or when a requested EPAC display would require missing or invented geometry so the request can be refused or downgraded to verified source-backed output. Do not load to select EPAC or a UCNS candidate as canon, or for unrelated WebMCP catalogue changes."},
{"name":"the-interdependency","path":"the-interdependency/SKILL.md","kind":"procedural","description":"Protocol and workflow for all tasks involving The Interdependency organization, its repositories, The Interdependent Way projects, EDCMBONE transcript analysis, code building, research, GitHub maintenance and updates. Load this whenever the task or context touches The-Interdependency assets, or on phrases like \"assemble edcmbone transcripts for analysis\", \"write code that...\", or any GitHub/research/build work on org projects."},
{"name":"interdependent-work-graph","path":"interdependent-work-graph/SKILL.md","kind":"procedural","description":"Cross-repository coordination for The Interdependency. Load this when a task spans, consumes, compares, publishes to, or can change the contract between two or more repositories; when an agent is about to choose one repo as its workspace for a stack-level problem; when exact producer, evidence-source, skill, semantic, mathematical, or measurement identities must travel together; or when creating a shared stack manifest, multi-repo handoff, coordinated release, or cross-repo validation plan."},
{"name":"stack-update","path":"stack-update/SKILL.md","kind":"procedural","depends_on":["the-interdependency","interdependent-work-graph"],"description":"Fail-closed update protocol for The-Interdependency/stack. Load this when a stack change adds, moves, extracts, graduates, renames, removes, or changes the authority, relation, source identity, or placement of a participant, research workspace, libs pin, BASE record, stack manifest entry, or architecture description; when stack-manifest.json, STACK_MANIFEST.md, README.md, or research BASE.json files may drift from one another; or when validating that a structural stack change is complete before commit or merge."},

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Drop depends_on from the procedural skill entry

Because stack-update is declared as procedural, the existing test_kind_is_known_and_dependencies_match_kind contract rejects the presence of any depends_on field, so the repository's unit-test CI fails unconditionally. The companion skills are already specified in the new skill's prose; omit this metadata field unless the index schema and its tests are deliberately revised.

Useful? React with 👍 / 👎.

Comment thread skills.json Outdated
{"name":"epac-selection-display","path":"epac-selection-display/SKILL.md","kind":"procedural","description":"Evidence-bound EPAC target selection and display for WebMCP handoffs and other human-facing surfaces. Load this when choosing an EPAC element, molecule, construction receipt, comparison result, or available visualization to present; when preparing a receipt-backed EPAC display packet; when exposing the EPAC workflow as a selectable WebMCP skill; or when a requested EPAC display would require missing or invented geometry so the request can be refused or downgraded to verified source-backed output. Do not load to select EPAC or a UCNS candidate as canon, or for unrelated WebMCP catalogue changes."},
{"name":"the-interdependency","path":"the-interdependency/SKILL.md","kind":"procedural","description":"Protocol and workflow for all tasks involving The Interdependency organization, its repositories, The Interdependent Way projects, EDCMBONE transcript analysis, code building, research, GitHub maintenance and updates. Load this whenever the task or context touches The-Interdependency assets, or on phrases like \"assemble edcmbone transcripts for analysis\", \"write code that...\", or any GitHub/research/build work on org projects."},
{"name":"interdependent-work-graph","path":"interdependent-work-graph/SKILL.md","kind":"procedural","description":"Cross-repository coordination for The Interdependency. Load this when a task spans, consumes, compares, publishes to, or can change the contract between two or more repositories; when an agent is about to choose one repo as its workspace for a stack-level problem; when exact producer, evidence-source, skill, semantic, mathematical, or measurement identities must travel together; or when creating a shared stack manifest, multi-repo handoff, coordinated release, or cross-repo validation plan."},
{"name":"stack-update","path":"stack-update/SKILL.md","kind":"procedural","depends_on":["the-interdependency","interdependent-work-graph"],"description":"Fail-closed update protocol for The-Interdependency/stack. Load this when a stack change adds, moves, extracts, graduates, renames, removes, or changes the authority, relation, source identity, or placement of a participant, research workspace, libs pin, BASE record, stack manifest entry, or architecture description; when stack-manifest.json, STACK_MANIFEST.md, README.md, or research BASE.json files may drift from one another; or when validating that a structural stack change is complete before commit or merge."},

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Generate the Codex adapter for stack-update

Registering this skill without committing skills/stack-update/SKILL.md leaves it absent from the Codex plugin discovery tree. python tools/build_codex_plugin_skills.py --check reports missing: skills/stack-update/SKILL.md, and both that explicit CI step and test_codex_plugin_adapters_match_every_canonical_skill fail; generate and commit the adapter with the index change.

AGENTS.md reference: AGENTS.md:L69-L75

Useful? React with 👍 / 👎.

Comment thread skills.json Outdated
{"name":"epac-selection-display","path":"epac-selection-display/SKILL.md","kind":"procedural","description":"Evidence-bound EPAC target selection and display for WebMCP handoffs and other human-facing surfaces. Load this when choosing an EPAC element, molecule, construction receipt, comparison result, or available visualization to present; when preparing a receipt-backed EPAC display packet; when exposing the EPAC workflow as a selectable WebMCP skill; or when a requested EPAC display would require missing or invented geometry so the request can be refused or downgraded to verified source-backed output. Do not load to select EPAC or a UCNS candidate as canon, or for unrelated WebMCP catalogue changes."},
{"name":"the-interdependency","path":"the-interdependency/SKILL.md","kind":"procedural","description":"Protocol and workflow for all tasks involving The Interdependency organization, its repositories, The Interdependent Way projects, EDCMBONE transcript analysis, code building, research, GitHub maintenance and updates. Load this whenever the task or context touches The-Interdependency assets, or on phrases like \"assemble edcmbone transcripts for analysis\", \"write code that...\", or any GitHub/research/build work on org projects."},
{"name":"interdependent-work-graph","path":"interdependent-work-graph/SKILL.md","kind":"procedural","description":"Cross-repository coordination for The Interdependency. Load this when a task spans, consumes, compares, publishes to, or can change the contract between two or more repositories; when an agent is about to choose one repo as its workspace for a stack-level problem; when exact producer, evidence-source, skill, semantic, mathematical, or measurement identities must travel together; or when creating a shared stack manifest, multi-repo handoff, coordinated release, or cross-repo validation plan."},
{"name":"stack-update","path":"stack-update/SKILL.md","kind":"procedural","depends_on":["the-interdependency","interdependent-work-graph"],"description":"Fail-closed update protocol for The-Interdependency/stack. Load this when a stack change adds, moves, extracts, graduates, renames, removes, or changes the authority, relation, source identity, or placement of a participant, research workspace, libs pin, BASE record, stack manifest entry, or architecture description; when stack-manifest.json, STACK_MANIFEST.md, README.md, or research BASE.json files may drift from one another; or when validating that a structural stack change is complete before commit or merge."},

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Add stack-update to every required catalog

Adding this index entry without updating README.md, ORG_DISTRIBUTION.md, AGENTS.md, and CLAUDE.md leaves the repository's declared catalogs inconsistent. The checked python tools/check_skill_lib_drift.py --warnings-fail command reports two errors and two warnings for these omissions, while the unit suite separately fails because the README lacks the skill link, so the new skill and its catalog updates need to land together.

AGENTS.md reference: AGENTS.md:L79-L87

Useful? React with 👍 / 👎.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ae5203371d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread skills.json Outdated
{"name":"llms-build","path":"llms-build/SKILL.md","kind":"metadata-block","depends_on":["msdmd"],"description":"Self-declaring LLM instructions file (llms.txt) built on msdmd. Modules or central files declare LLMS blocks with project overview, key definitions, architecture summary, and agent usage rules. A runner aggregates them into a standardized root llms.txt and surfaces drift/gaps. Load this when creating, updating, or maintaining llms.txt for any repo consumed by LLMs or agents."},
{"name":"char-compress","path":"char-compress/SKILL.md","kind":"procedural","description":"Character-based context compression for agent handoff and skill writing, owned as a skill-lib procedure rather than current UCNS mathematics. Use this when compressing a long thread, document, repo audit, canon handoff, or agent working-memory state; when a context window is filling and operative facts must survive; when writing a SKILL.md that should be flesh-dense and bone-sparse; or when checking whether a compression deleted negation, order, quantifier, operator, named object, value, decision, or unresolved hmmm. Historical bone/flesh and text-stack terminology is local compression notation, not a UCNS theorem/status transfer, EDCM constructor, or edcmbone metric implementation."},
{"name":"visitor-intro","path":"visitor-intro/SKILL.md","kind":"procedural","description":"Onboarding tour for visitors arriving at any The-Interdependency repo. Load this when an unfamiliar user asks \"what is this?\", \"what is The Interdependency?\", \"how do these repos fit together?\", \"where do I start?\", or otherwise signals they are new to the org. Gives the agent a consistent, repo-aware way to orient a newcomer without inventing facts."},
{"name":"visitor-intro","path":"visitor-intro/SKILL.md","kind":"procedural","description":"Onboarding tour for visitors arriving at any The-Interdependency repo. Load this when an unfamiliar user asks \"what is this?\", \"what is The Interdependency?\", \"how do these repos fit together?\", \"where do I start?\", or otherwise signals they are new to the org. Gives the agent a consistent, repo-aware way to orient a newcomer without inventing org-level facts."},

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Restore the canonical visitor-intro description

The changed index entry appends org-level, while visitor-intro/SKILL.md still ends with “without inventing facts.” Because the repository asserts exact equality between indexed and canonical frontmatter descriptions, both python -m unittest discover -s tests and the drift gate fail on every run. Unlike the earlier thought-lens report, fresh evidence in this reviewed tree shows the mismatch now affects visitor-intro; restore the canonical text here or update both authoritative surfaces together.

AGENTS.md reference: AGENTS.md:L65-L67

Useful? React with 👍 / 👎.

Comment thread stack-update/SKILL.md
Comment on lines +49 to +50
2. Load `project-incubation-graduation` when extraction, release, reconsumption,
graduation, or implementation-authority transition is involved.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Restrict the graduation companion to incubated candidates

When a stack change transfers implementation authority for something that was not an emergent candidate—for example, a repository split done only for permissions or team organization—this clause still requires project-incubation-graduation, even though that skill's non-trigger explicitly excludes such splits in project-incubation-graduation/SKILL.md lines 35–41. Its qualification, release, and reconsumption lifecycle would consequently misclassify or block a structural transfer it does not govern; limit this companion requirement to components born in a forge and actually undergoing graduation.

AGENTS.md reference: AGENTS.md:L163-L163

Useful? React with 👍 / 👎.

@erinepshovel-code
erinepshovel-code merged commit a7b95f8 into main Sep 12, 2026
6 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 00a7347012

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread stack-update/SKILL.md
Comment on lines +85 to +87
10. **Commit the transaction.** The structural mutation and its required projections
belong in one coherent PR/merge sequence. If a necessary authority is unavailable,
preserve the boundary as `hmmm`; do not guess it into consistency.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Keep validation-only runs read-only

When the skill is activated by its explicit validation trigger rather than a request to perform the update, this unconditional final step still directs the agent to commit structural mutations and projection changes. Because the workflow has no assessment-versus-execution authorization gate, a request such as “validate whether this stack change is complete” can result in unauthorized edits or commits; define a read-only validation path and require explicit mutation and commit authorization before entering this step.

AGENTS.md reference: AGENTS.md:L171-L171

Useful? React with 👍 / 👎.

Comment thread stack-update/SKILL.md
Comment on lines +67 to +69
5. **Remove superseded claims.** A newly separated owner requires the prior owner to
stop claiming that responsibility in every stack-level authority projection.
Do not merely add the new owner alongside stale text.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Defer old-owner removal until graduation completes

For an incubated component that has only been extracted or released, this step removes the forge's authority claim too early. The required companion contract in project-incubation-graduation/SKILL.md keeps the candidate owned by the forge until reconsumption and the authorized graduation transition complete; removing the prior claim at initial separation leaves the stack projections with a false authority assignment or no current owner. Gate this removal on completed graduation rather than separation alone.

AGENTS.md reference: AGENTS.md:L163-L163

Useful? React with 👍 / 👎.

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