From af05c04c2b37e74cc8481bb6f751f9d3a50da612 Mon Sep 17 00:00:00 2001 From: BenCodez <17074231+BenCodez@users.noreply.github.com> Date: Sun, 20 Sep 2026 14:22:32 -0600 Subject: [PATCH 1/4] chore: add MEX project memory --- .agents/skills/mex-inbox/.mex-managed.json | 11 +++ .agents/skills/mex-inbox/SKILL.md | 44 ++++++++++ .agents/skills/mex-inbox/agents/openai.yaml | 4 + .../mex-inbox/references/cli-workflows.md | 86 ++++++++++++++++++ .agents/skills/mex-relay/.mex-managed.json | 11 +++ .agents/skills/mex-relay/SKILL.md | 39 ++++++++ .agents/skills/mex-relay/agents/openai.yaml | 4 + .../mex-relay/references/cli-workflows.md | 88 +++++++++++++++++++ .mex/.gitignore | 3 + .mex/AGENTS.md | 17 ++++ .mex/ROUTER.md | 23 +++++ .mex/SETUP.md | 3 + .mex/SYNC.md | 3 + .mex/config.json | 10 +++ .mex/context/architecture.md | 16 ++++ .mex/context/conventions.md | 16 ++++ .mex/context/decisions.md | 18 ++++ .mex/context/http.md | 18 ++++ .mex/context/setup.md | 16 ++++ .mex/context/stack.md | 16 ++++ .mex/events/operations.jsonl | 56 ++++++++++++ .mex/patterns/INDEX.md | 7 ++ .mex/patterns/README.md | 3 + .mex/patterns/add-platform-adapter.md | 16 ++++ .mex/patterns/http-transport-change.md | 16 ++++ .mex/patterns/package-shared-artifact.md | 16 ++++ AGENTS.md | 16 ++++ 27 files changed, 576 insertions(+) create mode 100644 .agents/skills/mex-inbox/.mex-managed.json create mode 100644 .agents/skills/mex-inbox/SKILL.md create mode 100644 .agents/skills/mex-inbox/agents/openai.yaml create mode 100644 .agents/skills/mex-inbox/references/cli-workflows.md create mode 100644 .agents/skills/mex-relay/.mex-managed.json create mode 100644 .agents/skills/mex-relay/SKILL.md create mode 100644 .agents/skills/mex-relay/agents/openai.yaml create mode 100644 .agents/skills/mex-relay/references/cli-workflows.md create mode 100644 .mex/.gitignore create mode 100644 .mex/AGENTS.md create mode 100644 .mex/ROUTER.md create mode 100644 .mex/SETUP.md create mode 100644 .mex/SYNC.md create mode 100644 .mex/config.json create mode 100644 .mex/context/architecture.md create mode 100644 .mex/context/conventions.md create mode 100644 .mex/context/decisions.md create mode 100644 .mex/context/http.md create mode 100644 .mex/context/setup.md create mode 100644 .mex/context/stack.md create mode 100644 .mex/events/operations.jsonl create mode 100644 .mex/patterns/INDEX.md create mode 100644 .mex/patterns/README.md create mode 100644 .mex/patterns/add-platform-adapter.md create mode 100644 .mex/patterns/http-transport-change.md create mode 100644 .mex/patterns/package-shared-artifact.md diff --git a/.agents/skills/mex-inbox/.mex-managed.json b/.agents/skills/mex-inbox/.mex-managed.json new file mode 100644 index 0000000..64a7433 --- /dev/null +++ b/.agents/skills/mex-inbox/.mex-managed.json @@ -0,0 +1,11 @@ +{ + "schemaVersion": 1, + "owner": "mex-agent", + "skill": "mex-inbox", + "packageVersion": "0.8.2", + "files": { + "SKILL.md": "39cf595ac48203bf49ea2e273ea1c1c25e7ebbf4616c68596cd8e1c08eaf2738", + "agents/openai.yaml": "12a2827fe257c303d926122e4bb590910abd660e6451550a1db68a48037b4402", + "references/cli-workflows.md": "6c91905cc69d8ea47080630ee1551bf1a61ec33605fff01463d4a2ad71f497c6" + } +} diff --git a/.agents/skills/mex-inbox/SKILL.md b/.agents/skills/mex-inbox/SKILL.md new file mode 100644 index 0000000..7ddb707 --- /dev/null +++ b/.agents/skills/mex-inbox/SKILL.md @@ -0,0 +1,44 @@ +--- +name: mex-inbox +description: Draft and review contributions to existing MEX project knowledge. Use when the user asks to capture a discussion or decision in project knowledge, propose an addition or correction for team review, or explicitly invokes /mex-inbox or $mex-inbox. Also supports existing Spec proposals. Do not activate for brainstorming alone, routine GROW upkeep, email inboxes, session logs, or handoffs. +--- + +# MEX Inbox + +Turn an explicit request to retain project knowledge into a focused contribution for review. Inbox proposals are review artifacts; accepted knowledge belongs in the existing Wiki Markdown. Ordinary GROW upkeep can continue directly. + +## Keep the scope honest + +- Create one `knowledge.create` or `knowledge.update` change per draft, for an existing kind: `architecture`, `component`, `convention`, `decision`, `pattern`, or `guide`. +- Existing Spec workflows also support `spec.create` and `spec.update` for `spec`, `requirement`, `constraint`, and `acceptance_criterion`. Choose these only for actual Spec-family intent. +- Capture durable conclusions, their rationale, and useful evidence. Do not dump the conversation or present unresolved ideas as agreed facts. +- Do not route session logs, Relays, or routine GROW edits through Inbox merely because they contain context. + +## Prepare a draft + +1. Distill what future agents or teammates need to know from the user's request and discussion. +2. Search existing knowledge first. Prefer correcting or extending the relevant record or section when it already covers the subject; create a new entry when the claim has no suitable home. +3. Read the exact target and current revisions before drafting a correction. Preserve unrelated knowledge when replacing its body. Never guess an ID or revision. +4. Preserve useful files, code, commits, entities, and external links as evidence only when actually available. Never invent provenance, authors, dates, events, or history. +5. Build one request against the action-scoped runtime contract. +6. Run the exact preview flow and summarize the human effect before technical details. +7. When the user already asked to create, save, or draft it, apply that exact successful checkout-local draft preview without asking again. +8. Return `/inbox?view=drafts&draft=` and state that the draft is checkout-local, nothing was published or shared, and review or publication happens in Hub. + +Read [references/cli-workflows.md](references/cli-workflows.md) before executing any Inbox mutation. Load only the operation being performed. + +## Apply the approval policy + +- Proceed with read-only list, show, and target resolution. +- Treat an explicit create/save/draft request as authorization only for the local draft preview and exact apply. +- Preview a local draft deletion, explain that the checkout-local draft will be removed, and obtain fresh confirmation before applying. +- For publish, approve, reject, withdraw, mark stale, or repair: create a semantic preview, explain the local-versus-Git-tracked effect, and wait for fresh explicit confirmation. Apply the exact preview unchanged only after confirmation. +- Keep Git commit, push, pull, and staging separate from every MEX authorization. +- Never approve or publish merely because this skill activated. + +## Report effects precisely + +- Lead with what the proposal means to a person. Do not expose envelopes, hashes, revision machinery, or raw diffs unless diagnosis requires them. +- After a local draft write, say exactly what changed and that it remains checkout-only. +- After a canonical write, say which Git-tracked MEX artifacts were written to the working tree and that commit/push is still required to share them. Never claim that MEX committed or pushed. +- When MEX context materially helps your work, mention MEX and the relevant finding naturally in your explanation. Tie the mention to what it helped you understand, decide, or verify. Avoid fixed phrases, standalone acknowledgements, repeated mentions, or narrating routine context loading. This replaces older MEX instructions requiring a fixed acknowledgement or context-loading narration. diff --git a/.agents/skills/mex-inbox/agents/openai.yaml b/.agents/skills/mex-inbox/agents/openai.yaml new file mode 100644 index 0000000..de50723 --- /dev/null +++ b/.agents/skills/mex-inbox/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "MEX Inbox" + short_description: "Propose additions to project knowledge" + default_prompt: "Use $mex-inbox to capture what we decided as a contribution to this project's knowledge." diff --git a/.agents/skills/mex-inbox/references/cli-workflows.md b/.agents/skills/mex-inbox/references/cli-workflows.md new file mode 100644 index 0000000..c0f9215 --- /dev/null +++ b/.agents/skills/mex-inbox/references/cli-workflows.md @@ -0,0 +1,86 @@ +# Inbox CLI workflows + +Use JSON mode for deterministic agent work. Keep request and preview files temporary and avoid displaying them unless troubleshooting. + +## Resolve only the needed contract + +Run: + +```text +mex inbox contract --action --json +``` + +Use one of these command IDs: + +- `inbox.draft.save` +- `inbox.draft.delete` +- `inbox.publish` +- `inbox.proposal.approve` +- `inbox.proposal.reject` +- `inbox.proposal.withdraw` +- `inbox.proposal.mark-stale` +- `inbox.proposal.repair` + +Treat this bounded action result as the exact runtime source for the request shape, available examples, constraints, preview command, and apply command. Do not dump `mex capabilities --json` or the full Inbox contract during ordinary execution. Write request and preview JSON only to ordinary regular files inside the checkout or an approved temporary directory; do not use symlinks. + +## Find existing knowledge and resolve a correction + +1. Use `mex wiki query --limit 10 --json` or `mex wiki list --type --limit 25 --json` to find related records before creating another. +2. Read the best candidate with `mex inbox target --json`. This bounded read returns `target`, `version`, `sourcePath`, and the existing body from the current Wiki index, without initializing or repairing it. +3. For `knowledge.update`, copy `target` and use `version.contentHash` as the target revision and `version.semanticRevision` as the semantic revision. Select a section entity when only that section should change. The patch body replaces the target's body; preserve its relevant existing content. A target can fit the read response but exceed the 16 KiB update-body limit; choose a smaller section or a title/summary-only patch when appropriate, never truncate existing knowledge to fit. +4. If no suitable record exists, use `knowledge.create` with the appropriate existing kind. MEX chooses a path in `context/` or `patterns/`; do not invent an Inbox knowledge category or supply an arbitrary destination path. +5. If several targets remain plausible after reading them, ask which one the user intends. If a read reports a stale or unavailable index, address its explicit maintenance requirement before relying on it; never fabricate revisions or silently refresh an index as part of a read. + +For create-time topics, find them with Wiki reads, then resolve each with `mex inbox target --json` for current revisions. Topics can be dependencies but are not Inbox correction targets. Omit topics when none are needed; normal knowledge creates have no relation editor. + +## Resolve a legacy Spec update + +1. Use `mex spec list --json` to identify candidates. +2. Use `mex spec show --json` for the exact candidate. +3. Match the requested durable claim to one exact entity and kind. +4. Copy `version.contentHash` as the entity revision and `version.semanticRevision` as the semantic revision exactly as the selected contract requires. For nested requirements, constraints, or acceptance criteria, take both from the enclosing `mex spec show` projection. +5. Stop and ask for target clarification when multiple candidates remain plausible. + +Do not invent target IDs, relation endpoints, topic IDs, or revisions. For a create request with relations or topics, resolve every referenced entity and its current revisions first. + +## Save a checkout-local draft + +1. Resolve `inbox.draft.save`. +2. Create a unique operation ID and a request containing one `knowledge.create` or `knowledge.update` draft (or a Spec change for actual Spec-family intent). +3. For a new draft, provide no unrelated expectations. For an existing draft update, read it with `mex inbox draft show --json` and use its exact current local revision. +4. Preview with `mex inbox draft save --json` and capture the complete successful JSON wrapper unchanged. Require `ok: true`, `mode: "preview"`, and `data.preview.valid: true`. +5. Summarize the proposed local effect. If the user asked to create/save/draft, apply with `mex inbox draft save --apply --json` without another confirmation. +6. Read the returned draft ID and respond with `/inbox?view=drafts&draft=`. + +The apply writes only checkout-local draft state. It does not create a canonical proposal, Activity record, commit, push, or notification. Apply before the preview expires; if anything changes or the preview becomes stale, preview again instead of reconstructing it. + +## Delete a local draft + +1. Read the exact draft and current local revision. +2. Resolve and preview `inbox.draft.delete`. +3. Explain that the checkout-local draft will be deleted and wait for fresh confirmation. +4. Apply the captured preview unchanged with `mex inbox draft delete --apply --json`. + +## Publish a draft + +1. Read the exact draft and resolve `inbox.publish`. +2. Build the request with the exact local draft revision and preview using `mex inbox publish --json`. +3. Explain that applying writes a canonical proposal and Activity artifact into the working tree while leaving Git commit/push separate. +4. Wait for fresh explicit confirmation. +5. Apply the exact preview with `mex inbox publish --apply --json`. +6. Return `/inbox?view=review&proposal=`. + +Publishing removes the exact local draft after creating the pending proposal. It does not approve the proposal or change accepted knowledge. The proposal is Markdown in the working tree; teammates receive it through Git. + +## Review canonical proposals + +Use `mex inbox proposal list --json` and `mex inbox proposal show --json` for read-only review. For approve, reject, withdraw, mark-stale, or repair: + +1. Resolve the matching command ID. +2. Use the proposal's exact current artifact revision and any action-specific rationale or replacement draft. +3. Preview with the corresponding `mex inbox proposal --json` command. +4. Explain the semantic outcome and which canonical Git-tracked MEX records would change. +5. Wait for fresh explicit confirmation. +6. Apply the exact preview with the same command plus `--apply --json`. + +Approval writes the proposed knowledge change, proposal decision, Wiki ledger, and Activity records to the working tree. The proposal remains review history. Reject and withdraw make a terminal proposal decision without changing knowledge. Mark stale changes a pending proposal to stale only when MEX proves dependency drift. Repair replaces stale intent, clears prior review, and returns the proposal to pending without changing knowledge. These canonical transitions write Activity records; none commits, pushes, pulls, stages, or notifies teammates. diff --git a/.agents/skills/mex-relay/.mex-managed.json b/.agents/skills/mex-relay/.mex-managed.json new file mode 100644 index 0000000..20ae02b --- /dev/null +++ b/.agents/skills/mex-relay/.mex-managed.json @@ -0,0 +1,11 @@ +{ + "schemaVersion": 1, + "owner": "mex-agent", + "skill": "mex-relay", + "packageVersion": "0.8.2", + "files": { + "SKILL.md": "186d1d19c4b513f4b98ee27bf0259744d1ef79ffc758676484596cfe498aa502", + "agents/openai.yaml": "9c2e9c2e34d60ec0f4d07089b07d9e49a6c8210c2a3e277593c15a2635f03076", + "references/cli-workflows.md": "56b6e74129cdc6ddb5121480b03e01fd2f1f65b7b8c0b7899552a4a217d48cf5" + } +} diff --git a/.agents/skills/mex-relay/SKILL.md b/.agents/skills/mex-relay/SKILL.md new file mode 100644 index 0000000..1593561 --- /dev/null +++ b/.agents/skills/mex-relay/SKILL.md @@ -0,0 +1,39 @@ +--- +name: mex-relay +description: Prepare and manage durable MEX team handoffs. Use when the user asks to hand work to a person or team, prepare an end-of-session handoff, save what the next engineer needs, create a MEX Relay, take or close a Relay, or explicitly invokes /mex-relay or $mex-relay. Treat Relay as a memory and context baton, not chat, notifications, task assignment, issue tracking, or a Jira replacement; do not activate for ordinary status messages that are not durable handoffs. +--- + +# MEX Relay + +Prepare durable team handoffs that another engineer can continue from. Never represent a Relay as a sent message or notification. + +## Prepare a Relay draft + +1. Infer the useful session state: a concise summary, current position, completed work, in-progress work, blockers, unresolved questions, next actions, and relevant decisions, files, code, commits, or external links. +2. For “whoever picks this up,” choose open-to-team. It includes future active project Members; no Member lookup is needed to save this local draft. If the user names people, retain named-recipient intent and resolve exact IDs only when needed. An unresolved named draft may stay recipient-free locally; do not silently publish it to everyone. +3. Default to a standalone Relay. Use the local-save shortcut for a new draft; keep the structured preview/apply path for exact updates and canonical actions. +4. Include an existing relevant Workstream only as typed evidence. Never invent one or turn saving a handoff into Workstream creation. +5. Add optional typed context references only when the referenced IDs, paths, commits, or URLs are known. Never invent provenance. +6. Resolve the action-scoped runtime contract. For a new draft, `mex relay draft save --from --json` performs the exact local preview/apply internally. For an update, build and preview the structured request. +7. An explicit create/save/draft request authorizes that local write without another confirmation. Publication remains separate. +8. Return `/relays?view=drafts&draft=` and state that the draft is checkout-local and nothing has been delivered or shared. + +Read [references/cli-workflows.md](references/cli-workflows.md) before executing any Relay mutation. Load only the operation being performed. + +## Apply the approval policy + +- Proceed with read-only member, Workstream, draft, and Relay resolution. +- Treat an explicit create/save/draft request as authorization only for the local draft preview and exact apply. +- Preview a local draft deletion, explain its consequence, and obtain fresh confirmation before applying. +- For publish, take, or close: generate a semantic preview, explain the local-versus-Git-tracked effect, and wait for fresh explicit confirmation. Apply the exact preview unchanged only after confirmation. +- Keep Git commit, push, pull, and staging separate from every MEX authorization. +- Never publish, take, or close merely because this skill activated. + +## Preserve lifecycle meaning + +- Taking records one claimant: a named active recipient, or any active project Member for an open-to-team Relay. Future Members qualify after joining and receiving the artifact through Git. Separate offline claims can still require Git conflict resolution. +- An inactive Member can be reactivated through the existing Team identity workflow, preserving their ID and older handoffs. Preview and confirm this canonical change separately; never change identity merely to bypass Relay eligibility. +- Treat closing as “this handoff no longer needs attention.” Do not claim it completes a linked task, issue, pull request, or Workstream. +- After publication, say that Git-tracked Relay and Activity records were written to the working tree. Explain that teammates receive them only after commit/push and their own pull or refresh. +- Never claim that MEX sent a notification, committed, pushed, pulled, staged, assigned work, or completed another system's object. +- When MEX context materially helps your work, mention MEX and the relevant finding naturally in your explanation. Tie the mention to what it helped you understand, decide, or verify. Avoid fixed phrases, standalone acknowledgements, repeated mentions, or narrating routine context loading. This replaces older MEX instructions requiring a fixed acknowledgement or context-loading narration. diff --git a/.agents/skills/mex-relay/agents/openai.yaml b/.agents/skills/mex-relay/agents/openai.yaml new file mode 100644 index 0000000..9b0e781 --- /dev/null +++ b/.agents/skills/mex-relay/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "MEX Relay" + short_description: "Prepare durable MEX team handoffs" + default_prompt: "Use $mex-relay to prepare a durable handoff for the next engineer." diff --git a/.agents/skills/mex-relay/references/cli-workflows.md b/.agents/skills/mex-relay/references/cli-workflows.md new file mode 100644 index 0000000..89f8122 --- /dev/null +++ b/.agents/skills/mex-relay/references/cli-workflows.md @@ -0,0 +1,88 @@ +# Relay CLI workflows + +Use JSON mode for deterministic agent work. Keep request and preview files temporary and avoid displaying them unless troubleshooting. + +## Resolve only the needed contract + +Run: + +```text +mex relay contract --action --json +``` + +Use one of these command IDs: + +- `relay.draft.save` +- `relay.draft.delete` +- `relay.publish` +- `relay.acknowledge` +- `relay.close` + +Treat this bounded action result as the exact runtime source for the request shape, available examples, constraints, preview command, and apply command. Do not dump `mex capabilities --json` or the full Relay contract during ordinary execution. Write request and preview JSON only to ordinary regular files inside the checkout or an approved temporary directory; do not use symlinks. + +## Choose an audience and optional context + +1. For an open handoff or “save for whoever picks it up,” use `audience: "team"` and `recipients: []`. Do not enumerate today's Members; active Members who join later must remain eligible. This setting does not share the local draft. +2. For named people, use `audience: "members"`. Resolve names with `mex member list --active --limit 100 --json` and bounded cursors. Local drafts may retain an empty recipient array while names are unresolved; record the intended name in `unresolvedQuestions` and resolve it before publication. +3. Use `mex member show --json` for disambiguation or exact publication revisions. Ask when named recipients remain ambiguous; never reinterpret a named subset such as “the backend team” as every project Member. +4. Default to no Workstream lookup. If the user named a Workstream or the handoff clearly belongs to an existing one, run `mex workstream list --json` and `mex workstream show --json` to resolve it exactly. +5. In Relay v3, preserve a relevant Workstream as typed entity evidence when the selected contract supports it; do not author the legacy top-level Workstream field. + +Never fabricate recipient IDs, entity IDs, revisions, commits, code fingerprints, paths, URLs, or provenance. + +## Save a checkout-local draft + +1. Resolve `relay.draft.save`. +2. Write one temporary JSON object containing the draft content. Include a concise summary, the intended audience, and only useful non-empty context sections. Prefer accurate omissions over invented completeness. +3. For a new draft, run `mex relay draft save --from --operation-id --json`. This validates the content, obtains a signed local preview, and applies that exact preview internally. It never publishes and needs no Member resolution. Do not combine `--from` with a request file or `--apply`. +4. Require `ok: true`, `mode: "apply"`, and `data.applied: true`; read the draft ID from `data.localChanges` and return `/relays?view=drafts&draft=`. The shortcut retains the original preview under `.mex/local/relay-previews/` before applying and removes it after success. An interrupted save can resume with the same operation ID and unchanged content, or the exact `problem.recovery` command. Do not replace the receipt or create another operation to work around an interrupted/conflicting result; if recovery is refused, report it and inspect the existing draft state. + +For example, a new open handoff may contain: + +```json +{ + "audience": "team", + "recipients": [], + "summary": "Continue the parser correction.", + "completed": ["Reproduced the failure with the nested-import fixture."], + "nextActions": ["Check whether the same failure affects exported aliases."] +} +``` + +For an existing draft update, read it with `mex relay draft show --json`, preserve its content, and use its exact local revision in the structured request. Preview with `mex relay draft save --json`; require `ok: true`, `mode: "preview"`, and `data.preview.valid: true`. Apply the complete captured envelope unchanged with `mex relay draft save --apply --json`. An explicit save/update request needs no additional confirmation for this checkout-local write. + +The apply writes only checkout-local draft state in `.mex/local/team.db`. It does not create a canonical Relay or Activity record, deliver a handoff, commit, push, or notify anyone. Apply before the preview expires; if anything changes or the preview becomes stale, preview again instead of reconstructing it. + +## Delete a local draft + +1. Read the exact draft and current local revision. +2. Resolve and preview `relay.draft.delete`. +3. Explain that the checkout-local draft will be deleted and wait for fresh confirmation. +4. Apply the captured preview unchanged with `mex relay draft delete --apply --json`. + +## Publish a Relay + +1. Read the exact draft. For an open-to-team audience, no recipient Member list is needed. For named recipients, require at least one and read each current active Member; an empty named draft must be completed before publication. +2. Resolve `relay.publish`. Team publication expects only the exact local draft revision; named publication also expects every recipient Member revision. Preview with `mex relay publish --json`. The service verifies the current active sender in both cases. +3. Explain that applying replaces the private local draft with canonical Git-tracked Relay and Activity records in the working tree, records the service-observed branch/HEAD/dirty repository state without copying dirty source contents, and does not deliver through a notification service or share before Git commit/push and teammate pull/refresh. +4. Wait for fresh explicit confirmation. +5. Apply the exact preview with `mex relay publish --apply --json`. +6. Return `/relays?view=sent&state=open&relay=`. + +## Take a Relay + +1. Resolve the exact published Relay with `mex relay show --json`. A team audience allows the current active project Member; a named audience requires the current Member to be listed. An omitted audience on an older Relay means named recipients. +2. Resolve `relay.acknowledge` and preview with `mex relay acknowledge --json`. +3. Explain that applying records the current Member as claimant and writes canonical Relay/Activity state in the working tree. A synchronized claim prevents another take; separate offline claims still require Git conflict resolution. There is no unclaim or reassignment action, and it does not assign or start a task elsewhere. +4. Wait for fresh explicit confirmation, then apply the exact preview with `mex relay acknowledge --apply --json`. +5. Return `/relays?view=mine&state=open&relay=`. + +## Close a Relay + +1. Resolve the exact acknowledged Relay and its current revision. +2. Resolve `relay.close` and preview with `mex relay close --json`. +3. Explain that applying irreversibly marks only the handoff as no longer needing attention and writes canonical Relay/Activity state in the working tree. +4. Wait for fresh explicit confirmation, then apply the exact preview with `mex relay close --apply --json`. +5. Return `/relays?view=all&state=closed&relay=`. + +Closing does not complete a linked task, issue, pull request, or Workstream. No lifecycle command stages, commits, pushes, pulls, or sends a notification. diff --git a/.mex/.gitignore b/.mex/.gitignore new file mode 100644 index 0000000..a2ec937 --- /dev/null +++ b/.mex/.gitignore @@ -0,0 +1,3 @@ +graph.db* +wiki.db* +local/ diff --git a/.mex/AGENTS.md b/.mex/AGENTS.md new file mode 100644 index 0000000..5c4c184 --- /dev/null +++ b/.mex/AGENTS.md @@ -0,0 +1,17 @@ +--- +name: agents +description: SimpleAPI project memory and authority boundary. +last_updated: 2026-09-20 +--- + +# SimpleAPI memory + +Root `AGENTS.md` defines the evidence hierarchy and MEX use. This Wiki records platform, packaging, and transport traps. MEX 0.8.2 does not index Java; verify implementation against current Java and tests. Use `ROUTER.md` to load only relevant context. + + +## MEX context policy +- When MEX context materially helps your work, mention MEX and the relevant finding naturally in your explanation. Tie the mention to what it helped you understand, decide, or verify. Avoid fixed phrases, standalone acknowledgements, repeated mentions, or narrating routine context loading. This replaces older MEX instructions requiring a fixed acknowledgement or context-loading narration. +- Do not claim an author, date, or historical event unless the retrieved data actually provides it. +- After a MEX write, say exactly what changed and its sharing boundary: a local draft is checkout-only and nothing is shared; a canonical artifact is written to the working tree and requires commit/push to share. +- Skill activation is not approval for canonical actions. + diff --git a/.mex/ROUTER.md b/.mex/ROUTER.md new file mode 100644 index 0000000..1b5dca1 --- /dev/null +++ b/.mex/ROUTER.md @@ -0,0 +1,23 @@ +--- +name: router +description: SimpleAPI package, platform, and transport memory routes. +edges: + - target: patterns/add-platform-adapter.md + condition: when adding a platform adapter + - target: patterns/http-transport-change.md + condition: when changing HTTP delivery + - target: patterns/package-shared-artifact.md + condition: when changing shared packaging +last_updated: 2026-09-20 +--- + +# SimpleAPI memory routes + +| Task | Read | +| --- | --- | +| Platform boundary or adapter | `context/architecture.md`, `patterns/add-platform-adapter.md` | +| Shared classifier or dependency | `context/decisions.md`, `patterns/package-shared-artifact.md` | +| HTTP transport and recovery | `context/http.md`, `patterns/http-transport-change.md` | +| Build/MEX environment | `context/stack.md`, `context/setup.md` | + +Root `AGENTS.md` owns authority. Verify memory against current Java, tests, and formal docs. diff --git a/.mex/SETUP.md b/.mex/SETUP.md new file mode 100644 index 0000000..a94ddec --- /dev/null +++ b/.mex/SETUP.md @@ -0,0 +1,3 @@ +# SimpleAPI MEX setup + +Codex uses official MEX Inbox and Relay skills. MEX 0.8.2 does not index Java here; use Wiki context, then Java source and tests. No Hub is required for CLI use. diff --git a/.mex/SYNC.md b/.mex/SYNC.md new file mode 100644 index 0000000..6af6101 --- /dev/null +++ b/.mex/SYNC.md @@ -0,0 +1,3 @@ +# Keep SimpleAPI memory current + +Follow root `AGENTS.md` authority guidance. Verify remembered platform and artifact claims against current POM, docs, and tests; correct stale memory through reviewed edits or Inbox. Rebuild Wiki after changes. diff --git a/.mex/config.json b/.mex/config.json new file mode 100644 index 0000000..b23b484 --- /dev/null +++ b/.mex/config.json @@ -0,0 +1,10 @@ +{ + "setupMode": "code-repo", + "aiTools": [ + "codex" + ], + "scaffold_id": "431db8a0-3dcc-4612-ba15-cff117202b87", + "scaffold_name": "SimpleAPI", + "origin": null, + "upstream": null +} diff --git a/.mex/context/architecture.md b/.mex/context/architecture.md new file mode 100644 index 0000000..bfc7e6e --- /dev/null +++ b/.mex/context/architecture.md @@ -0,0 +1,16 @@ +--- +name: architecture +description: Single-project platform and shared-code boundary. +triggers: [architecture, platform, core] +last_updated: 2026-09-20 +mex: + id: mx_01M307A1MAWWHQYM503CMF57NN + type: architecture + status: promoted + revision: 1 + title: architecture +--- + +# Platform boundary + +This checkout is one Maven project, not a multi-module loader build. `core` contains platform-neutral configuration/SQL surfaces; Bukkit adapters live in sibling packages while existing public package names remain available through delegation. Future Forge/Fabric/NeoForge adapters are described as possibilities, not present implementations. Source: `docs/shared-libraries.md`, `docs/platform-neutral-configuration.md`, `SimpleAPI/src/main/java/com/bencodez/simpleapi/core/`, `SimpleAPI/pom.xml`. diff --git a/.mex/context/conventions.md b/.mex/context/conventions.md new file mode 100644 index 0000000..2872ad3 --- /dev/null +++ b/.mex/context/conventions.md @@ -0,0 +1,16 @@ +--- +name: conventions +description: Formal rule ownership. +triggers: [convention, test] +last_updated: 2026-09-20 +mex: + id: mx_01M307A1S84XEFTAXTFNT9MVZ2 + type: convention + status: promoted + revision: 2 + title: conventions +--- + +# Rule ownership + +`/root/dev/AGENTS.md`, `docs/shared-libraries.md`, and the relevant package tests own development and artifact contracts. MEX records rationale and non-obvious traps, not generic Java/Maven rules. diff --git a/.mex/context/decisions.md b/.mex/context/decisions.md new file mode 100644 index 0000000..de3a7d2 --- /dev/null +++ b/.mex/context/decisions.md @@ -0,0 +1,18 @@ +--- +name: decisions +description: Shared artifact and consumer compatibility rationale. +triggers: [decision, shared, dependency, classifier] +last_updated: 2026-09-20 +mex: + id: mx_01M307GHE55290N81KD9W51AAG + type: decision + status: promoted + revision: 1 + title: decisions +--- + +# Shared artifact choices + +The POM packages a full shaded runtime JAR and an allow-listed `shared` classifier plus sources. The classifier excludes platform references, but uses the same POM dependency declarations under normal Maven scope rules; a native consumer must exclude unwanted transitives and explicitly declare neutral dependencies it uses. Do not claim the classifier is an independently slim published module. Source: `docs/shared-libraries.md`, `SimpleAPI/pom.xml`, `SimpleAPI/src/test/java/com/bencodez/simpleapi/tests/shared/SharedArtifactTest.java`. + +Package migration is incremental: legacy neutral APIs and Bukkit-facing entry points keep published names and delegate into new implementation packages. Changing public names or section identity can break existing AdvancedCore/VotingPlugin consumers. Source: `docs/shared-libraries.md`, `docs/platform-neutral-configuration.md`. diff --git a/.mex/context/http.md b/.mex/context/http.md new file mode 100644 index 0000000..067af1e --- /dev/null +++ b/.mex/context/http.md @@ -0,0 +1,18 @@ +--- +name: http +description: HTTP transport lifecycle and pending-delivery boundaries. +triggers: [HTTP, pending, delivery, TLS] +last_updated: 2026-09-20 +mex: + id: mx_01M307GHE519QFPZ260EC82CG8 + type: constraint + status: promoted + revision: 1 + title: http +--- + +# HTTP transport boundary + +The HTTP transport uses pinned TLS and enrollment; certificate binding authenticates peers, while the envelopes are strictly parsed but not independently signed. Proxy-to-backend outgoing messages are durably queued, and both sides have durable inbound replay fences. Backend-to-proxy outgoing messages remain in memory with a bounded shutdown flush. A network response, queue write, and application acknowledgement are different events. A valid nonempty queue directory reports pending work; invalid or inaccessible queue structure throws `IOException`, which callers must handle conservatively. A restart-visible `RUNNING` callback is neither replayed nor acknowledged because its side effects are uncertain. Source: `SimpleAPI/src/main/java/com/bencodez/simpleapi/servercomm/http/`, `SimpleAPI/src/test/java/com/bencodez/simpleapi/servercomm/http/`. + +Transport work must keep size bounds, shutdown behavior, and authentication checks together. Inspect current tests for the exact guarantee instead of inferring exactly-once behavior from a queue name. diff --git a/.mex/context/setup.md b/.mex/context/setup.md new file mode 100644 index 0000000..2c338f0 --- /dev/null +++ b/.mex/context/setup.md @@ -0,0 +1,16 @@ +--- +name: setup +description: MEX use in SimpleAPI. +triggers: [setup, MEX, graph] +last_updated: 2026-09-20 +mex: + id: mx_01M307A218V3PPJF3FV0NQKNNX + type: guide + status: promoted + revision: 2 + title: setup +--- + +# MEX use + +Use Wiki for design context and Java source/tests for implementation truth. MEX 0.8.2 has no Java structural graph here. After memory edits run `mex wiki rebuild-index` and `mex check`; local CLI use needs no Hub. diff --git a/.mex/context/stack.md b/.mex/context/stack.md new file mode 100644 index 0000000..6c1c3eb --- /dev/null +++ b/.mex/context/stack.md @@ -0,0 +1,16 @@ +--- +name: stack +description: Current build and platform boundary. +triggers: [Java, Maven, Bukkit, proxy] +last_updated: 2026-09-20 +mex: + id: mx_01M307GHE6NDAPVZKKZ8ECR1JP + type: fact + status: promoted + revision: 1 + title: stack +--- + +# Current shape + +`SimpleAPI/pom.xml` targets Java 21 and builds one Maven project. The full artifact has Bukkit/Spigot, BungeeCord, and Velocity integrations; there are no Forge/Fabric/NeoForge loader modules in this checkout. CI runs the nested POM package goal. The package phase tests the actual shared and full JARs. Source: `SimpleAPI/pom.xml`, `.github/workflows/maven.yml`, `docs/shared-libraries.md`. diff --git a/.mex/events/operations.jsonl b/.mex/events/operations.jsonl new file mode 100644 index 0000000..00c2e04 --- /dev/null +++ b/.mex/events/operations.jsonl @@ -0,0 +1,56 @@ +{"v":1,"phase":"intent","opId":"mig_bc455cd872fb529a408a5462c59c63e90a735d99","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1F4A3D6A2WHPBYPECTT"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/architecture.md"],"payloadHash":"85d0242724111458e809cba34c348b018a7405f313a152a6a4a6ccf2defa03d1","revisions":[{"entityId":"mx_01M307A1F4A3D6A2WHPBYPECTT","before":0,"after":1}]} +{"v":1,"phase":"complete","opId":"mig_bc455cd872fb529a408a5462c59c63e90a735d99","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1F4A3D6A2WHPBYPECTT"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/architecture.md"],"payloadHash":"85d0242724111458e809cba34c348b018a7405f313a152a6a4a6ccf2defa03d1","revisions":[{"entityId":"mx_01M307A1F4A3D6A2WHPBYPECTT","before":0,"after":1}]} +{"v":1,"phase":"intent","opId":"mig_35500e3de5c95e24b8b35a4fad2f45e11bdd59e0","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1HHBZ6XEFZBR58P3TNW"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/architecture.md"],"payloadHash":"6ef5fb6cf4d40dd2b3bce359489226973d6363dc33d2484b6539f179861fde78","revisions":[{"entityId":"mx_01M307A1HHBZ6XEFZBR58P3TNW","before":0,"after":1}]} +{"v":1,"phase":"complete","opId":"mig_35500e3de5c95e24b8b35a4fad2f45e11bdd59e0","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1HHBZ6XEFZBR58P3TNW"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/architecture.md"],"payloadHash":"6ef5fb6cf4d40dd2b3bce359489226973d6363dc33d2484b6539f179861fde78","revisions":[{"entityId":"mx_01M307A1HHBZ6XEFZBR58P3TNW","before":0,"after":1}]} +{"v":1,"phase":"intent","opId":"mig_5e6ef1dbd8578d29536d45f7e510b2279df5e270","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1JG6EF9JKYQSE37TZS2"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/architecture.md"],"payloadHash":"76b97530d60660240179064fdb8df4cd6404b14fc5d763f89c49976b2549eb45","revisions":[{"entityId":"mx_01M307A1JG6EF9JKYQSE37TZS2","before":0,"after":1}]} +{"v":1,"phase":"complete","opId":"mig_5e6ef1dbd8578d29536d45f7e510b2279df5e270","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1JG6EF9JKYQSE37TZS2"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/architecture.md"],"payloadHash":"76b97530d60660240179064fdb8df4cd6404b14fc5d763f89c49976b2549eb45","revisions":[{"entityId":"mx_01M307A1JG6EF9JKYQSE37TZS2","before":0,"after":1}]} +{"v":1,"phase":"intent","opId":"mig_edcb0ea2aa5319e3aa65759b8aa1ac4fca2cd287","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1KF6Y1CDSYR9YW9CWD2"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/architecture.md"],"payloadHash":"3aed8bfed22aa4540148e5ad02d8374397164829b6180d122c06b9d386f072a8","revisions":[{"entityId":"mx_01M307A1KF6Y1CDSYR9YW9CWD2","before":0,"after":1}]} +{"v":1,"phase":"complete","opId":"mig_edcb0ea2aa5319e3aa65759b8aa1ac4fca2cd287","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1KF6Y1CDSYR9YW9CWD2"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/architecture.md"],"payloadHash":"3aed8bfed22aa4540148e5ad02d8374397164829b6180d122c06b9d386f072a8","revisions":[{"entityId":"mx_01M307A1KF6Y1CDSYR9YW9CWD2","before":0,"after":1}]} +{"v":1,"phase":"intent","opId":"mig_04bdfe68d2f7f9f793ced12eadc3a4027c0b5a64","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1MAWWHQYM503CMF57NN"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/architecture.md"],"payloadHash":"60e9cb3b8cf14fc598ca64e965b4e9a2e20ef743ac37abc02e2c86cc48103ff5","revisions":[{"entityId":"mx_01M307A1MAWWHQYM503CMF57NN","before":0,"after":1}]} +{"v":1,"phase":"complete","opId":"mig_04bdfe68d2f7f9f793ced12eadc3a4027c0b5a64","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1MAWWHQYM503CMF57NN"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/architecture.md"],"payloadHash":"60e9cb3b8cf14fc598ca64e965b4e9a2e20ef743ac37abc02e2c86cc48103ff5","revisions":[{"entityId":"mx_01M307A1MAWWHQYM503CMF57NN","before":0,"after":1}]} +{"v":1,"phase":"intent","opId":"mig_2b95c900cb3298ed0a2d6bf43b983a72be64bcf5","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1NF9R71EB8TNMSHK2MH"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/conventions.md"],"payloadHash":"aa329aeba9aa502ce712ac82b1e323cd0858acfb26628b33f3fc754c2503d280","revisions":[{"entityId":"mx_01M307A1NF9R71EB8TNMSHK2MH","before":0,"after":1}]} +{"v":1,"phase":"complete","opId":"mig_2b95c900cb3298ed0a2d6bf43b983a72be64bcf5","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1NF9R71EB8TNMSHK2MH"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/conventions.md"],"payloadHash":"aa329aeba9aa502ce712ac82b1e323cd0858acfb26628b33f3fc754c2503d280","revisions":[{"entityId":"mx_01M307A1NF9R71EB8TNMSHK2MH","before":0,"after":1}]} +{"v":1,"phase":"intent","opId":"mig_59e7fc41e72d26be551449e68793399cfe6c2a55","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1PH36H94A6WVRKNM76W"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/conventions.md"],"payloadHash":"b7690c796b9439da93daa658ccfc8a460f8bd4f0d67ada9c24404aaf3f979d1b","revisions":[{"entityId":"mx_01M307A1PH36H94A6WVRKNM76W","before":0,"after":1}]} +{"v":1,"phase":"complete","opId":"mig_59e7fc41e72d26be551449e68793399cfe6c2a55","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1PH36H94A6WVRKNM76W"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/conventions.md"],"payloadHash":"b7690c796b9439da93daa658ccfc8a460f8bd4f0d67ada9c24404aaf3f979d1b","revisions":[{"entityId":"mx_01M307A1PH36H94A6WVRKNM76W","before":0,"after":1}]} +{"v":1,"phase":"intent","opId":"mig_773f54ca296150e8e1d9620a8994fc8d52dbdf25","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1QEP84R2JRKH7Z21VWR"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/conventions.md"],"payloadHash":"4061528c75dee61729de4e9aa86eea34f445d516e1a9dcd5ac6e6a84cfd44035","revisions":[{"entityId":"mx_01M307A1QEP84R2JRKH7Z21VWR","before":0,"after":1}]} +{"v":1,"phase":"complete","opId":"mig_773f54ca296150e8e1d9620a8994fc8d52dbdf25","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1QEP84R2JRKH7Z21VWR"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/conventions.md"],"payloadHash":"4061528c75dee61729de4e9aa86eea34f445d516e1a9dcd5ac6e6a84cfd44035","revisions":[{"entityId":"mx_01M307A1QEP84R2JRKH7Z21VWR","before":0,"after":1}]} +{"v":1,"phase":"intent","opId":"mig_52385bab19c733e375b05027b500c139100124f1","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1RBSJF134TN2VZK082Q"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/conventions.md"],"payloadHash":"ddb550ad3a5e85b09f3498396c0260f0e45cee3611fda4cd09f593bdb391f616","revisions":[{"entityId":"mx_01M307A1RBSJF134TN2VZK082Q","before":0,"after":1}]} +{"v":1,"phase":"complete","opId":"mig_52385bab19c733e375b05027b500c139100124f1","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1RBSJF134TN2VZK082Q"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/conventions.md"],"payloadHash":"ddb550ad3a5e85b09f3498396c0260f0e45cee3611fda4cd09f593bdb391f616","revisions":[{"entityId":"mx_01M307A1RBSJF134TN2VZK082Q","before":0,"after":1}]} +{"v":1,"phase":"intent","opId":"mig_bba7e40030721976170be1e0e46673406f16555f","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1S84XEFTAXTFNT9MVZ2"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/conventions.md"],"payloadHash":"dea0802d2c6208b2f103f615a1a322ba63f9a35dbddbe82d49988f8ed41f86ae","revisions":[{"entityId":"mx_01M307A1S84XEFTAXTFNT9MVZ2","before":0,"after":1}]} +{"v":1,"phase":"complete","opId":"mig_bba7e40030721976170be1e0e46673406f16555f","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1S84XEFTAXTFNT9MVZ2"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/conventions.md"],"payloadHash":"dea0802d2c6208b2f103f615a1a322ba63f9a35dbddbe82d49988f8ed41f86ae","revisions":[{"entityId":"mx_01M307A1S84XEFTAXTFNT9MVZ2","before":0,"after":1}]} +{"v":1,"phase":"intent","opId":"mig_61489615d997b4031188053ca5bf1dd08d3f9f4f","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1T3J0XWJY0RS3RGCRCG"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/decisions.md"],"payloadHash":"423b9e34d8b8559d84ad2b9c60c82c0bd6485253b62b569c21a357ad4db5e45d","revisions":[{"entityId":"mx_01M307A1T3J0XWJY0RS3RGCRCG","before":0,"after":1}]} +{"v":1,"phase":"complete","opId":"mig_61489615d997b4031188053ca5bf1dd08d3f9f4f","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1T3J0XWJY0RS3RGCRCG"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/decisions.md"],"payloadHash":"423b9e34d8b8559d84ad2b9c60c82c0bd6485253b62b569c21a357ad4db5e45d","revisions":[{"entityId":"mx_01M307A1T3J0XWJY0RS3RGCRCG","before":0,"after":1}]} +{"v":1,"phase":"intent","opId":"mig_83a9ea7dda8863f43cd045e73601b83f01d9002a","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1TZXHRDJ7SXMMEF43CE"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/decisions.md"],"payloadHash":"49687ab28df266046e73ed8bb1dda874259a06b2ce363b2dc1453541eca8236f","revisions":[{"entityId":"mx_01M307A1TZXHRDJ7SXMMEF43CE","before":0,"after":1}]} +{"v":1,"phase":"complete","opId":"mig_83a9ea7dda8863f43cd045e73601b83f01d9002a","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1TZXHRDJ7SXMMEF43CE"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/decisions.md"],"payloadHash":"49687ab28df266046e73ed8bb1dda874259a06b2ce363b2dc1453541eca8236f","revisions":[{"entityId":"mx_01M307A1TZXHRDJ7SXMMEF43CE","before":0,"after":1}]} +{"v":1,"phase":"intent","opId":"mig_cadd44f2943a8b3de728d79bb5bb5e8dcab9a05f","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1VZ7Q830HCH0RM4CG5S"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/decisions.md"],"payloadHash":"3415408bf7a8a2bb91148dbfbcf4013bbe26e9c79322019177eab6a9a59d2b7a","revisions":[{"entityId":"mx_01M307A1VZ7Q830HCH0RM4CG5S","before":0,"after":1}]} +{"v":1,"phase":"complete","opId":"mig_cadd44f2943a8b3de728d79bb5bb5e8dcab9a05f","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1VZ7Q830HCH0RM4CG5S"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/decisions.md"],"payloadHash":"3415408bf7a8a2bb91148dbfbcf4013bbe26e9c79322019177eab6a9a59d2b7a","revisions":[{"entityId":"mx_01M307A1VZ7Q830HCH0RM4CG5S","before":0,"after":1}]} +{"v":1,"phase":"intent","opId":"mig_2976b858564debd2a40afdc1cf2a020c2c6784fe","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1WT1DHTJVNS91FRVFYG"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/setup.md"],"payloadHash":"aa940d39708873e913c6d3052cf3fba25ea123f83e3ac4207613d507e2f9f867","revisions":[{"entityId":"mx_01M307A1WT1DHTJVNS91FRVFYG","before":0,"after":1}]} +{"v":1,"phase":"complete","opId":"mig_2976b858564debd2a40afdc1cf2a020c2c6784fe","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1WT1DHTJVNS91FRVFYG"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/setup.md"],"payloadHash":"aa940d39708873e913c6d3052cf3fba25ea123f83e3ac4207613d507e2f9f867","revisions":[{"entityId":"mx_01M307A1WT1DHTJVNS91FRVFYG","before":0,"after":1}]} +{"v":1,"phase":"intent","opId":"mig_d08d7321dbd03c524a7a10ed1a41c4ae2df299fa","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1XQ4TW2DEQEE8RJEMQ5"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/setup.md"],"payloadHash":"3a98ef18ef796ac7b0de8dc43a75c85c2c5436615cce7373310bfb8d2dedd56b","revisions":[{"entityId":"mx_01M307A1XQ4TW2DEQEE8RJEMQ5","before":0,"after":1}]} +{"v":1,"phase":"complete","opId":"mig_d08d7321dbd03c524a7a10ed1a41c4ae2df299fa","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1XQ4TW2DEQEE8RJEMQ5"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/setup.md"],"payloadHash":"3a98ef18ef796ac7b0de8dc43a75c85c2c5436615cce7373310bfb8d2dedd56b","revisions":[{"entityId":"mx_01M307A1XQ4TW2DEQEE8RJEMQ5","before":0,"after":1}]} +{"v":1,"phase":"intent","opId":"mig_0b3b05c6f65623d042691fb47a675c5240f545b7","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1YKXP4H1ZXPDSF14CJC"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/setup.md"],"payloadHash":"5f32fbe13d408b160f3f79a255ece4cff3f1f91e6b0b4496d4f37267dd426fef","revisions":[{"entityId":"mx_01M307A1YKXP4H1ZXPDSF14CJC","before":0,"after":1}]} +{"v":1,"phase":"complete","opId":"mig_0b3b05c6f65623d042691fb47a675c5240f545b7","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1YKXP4H1ZXPDSF14CJC"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/setup.md"],"payloadHash":"5f32fbe13d408b160f3f79a255ece4cff3f1f91e6b0b4496d4f37267dd426fef","revisions":[{"entityId":"mx_01M307A1YKXP4H1ZXPDSF14CJC","before":0,"after":1}]} +{"v":1,"phase":"intent","opId":"mig_5ad6bf8977b420fb8b62b67208dbc81f70f3e217","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1ZFM8YT5N7C00MC59Q9"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/setup.md"],"payloadHash":"5a47058076b0019c8c6c972dcbecdaf3193143807b46e75b3fbdd1be751f4e3a","revisions":[{"entityId":"mx_01M307A1ZFM8YT5N7C00MC59Q9","before":0,"after":1}]} +{"v":1,"phase":"complete","opId":"mig_5ad6bf8977b420fb8b62b67208dbc81f70f3e217","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A1ZFM8YT5N7C00MC59Q9"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/setup.md"],"payloadHash":"5a47058076b0019c8c6c972dcbecdaf3193143807b46e75b3fbdd1be751f4e3a","revisions":[{"entityId":"mx_01M307A1ZFM8YT5N7C00MC59Q9","before":0,"after":1}]} +{"v":1,"phase":"intent","opId":"mig_f9b989be675c4c81b748798ac9fb29fce90c7f13","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A20HR6YWES65PBTX75SY"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/setup.md"],"payloadHash":"3aa2b82122e2b3d2f8adca3a2467c1d8137ae29896f35c8c50b99cb7af1cffea","revisions":[{"entityId":"mx_01M307A20HR6YWES65PBTX75SY","before":0,"after":1}]} +{"v":1,"phase":"complete","opId":"mig_f9b989be675c4c81b748798ac9fb29fce90c7f13","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A20HR6YWES65PBTX75SY"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/setup.md"],"payloadHash":"3aa2b82122e2b3d2f8adca3a2467c1d8137ae29896f35c8c50b99cb7af1cffea","revisions":[{"entityId":"mx_01M307A20HR6YWES65PBTX75SY","before":0,"after":1}]} +{"v":1,"phase":"intent","opId":"mig_8dba03310a5302a413a7df38e88f6c2de16bc1e0","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A218V3PPJF3FV0NQKNNX"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/setup.md"],"payloadHash":"cf355dba2ffc569444242ee5b2fce6dd91e95d47beb012e590e6b8893c2314a4","revisions":[{"entityId":"mx_01M307A218V3PPJF3FV0NQKNNX","before":0,"after":1}]} +{"v":1,"phase":"complete","opId":"mig_8dba03310a5302a413a7df38e88f6c2de16bc1e0","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A218V3PPJF3FV0NQKNNX"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/setup.md"],"payloadHash":"cf355dba2ffc569444242ee5b2fce6dd91e95d47beb012e590e6b8893c2314a4","revisions":[{"entityId":"mx_01M307A218V3PPJF3FV0NQKNNX","before":0,"after":1}]} +{"v":1,"phase":"intent","opId":"mig_68eb9cf98226569ff009aa46b7e5e1c40abbe615","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A2284M0TD8J9FM0HT67D"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["patterns/add-platform-adapter.md"],"payloadHash":"3d3113677f63fd7c19eb79ce21fd506132d07665f6181d25da603cc06be35334","revisions":[{"entityId":"mx_01M307A2284M0TD8J9FM0HT67D","before":0,"after":1}]} +{"v":1,"phase":"complete","opId":"mig_68eb9cf98226569ff009aa46b7e5e1c40abbe615","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A2284M0TD8J9FM0HT67D"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["patterns/add-platform-adapter.md"],"payloadHash":"3d3113677f63fd7c19eb79ce21fd506132d07665f6181d25da603cc06be35334","revisions":[{"entityId":"mx_01M307A2284M0TD8J9FM0HT67D","before":0,"after":1}]} +{"v":1,"phase":"intent","opId":"mig_3b2dc4f72d26bc69654fdbb08b539b8045f25db9","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A235GS0WVEWCR8838FXD"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["patterns/http-transport-change.md"],"payloadHash":"3e4f68026ea70e480f16930a2c157b3331b8388584250085d291f0790028f8fd","revisions":[{"entityId":"mx_01M307A235GS0WVEWCR8838FXD","before":0,"after":1}]} +{"v":1,"phase":"complete","opId":"mig_3b2dc4f72d26bc69654fdbb08b539b8045f25db9","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A235GS0WVEWCR8838FXD"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["patterns/http-transport-change.md"],"payloadHash":"3e4f68026ea70e480f16930a2c157b3331b8388584250085d291f0790028f8fd","revisions":[{"entityId":"mx_01M307A235GS0WVEWCR8838FXD","before":0,"after":1}]} +{"v":1,"phase":"intent","opId":"mig_0c9de8e0ae26ca7ca9268996084066f3cf2c0b38","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A2437FSPJWNJ39ZNWPD4"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["patterns/package-shared-artifact.md"],"payloadHash":"fa5e2a4283c8b6cee72fb8091560203a4bda9c0bea9625de98c8792fa5da939a","revisions":[{"entityId":"mx_01M307A2437FSPJWNJ39ZNWPD4","before":0,"after":1}]} +{"v":1,"phase":"complete","opId":"mig_0c9de8e0ae26ca7ca9268996084066f3cf2c0b38","type":"create-entry","entityIds":[],"createdIds":["mx_01M307A2437FSPJWNJ39ZNWPD4"],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["patterns/package-shared-artifact.md"],"payloadHash":"fa5e2a4283c8b6cee72fb8091560203a4bda9c0bea9625de98c8792fa5da939a","revisions":[{"entityId":"mx_01M307A2437FSPJWNJ39ZNWPD4","before":0,"after":1}]} +{"v":1,"phase":"intent","opId":"mig_3055f0ee57741e4f76d11d3905d58cf2ea55677f","type":"add-relation","entityIds":["mx_01M307A1S84XEFTAXTFNT9MVZ2"],"createdIds":[],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/conventions.md"],"payloadHash":"6551dc825825cd517535d33ffe75623eca23b1be06828fa3e509086c1a26876d","revisions":[{"entityId":"mx_01M307A1S84XEFTAXTFNT9MVZ2","before":1,"after":2}]} +{"v":1,"phase":"complete","opId":"mig_3055f0ee57741e4f76d11d3905d58cf2ea55677f","type":"add-relation","entityIds":["mx_01M307A1S84XEFTAXTFNT9MVZ2"],"createdIds":[],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/conventions.md"],"payloadHash":"6551dc825825cd517535d33ffe75623eca23b1be06828fa3e509086c1a26876d","revisions":[{"entityId":"mx_01M307A1S84XEFTAXTFNT9MVZ2","before":1,"after":2}]} +{"v":1,"phase":"intent","opId":"mig_04bb7cafb5a223821f67fe858d3e07aecd87dc4e","type":"add-relation","entityIds":["mx_01M307A218V3PPJF3FV0NQKNNX"],"createdIds":[],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/setup.md"],"payloadHash":"9ad266bb597b23fd5e52fb26bf63da887f526e8032cb2a4e379d39c1c10adda2","revisions":[{"entityId":"mx_01M307A218V3PPJF3FV0NQKNNX","before":1,"after":2}]} +{"v":1,"phase":"complete","opId":"mig_04bb7cafb5a223821f67fe858d3e07aecd87dc4e","type":"add-relation","entityIds":["mx_01M307A218V3PPJF3FV0NQKNNX"],"createdIds":[],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["context/setup.md"],"payloadHash":"9ad266bb597b23fd5e52fb26bf63da887f526e8032cb2a4e379d39c1c10adda2","revisions":[{"entityId":"mx_01M307A218V3PPJF3FV0NQKNNX","before":1,"after":2}]} +{"v":1,"phase":"intent","opId":"mig_7f9d8cdad7ffb167eba895ec980921c872c52da7","type":"add-relation","entityIds":["mx_01M307A2284M0TD8J9FM0HT67D"],"createdIds":[],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["patterns/add-platform-adapter.md"],"payloadHash":"8b25693978d960d22de15d7251737850e38b1c9765dc822e1287f699fac0a33c","revisions":[{"entityId":"mx_01M307A2284M0TD8J9FM0HT67D","before":1,"after":2}]} +{"v":1,"phase":"complete","opId":"mig_7f9d8cdad7ffb167eba895ec980921c872c52da7","type":"add-relation","entityIds":["mx_01M307A2284M0TD8J9FM0HT67D"],"createdIds":[],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["patterns/add-platform-adapter.md"],"payloadHash":"8b25693978d960d22de15d7251737850e38b1c9765dc822e1287f699fac0a33c","revisions":[{"entityId":"mx_01M307A2284M0TD8J9FM0HT67D","before":1,"after":2}]} +{"v":1,"phase":"intent","opId":"mig_2304527538c93d0e762cf022839c5da8f2e8d213","type":"add-relation","entityIds":["mx_01M307A2284M0TD8J9FM0HT67D"],"createdIds":[],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["patterns/add-platform-adapter.md"],"payloadHash":"5111f0a3d10af21f534ce5dee1b87e0315bdbccbb0100f37cbf7255435e0c875","revisions":[{"entityId":"mx_01M307A2284M0TD8J9FM0HT67D","before":2,"after":3}]} +{"v":1,"phase":"complete","opId":"mig_2304527538c93d0e762cf022839c5da8f2e8d213","type":"add-relation","entityIds":["mx_01M307A2284M0TD8J9FM0HT67D"],"createdIds":[],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["patterns/add-platform-adapter.md"],"payloadHash":"5111f0a3d10af21f534ce5dee1b87e0315bdbccbb0100f37cbf7255435e0c875","revisions":[{"entityId":"mx_01M307A2284M0TD8J9FM0HT67D","before":2,"after":3}]} +{"v":1,"phase":"intent","opId":"mig_0a69e7a0ebab3b68f781fc5212967fdbcdd75fa0","type":"add-relation","entityIds":["mx_01M307A235GS0WVEWCR8838FXD"],"createdIds":[],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["patterns/http-transport-change.md"],"payloadHash":"4c947f9a7acfa8827cacc503974e2755d8e7c4e45b9d703730cbf5b4a8ecc781","revisions":[{"entityId":"mx_01M307A235GS0WVEWCR8838FXD","before":1,"after":2}]} +{"v":1,"phase":"complete","opId":"mig_0a69e7a0ebab3b68f781fc5212967fdbcdd75fa0","type":"add-relation","entityIds":["mx_01M307A235GS0WVEWCR8838FXD"],"createdIds":[],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["patterns/http-transport-change.md"],"payloadHash":"4c947f9a7acfa8827cacc503974e2755d8e7c4e45b9d703730cbf5b4a8ecc781","revisions":[{"entityId":"mx_01M307A235GS0WVEWCR8838FXD","before":1,"after":2}]} +{"v":1,"phase":"intent","opId":"mig_2419eb2e5f007900e623eb10070b17212bea65dc","type":"add-relation","entityIds":["mx_01M307A2437FSPJWNJ39ZNWPD4"],"createdIds":[],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["patterns/package-shared-artifact.md"],"payloadHash":"16fbf09bb30f14f9737024e870650f8aee96c4e6e89f79a7b243a3c11846caaf","revisions":[{"entityId":"mx_01M307A2437FSPJWNJ39ZNWPD4","before":1,"after":2}]} +{"v":1,"phase":"complete","opId":"mig_2419eb2e5f007900e623eb10070b17212bea65dc","type":"add-relation","entityIds":["mx_01M307A2437FSPJWNJ39ZNWPD4"],"createdIds":[],"actor":{"kind":"system","id":"mex-migration"},"timestamp":"2026-01-01T00:00:00.000Z","files":["patterns/package-shared-artifact.md"],"payloadHash":"16fbf09bb30f14f9737024e870650f8aee96c4e6e89f79a7b243a3c11846caaf","revisions":[{"entityId":"mx_01M307A2437FSPJWNJ39ZNWPD4","before":1,"after":2}]} diff --git a/.mex/patterns/INDEX.md b/.mex/patterns/INDEX.md new file mode 100644 index 0000000..f99adc0 --- /dev/null +++ b/.mex/patterns/INDEX.md @@ -0,0 +1,7 @@ +# SimpleAPI patterns + +| Pattern | When useful | +| --- | --- | +| [add-platform-adapter.md](add-platform-adapter.md) | Adding an actual new platform adapter | +| [package-shared-artifact.md](package-shared-artifact.md) | Changing shared JAR contents or dependencies | +| [http-transport-change.md](http-transport-change.md) | Changing HTTP delivery, queue, or lifecycle behavior | diff --git a/.mex/patterns/README.md b/.mex/patterns/README.md new file mode 100644 index 0000000..ff43b79 --- /dev/null +++ b/.mex/patterns/README.md @@ -0,0 +1,3 @@ +# SimpleAPI patterns + +Only project-specific traps belong here. Verify against current source/tests and formal docs. Root `AGENTS.md` owns general workflow. diff --git a/.mex/patterns/add-platform-adapter.md b/.mex/patterns/add-platform-adapter.md new file mode 100644 index 0000000..1a3303c --- /dev/null +++ b/.mex/patterns/add-platform-adapter.md @@ -0,0 +1,16 @@ +--- +name: add-platform-adapter +description: Preserve neutral core and published packages. +triggers: [platform, adapter, Forge, Fabric] +last_updated: 2026-09-20 +mex: + id: mx_01M307A2284M0TD8J9FM0HT67D + type: pattern + status: promoted + revision: 3 + title: add-platform-adapter +--- + +# Adding a platform adapter + +Use a sibling adapter package when an actual loader implementation exists; do not add an empty module or put loader imports into `core` or the shared classifier. Preserve legacy public package behavior. See `docs/shared-libraries.md` and `SimpleAPI/src/test/java/com/bencodez/simpleapi/tests/shared/SharedArtifactTest.java`. diff --git a/.mex/patterns/http-transport-change.md b/.mex/patterns/http-transport-change.md new file mode 100644 index 0000000..aac832b --- /dev/null +++ b/.mex/patterns/http-transport-change.md @@ -0,0 +1,16 @@ +--- +name: http-transport-change +description: Trace pending delivery through failure and restart. +triggers: [HTTP, queue, delivery] +last_updated: 2026-09-20 +mex: + id: mx_01M307A235GS0WVEWCR8838FXD + type: pattern + status: promoted + revision: 2 + title: http-transport-change +--- + +# HTTP transport change + +Map enqueue, persisted state, send, acknowledgement, restart recovery, and unreadable state before changing completion semantics. Keep TLS/enrollment and bounded execution checks in the same review. See `context/http.md` and current tests under `SimpleAPI/src/test/java/com/bencodez/simpleapi/servercomm/http/`. diff --git a/.mex/patterns/package-shared-artifact.md b/.mex/patterns/package-shared-artifact.md new file mode 100644 index 0000000..667e676 --- /dev/null +++ b/.mex/patterns/package-shared-artifact.md @@ -0,0 +1,16 @@ +--- +name: package-shared-artifact +description: Keep the allow-listed shared JAR neutral. +triggers: [shared, classifier, dependency] +last_updated: 2026-09-20 +mex: + id: mx_01M307A2437FSPJWNJ39ZNWPD4 + type: pattern + status: promoted + revision: 2 + title: package-shared-artifact +--- + +# Shared artifact change + +Inspect POM class allow-list, package-time JAR test, and consumer dependency exclusions together. A classifier does not shrink POM transitives; adding a neutral class can still add linkage or jar-size costs. See `context/decisions.md`, `docs/shared-libraries.md`, `SimpleAPI/src/test/java/com/bencodez/simpleapi/tests/shared/SharedArtifactTest.java`. diff --git a/AGENTS.md b/AGENTS.md index 0c40a52..3a722e9 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -54,3 +54,19 @@ Keep changes focused and avoid unrelated formatting. Before any commit, push, PR 5. inspect the complete base-to-HEAD diff and affected AdvancedCore/downstream contracts. For substantive changes, obtain a fresh source-read-only review. The implementation agent verifies and fixes accepted findings, reruns all required checks, and obtains a new review of the updated snapshot. Do not reuse an earlier clean verdict after changes, and do not merge without explicit authorization. + +## MEX project memory + +For substantive tasks where architecture, compatibility, or prior failures matter, read relevant MEX context and then verify against current Java/tests and formal docs. Use code/tests first, this guide and formal docs second, reviewed MEX third, and historical Relays last; correct stale memory. Skip MEX for trivial edits. MEX 0.8.2 does not index Java here. Use `$mex-inbox` for durable findings and `$mex-relay` for substantial unfinished handoffs. + + +## MEX agent skills +- At the start of every session, read `.mex/AGENTS.md` and `.mex/ROUTER.md` before project work; follow `ROUTER.md` to load only the relevant context. +- Read `mex logging --json` at session start and before optional logging. Its checkout-local advisory mode is `significant` (quiet default: material decisions, risks, blockers, or durable discoveries), `checkpoints` (batch useful notes at task/session boundaries), or `manual` (no unsolicited notes). Skip routine tool calls, edits, repeated status, and empty summaries. Honor explicit user log requests in every mode; never suppress mandatory workflow Activity or recovery audit records. Report a policy read failure instead of guessing or changing the preference. +- When earlier work may inform the task, retrieve bounded relevant notes with `mex timeline --query "subject phrase" --file src/example.ts --limit 10 --json`, using the known subject or exact recorded file path, or both. Treat matches as historical evidence, not accepted current knowledge; verify conclusions before reuse or explicit promotion with their source retained. +- Use `$mex-inbox` for explicit contributions to project knowledge and `$mex-relay` for durable team handoffs. Invoke them automatically when intent clearly matches; ordinary GROW upkeep remains available without Inbox. +- When MEX context materially helps your work, mention MEX and the relevant finding naturally in your explanation. Tie the mention to what it helped you understand, decide, or verify. Avoid fixed phrases, standalone acknowledgements, repeated mentions, or narrating routine context loading. This replaces older MEX instructions requiring a fixed acknowledgement or context-loading narration. +- Do not claim an author, date, or historical event unless the retrieved data actually provides it. +- After a MEX write, say exactly what changed and its sharing boundary: a local draft is checkout-only and nothing is shared; a canonical artifact is written to the working tree and requires commit/push to share. +- Skill activation is not approval for canonical actions. + From d255e3ea1d287391b341304d6f741471ec1063e8 Mon Sep 17 00:00:00 2001 From: BenCodez <17074231+BenCodez@users.noreply.github.com> Date: Sun, 20 Sep 2026 14:55:15 -0600 Subject: [PATCH 2/4] docs: correct MEX project context --- .mex/context/conventions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.mex/context/conventions.md b/.mex/context/conventions.md index 2872ad3..6cbda7b 100644 --- a/.mex/context/conventions.md +++ b/.mex/context/conventions.md @@ -13,4 +13,4 @@ mex: # Rule ownership -`/root/dev/AGENTS.md`, `docs/shared-libraries.md`, and the relevant package tests own development and artifact contracts. MEX records rationale and non-obvious traps, not generic Java/Maven rules. +Root `AGENTS.md`, `docs/shared-libraries.md`, and the relevant package tests own development and artifact contracts. MEX records rationale and non-obvious traps, not generic Java/Maven rules. From 77a161d57eb1bad7365f78e56c5868943da8a629 Mon Sep 17 00:00:00 2001 From: BenCodez <17074231+BenCodez@users.noreply.github.com> Date: Sun, 20 Sep 2026 15:08:05 -0600 Subject: [PATCH 3/4] docs: use Inbox-compatible MEX kinds --- .mex/context/http.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.mex/context/http.md b/.mex/context/http.md index 067af1e..c4a25ba 100644 --- a/.mex/context/http.md +++ b/.mex/context/http.md @@ -5,7 +5,7 @@ triggers: [HTTP, pending, delivery, TLS] last_updated: 2026-09-20 mex: id: mx_01M307GHE519QFPZ260EC82CG8 - type: constraint + type: component status: promoted revision: 1 title: http From 21c24d9f959292d2352420377b0f3755a5e253d6 Mon Sep 17 00:00:00 2001 From: BenCodez <17074231+BenCodez@users.noreply.github.com> Date: Sun, 20 Sep 2026 15:13:54 -0600 Subject: [PATCH 4/4] docs: use Inbox-compatible kind for stack memory --- .mex/context/stack.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.mex/context/stack.md b/.mex/context/stack.md index 6c1c3eb..dd2e5b1 100644 --- a/.mex/context/stack.md +++ b/.mex/context/stack.md @@ -5,7 +5,7 @@ triggers: [Java, Maven, Bukkit, proxy] last_updated: 2026-09-20 mex: id: mx_01M307GHE6NDAPVZKKZ8ECR1JP - type: fact + type: guide status: promoted revision: 1 title: stack