Skip to content

Commit a800e0a

Browse files
V48 (specification-implementation): Modularize measurements hierarchy
Establish measurement-generics (primitive vocabulary) → generic-measurements/* (MeasureAgent, AbsolutesMeasureAgent, Needinesses surface) → asset-packs/ {synthesis,settle} product packages. Move ABSOLUTES/lens catalogs and SynthesizeAssetPacksAbsolutesMeasureAgent into asset-packs-synthesis; keep pipeline-asset-pack as SDIVF host + static-analysis tools. agent-generics re-exports for compatibility. Hierarchy names encode full ancestry.
1 parent 5d84952 commit a800e0a

43 files changed

Lines changed: 1066 additions & 441 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

BITCODE_SPEC_V48_NOTES.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1568,3 +1568,19 @@ Canonical factories:
15681568
Short aliases (`factorySDIVFExecutorPipeline`, `synthesizeAssetPacksPipeline`,
15691569
`runSDIVFPipeline`) are deprecated compatibility shims only.
15701570

1571+
## Measurement hierarchy modularization (Garrett, 2026-07-13)
1572+
1573+
```
1574+
Measurement # @bitcode/measurement-generics
1575+
→ MeasureAgent # generic-measurements/measure-agent
1576+
→ AbsolutesMeasureAgent # generic-measurements/absolutes
1577+
→ NeedinessesMeasureAgent # generic-measurements/needinesses (Gate 4 surface)
1578+
→ SynthesizeAssetPacksAbsolutesMeasureAgent # asset-packs/synthesis
1579+
→ SettleAssetPacks… # asset-packs/settle (Gate 6 surface)
1580+
→ pipeline-asset-pack # SDIVF host + static-analysis tools
1581+
```
1582+
1583+
Prepared catalogs (`ASSET_PACK_ABSOLUTES_CATALOG`, lens catalogs) live in
1584+
`@bitcode/asset-packs-synthesis`. `agent-generics` re-exports measure factories
1585+
for compatibility; prefer package-direct imports in new code.
1586+

FAMILIARIZATION.md

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,28 @@ uapi → HTTP + React adapters only
118118
@bitcode/pipeline-asset-pack Deposit/read SDIVF agents (setup/discovery/…)
119119
```
120120

121-
### 3.1.1 Generations (failsafes + thinkings)
121+
### 3.1.1 Measurements
122+
123+
```
124+
@bitcode/measurement-generics Measurement primitive vocabulary
125+
126+
@bitcode/generic-measurements-measure-agent MeasureAgent (PTRR base)
127+
@bitcode/generic-measurements-absolutes AbsolutesMeasureAgent
128+
@bitcode/generic-measurements-needinesses Needinesses surface (Gate 4)
129+
130+
@bitcode/asset-packs-synthesis SynthesizeAssetPacksAbsolutesMeasureAgent + catalogs
131+
@bitcode/asset-packs-settle SettleAssetPacks* (Gate 6 surface)
132+
133+
@bitcode/pipeline-asset-pack SDIVF pipeline host (static-analysis tools, phases)
134+
```
135+
136+
Package paths: `packages/measurement-generics/`, `packages/generic-measurements/*`,
137+
`packages/asset-packs/{synthesis,settle}/`.
138+
139+
Hierarchy names: `Measurement``AbsolutesMeasureAgent`
140+
`SynthesizeAssetPacksAbsolutesMeasureAgent`.
141+
142+
### 3.1.2 Generations (failsafes + thinkings)
122143

123144
```
124145
@bitcode/generation-generics Generation type + failsafe/thinkings enums
@@ -281,6 +302,12 @@ Grouped by role. Names are `@bitcode/<name>` unless noted.
281302
| `generation-generics` | Generation primitive + failsafe/thinkings enums |
282303
| `generic-generations-failsafes` | Failsafe base + prepared-context types |
283304
| `generic-generations-thinkings` | Thinkings base vocabulary surface |
305+
| `measurement-generics` | Measurement primitive (spec, reading, output schemas) |
306+
| `generic-measurements-measure-agent` | MeasureAgent PTRR base |
307+
| `generic-measurements-absolutes` | AbsolutesMeasureAgent base |
308+
| `generic-measurements-needinesses` | Needinesses framing surface (Gate 4) |
309+
| `asset-packs-synthesis` | SynthesizeAssetPacks measurement catalogs + product AbsolutesMeasureAgent |
310+
| `asset-packs-settle` | SettleAssetPacks product surface (Gate 6) |
284311
| `llm-generics` | Pure LLM call contracts |
285312
| `registry` | Hierarchical registry (Prompt is a Registry) |
286313
| `prompts` | Prompt + PromptPart + **all** raw prompt parts |
@@ -296,6 +323,8 @@ Grouped by role. Names are `@bitcode/<name>` unless noted.
296323
| `generic-pipelines/*` | Nested base pipelines: SDIVF, … |
297324
| `generic-llms/*` | Nested providers (xAI, OpenAI, Anthropic, Google), defaults, registry aggregator |
298325
| `generic-generations/*` | Nested generation bases: failsafes, thinkings |
326+
| `generic-measurements/*` | Nested measurement bases: measure-agent, absolutes, needinesses |
327+
| `asset-packs/*` | Product AssetPack packages: synthesis, settle |
299328
| `generic-doc-comment-plugins/*` | Nested doc-comment plugins |
300329

301330
### 5.3 Product domain (AssetPack / BTD / market)

internal-docs/BITCODE_SOURCE_LAYOUT.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,8 @@ packages/generic-<family>/ # README only (no package.json)
209209
| `generic-pipelines/` | `SDIVF/` | `@bitcode/generic-pipelines-sdivf` (`SDIVFPipeline`) |
210210
| `generic-llms/` | `xAI/`, `OpenAI/`, `Anthropic/`, `Google/`, `defaults/`, `registry/` | `@bitcode/generic-llms-*` (+ aggregator `@bitcode/generic-llms`) |
211211
| `generic-generations/` | `failsafes/`, `thinkings/` | `@bitcode/generic-generations-failsafes`, `-thinkings` |
212+
| `generic-measurements/` | `measure-agent/`, `absolutes/`, `needinesses/` | `@bitcode/generic-measurements-*` |
213+
| `asset-packs/` | `synthesis/`, `settle/` | `@bitcode/asset-packs-synthesis`, `-settle` |
212214
| `generic-doc-comment-plugins/` | `doc-developing/` | `@bitcode/doc-comment-developing` |
213215

214216
**Do not** put a root `package.json` on the family folder. Workspace globs are
@@ -305,6 +307,14 @@ bitcode/
305307
│ ├── generic-generations/
306308
│ │ ├── failsafes/ # @bitcode/generic-generations-failsafes
307309
│ │ └── thinkings/ # @bitcode/generic-generations-thinkings
310+
│ ├── measurement-generics/ # Measurement primitive vocabulary
311+
│ ├── generic-measurements/
312+
│ │ ├── measure-agent/ # MeasureAgent PTRR base
313+
│ │ ├── absolutes/ # AbsolutesMeasureAgent
314+
│ │ └── needinesses/ # Needinesses surface (Gate 4)
315+
│ ├── asset-packs/
316+
│ │ ├── synthesis/ # SynthesizeAssetPacks measurements/catalogs
317+
│ │ └── settle/ # SettleAssetPacks product surface
308318
│ ├── pipelines/
309319
│ │ └── asset-pack/ # SynthesizeAssetPacks (extends SDIVF)
310320
│ ├── agent-generics/

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
"packages/generic-pipelines/*",
1515
"packages/generic-llms/*",
1616
"packages/generic-generations/*",
17+
"packages/generic-measurements/*",
18+
"packages/asset-packs/*",
1719
"packages/generic-doc-comment-plugins/*",
1820
"packages/pipelines/*",
1921
"uapi",

packages/agent-generics/jest.config.cjs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,14 @@ module.exports = {
1111
'^@bitcode/generation-generics$': '<rootDir>/../generation-generics/src/index.ts',
1212
'^@bitcode/generic-generations-failsafes$': '<rootDir>/../generic-generations/failsafes/src/index.ts',
1313
'^@bitcode/generic-generations-thinkings$': '<rootDir>/../generic-generations/thinkings/src/index.ts',
14+
'^@bitcode/measurement-generics$': '<rootDir>/../measurement-generics/src/index.ts',
15+
'^@bitcode/generic-measurements-measure-agent$': '<rootDir>/../generic-measurements/measure-agent/src/index.ts',
16+
'^@bitcode/generic-measurements-absolutes$': '<rootDir>/../generic-measurements/absolutes/src/index.ts',
17+
'^@bitcode/generic-measurements-needinesses$': '<rootDir>/../generic-measurements/needinesses/src/index.ts',
18+
'^@bitcode/asset-packs-synthesis$': '<rootDir>/../asset-packs/synthesis/src/index.ts',
19+
'^@bitcode/asset-packs-settle$': '<rootDir>/../asset-packs/settle/src/index.ts',
20+
'^@bitcode/agent-generics/agents/factories$': '<rootDir>/../agent-generics/src/agents/factories.ts',
21+
'^@bitcode/agent-generics/types$': '<rootDir>/../agent-generics/src/types.ts',
1422
'^@bitcode/generic-llms$': '<rootDir>/../generic-llms/registry/src/index.ts',
1523
'^@bitcode/generic-llms/defaults$': '<rootDir>/../generic-llms/defaults/src/index.ts',
1624
'^@bitcode/generic-llms-defaults$': '<rootDir>/../generic-llms/defaults/src/index.ts',

packages/agent-generics/package.json

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,22 @@
2121
"@bitcode/tools-generics": "workspace:*",
2222
"@bitcode/pipelines-generics": "workspace:*",
2323
"@bitcode/logger": "workspace:*",
24-
"zod": "^3.22.4"
24+
"zod": "^3.22.4",
25+
"@bitcode/measurement-generics": "workspace:*",
26+
"@bitcode/generic-measurements-measure-agent": "workspace:*",
27+
"@bitcode/generic-measurements-absolutes": "workspace:*",
28+
"@bitcode/generic-measurements-needinesses": "workspace:*"
2529
},
2630
"devDependencies": {
2731
"@jest/globals": "^29.0.0",
2832
"@types/jest": "^29.0.0",
2933
"jest": "^29.0.0",
3034
"ts-jest": "^29.0.0",
3135
"typescript": "^5.0.0"
36+
},
37+
"exports": {
38+
".": "./src/index.ts",
39+
"./agents/factories": "./src/agents/factories.ts",
40+
"./types": "./src/types.ts"
3241
}
3342
}
Lines changed: 9 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,12 @@
11
/**
2-
* measure-agent-absolutes — the absolutes-category base measurer (V48 Gate 3).
3-
*
4-
* Bases the generic measure-agent (factoryMeasureAgent) with the ABSOLUTES
5-
* framing. Absolutes are INTRINSIC measures: properties of the artifact itself —
6-
* its sizes, its correctness, the amount of knowledge it encodes — that depend
7-
* ONLY on the artifact, never on any reader, demand, market, or buyer. (Reader-
8-
* relative measures are the needinesses category — measure-agent-needinesses,
9-
* Gate 4.)
10-
*
11-
* The asset-pack concrete measurer agent-measure-absolutes bases this factory
12-
* with its absolutes catalog (sizes / correctness / semantic-volume), lens-aware.
2+
* @deprecated Import from `@bitcode/generic-measurements-absolutes`.
3+
* Compatibility re-export of AbsolutesMeasureAgent.
134
*/
145

15-
import {
16-
factoryMeasureAgent,
17-
type MeasureAgent,
18-
type MeasurementSpec,
19-
} from './measure-agent';
20-
21-
const ABSOLUTES_FRAMING =
22-
'You measure ABSOLUTES — INTRINSIC properties of digital material. Data is digital ' +
23-
'material; material has properties. QUANTITY properties include size, symbolic ' +
24-
'richness, modularity (often tool-measured counts). QUALITY properties include ' +
25-
'objectives fidelity, correctness, computational-usage requirements (judgment ' +
26-
'readings you ground in the tool-measured quantities + the source-safe descriptor). ' +
27-
'Absolutes depend ONLY on the artifact, never on any reader, demand, market, or buyer. ' +
28-
'Measure what IS present, not what anyone wants or would pay for. Prefer tool-measured ' +
29-
'magnitudes for quantity; do not invent sizes that contradict static-analysis counts.';
30-
31-
export interface MeasureAgentAbsolutesConfig {
32-
name: string;
33-
description?: string;
34-
/** What is being measured, e.g. "a synthesized source-safe AssetPack patch". */
35-
subject: string;
36-
/** The absolutes catalog to read (sizes / correctness / volume / …). */
37-
measurements: MeasurementSpec[];
38-
plan?: { chunkThreshold?: number };
39-
try?: { chunkThreshold?: number };
40-
refine?: { maxAttempts?: number };
41-
retry?: { maxAttempts?: number };
42-
}
43-
44-
/**
45-
* factoryMeasureAgentAbsolutes — bases factoryMeasureAgent with the absolutes
46-
* category + framing. The Gate-3 absolutes measurer; the sibling
47-
* factoryMeasureAgentNeedinesses lands in Gate 4.
48-
*/
49-
export function factoryMeasureAgentAbsolutes(
50-
config: MeasureAgentAbsolutesConfig,
51-
): MeasureAgent {
52-
return factoryMeasureAgent({
53-
name: config.name,
54-
description: config.description,
55-
subject: config.subject,
56-
category: 'absolute',
57-
categoryFraming: ABSOLUTES_FRAMING,
58-
measurements: config.measurements,
59-
plan: config.plan,
60-
try: config.try,
61-
refine: config.refine,
62-
retry: config.retry,
63-
});
64-
}
6+
export {
7+
factoryAbsolutesMeasureAgent,
8+
factoryMeasureAgentAbsolutes,
9+
type AbsolutesMeasureAgent,
10+
type AbsolutesMeasureAgentConfig,
11+
type MeasureAgentAbsolutesConfig,
12+
} from '@bitcode/generic-measurements-absolutes';

0 commit comments

Comments
 (0)