Skip to content

Commit babce9e

Browse files
committed
Add iso-prioritize and iso-lineage packages
1 parent 0d51057 commit babce9e

40 files changed

Lines changed: 3526 additions & 8 deletions

.github/workflows/ci.yml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,12 @@ jobs:
7171
- workspace: "@razroo/iso-timeline"
7272
node: "20.6.0"
7373
extra: ""
74+
- workspace: "@razroo/iso-prioritize"
75+
node: "20.6.0"
76+
extra: ""
77+
- workspace: "@razroo/iso-lineage"
78+
node: "20.6.0"
79+
extra: ""
7480
- workspace: "@razroo/iso-preflight"
7581
node: "20.6.0"
7682
extra: ""
@@ -233,6 +239,23 @@ jobs:
233239
node packages/iso-timeline/dist/cli.js verify --timeline /tmp/jobforge.iso-timeline.json
234240
node packages/iso-timeline/dist/cli.js check --config packages/iso-timeline/examples/jobforge-timeline.json --events packages/iso-timeline/examples/jobforge-events.jsonl --now 2026-04-27T00:00:00.000Z --fail-on none
235241
242+
- name: iso-prioritize example rank/check
243+
run: |
244+
node packages/iso-prioritize/dist/cli.js rank --config packages/iso-prioritize/examples/jobforge-prioritize.json --items packages/iso-prioritize/examples/jobforge-items.json --out /tmp/jobforge.iso-prioritize.json
245+
node packages/iso-prioritize/dist/cli.js select --config packages/iso-prioritize/examples/jobforge-prioritize.json --items packages/iso-prioritize/examples/jobforge-items.json --limit 3
246+
node packages/iso-prioritize/dist/cli.js verify --result /tmp/jobforge.iso-prioritize.json
247+
node packages/iso-prioritize/dist/cli.js check --config packages/iso-prioritize/examples/jobforge-prioritize.json --items packages/iso-prioritize/examples/jobforge-items.json --min-selected 3
248+
node packages/iso-prioritize/dist/cli.js explain --config packages/iso-prioritize/examples/jobforge-prioritize.json
249+
250+
- name: iso-lineage example record/check
251+
run: |
252+
node packages/iso-lineage/dist/cli.js record --root packages/iso-lineage/examples/jobforge-project --graph /tmp/jobforge.iso-lineage.json --artifact reports/812-example-labs.md --input cv.md --input profile.yml --input jobs/example-labs.md --command "job-forge evaluate jobs/example-labs.md"
253+
node packages/iso-lineage/dist/cli.js record --root packages/iso-lineage/examples/jobforge-project --graph /tmp/jobforge.iso-lineage.json --artifact generated/812-example-labs.pdf --input reports/812-example-labs.md --command "job-forge pdf reports/812-example-labs.md"
254+
node packages/iso-lineage/dist/cli.js verify --graph /tmp/jobforge.iso-lineage.json
255+
node packages/iso-lineage/dist/cli.js check --root packages/iso-lineage/examples/jobforge-project --graph /tmp/jobforge.iso-lineage.json
256+
node packages/iso-lineage/dist/cli.js stale --root packages/iso-lineage/examples/jobforge-project --graph /tmp/jobforge.iso-lineage.json
257+
node packages/iso-lineage/dist/cli.js explain --root packages/iso-lineage/examples/jobforge-project --graph /tmp/jobforge.iso-lineage.json --artifact reports/812-example-labs.md
258+
236259
- name: iso-preflight example plan/check
237260
run: |
238261
node packages/iso-preflight/dist/cli.js plan --config packages/iso-preflight/examples/jobforge-preflight.json --candidates packages/iso-preflight/examples/jobforge-candidates.json
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
name: iso-lineage Release to npm
2+
3+
on:
4+
release:
5+
types: [published]
6+
7+
defaults:
8+
run:
9+
working-directory: packages/iso-lineage
10+
11+
jobs:
12+
publish:
13+
if: startsWith(github.ref_name, 'iso-lineage-v')
14+
runs-on: ubuntu-latest
15+
permissions:
16+
contents: read
17+
checks: read
18+
id-token: write
19+
steps:
20+
- uses: actions/checkout@v6
21+
22+
- uses: actions/setup-node@v6
23+
with:
24+
node-version: '22'
25+
registry-url: 'https://registry.npmjs.org'
26+
cache: 'npm'
27+
28+
- name: Set version from release tag
29+
run: |
30+
VERSION="${GITHUB_REF_NAME#iso-lineage-v}"
31+
echo "VERSION=$VERSION" >> $GITHUB_ENV
32+
33+
- name: Verify required CI passed for release commit
34+
uses: ./.github/actions/verify-release-gate
35+
env:
36+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
37+
38+
- name: Verify package.json version matches release tag
39+
run: npm run release:check-source -- "$VERSION"
40+
41+
- name: Install (workspace root)
42+
run: npm ci
43+
working-directory: .
44+
45+
- name: Publish to npm (with provenance)
46+
run: npm publish --provenance --access public
47+
env:
48+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
name: iso-prioritize Release to npm
2+
3+
on:
4+
release:
5+
types: [published]
6+
7+
defaults:
8+
run:
9+
working-directory: packages/iso-prioritize
10+
11+
jobs:
12+
publish:
13+
if: startsWith(github.ref_name, 'iso-prioritize-v')
14+
runs-on: ubuntu-latest
15+
permissions:
16+
contents: read
17+
checks: read
18+
id-token: write
19+
steps:
20+
- uses: actions/checkout@v6
21+
22+
- uses: actions/setup-node@v6
23+
with:
24+
node-version: '22'
25+
registry-url: 'https://registry.npmjs.org'
26+
cache: 'npm'
27+
28+
- name: Set version from release tag
29+
run: |
30+
VERSION="${GITHUB_REF_NAME#iso-prioritize-v}"
31+
echo "VERSION=$VERSION" >> $GITHUB_ENV
32+
33+
- name: Verify required CI passed for release commit
34+
uses: ./.github/actions/verify-release-gate
35+
env:
36+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
37+
38+
- name: Verify package.json version matches release tag
39+
run: npm run release:check-source -- "$VERSION"
40+
41+
- name: Install (workspace root)
42+
run: npm ci
43+
working-directory: .
44+
45+
- name: Publish to npm (with provenance)
46+
run: npm publish --provenance --access public
47+
env:
48+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

INTEGRATIONS.md

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Integrations
22

3-
This repo ships twenty-three packages that **work on their own** but are **designed
3+
This repo ships twenty-five packages that **work on their own** but are **designed
44
to compose**. The planned cross-package compositions listed here are already
55
shipped, so this file now serves as:
66

@@ -282,6 +282,31 @@ tracker files.
282282

283283
---
284284

285+
## 20. `iso-prioritize` ← deterministic priority queue selection for domain packages — **DONE**
286+
287+
Introduced as a standalone package. `iso-prioritize` does not import JobForge,
288+
`iso-score`, `iso-timeline`, `iso-preflight`, or any other domain package; it
289+
provides the on-disk JSON prioritization config, item, and result formats that
290+
domain tools can share. JobForge-style examples cover follow-up, pipeline, and
291+
apply queues with weighted criteria, skip gates, adjustments, and one-per-company
292+
quotas, but the package remains generic: rank, gate, quota, select, check, and
293+
verify local work queues without asking a model to re-sort growing worklists.
294+
295+
---
296+
297+
## 21. `iso-lineage` ← deterministic artifact freshness for domain packages — **DONE**
298+
299+
Introduced as a standalone package. `iso-lineage` does not import JobForge,
300+
`iso-cache`, `iso-index`, `iso-facts`, `iso-preflight`, or any other domain
301+
package; it provides the on-disk JSON lineage graph format that domain tools
302+
can share. JobForge-style examples cover reports and generated PDFs derived
303+
from CV/profile/JD inputs, but the package remains generic: record artifact
304+
inputs, verify content-derived graph/record ids, check freshness, list stale
305+
outputs, and propagate stale upstream state without asking a model to inspect
306+
project history.
307+
308+
---
309+
285310
## Design questions that are *not* open integrations
286311

287312
The following look like integrations but are deliberately decoupled —
@@ -349,6 +374,15 @@ don't "fix" them without a conversation first.
349374
extraction, source precedence, business calendars, stale-action retention,
350375
and whether due actions route to prompts, ledgers, notifications, or
351376
workflow dispatch.
377+
- **`iso-prioritize` does not decide what a domain values most.** It evaluates
378+
configured queue policy. Domain packages still own item extraction, source
379+
precedence, priority dimensions, quota policy, and whether selected items
380+
route to preflight, timelines, ledgers, notifications, or workflow dispatch.
381+
- **`iso-lineage` does not decide when a stale artifact should be rebuilt.** It
382+
detects changed source inputs and stale upstream artifacts. Domain packages
383+
still own rebuild policy, which generated files are disposable, how lineage
384+
records are created, and whether stale output blocks dispatch, triggers
385+
regeneration, or only warns.
352386
- **`iso-postflight` does not decide how a domain collects observations.**
353387
It settles explicit plan/outcome/artifact/step records. Domain packages
354388
still own whether those observations come from TSV files, ledger events,

0 commit comments

Comments
 (0)