Skip to content
Back to skills

Bellifemine 2007 Jade Fipa

ASecurity

Design a bounded FIPA-style conversation and map it cautiously to JADE behavior APIs. NOT for treating a JADE API example as protocol delivery or application authorization proof.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 24, 2026
toolsgojavaapidocumentation

Works with

  • terminal
  • cli
  • api

Security analysis

A100/100

Pro scans all 14 files and shows the line behind each finding

Scanned October 2, 2026

npx -y skills add curiositech/port-daddy --skill bellifemine-2007-jade-fipa --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Bellifemine 2007 Jade Fipa?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Bellifemine 2007 Jade Fipa
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/curiositech-bellifemine-2007-jade-fipa-port-daddy/badge)](https://www.skillsdirectory.com/skills/curiositech-bellifemine-2007-jade-fipa-port-daddy)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
license: Apache-2.0
name: bellifemine-2007-jade-fipa
description: Design a bounded FIPA-style conversation and map it cautiously to JADE behavior APIs. NOT for treating a JADE API example as protocol delivery or application authorization proof.
metadata:
  category: Research & Academic
  tags: [jade, fipa, agent-communication, protocol, ontology]
  io-contract:
    kind: deliverable
    produces:
      - kind: design-doc
        description: A bounded conversation contract with message roles, correlation, deadline policy, and failure disposition.
        format: markdown
      - kind: code
        description: Java-like behavior sketch whose release-specific API calls are checked against the selected JADE documentation.
        language: java
allowed-tools: Read,Write,Edit,Glob,Grep
---

# Developing bounded FIPA-style conversations with JADE

## Source boundary

Bellifemine, Caire, and Greenwood’s *Developing Multi-Agent Systems with JADE* (Wiley, 2007; DOI `10.1002/9780470058411`) is the topic source. The accessible Wiley record establishes bibliographic identity; the book body was not accessed for this draft. Current implementation guidance is from official JADE 4.6.0 API documentation and the official Programmer’s and LEAP User Guides, accessed 2026-09-24. Treat every deployment timeout, retry, score, persistence choice, and external effect as an application policy, not as a property supplied by FIPA or JADE.

## Choose a conversation before choosing a class

```mermaid
flowchart TD
  A[Describe the intended result and evidence] --> B{Many candidates offer a bounded task?}
  B -->|yes| C[CFP: freeze eligibility, reply-by, proposal schema, selection rule]
  B -->|no| D{One known party is asked to act?}
  D -->|yes| E[REQUEST: define refusal, completion evidence, and deadline]
  D -->|no| F{Ongoing observations wanted?}
  F -->|yes| G[SUBSCRIBE: define update scope, cancellation, and stale-data handling]
  F -->|no| H[Use an application-defined exchange and document its semantics]
  C --> I[Bind conversation ID, ontology/content language, and correlation]
  E --> I
  G --> I
```

A performative classifies a message in a conversation. It does not authenticate a sender, prove a proposition, transfer a capability, or make an external action happen. Admit identity, validate content, and authorize effects independently.

## A worked local policy: selecting a document converter

The following is an **application policy**, not a FIPA or JADE default. A requester sends a CFP with immutable `conversationId`, input digest, allowed output format, reply-by time, and evaluation fields. It records every `PROPOSE` and `REFUSE` received before the reply-by time, selects at most one proposal with a declared local comparator, sends `ACCEPT-PROPOSAL` to that proposal and `REJECT-PROPOSAL` to the other recorded proposals. The selected party later emits either `INFORM` containing an output reference or `FAILURE` containing an attempted-stage record. The requester checks the output independently before using it.

```mermaid
sequenceDiagram
  participant R as requester
  participant A as candidateA
  participant B as candidateB
  R->>A: CFP request digest reply-by and proposal schema
  R->>B: CFP request digest reply-by and proposal schema
  A-->>R: proposal with declared terms
  B-->>R: refusal with reason
  R->>A: accept proposal
  Note over R,B: B refused, so it receives no rejection
  A-->>R: later report or reported failure
  R->>R: independently validate output and record disposition
```

A Java-like sketch preserves the source bundle’s separation between proposal collection, local evaluation, and completion. It is deliberately not a copy-paste release contract; verify constructors, callbacks, and templates against the selected JADE release.

```java
// Illustrative Java-like behavior sketch; local policy owns time and ranking.
void onCfpClosed(List<ACLMessage> replies, String conversationId) {
  List<ACLMessage> proposals = replies.stream()
      .filter(m -> m.getPerformative() == ACLMessage.PROPOSE)
      .filter(m -> conversationId.equals(m.getConversationId()))
      .toList();
  Optional<ACLMessage> chosen = chooseUnderLocalPolicy(proposals);
  for (ACLMessage p : proposals) send(replyTo(p, p == chosen.orElse(null)
      ? ACLMessage.ACCEPT_PROPOSAL : ACLMessage.REJECT_PROPOSAL));
  if (chosen.isEmpty()) recordNoSelection(conversationId, replies);
}
```

## Content and behavior boundaries

Use an ontology/content-language agreement when independently built parties must share a meaning for fields such as `inputDigest`, `format`, or `declaredTerms`. A matching JSON field name or a successful Java decode is only syntactic interoperability. Version each schema, reject messages outside the agreed version, and retain the original bytes/digest so the application can explain what it accepted.

JADE behavior composition remains useful as a local implementation technique: a short setup behavior may register a service description; a conversation behavior may wait for matching messages; a final behavior may record a disposition. Do not infer that a Directory Facilitator result proves suitability, availability, authorization, or delivery. It is discovery input.

Within one agent, JADE schedules ready behaviours cooperatively and non-preemptively: `action()` returns to yield, and a waiting behaviour calls `block()` then returns. Persist the phase and correlation data in fields or a `DataStore`; a Java call stack is not preserved across scheduler turns. Use `SequentialBehaviour` for ordered local steps, `ParallelBehaviour` with `WHEN_ALL` or `WHEN_ANY` only for completion semantics, and `FSMBehaviour` when refusal, no-selection, report, and validation need explicit transitions. None turns remote work into CPU-parallel work.

For a dynamic candidate list, `DFService.search`, `register`, `modify`, and `deregister` are convenient but block the caller until completion or exception. Keep that work out of a latency-sensitive behaviour, or use the asynchronous DF request/subscription path (`AchieveREInitiator` or `SubscriptionInitiator`) with a documented update policy. A `MessageTemplate` selects queued ACL messages by header predicates; include `conversation-id`, protocol, performative, and a `reply-with`/`in-reply-to` pair as appropriate, then validate sender role and content separately.

## Failure dispositions

| Observation | Conversation disposition | What remains unproved |
| --- | --- | --- |
| `REFUSE` before selection | Candidate declined this request | Cause, future availability, and truth of a supplied reason |
| no response by the declared reply-by | Reply missing for this local window | Network state or remote execution state |
| `FAILURE` after acceptance | Candidate reports an unsuccessful attempt | The report’s accuracy and any external rollback |
| `INFORM` with output reference | Candidate reports completion | Output integrity, fitness, and any downstream effect |

Do not label an absent response “Byzantine,” choose arbitrary global thresholds, promise persistent delivery, or automatically blacklist/retry. Those are separate threat-model and operations decisions.

## Quality gates

- [ ] The chosen protocol has a written message grammar, correlation identifier, and local terminal condition.
- [ ] CFP policy freezes who may be considered, reply-by interpretation, proposal fields, and selection comparator before proposals are evaluated.
- [ ] Request, refusal, missing-response, reported failure, and reported completion have distinct recorded dispositions.
- [ ] Content validation and independently authorized external effects occur outside performative handling.
- [ ] Any JADE API use is checked against a named release’s official documentation.
- [ ] Time, retries, caches, queueing, and discovery behavior are measured local policies with explicit assumptions.

## Read next

- [Conversation contract and JADE mapping](references/conversation-contract-and-jade-mapping.md)
- [Behavior composition and message correlation](references/behavior-composition-and-correlation.md)
- [Source access and implementation boundary](references/source-access-and-implementation-boundary.md)
- [CFP lifecycle diagram](diagrams/01_cfp-lifecycle.md)
- [Implementation boundary diagram](diagrams/02_implementation-boundary.md)

## Bundle navigation

[diagrams index](diagrams/INDEX.md).

Files in this skill

  • CHANGELOG.md217 B
  • SKILL.md12.3 KB
  • _book_identity.json3.3 KB
  • _raw_response.md90.9 KB
  • diagrams/01_sequenceDiagram_fipa_protocol_interaction_patt.md1.7 KB
  • diagrams/02_stateDiagram-v2_agent_behavior_state_machine_c.md1.4 KB
  • diagrams/03_flowchart_decision_tree-_which_jade_coor.md2.4 KB
  • diagrams/INDEX.md914 B
  • references/INDEX.md1009 B
  • references/coordination-without-bottlenecks.md14.4 KB
  • references/failure-resilient-distributed-coordination.md20.1 KB
  • references/hierarchical-task-decomposition-patterns.md20.7 KB
  • references/semantic-grounding-for-skill-composition.md19.9 KB
  • references/split-container-architecture-for-heterogeneous-environments.md12.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…