07 · Implementation roadmap
A sequence of gates, not a promise.
The implementation plan is unapproved. The 0.4.0 architecture baseline still stands. Local work is proposed at no recurring fee. Anything that bills waits for a pricing gate. This chapter does not approve a provider, a second source, or DJ-11.
Unapproved plan USD 50 ceiling
Local, before any subscription
ADR-007 proposes Hono on Node, local PostgreSQL with schemas resolver and product, files stored by checksum, and a fake model. The first slice runs the fictional Pantry & Pour feed, cap_pp_feed_1011, through those ports. Domain code talks to ports. Adapters are the local ones. Passing the slice does not prove a real source.
Figure
What runs locally before any recurring service is paid?
Takeaway. The first slice is a fictional Pantry & Pour feed on a laptop: Hono on Node, local PostgreSQL, files by checksum, and a fake model. Domain ports stay stable. Adapters are the local ones.
Text equivalent
- A fixture feed submits captures to the resolver process.
- ArtifactStore is a filesystem. JobTransport is PostgreSQL. The model port is a fake.
- resolver_app writes the resolver schema. product_app cannot.
- product_app writes projections. No hosted account is required for this stage.
Hosted, only if a spike allows it
The proposed hosted adapters are private R2, queues, Hyperdrive, and an optional metered model. The provider is not chosen. If SPK-01 fails, the recorded fallback is a Node container near the database. Ports stay. Spend is not authorized by this guide, and no account is created here. DJ-07 records that choice as open.
Those are infrastructure adapters: a bucket, a queue, a database connection, or the process that hosts the service. A parser adapter is a different use of the word. It is a versioned reader for one source shape, such as pa_shopfeed_json. The glossary defines each one: infrastructure adapter and parser adapter.
Figure
What is the proposed hosted arrangement, if a spike allows it?
Takeaway. Ports stay the same. Adapters change to private object storage, queues, Hyperdrive and an optional metered model. Hosted spend is not authorized by this guide.
Text equivalent
- Collectors are proposed as Workers plus Cron, with a browser or regional host only if a source needs it.
- The resolver and product service are proposed as Hono on Workers.
- Evidence moves to a private R2 bucket. Jobs move to queues. PostgreSQL is reached through Hyperdrive.
- The model adapter is optional and metered. It is off until admission allows it.
- If the Worker spike fails, the domain packages stay and the process adapter changes.
Milestones and the decisions in front of them
M0 builds the skeleton: ports, schemas, and a ledger. M1 runs the fixture locally. Gate 2 asks whether real prices fit under USD 50. Until that gate passes, stay local. M2 may bill because SPK-01, SPK-02, and SPK-05 touch hosted services. M3 watches one real source in private, with no public release. M4 publishes only inside a policy Jonathan has approved. M5 is a decision to add, reduce, or defer a second source. DJ-11’s two-scraper launch is narrowed by this plan and still waits.
Those gates are copied, still unchecked, onto the Broadwater pilot acceptance checklist. The checklist does not approve a pilot, a source, or a tenant.
Figure
What is the proposed order of build, measurement, and decision?
Takeaway. Local milestones spend no recurring service money. Hosted work starts only after prices fit the confirmed ceiling. A second source is a later decision, not a launch promise.
Text equivalent
- Gate 1 asks for the decisions the plan names before code that assumes them.
- M0 and M1 build ports and the Pantry & Pour slice locally.
- Gate 2 is pricing. Until it passes, stay local.
- M2 runs platform spikes that may bill. M3 watches one real source in private.
- M4 publishes only inside an approved policy. M5 decides a second source with the SPK-09 fit rule.
What would have to be measured
Nothing in this section has been measured. SPK-07 would record database hours and storage against an assumption of 16 active hours a day. SPK-08 would record parser misses, model attempts including retries, and review minutes. SPK-09 would rerun the cost model. The proposed fit rule adds a second source only when the two-source forecast is at or under USD 35 and operating exposure is at or under USD 40, with USD 10 still reserved. A miss means reduce scope, drop browser dependence, or defer. It does not silently add the source. Unknowns stay unknown. They are not entered as zero.
Figure
Which measurements decide the second source?
Takeaway. Unknowns stay unknown. They are not entered as zero. The proposed fit rule adds a second source only when the two-source forecast is at or under USD 35 and operating exposure stays at or under USD 40, with USD 10 still reserved.
Text equivalent
- SPK-07 measures database active hours and storage growth against the assumed 16 hours a day.
- SPK-08 measures parser failure, model attempts including retries, and human review minutes.
- SPK-09 reruns the cost model with those measurements.
- A miss on the fit rule means reduce, drop browser dependence, or defer. It does not silently add the source.
Jonathan’s open decisions
Each row is still waiting. The recommendation in the record is not an acceptance. A checkmark in this browser is a reading mark only. It does not change the decision file, and it is not stored.
Storage alternatives for DJ-01 and DEC-01, and the open identity-provider choice, are gathered in the decision register under the guide annotation. That annotation does not select one. The source list is decisions-for-jonathan.md.
Spikes named by the plan
| Spike | Question | Status |
|---|---|---|
| SPK-01 | Can Hyperdrive keep the AW-01 transaction? | Not run |
| SPK-02 | Do duplicate and reordered events apply once? | Not run |
| SPK-03 | Browser Run limits. The plan retargets this toward the DJ-06 source. | Not run |
| SPK-04 | Is JSONB with GIN enough for the candidate query? | Not run |
| SPK-05 | Can a cursor be rebuilt and a restore fenced? | Not run |
| SPK-06 | D1, only if DEC-01 is still open. | Conditional |
| SPK-07 | Database hours and storage growth. | Not measured |
| SPK-08 | Parser, model, and review effort. | Not measured |
| SPK-09 | Does a second source pass the fit rule? | Not measured |
Gate language and the decision list are copied in implementation-plan.md and decisions-for-jonathan.md. Read them before treating any row above as chosen.