fix(agent): avoid costly schema and proposal probes
This commit is contained in:
1 parent
f3c5417b8b
commit
3b1b40f8b3
5 files changed
+16
-14
No files matched your search
@@ -23,7 +23,7 @@ Choose a focused skill; load only its applicable protocol and pipeline files:
|
|||||||
|
|
||||||
## Availability and reporting
|
## Availability and reporting
|
||||||
|
|
||||||
Check the installed manifest and compare the discovered MCP names and input schemas with `contracts/service-v1.json`. This pack is bound to the local GEWU v1 contract, but native host workflows are NOT RUN. Do not invent commands or assume another host's custom tools exist. If required tools are unavailable or differ from the pinned contract, stop before mutation and identify the blocked stage; prepare local drafts only when requested and label them unaccepted.
|
Check the installed manifest and confirm required MCP tool names against `contracts/service-v1.json`; use the schema advertised for each discovered tool and inspect only a relevant pinned entry when necessary. Do not read every record schema during routine work. Use the host's native file listing and viewing tools for workspace inventory and pack instructions; do not invoke shell commands just to list files. This pack is bound to the local GEWU v1 contract, but native host workflows are NOT RUN. Do not invent commands or assume another host's custom tools exist. If required tools are unavailable or differ from the pinned contract, stop before mutation and identify the blocked stage; prepare local drafts only when requested and label them unaccepted.
|
||||||
|
|
||||||
Knowledge changes go through typed MCP proposals. Local artifacts under `Drafts/` and `Runs/` support work but are not accepted knowledge. Only a service acceptance receipt establishes acceptance. Keep credentials and source bodies out of status summaries; do not claim a cloud-backed host keeps all content local.
|
Knowledge changes go through typed MCP proposals. Local artifacts under `Drafts/` and `Runs/` support work but are not accepted knowledge. Only a service acceptance receipt establishes acceptance. Keep credentials and source bodies out of status summaries; do not claim a cloud-backed host keeps all content local.
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# GEWU local research-agent pack
|
# GEWU local research-agent pack
|
||||||
|
|
||||||
Version 0.19.0. Adds proposal grouping by semantic learning, with source registration dependencies preserved across bundles. Includes explicit shared-scope requirements, agent-side duplicate checks, compact extraction reads and per-source budget checkpoints. Disposable service/evidence and Jev label probes passed; Antigravity authenticated and captured the packet, but a complete client proposal run stopped at the provider quota.
|
Version 0.20.0. Adds proposal grouping by semantic learning and guards against placeholder proposal probes and unnecessary schema reads. Includes explicit shared-scope requirements, agent-side duplicate checks, compact extraction reads and per-source budget checkpoints. Disposable service/evidence and Jev label probes passed. Antigravity Flash Low authenticated and captured/extracted one PDF, but the client did not complete a valid learning proposal during the bounded pilot.
|
||||||
|
|
||||||
This pack contains the [agent profile](AGENTS.md), Claude harness pointer ([CLAUDE.md](CLAUDE.md)), shared protocols, four skills and separate pipeline procedures. An existing local host supplies the model and tools. There is no standalone agent engine here.
|
This pack contains the [agent profile](AGENTS.md), Claude harness pointer ([CLAUDE.md](CLAUDE.md)), shared protocols, four skills and separate pipeline procedures. An existing local host supplies the model and tools. There is no standalone agent engine here.
|
||||||
|
|
||||||
|
|||||||
+11
-11
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"pack_id": "gewu-research",
|
"pack_id": "gewu-research",
|
||||||
"pack_version": "0.19.0",
|
"pack_version": "0.20.0",
|
||||||
"manifest_version": "1.0.0",
|
"manifest_version": "1.0.0",
|
||||||
"status": "local-contract-and-checkpoint-bound-hosts-not-qualified",
|
"status": "local-contract-and-checkpoint-bound-hosts-not-qualified",
|
||||||
"execution": "existing-local-agent-host",
|
"execution": "existing-local-agent-host",
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
"skills": [
|
"skills": [
|
||||||
{
|
{
|
||||||
"id": "kb-ingest",
|
"id": "kb-ingest",
|
||||||
"version": "0.4.0",
|
"version": "0.5.0",
|
||||||
"entry": "skills/kb-ingest/SKILL.md",
|
"entry": "skills/kb-ingest/SKILL.md",
|
||||||
"pipeline": "pipelines/ingest.md",
|
"pipeline": "pipelines/ingest.md",
|
||||||
"pipeline_version": "0.4.0"
|
"pipeline_version": "0.4.0"
|
||||||
@@ -74,7 +74,7 @@
|
|||||||
"gewu.protocol.evidence@0.1.0",
|
"gewu.protocol.evidence@0.1.0",
|
||||||
"gewu.protocol.scope@0.1.0",
|
"gewu.protocol.scope@0.1.0",
|
||||||
"gewu.protocol.contributions@0.3.0",
|
"gewu.protocol.contributions@0.3.0",
|
||||||
"gewu.skill.kb-ingest@0.4.0",
|
"gewu.skill.kb-ingest@0.5.0",
|
||||||
"gewu.skill.kb-query@0.1.0",
|
"gewu.skill.kb-query@0.1.0",
|
||||||
"gewu.skill.kb-curate@0.1.0",
|
"gewu.skill.kb-curate@0.1.0",
|
||||||
"gewu.skill.kb-synthesize@0.2.0"
|
"gewu.skill.kb-synthesize@0.2.0"
|
||||||
@@ -94,7 +94,7 @@
|
|||||||
"compatible_checkpoint_contracts": [
|
"compatible_checkpoint_contracts": [
|
||||||
"gewu.local-checkpoint@0.1.0"
|
"gewu.local-checkpoint@0.1.0"
|
||||||
],
|
],
|
||||||
"sha256": "b91fe559d5023e4fca71177f8bfe8d25eda067ed7db12692542237fabbe239a7",
|
"sha256": "5eaa17b8001004b31f3aa321ba83969d048329670320e8ca9fcd5fae3ddea3ee",
|
||||||
"hash_encoding": "utf8-no-bom-lf"
|
"hash_encoding": "utf8-no-bom-lf"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -137,7 +137,7 @@
|
|||||||
"module_id": "contributions",
|
"module_id": "contributions",
|
||||||
"kind": "protocol",
|
"kind": "protocol",
|
||||||
"entry": "protocols/CONTRIBUTIONS.md",
|
"entry": "protocols/CONTRIBUTIONS.md",
|
||||||
"implementation_version": "0.3.0",
|
"implementation_version": "0.4.0",
|
||||||
"provided_contract": {
|
"provided_contract": {
|
||||||
"id": "gewu.protocol.contributions",
|
"id": "gewu.protocol.contributions",
|
||||||
"version": "0.3.0"
|
"version": "0.3.0"
|
||||||
@@ -159,17 +159,17 @@
|
|||||||
"compatible_checkpoint_contracts": [
|
"compatible_checkpoint_contracts": [
|
||||||
"gewu.local-checkpoint@0.1.0"
|
"gewu.local-checkpoint@0.1.0"
|
||||||
],
|
],
|
||||||
"sha256": "8dcd38e78dc79ec93097b17c4c54a68f3e0cc407535a7afa1c63a1369e21107f",
|
"sha256": "5dbaa46ab7a4f46c682465da5308fd2bff3106d4d2319796cf5d9893ac715598",
|
||||||
"hash_encoding": "utf8-no-bom-lf"
|
"hash_encoding": "utf8-no-bom-lf"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"module_id": "kb-ingest",
|
"module_id": "kb-ingest",
|
||||||
"kind": "skill",
|
"kind": "skill",
|
||||||
"entry": "skills/kb-ingest/SKILL.md",
|
"entry": "skills/kb-ingest/SKILL.md",
|
||||||
"implementation_version": "0.7.0",
|
"implementation_version": "0.8.0",
|
||||||
"provided_contract": {
|
"provided_contract": {
|
||||||
"id": "gewu.skill.kb-ingest",
|
"id": "gewu.skill.kb-ingest",
|
||||||
"version": "0.5.0"
|
"version": "0.6.0"
|
||||||
},
|
},
|
||||||
"requires_contracts": [
|
"requires_contracts": [
|
||||||
"gewu.protocol.evidence@0.1.0",
|
"gewu.protocol.evidence@0.1.0",
|
||||||
@@ -190,7 +190,7 @@
|
|||||||
"compatible_checkpoint_contracts": [
|
"compatible_checkpoint_contracts": [
|
||||||
"gewu.local-checkpoint@0.1.0"
|
"gewu.local-checkpoint@0.1.0"
|
||||||
],
|
],
|
||||||
"sha256": "2ce5a1ff710389761bf48a1a0cd48965c477a2a8705cb1cd0dd710324380e941",
|
"sha256": "aebea590e8a7ad3ff520ba3c22c690a8d6d5aac1a32d883d55eb339e2904de9c",
|
||||||
"hash_encoding": "utf8-no-bom-lf"
|
"hash_encoding": "utf8-no-bom-lf"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -397,7 +397,7 @@
|
|||||||
"compatible_checkpoint_contracts": [
|
"compatible_checkpoint_contracts": [
|
||||||
"gewu.local-checkpoint@0.1.0"
|
"gewu.local-checkpoint@0.1.0"
|
||||||
],
|
],
|
||||||
"sha256": "a8f06d35a0e839be9d6c4582b6a3d50cd6588f9a9c8bac291969fac5d4290178",
|
"sha256": "2b75652c7bb4181af98b6a2738c30152949d442e020357f2042ed1c759b1a671",
|
||||||
"hash_encoding": "utf8-no-bom-lf"
|
"hash_encoding": "utf8-no-bom-lf"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -516,6 +516,6 @@
|
|||||||
"snapshot": {
|
"snapshot": {
|
||||||
"algorithm": "sha256",
|
"algorithm": "sha256",
|
||||||
"scope": "modules array serialized as UTF-8 JSON with sorted keys and compact separators",
|
"scope": "modules array serialized as UTF-8 JSON with sorted keys and compact separators",
|
||||||
"digest": "0ad378e98a149fbb49aca24edd06a5fecf07679fd488d0556ffd6c7f31951b02"
|
"digest": "426a8285bdc9a82e8e937f52338c7aca06306f94883fe1e717bfb62acc740034"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# Contributions and run recovery
|
# Contributions and run recovery
|
||||||
|
|
||||||
Before a connected workflow, call `diagnostics` and compare the discovered MCP tool names and input schemas with `contracts/service-v1.json`; its catalog digest and record-schema hashes pin the local GEWU v1 contract. Diagnostics reports the authenticated role, authorized projects/capabilities, explicit selected scope, source-transfer limits, service/catalog versions and canonical/index revisions without returning credentials or principal IDs. `connection_status=authenticated` proves only this call; `workflow_status=not_verified` means native workflow acceptance remains separate. The MCP tool inventory must match exactly. If tools are absent or schemas differ, stop before mutation and report the drift. `proposal_evaluate` is the deterministic preflight; the service's `proposal_submit` response remains authoritative. Owner decisions use a separate owner transport and are not available to agents. Runs are agent-owned, explicitly scoped service records; they do not schedule work or grant capability.
|
Before a connected workflow, call `diagnostics` and verify that the required MCP tool names are present in the pinned `contracts/service-v1.json` inventory. Use each tool's schema advertised by MCP discovery for its arguments; consult only the relevant pinned contract entry if that schema is missing or differs. Do not read every record schema or the full contract during routine ingestion. Diagnostics reports the authenticated role, authorized projects/capabilities, explicit selected scope, source-transfer limits, service/catalog versions and canonical/index revisions without returning credentials or principal IDs. `connection_status=authenticated` proves only this call; `workflow_status=not_verified` means native workflow acceptance remains separate. If a required tool is absent or its input schema differs, stop before mutation and report the drift. `proposal_evaluate` is the deterministic preflight for one complete, real proposal. Never probe it with a placeholder payload, zero digest or guessed identity; never call `proposal_status` with a fabricated proposal ID. The service's `proposal_submit` response remains authoritative. Owner decisions use a separate owner transport and are not available to agents. Runs are agent-owned, explicitly scoped service records; they do not schedule work or grant capability.
|
||||||
|
|
||||||
## Build attributable proposals
|
## Build attributable proposals
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ Extract useful atomic assertions, problems, techniques or cases with their condi
|
|||||||
|
|
||||||
Before building each proposal, use the principal ID assigned to the configured agent credential for `proposer_id`, node `agent_id` and assessment `assessor_id`; do not use the model or harness name. Finish each claim and its evidence before computing `assertion_digest` or `evidence_digests`. Evidence assertion paths must point to their exact claim field. Recompute the evidence and assessment digests after any claim/evidence edit, then recompute `payload_digest` after any operation edit. Follow the exact canonical digest rules in [CONTRIBUTIONS.md](../../protocols/CONTRIBUTIONS.md#build-attributable-proposals) and [EVIDENCE.md](../../protocols/EVIDENCE.md). If the identity or digest inputs are unknown, stop and report the missing information rather than guessing.
|
Before building each proposal, use the principal ID assigned to the configured agent credential for `proposer_id`, node `agent_id` and assessment `assessor_id`; do not use the model or harness name. Finish each claim and its evidence before computing `assertion_digest` or `evidence_digests`. Evidence assertion paths must point to their exact claim field. Recompute the evidence and assessment digests after any claim/evidence edit, then recompute `payload_digest` after any operation edit. Follow the exact canonical digest rules in [CONTRIBUTIONS.md](../../protocols/CONTRIBUTIONS.md#build-attributable-proposals) and [EVIDENCE.md](../../protocols/EVIDENCE.md). If the identity or digest inputs are unknown, stop and report the missing information rather than guessing.
|
||||||
|
|
||||||
|
Use the input schema advertised for each MCP tool. If a call rejects its arguments, inspect only that tool's advertised/pinned schema, correct the arguments and retry once; do not probe unrelated tools or read the entire schema directory. Do not test proposal tools with invented IDs, placeholder identities, zero digests or incomplete payloads. Evaluate only the complete proposal for this learning unit; use `proposal_status` only for its real proposal ID and revision.
|
||||||
|
|
||||||
For `tags`, `audience`, `use_for` and `domain`, inspect the `facet_labels` catalog returned by `get_project_context`. Reuse a canonical project label when its meaning fits; do not create spelling, phrasing or singular/plural variants. Propose only useful, evidence-backed labels, with at most five tags and three labels in each other facet (14 total). Prefer `candidate_facet_labels` entries shaped as `{facet, value, definition}` so a genuinely new concept has a concise, distinguishing definition (500 characters max). Legacy `candidate_tags`, `candidate_audience`, `candidate_use_for` and `candidate_domain` fields remain valid for labels that do not need a definition. Leave uncertain labels out. Jev compares agent-proposed candidates with the closest project labels and chooses an existing label or the `new_label` option; it does not invent the proposed label text. The backend may add only a distinct new candidate that Jev ranks in that facet's configured top N (tags: up to five; other facets: up to three) and that clears its fit, new-label and confidence thresholds. An existing-label match is reused rather than duplicated. For the associated proposal, use Jev's selected canonical existing label for that facet. Use a new candidate as a project vocabulary label only when `added_to_project` is true; otherwise omit it from the proposal facets and leave its evidence-backed finding intact. Treat returned `jev_facet_resolutions` as the recorded decision; never claim a label was added unless `added_to_project` is true. Label promotion requires the server's local embedding model and Jev configuration; without them the candidate remains only a review signal. Label decisions only normalize facets; they do not gate evidence assessment, proposal submission or acceptance.
|
For `tags`, `audience`, `use_for` and `domain`, inspect the `facet_labels` catalog returned by `get_project_context`. Reuse a canonical project label when its meaning fits; do not create spelling, phrasing or singular/plural variants. Propose only useful, evidence-backed labels, with at most five tags and three labels in each other facet (14 total). Prefer `candidate_facet_labels` entries shaped as `{facet, value, definition}` so a genuinely new concept has a concise, distinguishing definition (500 characters max). Legacy `candidate_tags`, `candidate_audience`, `candidate_use_for` and `candidate_domain` fields remain valid for labels that do not need a definition. Leave uncertain labels out. Jev compares agent-proposed candidates with the closest project labels and chooses an existing label or the `new_label` option; it does not invent the proposed label text. The backend may add only a distinct new candidate that Jev ranks in that facet's configured top N (tags: up to five; other facets: up to three) and that clears its fit, new-label and confidence thresholds. An existing-label match is reused rather than duplicated. For the associated proposal, use Jev's selected canonical existing label for that facet. Use a new candidate as a project vocabulary label only when `added_to_project` is true; otherwise omit it from the proposal facets and leave its evidence-backed finding intact. Treat returned `jev_facet_resolutions` as the recorded decision; never claim a label was added unless `added_to_project` is true. Label promotion requires the server's local embedding model and Jev configuration; without them the candidate remains only a review signal. Label decisions only normalize facets; they do not gate evidence assessment, proposal submission or acceptance.
|
||||||
|
|
||||||
If available, Jev also assesses relevance and lens in the same advisory call. Use the saved scores to focus human review; they are not evidence assessment or an instruction to silently rewrite accepted knowledge. When a reviewer decides, record the feedback and apply reusable project guidance only when the reviewer explicitly opts in. Preserve the service's exact source/extraction/location bindings. Map each factual field to evidence; assess semantic support separately. Record clear exclusions and genuinely skipped/deferred sections. Optimize for useful coverage rather than maximum note count.
|
If available, Jev also assesses relevance and lens in the same advisory call. Use the saved scores to focus human review; they are not evidence assessment or an instruction to silently rewrite accepted knowledge. When a reviewer decides, record the feedback and apply reusable project guidance only when the reviewer explicitly opts in. Preserve the service's exact source/extraction/location bindings. Map each factual field to evidence; assess semantic support separately. Record clear exclusions and genuinely skipped/deferred sections. Optimize for useful coverage rather than maximum note count.
|
||||||
|
|||||||
Reference in new issue
Block a user