agentera 3.0.0-dev.21 → 3.0.0-dev.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -3
- package/bundle/.cursor/agents/agentera.md +1 -1
- package/bundle/.opencode/agents/agentera.md +1 -1
- package/bundle/CHANGELOG.md +11 -0
- package/bundle/references/analysis/evidence-tier-authority.yaml +516 -0
- package/bundle/references/artifacts/state-storage-authority.yaml +109 -3
- package/bundle/references/artifacts/verbosity-budget-authority.yaml +42 -0
- package/bundle/references/cli/agent-ready-state-contract.yaml +22 -14
- package/bundle/references/cli/prime-consumer-compatibility.yaml +676 -0
- package/bundle/references/cli/vocabulary-index.yaml +3 -3
- package/bundle/references/cli/vocabulary.md +10 -3
- package/bundle/skills/agentera/SKILL.md +7 -6
- package/bundle/skills/agentera/agents/audit.toml +1 -1
- package/bundle/skills/agentera/agents/build.toml +1 -1
- package/bundle/skills/agentera/agents/design.toml +1 -1
- package/bundle/skills/agentera/agents/discuss.toml +1 -1
- package/bundle/skills/agentera/agents/document.toml +1 -1
- package/bundle/skills/agentera/agents/optimize.toml +1 -1
- package/bundle/skills/agentera/agents/orchestrate.toml +1 -1
- package/bundle/skills/agentera/agents/plan.toml +1 -1
- package/bundle/skills/agentera/agents/profile.toml +1 -1
- package/bundle/skills/agentera/agents/research.toml +1 -1
- package/bundle/skills/agentera/agents/status.toml +1 -1
- package/bundle/skills/agentera/agents/vision.toml +1 -1
- package/bundle/skills/agentera/capabilities/profile/schemas/validation.yaml +31 -3
- package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +1 -0
- package/bundle/skills/agentera/schemas/artifacts/design.yaml +1 -0
- package/bundle/skills/agentera/schemas/artifacts/todo.yaml +1 -0
- package/dist/analytics/extractCorpus/cli.js +33 -5
- package/dist/analytics/extractCorpus/cli.js.map +1 -1
- package/dist/analytics/extractCorpus/evidenceTiers.js +561 -0
- package/dist/analytics/extractCorpus/evidenceTiers.js.map +1 -0
- package/dist/analytics/extractCorpus/extractCorpusParity.js +1 -0
- package/dist/analytics/extractCorpus/extractCorpusParity.js.map +1 -1
- package/dist/analytics/extractCorpus/index.js +3 -0
- package/dist/analytics/extractCorpus/index.js.map +1 -1
- package/dist/analytics/extractCorpus/tierReader.js +109 -0
- package/dist/analytics/extractCorpus/tierReader.js.map +1 -0
- package/dist/analytics/profileSignals.js +212 -0
- package/dist/analytics/profileSignals.js.map +1 -0
- package/dist/analytics/usageStats.js +104 -20
- package/dist/analytics/usageStats.js.map +1 -1
- package/dist/capabilities/index.js +2 -1
- package/dist/capabilities/index.js.map +1 -1
- package/dist/capabilities/profile/instructions.js +1 -1
- package/dist/capabilities/profile/instructions.js.map +1 -1
- package/dist/capabilities/status/startupInstructions.js +35 -0
- package/dist/capabilities/status/startupInstructions.js.map +1 -0
- package/dist/cli/capabilityContext/build.js +3 -3
- package/dist/cli/capabilityContext/build.js.map +1 -1
- package/dist/cli/capabilityContext/closeout.js +5 -5
- package/dist/cli/capabilityContext/closeout.js.map +1 -1
- package/dist/cli/capabilityContext/contract.js +4 -4
- package/dist/cli/capabilityContext/contract.js.map +1 -1
- package/dist/cli/capabilityContext/evidence.js +4 -4
- package/dist/cli/capabilityContext/evidence.js.map +1 -1
- package/dist/cli/capabilityContext/planState.js +7 -6
- package/dist/cli/capabilityContext/planState.js.map +1 -1
- package/dist/cli/capabilityContext/shared.js +1 -1
- package/dist/cli/capabilityContext/shared.js.map +1 -1
- package/dist/cli/capabilityContext/startup.js +4 -4
- package/dist/cli/capabilityContext/startup.js.map +1 -1
- package/dist/cli/commands/lint.js +10 -2
- package/dist/cli/commands/lint.js.map +1 -1
- package/dist/cli/commands/prime/briefOrientation.js +582 -0
- package/dist/cli/commands/prime/briefOrientation.js.map +1 -0
- package/dist/cli/commands/prime/collectOrientationState.js +3 -0
- package/dist/cli/commands/prime/collectOrientationState.js.map +1 -1
- package/dist/cli/commands/prime/orientationOutput.js +117 -23
- package/dist/cli/commands/prime/orientationOutput.js.map +1 -1
- package/dist/cli/commands/prime.js +30 -3
- package/dist/cli/commands/prime.js.map +1 -1
- package/dist/cli/commands/report.js +55 -15
- package/dist/cli/commands/report.js.map +1 -1
- package/dist/cli/commands/schema.js +3 -29
- package/dist/cli/commands/schema.js.map +1 -1
- package/dist/cli/commands/state/plan.js +3 -2
- package/dist/cli/commands/state/plan.js.map +1 -1
- package/dist/cli/help.js +1 -1
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/orientation/corpusCoverage.js +32 -0
- package/dist/cli/orientation/corpusCoverage.js.map +1 -1
- package/dist/cli/orientation.js +3 -3
- package/dist/cli/orientation.js.map +1 -1
- package/dist/cli/startupCompletenessContract.js +3 -3
- package/dist/cli/startupCompletenessContract.js.map +1 -1
- package/dist/cli/stateQuery.js +37 -0
- package/dist/cli/stateQuery.js.map +1 -1
- package/dist/registries/evidenceTierContract.js +362 -0
- package/dist/registries/evidenceTierContract.js.map +1 -0
- package/dist/registries/verbosityBudgetContract.js +206 -0
- package/dist/registries/verbosityBudgetContract.js.map +1 -0
- package/dist/state/decisionLegacyValidation.js +185 -0
- package/dist/state/decisionLegacyValidation.js.map +1 -0
- package/dist/state/decisionOverlay.js +24 -1
- package/dist/state/decisionOverlay.js.map +1 -1
- package/dist/state/decisionRevision.js +622 -0
- package/dist/state/decisionRevision.js.map +1 -0
- package/dist/state/decisionRevisionPublication.js +532 -0
- package/dist/state/decisionRevisionPublication.js.map +1 -0
- package/dist/state/directRetrieval.js +55 -4
- package/dist/state/directRetrieval.js.map +1 -1
- package/dist/state/listRetrieval.js +42 -11
- package/dist/state/listRetrieval.js.map +1 -1
- package/dist/state/startupAnalysis/benchmark.js +70 -8
- package/dist/state/startupAnalysis/benchmark.js.map +1 -1
- package/dist/state/startupAnalysis/threshold.js +13 -0
- package/dist/state/startupAnalysis/threshold.js.map +1 -1
- package/dist/state/startupProjection.js +68 -1
- package/dist/state/startupProjection.js.map +1 -1
- package/dist/state/write/candidateMutation.js +331 -0
- package/dist/state/write/candidateMutation.js.map +1 -0
- package/dist/state/write/explain.js +36 -12
- package/dist/state/write/explain.js.map +1 -1
- package/dist/state/write/helpers.js +22 -0
- package/dist/state/write/helpers.js.map +1 -1
- package/dist/state/write/mutation.js +42 -0
- package/dist/state/write/mutation.js.map +1 -1
- package/dist/state/write/operations.js +49 -1
- package/dist/state/write/operations.js.map +1 -1
- package/dist/state/write/transaction.js +23 -357
- package/dist/state/write/transaction.js.map +1 -1
- package/dist/validate/lifecycleAdapters/lifecycleMain.js +154 -0
- package/dist/validate/lifecycleAdapters/lifecycleMain.js.map +1 -0
- package/dist/validate/lifecycleAdapters.js +5 -156
- package/dist/validate/lifecycleAdapters.js.map +1 -1
- package/dist/validate/selfAudit.js +38 -43
- package/dist/validate/selfAudit.js.map +1 -1
- package/package.json +2 -2
|
@@ -41,9 +41,9 @@ normalization_rules:
|
|
|
41
41
|
- rule: The CLI source and rendered dashboard are different.
|
|
42
42
|
use: agentera prime source data, status dashboard rendered briefing
|
|
43
43
|
avoid: Treating raw CLI labels as the user-facing dashboard.
|
|
44
|
-
- rule: Routine state uses
|
|
45
|
-
use: agentera plan, agentera docs, agentera health
|
|
46
|
-
avoid: agentera
|
|
44
|
+
- rule: Routine state uses the state namespace.
|
|
45
|
+
use: agentera state plan, agentera state docs, agentera state health
|
|
46
|
+
avoid: agentera plan, agentera docs, or agentera health as routine state commands.
|
|
47
47
|
- rule: query is advanced access.
|
|
48
48
|
use: agentera query --list-artifacts, agentera query <artifact>
|
|
49
49
|
avoid: Calling it the normal state interface.
|
|
@@ -99,11 +99,11 @@ enforcement boundary promoted to `true` in D65.
|
|
|
99
99
|
|
|
100
100
|
Use this prose as guidance only: the default is that the first capability
|
|
101
101
|
invocation shells out to `agentera prime --context <name> --format json` and
|
|
102
|
-
reads the returned `
|
|
103
|
-
`schemas/` files only, the
|
|
102
|
+
reads the returned `instructions` field. Today, capability directories carry
|
|
103
|
+
the `schemas/` files only, the instructions module lives at
|
|
104
104
|
`packages/cli/src/capabilities/<name>/instructions.ts`, runtime descriptors
|
|
105
105
|
invoke the prime command, and the `agentera prime --context <name> --format
|
|
106
|
-
json` response emits `capability_context.
|
|
106
|
+
json` response emits `capability_context.instructions` plus
|
|
107
107
|
`first_invocation_read` metadata.
|
|
108
108
|
|
|
109
109
|
Do not replace this with a parallel Markdown table of read modes or migration
|
|
@@ -112,6 +112,13 @@ human-facing boundary. The `prime_context` runtime enforcement is owned by the
|
|
|
112
112
|
CLI process; agent runtimes shell out to the prime command instead of reading
|
|
113
113
|
the prose module directly.
|
|
114
114
|
|
|
115
|
+
Status startup is the one-call exception to the general compact-data wording
|
|
116
|
+
above: `agentera prime --context status --format json` returns
|
|
117
|
+
`capability_context.instructions` and bounded
|
|
118
|
+
`capability_context.context.status_context` together. Consumers do not make a
|
|
119
|
+
second bare-prime call or read raw artifacts; omitted detail names its
|
|
120
|
+
authoritative recovery command.
|
|
121
|
+
|
|
115
122
|
## Invocation and routing grammar
|
|
116
123
|
|
|
117
124
|
| Term | Definition |
|
|
@@ -65,10 +65,10 @@ The CLI routes. The host agent follows.
|
|
|
65
65
|
|
|
66
66
|
| Request shape | Route |
|
|
67
67
|
|---|---|
|
|
68
|
-
| Bare `/agentera` | 1. Run `agentera prime --format json`
|
|
68
|
+
| Bare `/agentera` | 1. Run `agentera prime --context status --format json` once. 2. Read `capability_context.instructions` and `capability_context.context.status_context`. 3. Render the dashboard from that bounded state and follow `next_action` to suggest the next capability. |
|
|
69
69
|
| `/agentera <capability-name>` | Run `agentera prime --context <capability> --format json`. Follow the capability's instructions and contract. |
|
|
70
70
|
| `/agentera <capability-name> <topic>` | Same as above; pass `<topic>` as the user's instruction to the capability. |
|
|
71
|
-
| Natural language | Run `agentera prime --format json
|
|
71
|
+
| Natural language | Run `agentera prime --context status --format json` once. Read `capability_context.instructions` and `capability_context.context.status_context`; use `next_action.capability` to suggest the matching capability. If no high-confidence match, present a disambiguation prompt. |
|
|
72
72
|
|
|
73
73
|
Capability names are the routing identity: `status`, `vision`, `discuss`,
|
|
74
74
|
`research`, `plan`, `build`, `optimize`, `audit`, `document`, `profile`,
|
|
@@ -98,10 +98,11 @@ Capability handoffs use glyph plus canonical name (e.g. `⧉ build`, `≡ plan`)
|
|
|
98
98
|
|
|
99
99
|
The prime dashboard rendering contract — template, field-by-field rules, output
|
|
100
100
|
budget, attention-item ordering, exit marker — is owned by the status capability
|
|
101
|
-
instructions.
|
|
102
|
-
`
|
|
103
|
-
|
|
104
|
-
|
|
101
|
+
instructions. `agentera prime --context status --format json` returns the full
|
|
102
|
+
`capability_context.instructions` body and the bounded
|
|
103
|
+
`capability_context.context.status_context` state in one response. Render from
|
|
104
|
+
that capsule without a separate bare-prime call or raw artifact read; use the
|
|
105
|
+
named recovery command when the capsule marks detail as omitted.
|
|
105
106
|
Ask for confirmation before invoking a state-changing downstream capability.
|
|
106
107
|
|
|
107
108
|
The first response in a fresh interaction delivers the brief and a free-form
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
name = "audit"
|
|
3
3
|
description = "Codebase health audit."
|
|
4
4
|
developer_instructions = """
|
|
5
|
-
You are the Agentera audit capability subagent. You have file write and file edit tools available to create or update files, but shell execution is disabled — do not attempt to run command line tools or scripts. Run `agentera prime --context audit --format json` to fetch the authoritative instructions as a JSON capsule (the `
|
|
5
|
+
You are the Agentera audit capability subagent. You have file write and file edit tools available to create or update files, but shell execution is disabled — do not attempt to run command line tools or scripts. Run `agentera prime --context audit --format json` to fetch the authoritative instructions as a JSON capsule (the `capability_context.instructions` field carries the full Markdown body). Stay within the dispatched capability task, use the Agentera CLI state seam first, and preserve Agentera artifact safety rails.
|
|
6
6
|
"""
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
name = "build"
|
|
3
3
|
description = "Autonomous development execution."
|
|
4
4
|
developer_instructions = """
|
|
5
|
-
You are the Agentera build capability subagent. You have full file write, file edit, and shell execution tools available — use them to implement code changes, run tests, and commit results. Run `agentera prime --context build --format json` to fetch the authoritative instructions as a JSON capsule (the `
|
|
5
|
+
You are the Agentera build capability subagent. You have full file write, file edit, and shell execution tools available — use them to implement code changes, run tests, and commit results. Run `agentera prime --context build --format json` to fetch the authoritative instructions as a JSON capsule (the `capability_context.instructions` field carries the full Markdown body). Stay within the dispatched capability task, use the Agentera CLI state seam first, and preserve Agentera artifact safety rails.
|
|
6
6
|
"""
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
name = "design"
|
|
3
3
|
description = "Visual identity and design systems."
|
|
4
4
|
developer_instructions = """
|
|
5
|
-
You are the Agentera design capability subagent. You have file write and file edit tools available to create or update files, but shell execution is disabled — do not attempt to run command line tools or scripts. Run `agentera prime --context design --format json` to fetch the authoritative instructions as a JSON capsule (the `
|
|
5
|
+
You are the Agentera design capability subagent. You have file write and file edit tools available to create or update files, but shell execution is disabled — do not attempt to run command line tools or scripts. Run `agentera prime --context design --format json` to fetch the authoritative instructions as a JSON capsule (the `capability_context.instructions` field carries the full Markdown body). Stay within the dispatched capability task, use the Agentera CLI state seam first, and preserve Agentera artifact safety rails.
|
|
6
6
|
"""
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
name = "discuss"
|
|
3
3
|
description = "Structured deliberation and decision support."
|
|
4
4
|
developer_instructions = """
|
|
5
|
-
You are the Agentera discuss capability subagent. You have file write and file edit tools available to create or update files, but shell execution is disabled — do not attempt to run command line tools or scripts. Run `agentera prime --context discuss --format json` to fetch the authoritative instructions as a JSON capsule (the `
|
|
5
|
+
You are the Agentera discuss capability subagent. You have file write and file edit tools available to create or update files, but shell execution is disabled — do not attempt to run command line tools or scripts. Run `agentera prime --context discuss --format json` to fetch the authoritative instructions as a JSON capsule (the `capability_context.instructions` field carries the full Markdown body). Stay within the dispatched capability task, use the Agentera CLI state seam first, and preserve Agentera artifact safety rails.
|
|
6
6
|
"""
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
name = "document"
|
|
3
3
|
description = "Documentation updates and synchronization."
|
|
4
4
|
developer_instructions = """
|
|
5
|
-
You are the Agentera document capability subagent. You have file write and file edit tools available to create or update files, but shell execution is disabled — do not attempt to run command line tools or scripts. Run `agentera prime --context document --format json` to fetch the authoritative instructions as a JSON capsule (the `
|
|
5
|
+
You are the Agentera document capability subagent. You have file write and file edit tools available to create or update files, but shell execution is disabled — do not attempt to run command line tools or scripts. Run `agentera prime --context document --format json` to fetch the authoritative instructions as a JSON capsule (the `capability_context.instructions` field carries the full Markdown body). Stay within the dispatched capability task, use the Agentera CLI state seam first, and preserve Agentera artifact safety rails.
|
|
6
6
|
"""
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
name = "optimize"
|
|
3
3
|
description = "Metric-driven optimization cycles."
|
|
4
4
|
developer_instructions = """
|
|
5
|
-
You are the Agentera optimize capability subagent. You have full file write, file edit, and shell execution tools available — use them to implement code changes, run tests, and commit results. Run `agentera prime --context optimize --format json` to fetch the authoritative instructions as a JSON capsule (the `
|
|
5
|
+
You are the Agentera optimize capability subagent. You have full file write, file edit, and shell execution tools available — use them to implement code changes, run tests, and commit results. Run `agentera prime --context optimize --format json` to fetch the authoritative instructions as a JSON capsule (the `capability_context.instructions` field carries the full Markdown body). Stay within the dispatched capability task, use the Agentera CLI state seam first, and preserve Agentera artifact safety rails.
|
|
6
6
|
"""
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
name = "orchestrate"
|
|
3
3
|
description = "Multi-cycle orchestration over active plans."
|
|
4
4
|
developer_instructions = """
|
|
5
|
-
You are the Agentera orchestrate capability subagent. You have full file write, file edit, and shell execution tools available — use them to implement code changes, run tests, and commit results. Run `agentera prime --context orchestrate --format json` to fetch the authoritative instructions as a JSON capsule (the `
|
|
5
|
+
You are the Agentera orchestrate capability subagent. You have full file write, file edit, and shell execution tools available — use them to implement code changes, run tests, and commit results. Run `agentera prime --context orchestrate --format json` to fetch the authoritative instructions as a JSON capsule (the `capability_context.instructions` field carries the full Markdown body). Stay within the dispatched capability task, use the Agentera CLI state seam first, and preserve Agentera artifact safety rails.
|
|
6
6
|
"""
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
name = "plan"
|
|
3
3
|
description = "Planning with acceptance criteria."
|
|
4
4
|
developer_instructions = """
|
|
5
|
-
You are the Agentera plan capability subagent. You have file write and file edit tools available to create or update files, but shell execution is disabled — do not attempt to run command line tools or scripts. Run `agentera prime --context plan --format json` to fetch the authoritative instructions as a JSON capsule (the `
|
|
5
|
+
You are the Agentera plan capability subagent. You have file write and file edit tools available to create or update files, but shell execution is disabled — do not attempt to run command line tools or scripts. Run `agentera prime --context plan --format json` to fetch the authoritative instructions as a JSON capsule (the `capability_context.instructions` field carries the full Markdown body). Stay within the dispatched capability task, use the Agentera CLI state seam first, and preserve Agentera artifact safety rails.
|
|
6
6
|
"""
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
name = "profile"
|
|
3
3
|
description = "Decision profiling and preference memory."
|
|
4
4
|
developer_instructions = """
|
|
5
|
-
You are the Agentera profile capability subagent. You have full file write, file edit, and shell execution tools available — use them to implement code changes, run tests, and commit results. Run `agentera prime --context profile --format json` to fetch the authoritative instructions as a JSON capsule (the `
|
|
5
|
+
You are the Agentera profile capability subagent. You have full file write, file edit, and shell execution tools available — use them to implement code changes, run tests, and commit results. Run `agentera prime --context profile --format json` to fetch the authoritative instructions as a JSON capsule (the `capability_context.instructions` field carries the full Markdown body). Stay within the dispatched capability task, use the Agentera CLI state seam first, and preserve Agentera artifact safety rails.
|
|
6
6
|
"""
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
name = "research"
|
|
3
3
|
description = "External pattern research and synthesis."
|
|
4
4
|
developer_instructions = """
|
|
5
|
-
You are the Agentera research capability subagent. You are a read-only agent — do not write files or execute shell commands. Run `agentera prime --context research --format json` to fetch the authoritative instructions as a JSON capsule (the `instructions` field carries the full Markdown body). Stay within the dispatched capability task, use the Agentera CLI state seam first, and preserve Agentera artifact safety rails.
|
|
5
|
+
You are the Agentera research capability subagent. You are a read-only agent — do not write files or execute shell commands. Run `agentera prime --context research --format json` to fetch the authoritative instructions as a JSON capsule (the `capability_context.instructions` field carries the full Markdown body). Stay within the dispatched capability task, use the Agentera CLI state seam first, and preserve Agentera artifact safety rails.
|
|
6
6
|
"""
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
name = "status"
|
|
3
3
|
description = "Agentera orientation and routing dashboard."
|
|
4
4
|
developer_instructions = """
|
|
5
|
-
You are the Agentera status capability subagent. You are a read-only agent — do not write files or execute shell commands. Run `agentera prime --context status --format json` to fetch the authoritative instructions as a JSON capsule (the `
|
|
5
|
+
You are the Agentera status capability subagent. You are a read-only agent — do not write files or execute shell commands. Run `agentera prime --context status --format json` to fetch the authoritative instructions as a JSON capsule (the `capability_context.instructions` field carries the full Markdown body). Stay within the dispatched capability task, use the Agentera CLI state seam first, and preserve Agentera artifact safety rails.
|
|
6
6
|
"""
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
name = "vision"
|
|
3
3
|
description = "Define and refine project direction."
|
|
4
4
|
developer_instructions = """
|
|
5
|
-
You are the Agentera vision capability subagent. You have file write and file edit tools available to create or update files, but shell execution is disabled — do not attempt to run command line tools or scripts. Run `agentera prime --context vision --format json` to fetch the authoritative instructions as a JSON capsule (the `
|
|
5
|
+
You are the Agentera vision capability subagent. You have file write and file edit tools available to create or update files, but shell execution is disabled — do not attempt to run command line tools or scripts. Run `agentera prime --context vision --format json` to fetch the authoritative instructions as a JSON capsule (the `capability_context.instructions` field carries the full Markdown body). Stay within the dispatched capability task, use the Agentera CLI state seam first, and preserve Agentera artifact safety rails.
|
|
6
6
|
"""
|
|
@@ -5,11 +5,15 @@ VALIDATION:
|
|
|
5
5
|
description: >-
|
|
6
6
|
Every profile entry MUST be grounded in observed evidence from session
|
|
7
7
|
history, memory files, configs, or conversation data. Fabricated
|
|
8
|
-
decision patterns are never acceptable.
|
|
8
|
+
decision patterns are never acceptable. Synthesis reads the bounded
|
|
9
|
+
signal tier; a claim's source identity is verified by resolving its
|
|
10
|
+
evidence_anchor to a retained full-evidence shard rather than re-scanning
|
|
11
|
+
unbounded history.
|
|
9
12
|
severity: critical
|
|
10
13
|
checks:
|
|
11
14
|
- "Each profile entry traces to a source record"
|
|
12
15
|
- "No profile entry is fabricated without evidence"
|
|
16
|
+
- "Each claim's evidence_anchor resolves to a retained full-evidence shard"
|
|
13
17
|
2:
|
|
14
18
|
id: V2
|
|
15
19
|
rule: confidence_calibration
|
|
@@ -17,11 +21,13 @@ VALIDATION:
|
|
|
17
21
|
Confidence scores MUST match the evidence tier (protocol CS1-CS5).
|
|
18
22
|
A single data point is 30-49 (CS4), not 70+. Bias check: confidence
|
|
19
23
|
is earned through evidence, not assigned by how insightful the
|
|
20
|
-
decision sounds.
|
|
24
|
+
decision sounds. When bounded_signals.sufficiency is insufficient,
|
|
25
|
+
affected categories are capped to CS4 (30-49) or below.
|
|
21
26
|
severity: critical
|
|
22
27
|
checks:
|
|
23
28
|
- "Confidence values fall within protocol tier boundaries"
|
|
24
29
|
- "Single-source entries are capped at CS4 (30-49)"
|
|
30
|
+
- "Insufficient families cap affected categories to CS4 or below"
|
|
25
31
|
3:
|
|
26
32
|
id: V3
|
|
27
33
|
rule: tension_honesty
|
|
@@ -39,11 +45,17 @@ VALIDATION:
|
|
|
39
45
|
description: >-
|
|
40
46
|
Profile MUST NOT modify session history, memory files, or config
|
|
41
47
|
files. It reads these sources for extraction but never writes to them.
|
|
42
|
-
The only artifact profile produces is PROFILE.md.
|
|
48
|
+
The only artifact profile produces is PROFILE.md. Profile MUST NOT
|
|
49
|
+
load the monolithic corpus.json whole: synthesis reads the bounded
|
|
50
|
+
signal tier and retrieves full evidence one shard at a time via
|
|
51
|
+
evidence_anchor. Legacy/missing tiers require a refresh to publish
|
|
52
|
+
bounded tiers first, never a whole-corpus load.
|
|
43
53
|
severity: critical
|
|
44
54
|
checks:
|
|
45
55
|
- "No writes to session history files"
|
|
46
56
|
- "No writes to memory or config files"
|
|
57
|
+
- "Monolithic corpus.json is never loaded whole"
|
|
58
|
+
- "Full-evidence records are retrieved one shard at a time"
|
|
47
59
|
5:
|
|
48
60
|
id: V5
|
|
49
61
|
rule: prediction_accuracy
|
|
@@ -55,3 +67,19 @@ VALIDATION:
|
|
|
55
67
|
checks:
|
|
56
68
|
- "5 predictions tested against held-out prompts"
|
|
57
69
|
- "Accuracy below 3/5 is flagged in profile header"
|
|
70
|
+
6:
|
|
71
|
+
id: V6
|
|
72
|
+
rule: bounded_signal_sufficiency
|
|
73
|
+
description: >-
|
|
74
|
+
Profile synthesis MUST consume the bounded signal tier published by
|
|
75
|
+
extraction, not all full evidence. The sufficiency gate reports
|
|
76
|
+
underrepresented source families with their retained and intended
|
|
77
|
+
counts and surfaces the limitation in the profile output and exit
|
|
78
|
+
signal rather than silently reducing confidence. Sufficiency is
|
|
79
|
+
assessed per family against the contract minimum_family_retention
|
|
80
|
+
threshold; a family with zero intended signals is not a violation.
|
|
81
|
+
severity: warning
|
|
82
|
+
checks:
|
|
83
|
+
- "Signal tier state, count, and sufficiency are read before synthesizing"
|
|
84
|
+
- "Underrepresented families are surfaced with retained and intended counts"
|
|
85
|
+
- "No high-confidence claims are fabricated from sparse or missing evidence"
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
1
|
import os from "node:os";
|
|
3
2
|
import path from "node:path";
|
|
4
|
-
import { pyJsonIndent } from "../../core/pyjson.js";
|
|
5
3
|
import { defaultOutputPath, } from "./core.js";
|
|
4
|
+
import { defaultTiersDir, publishEvidenceTiers } from "./evidenceTiers.js";
|
|
6
5
|
import { buildCorpus } from "./corpus.js";
|
|
7
6
|
import { COVERAGE_EXIT_FLAGGED, corpusEnvelopeCoverage, formatCoverageSummaryText, runCoverageAudit, } from "./coverageAudit.js";
|
|
8
7
|
import { formatTruncationWarnings, resolveSqliteCaps } from "./sqliteCaps.js";
|
|
@@ -11,6 +10,7 @@ export function parseExtractArgs(argv, env = process.env, platform = process.pla
|
|
|
11
10
|
const home = env.HOME || (platform === "win32" ? env.USERPROFILE : undefined) || os.homedir();
|
|
12
11
|
const args = {
|
|
13
12
|
output: defaultOutputPath(env, platform),
|
|
13
|
+
tierOutput: null,
|
|
14
14
|
projectRoot: [],
|
|
15
15
|
codexSessionsDir: path.join(home, ".codex", "sessions"),
|
|
16
16
|
claudeProjectsDir: path.join(home, ".claude", "projects"),
|
|
@@ -38,8 +38,14 @@ export function parseExtractArgs(argv, env = process.env, platform = process.pla
|
|
|
38
38
|
return null;
|
|
39
39
|
};
|
|
40
40
|
let v;
|
|
41
|
+
// `--output` is a deprecated no-op for back-compat: it targeted the
|
|
42
|
+
// eliminated monolithic corpus.json write. Refresh now publishes bounded
|
|
43
|
+
// tiers via `--tier-output` (default: `defaultTiersDir`). `--output` is
|
|
44
|
+
// accepted to keep older callers from hard-crashing but has no effect.
|
|
41
45
|
if ((v = val("--output")) !== null)
|
|
42
46
|
args.output = v;
|
|
47
|
+
else if ((v = val("--tier-output")) !== null)
|
|
48
|
+
args.tierOutput = v;
|
|
43
49
|
else if ((v = val("--project-root")) !== null)
|
|
44
50
|
args.projectRoot.push(v);
|
|
45
51
|
else if ((v = val("--codex-sessions-dir")) !== null)
|
|
@@ -148,8 +154,6 @@ export function extractCorpusMain(argv, io = {}) {
|
|
|
148
154
|
coverage: corpusEnvelopeCoverage(audit),
|
|
149
155
|
sqliteCaps,
|
|
150
156
|
});
|
|
151
|
-
fs.mkdirSync(path.dirname(args.output), { recursive: true });
|
|
152
|
-
fs.writeFileSync(args.output, pyJsonIndent(corpus) + "\n", "utf-8");
|
|
153
157
|
const truncationWarning = formatTruncationWarnings(corpus.metadata.runtime_statuses);
|
|
154
158
|
if (truncationWarning)
|
|
155
159
|
err(truncationWarning);
|
|
@@ -157,7 +161,31 @@ export function extractCorpusMain(argv, io = {}) {
|
|
|
157
161
|
const familyBits = Object.entries(corpus.metadata.families)
|
|
158
162
|
.map(([name, summary]) => `${name}=${summary.count}`)
|
|
159
163
|
.join(", ");
|
|
160
|
-
|
|
164
|
+
// Publish bounded evidence tiers as the canonical bounded publication output.
|
|
165
|
+
// The monolithic corpus envelope write is eliminated: all bounded consumers
|
|
166
|
+
// (usage, report, prime coverage, startup analysis, profile synthesis) read
|
|
167
|
+
// the signal tier and full-evidence shards directly. Legacy monolithic state
|
|
168
|
+
// receives deterministic refresh guidance rather than read compatibility.
|
|
169
|
+
const tiersDir = args.tierOutput ?? defaultTiersDir(env, platform);
|
|
170
|
+
const publication = publishEvidenceTiers(corpus.records, {
|
|
171
|
+
tiersDir,
|
|
172
|
+
adapterVersion: corpus.metadata.adapter_version,
|
|
173
|
+
runtimeStatuses: corpus.metadata.runtime_statuses,
|
|
174
|
+
env,
|
|
175
|
+
platform,
|
|
176
|
+
corpusMetadata: {
|
|
177
|
+
extracted_at: corpus.metadata.extracted_at,
|
|
178
|
+
runtime_statuses: corpus.metadata.runtime_statuses,
|
|
179
|
+
coverage_envelope: {
|
|
180
|
+
available_runtimes: corpus.metadata.available_runtimes,
|
|
181
|
+
selected_runtimes: corpus.metadata.selected_runtimes,
|
|
182
|
+
available_but_not_selected: corpus.metadata.available_but_not_selected,
|
|
183
|
+
},
|
|
184
|
+
},
|
|
185
|
+
});
|
|
186
|
+
out(`published tiers: ${tiersDir} (generation ${publication.generation}; ` +
|
|
187
|
+
`${publication.shard_count} shards; ${publication.signal_count} signals; ` +
|
|
188
|
+
`${publication.signal_bytes} bytes${publication.signal_selection.capped ? "; selection applied" : ""}) [${total} records; ${familyBits}]`);
|
|
161
189
|
return 0;
|
|
162
190
|
}
|
|
163
191
|
//# sourceMappingURL=cli.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/analytics/extractCorpus/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/analytics/extractCorpus/cli.ts"],"names":[],"mappings":"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"}
|